linux脚本vrrp_script,keepalived 的 vrrp_script
[root@centos01 keepalived]# cat check_httpd.sh 腳本需要有執行權限 通常情況下,利用keepalived做熱備,其中一臺設置為master,一臺設置為backup。當master出現異常后,backup自動切換為master。當backup成為master后,master恢復正常后會再次搶占成為master,導致不必要的主備切換。因此可以將兩臺keepalived初始狀態均配置為backup,設置不同的優先級,優先級高的設置nopreempt解決異常恢復后再次搶占的問題。
keepalived只能做到對網絡故障和keepalived本身的監控,即當出現網絡故障或者keepalived本身出現問題時,進行切換。但是這些還不夠,我們還需要監控keepalived所在服務器上的其他業務進程,比如說nginx,keepalived+nginx實現nginx的負載均衡高可用,如果nginx異常,僅僅keepalived保持正常,是無法完成系統的正常工作的,因此需要根據業務進程的運行狀態決定是否需要進行主備切換。這個時候,我們可以通過編寫腳本對業務進程進行檢測監控。
下面是 vrrp_script 模塊常見的幾種監控機制
1、killall 命令探測服務運行狀態
vrrp_script check_nginx { # check_nginx 為自定義的一個監控名稱
script "killall -0 nginx" # 采用 killall 信號 0 來對進程運行狀態進行監控,0 為正常,1 為異常
interval 2 # 檢測間隔時間,即兩秒檢測一次
weight 30 # 一個正整數或負整數。權重值,關系到整個集群角色選舉,尤為重要( 單獨出帖 )
}
track_script {
check_nginx # 引用上面定義的監控模塊
}
2、檢測端口運行狀態
檢測端口的運行狀態也是最常見的服務監控方式,在keepalived的vrrp_script模塊中可以通過如下方式對本機的端口進行檢測:
vrrp_script check_nginx {
script "< /dev/tcp/127.0.0.1:80" # 通過 < /dev/tcp/127.0.0.1:80 這樣的方式定義一個對本機端口狀態的檢測
interval 2
fall 2 # 檢測失敗的最大次數,超過兩次認為節點資源發生故障
rise 1 # 請求一次成功認為節點恢復正常
weight 30
}
track_script {
check_nginx
}
通過 "< /dev/tcp/127.0.0.1/80"這樣的方式定義了一個對本機80端口的狀態檢測,其中,“fail”選項表示檢測到失敗的最大次數,也就是說,如果請求失敗兩次,就認為此節點資源發生故障,將進行切換操作;“rise”表示如果請求一次成功,就認為此節點資源恢復正常。
3、通過 shell 語句進行狀態監控
vrrp_script check_nginx {
script " if [ -f /usr/local/nginx/logs/nginx.pid ]; then exit 0 ; else exit 1; fi"
interval 2
fall 1
rise 1
weight 30
}
track_script {
check_nginx
}
通過一個shell判斷語句,檢測httpd.pid文件是否存在,如果存在,就認為狀態正常,否則認為狀態異常,這種監測方式對于一些簡單的應用監控或者流程監控非常有用。從這里也可以得知,vrrp_script模塊支持的監控方式十分靈活。
4、通過腳本進行服務狀態監控
vrrp_script chk_mysqld {
script "/etc/keepalived/check_mysqld.sh"
interval 2
}
track_script {
chk_mysqld
}
check_mysqld.sh的內容為:
#!/bin/bash
/usr/bin/mysql -e "show status;" > /dev/null 2>&1
if [ $? -eq 0 ];then
MYSQL_STATUS=0
else
MYSQL_STATUS=1
fi
exit $MYSQL_STATUS
總結
以上是生活随笔為你收集整理的linux脚本vrrp_script,keepalived 的 vrrp_script的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 应运ajax的几种语言,Ajax指的是什
- 下一篇: 剪辑内核linux,Linux01-Li