global_defs { router_id LVS_DEVEL #节点名,一般使用默认的就可以 } vrrp_script chk_mysql { script "/etc/keepalived/check_mysql.sh" #检测nginx脚本的路径 interval 2 #运行脚本的间隔时间 weight -20 #变更的权重 } vrrp_instance VI_1 { state BACKUP #mcast_src_ip interface ens33 #绑定的网卡,可以通过ifconfig查看网卡信息 virtual_router_id 70 #虚拟路由标识,同一组的必须相同 priority 100 #权重 nopreempt #定义为非抢占式,因为多次主备切换对请求量大的服务器不太好 advert_int 1 #与组内其他节点发送心跳的间隔:s virtual_ipaddress { 192.168.52.220 } #绑定的虚拟ip组 track_script { chk_mysql } #执行前面声明的脚本 } |
#! /bin/bash #判断mysqld是否存活 netstat -nlpt | grep -w '3306' &>> /dev/null #如果数据库不存活 if [ $? -ne 0 ] then #停止keepalived服务使得通信中止,VIP则漂移到其他存活的Keepalived节点 systemctl stop keepalived fi exit 0 |