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