青蛙學Linux—Keepalived中通過vrrp_script實現對資源的監控


在Keepalived的配置文件中,我們可以指定Keepalived監控的網絡接口,當系統或網絡出現問題時就會進行主備切換。但是,很多時候我們需要對集群中特定的服務進行監控,但服務發生故障時就進行主備切換,此時只監控網絡接口就無法滿足我們的需求。Keepalived提供了vrrp_script調用自定義腳本的方式滿足了我們的需求。

1、vrrp_script

在Keepalived中,可以通過vrrp_script調用shell命令或一個腳本,通過該命令或腳本的返回值來判斷監控的資源是否出問題。當返回值為0時,Keepalived認為被監控的資源正常;當返回值為非0時,Keepalived認為被監控的資源出現了問題。

配置vrrp_script:

vrrp_script 自定義名稱 {
    script "命令或腳本"
    interval 數字
    fall 數字
    rise 數字
}
vrrp_instance VRRP實例名 {
    ...
    track_script {
        vrrp_script的自定義名稱
    }
}
  • script:調用shell命令或腳本
  • interval:定義執行命令或腳本的時間間隔,單位秒
  • fall:定義檢測失敗的最大次數,如設置為2表示當請求失敗兩次時就認為節點資源故障
  • rise:定義請求成功的次數,如設置為1表示當進行一次請求成功后就認為節點資源恢復正常
  • vrrp_instance中的track_script:調用vrrp_script使之生效

vrrp_script執行命令或腳本時默認使用的用戶為keepalived_script,如果系統中不存在該用戶,則使用root用戶執行腳本。

2、使用vrrp_script監控資源的幾種常用方式

2.1、通過killall命令檢測服務運行狀態

通過命令killall –0 進程名可以檢測指定的進程是否正在運行。這里使用了killall的0信號,當killall向一個進程發出0信號時,不會結束這個進程,而是返回0或非0的值。0表示進程正在運行,而非0表示進程不存在。所以,通過這種方式可以很方便的檢測一個服務是否正在運行。

e.g:監測Apache的httpd服務
vrrp_script check_httpd{
    script "killall -0 httpd"
    ...
}

2.2、檢測端口運行狀態

對於服務端口的監控也可以達到檢測服務是否正常運行的目的。通過一個特殊的文件/dev/tcp就可以對端口進行檢測,打開這個文件就相當於建立了一個socket連接。注意:/dev/tcp文件本身並不存在。

e.g:檢測80端口是否打開
vrrp_script check_httpd {
    script "</dev/tcp/127.0.0.1/80"
    ...
}

2.3、使用shell語句進行監控

vrrp_script還支持直接引用shell語句進行狀態監控。

e.g:判斷Apache的PID文件是否存在以確定Apache的服務是否正常
vrrp_script check_httpd {
    script "if [ -f /var/run/httpd/httpd.pid ]; then exit 0; else exit 1; fi"
    ...
}

2.4、通過腳本進行監控

vrrp_script可以通過運行指定的腳本來對服務進行監控。在編寫腳本時,只需要控制腳本的返回值為0或非0即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM