如何預防keepalived腦裂問題

chenfeng發表於2018-06-26
(1)可以採用第三方仲裁的方法。由於keepalived體系中主備兩臺機器所處的狀態與對方有關。如果主備機器之間的通訊出了網題,就會發生腦裂,此時keepalived體系中會出現雙主的情況,產生資源競爭。

(2)一般可以引入仲裁來解決這個問題,即每個節點必須判斷自身的狀態。最簡單的一種操作方法是,在主備的keepalived的配置檔案中增加check配置,伺服器週期性地ping一下閘道器,如果ping不通則認為自身有問題 。

(3)最容易的是藉助keepalived提供的vrrp_script及track_script實現。如下所示:

#vim /etc/keepalived/keepalived.conf


  ......


  vrrp_script check_local {


   script "/root/check_gateway.sh"


   interval 5


   }


  ...... 


  track_script {    


  check_local                  


  }


   指令碼內容:


   # cat /root/check_gateway.sh


  #!/bin/sh


  VIP=$1


  GATEWAY=192.168.1.1


  /sbin/arping -I em1 -c 5 -s $VIP $GATEWAY &>/dev/null  

   check_gateway.sh 就是我們的仲裁邏輯,發現ping不通閘道器,則關閉keepalived。

(4)檢測思路:正常情況下keepalived的VIP地址是在主節點上的,如果在從節點發現了VIP,就設定報警資訊。指令碼(在從節點上)如下:


vim split-brainc_check.sh


#!/bin/bash


# 檢查腦裂的指令碼,在備節點上進行部署


LB01_VIP=192.168.1.229


LB01_IP=192.168.1.129


LB02_IP=192.168.1.130


while true


do


 ping -c 2 -W 3 $LB01_VIP &>/dev/null


   if [ $? -eq 0 -a `ip add|grep "$LB01_VIP"|wc -l` -eq 1 ];then


       echo "ha is brain."


   else


       echo "ha is ok"


   fi


   sleep 5


done

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15498/viewspace-2156641/,如需轉載,請註明出處,否則將追究法律責任。

相關文章