日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Keepalived - Keepalived 实现 tomcat双机热备

發布時間:2025/3/21 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Keepalived - Keepalived 实现 tomcat双机热备 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • Pre
  • 環境信息
  • 官網
  • 原理
  • keepalived 安裝
    • 137 安裝 keepalived
    • 138 安裝 keepalived
  • 配置keepalived的配置文件/etc/keepalived/keepalived.conf
    • 關鍵參數解讀
    • 137
    • 138
  • 檢測腳本
  • 日志
  • 狀態發生變更,觸發腳本
  • 小結
  • Questions
    • exited due to signal 15
    • notify_master notify_backup未生效

Pre

雙機熱備是指兩臺機器都在運行,但并不是兩臺機器都同時在提供服務。


環境信息

節點軟件IP
節點Akeepalived + tomcat192.168.126.137
節點Bkeepalived + tomcat192.168.126.138
虛擬IP-192.168.126.200

官網

https://keepalived.readthedocs.io/en/latest/#


原理

keepalived用于保證環境高可用,防止單點故障。

keepalived主要有三個模塊,分別是core、check和VRRP。

  • core核心模塊,負責主進程的啟動、維護以及全局配置文件的加載和解析
  • check負責健康檢查,包括常見的各種檢查方式
  • VRRP模塊實現VRRP協議

VRRP(Virtual Router Redundancy Protocol) 即虛擬路由冗余協議,實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組里面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由為該vip),master會發組播,當backup收不到VRRP包時就認為master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。


keepalived 安裝

兩個節點均需要安裝, 在137 和 138 節點上安裝 ,執行 yum install keepalived

137 安裝 keepalived

[root@localhost ~]# yum install keepalived Loaded plugins: fastestmirror ....... ....... Complete! [root@localhost ~]#

138 安裝 keepalived

[root@localhost ~]# yum install keepalived Loaded plugins: fastestmirror ....... ....... Complete! [root@localhost ~]#

tomcat 也都裝下哈 ,用于驗證,可以yum安裝

CentOS 7 yum安裝與配置 Tomcat 寫的挺不錯,沒有的話可以參考


配置keepalived的配置文件/etc/keepalived/keepalived.conf

關鍵參數解讀

state 主服務器為MASTER,其他服務器均為BACKUP interface 通信用的網卡,ip addr可以查看,以實際為準 virtual_router_id 主從服務器此ID必須一致 priority 優先級,主服務器必須大于其他服務器,數值越大優先級越高 authentication 主從服務器必須一致 virtual_ipaddress 虛擬IP地址,主從服務器必須一致,該VIP為客戶端訪問時使用的IP

137

! Configuration File for keepalived global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from example@example.comsmtp_server mail.example.comsmtp_connect_timeout 30router_id LVS_DEVEL } vrrp_script chk_tomcat {script "/etc/keepalived/tomcat_check.sh"interval 5weight -5fall 3 rise 2 } vrrp_instance VI_1 {state MASTERinterface ens33mcast_src_ip 192.168.126.137virtual_router_id 51priority 101advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.126.200}track_script {chk_tomcat} }

138

! Configuration File for keepalived global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from example@example.comsmtp_server mail.example.comsmtp_connect_timeout 30router_id LVS_DEVEL } vrrp_script chk_tomcat {script "/etc/keepalived/tomcat_check.sh"interval 5weight -5fall 3 rise 2 } vrrp_instance VI_1 {state BACKUPinterface ens33mcast_src_ip 192.168.126.138virtual_router_id 51priority 99advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.126.200}track_script {chk_tomcat} }

與主節點的配置上的區別,需要注意

state 表示一個是主機一個是備機,mcast_src_ip 當前服務器的ip,priority 主機要比備機的要高


檢測腳本

!/bin/bash JAVA_PROCESS=`ps -C java --no-heading| wc -l` if [ $JAVA_PROCESS -eq 0 ];thenecho "tomcat is stop"sleep 2if [ `ps -C java --no-heading| wc -l` -eq 0 ];thensystemctl stop keepalived.service fi fi

比較簡單,根據實際情況調整

檢測是否有tomcat在運行,如果沒有的話,等2秒,如果還沒有就把keepalived給停止掉,這樣vip就能從主機master切換到備機BACKUP上了。


日志

可以查看 /var/log/messages 日志 觀察切換和選主的過程。


狀態發生變更,觸發腳本

https://keepalived.readthedocs.io/en/latest/configuration_synopsis.html

