作者:風過無痕-唐
出處:http://www.cnblogs.com/tangyanbo/
上一篇文章已經講到了keepalived實現雙機熱備,且遺留了一個問題
master的網絡不通的時候,可以立即切換到slave,但是如果只是master上的應用出現問題的時候,是不會
主動切換的。
上篇文章地址:Keepalived 實現雙機熱備(一)
那么這篇文章主要討論解決這個問題
我的方案是:
寫一個腳本,用於監控haproxy,當然,keepalive支持腳本擴展
當master haproxy出現問題時,重啟haproxy,如果重啟不成功,則停掉master上面的keepalived
也可以不重啟haproxy,直接停掉keepalived,讓backup服務器接管master
這樣haproxy出現故障,網站依然可用
系統分布如下:
ha主機 192.168.1.227:80
ha備機 192.168.1.246
keepalived 主機 192.168.1.227
keepalived備機 192.168.1.246
web1 http://192.168.1.226:8081/login
web2 http://192.168.1.246:8888/login
虛擬ip 192.168.1.99
keepalive master 和 backup 配置
vi /etc/keepalived/keepalived.conf
增加紅色部分
! Configuration File for keepalived
#定義檢查腳本 vrrp_script check_haproxy { script "/etc/keepalived/check_haproxy.sh" interval 2 weight 2 }
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.99
}
#執行檢查腳本 track_script { check_haproxy }
}
編輯檢查haproxy腳本
/etc/keepalived/check_haproxy.sh
#!/bin/bash
A=`ps -C haproxy --no-header |wc -l`
if [ $A -eq 0 ];then
/etc/init.d/keepalived stop
fi
增加執行權限,注意別忘記了
chmod 777 check_haproxy.sh
重啟keepalived即可