12 keepalived腦裂問題
阿新 • • 發佈:2021-11-02
1.什麼是腦裂
由於某些原因,導致兩臺keepalived高可用伺服器在指定時間內,無法檢測到對方的心跳,各自取得資源及服務的所有權,而此時的兩臺高可用伺服器又都還活著。
2.腦裂的故障
解決方案
1.判斷埠
2.判斷程序的方式
通過程序的方式解決
1、lb01和lb02編寫指令碼
cd etc/keepalived
vim /etc/keepalived/check.sh
#!/bin/bash # 1、判斷埠 # 2、通過程序的方式 ps -aux | grep [n]ginx if [ $? -ne 0 ];then systemctl restart nginx sleep 3; ps -aux | grep [n]ginx if [ $? -ne 0 ];then systemctl stop keepalived fi fi
2.指令碼增加可執行許可權
cd /etc/keepalived/
chmod +x check.sh
3、修改keepalived配置檔案
vim /etc/keepalived/keepalived.conf
#全域性配置 global_defs { #身份識別(全域性唯一) router_id lb01 } #每5秒執行一次指令碼,指令碼執行內容不能超過5秒,否則會中斷再次重新執行指令碼 vrrp_script check_web { # 指定指令碼路徑 script "/etc/keepalived/check.sh" # 5秒鐘執行一次 interval 5 }# 配置VRRP協議 vrrp_instance VI_1 { # 狀態,MASTER和BACKUP(這裡僅僅是一個標記,正真確認VIP的是權重) state BACKUP #開啟非搶佔式 nopreempt # 繫結網絡卡 interface eth0 # 虛擬路由標示,可以理解為分組 virtual_router_id 50 # 優先順序(數字越大,權重越大) priority 100 # 監測心跳間隔時間 advert_int 1 # 配置認證 authentication { # 認證型別 auth_type PASS # 認證的密碼 auth_pass 1111 } # 設定VIP virtual_ipaddress { # 虛擬的VIP地址 192.168.15.200 } #呼叫計劃的指令碼 track_script { check_web } }
4.測試
重啟或啟動nginx和keepalived
systemctl start nginx
systemctl start keepalived