6. Keepalived检测脚本
#检测haproxy服务是否正常运行,如果没有则尝试拉起来,如果尝试失败则重启keepalived服务,切换keepalived的vip [root@elk-node1 ~]# touch /usr/local/keepalived/etc/chk_haproxy.sh [root@elk-node1 ~]# chmod 755 /usr/local/keepalived/etc/chk_haproxy.sh [root@elk-node1 ~]# vim /usr/local/keepalived/etc/chk_haproxy.sh #!/bin/bash # check haproxy process, if there isn't any process, try to start the process once, # check it again after 3s, if there isn't any process still, restart keepalived process, change state. # 2017-03-22 v0.1 if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then /etc/rc.d/init.d/haproxy start sleep 3 if [ $(ps -C haproxy --no-header | wc -l) -eq 0 ]; then /etc/rc.d/init.d/keepalived restart fi fi # another method to check haproxy process #killall -0 haproxy #if [[ $? -ne 0 ]];then # /etc/rc.d/init.d/keepalived restart #fi
三.验证
1. 启动
[root@elk-node1 ~]# service keepalived start [root@elk-node2 ~]# service keepalived start
2. 查看日志
1)Node1
[root@elk-node1 ~]# tailf /var/log/messages
- 以BACKUP模式启动;
- 切换到MASTER模式;
- 获得vip 10.11.4.150,开始对外发送免费arp通告。
2)Node2
[root@elk-node2 ~]# tailf /var/log/messages
- 两个相关子进程启动;
- 启动后进入BACKUP模式。
3. VIP
#使用的是"ip address add"添加的vip到系统中,因"ifconfig"命令看不到效果 [root@elk-node1 ~]# ip address show eth0
Node1的网卡eth0已经获得vip 10.11.4.150。
4. 故障切换
1)Haproxy故障拉起
[root@elk-node1 ~]# date ; service haproxy stop [root@elk-node1 ~]# date ; service haproxy status
- 手工停止haproxy服务;
- 因为keepalived配置文件中定义了拉起haproxy服务的脚本,可以看到1s的时间内,haproxy服务又开始运行了。
2)Node1日志
- 日志显示haproxy服务停止后再被拉起;
- Keepalived进入FAULT STATE,进而转到BACKUP STATE;
- Node1的eth0网卡的vip被删除。
3)Node2日志
- Node2转到MASTER STATE;
- Node2获得vip 10.11.4.150,并开始对外发免费arp通告。
4)Node2 VIP
[root@elk-node2 ~]# ip address show eth0
Node2的网卡eth0已经获得vip 10.11.4.150。
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147552.htm