! Configuration File for keepalived global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from example@example.comsmtp_server mail.example.comsmtp_connect_timeout 30router_id LVS_DEVEL }vrrp_script chk_tomcat {script "/etc/keepalived/tomcat_check.sh"interval 5weight -5fall 3 rise 2 } vrrp_instance VI_1 {state MASTERinterface ens33mcast_src_ip 192.168.126.137virtual_router_id 51priority 101advert_int 2authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.126.200}track_script {chk_tomcat}notify_master /etc/keepalived/a.sh notify_backup /etc/keepalived/b.sh

當節點從BACKUP 轉為 MASTER的時候 ,執行 /etc/keepalived/a.sh

當節點從MASTER 轉為 BACKUP的時候 ,執行 /etc/keepalived/b.sh


小結

MASTER和 BACKUP,預先分配好, 通過priority 來確定, 當MASTER宕機以后,BACKUP 沒有收到 MASTER的 VRRP消息,BACKUP就認為 MASTER宕機了,這個時候就把自己選舉為MASTER。

MASTER宕機,本節點的日志

Dec 30 01:40:01 localhost Keepalived[6784]: Stopping Dec 30 01:40:01 localhost systemd: Stopping LVS and VRRP High Availability Monitor... Dec 30 01:40:01 localhost Keepalived_vrrp[6786]: VRRP_Instance(VI_1) sent 0 priority Dec 30 01:40:01 localhost Keepalived_vrrp[6786]: VRRP_Instance(VI_1) removing protocol VIPs. Dec 30 01:40:01 localhost Keepalived_healthcheckers[6785]: Stopped Dec 30 01:40:02 localhost Keepalived_vrrp[6786]: Stopped Dec 30 01:40:02 localhost Keepalived[6784]: Stopped Keepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2 Dec 30 01:40:02 localhost systemd: Stopped LVS and VRRP High Availability Monitor.

BACKUP節點的日志

Dec 30 01:40:05 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) Entering MASTER STATE Dec 30 01:40:05 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) setting protocol VIPs.

當MASTER恢復以后,MASTER發送VRRP消息給BACKUP,這個時候雖然BACKUP是MASTER,但是 比較Prority后,發現自己的Prority小,會進入BACKUP模式,這個時候,之前設置的MASTER就又變成了MASTER了 。

MASTER恢復,本節點的日志

Dec 30 01:42:09 localhost Keepalived[6915]: Starting Healthcheck child process, pid=6916 Dec 30 01:42:09 localhost Keepalived[6915]: Starting VRRP child process, pid=6917 Dec 30 01:42:09 localhost Keepalived_healthcheckers[6916]: Opening file '/etc/keepalived/keepalived.conf'. Dec 30 01:42:09 localhost systemd: Started LVS and VRRP High Availability Monitor. Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Registering Kernel netlink reflector Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Registering Kernel netlink command channel Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Registering gratuitous ARP shared channel Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Opening file '/etc/keepalived/keepalived.conf'. Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: WARNING - default user 'keepalived_script' for script execution does not exist - please create. Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: SECURITY VIOLATION - scripts are being executed but script_security not enabled. Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: VRRP_Instance(VI_1) removing protocol VIPs. Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: Using LinkWatch kernel netlink reflector... Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)] Dec 30 01:42:09 localhost Keepalived_vrrp[6917]: VRRP_Script(chk_tomcat) succeeded Dec 30 01:42:10 localhost Keepalived_vrrp[6917]: VRRP_Instance(VI_1) Transition to MASTER STATE Dec 30 01:42:12 localhost Keepalived_vrrp[6917]: VRRP_Instance(VI_1) Entering MASTER STATE Dec 30 01:42:12 localhost Keepalived_vrrp[6917]: VRRP_Instance(VI_1) setting protocol VIPs. Dec 30 01:42:12 localhost Keepalived_vrrp[6917]: Sending gratuitous ARP on ens33 for 192.168.126.200

BACKUP節點的日志

Dec 30 01:42:09 localhost Keepalived_vrrp[9173]: /etc/keepalived/tomcat_check.sh exited with status 127 Dec 30 01:42:12 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) Received advert with higher priority 101, ours 94 Dec 30 01:42:12 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) Entering BACKUP STATE Dec 30 01:42:12 localhost Keepalived_vrrp[9173]: VRRP_Instance(VI_1) removing protocol VIPs.

Questions

exited due to signal 15

/var/log/messages 日志提示:/etc/keepalived/check_nginx.sh exited due to signal 15

調整如下參數

interval 5 #監控腳本的執行時間要大于advert_int advert_int 2 #心跳檢查間隔時間

notify_master notify_backup未生效

檢查 getenforce

getenforce 如果 開啟的話,關閉 執行 setenforce 0


總結

以上是生活随笔為你收集整理的Keepalived - Keepalived 实现 tomcat双机热备的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。