近期在研究實證PG+Keepalived構建高可用集羣時,在驗證keepalived自動實現主庫故障自動切換中,遇到keepalived觸發vrrp_script腳本調用一直不正常。即如下圖情況所示:
開始懷疑是shell腳本有問題,導致不能正常執行。於是我採取下列步驟處理:
1).簡化shell腳本內容,只保留echo顯示語句,然後手工執行shell腳本驗證是否正常。
2).重新啓動keepalived服務和停用pg主庫服務,觸發監測腳本,結果還是依然不能正常執行。
3).經過這些排查後而且手工執行腳本都正常的,基本上排除是因shell腳本問題這塊。
4).於是檢查看目前裝的keepalived版本,發現版本是如下:
查看keepalived版本,rpm -qa|grep -i keepalived,發現是:
keepalived-1.3.5-16.el7.x86_64
5).該版本比較舊了,而且centos默認是安裝它,想起自己是用rpm方式安裝的,懷疑可能是版本問題導致不能正常調用執行shell腳本中的內容。
6).重新卸載舊版本,通過源碼安裝新的keepalived-2.0.18,具體操作可參考官方說明。
7).重新配置keepalived.conf,檢測是否運行正常。然後停止pg主庫,檢查是否已經正常觸發調用。結果執行正常且自動實現故障轉移。如下圖keepalived狀態: