一、简介
在keepalived的VRRP实例配置中会一般会设置MASTER和BACKUP来指定初始状态,但是这并不意味着此节点一直就是MASTER角色。
控制节点角色的是keepalived配置文件中的“priority”值和vrrp_script模块中设置的“weight”值。
二、环境信息
serverA: 192.168.1.101
serverB:192.168.1.102
vip:192.168.1.110
三、serverA配置
# vim keepalived.conf
#########################################################
! Configuration File for keepalived
global_defs {
router_id TEST
}
vrrp_script chk_nginx {
script "/etc/keepalived/test.sh"
interval 2 #健康检查周期
weight 20 #优先级变化幅度
fall 3 #判定服务异常的检查次数
rise 2 #判定服务正常的检查次数
}
vrrp_instance VI_1 {
state MASTER
interface ens33
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.110
}
track_script {
chk_nginx
}
}
############################################
# vim /etc/keepalived/test.sh
###################################
#!/bin/bash
count=`ps -ef|grep nginx|grep -v grep|wc -l`
if [ $count -gt 0 ];then
exit 0
else
exit 1
fi
####################################
# chmod +x /etc/keepalived/test.sh
四、serverB配置
# vim keepalived.conf
#########################################################
! Configuration File for keepalived
global_defs {
router_id TEST
}
vrrp_script chk_nginx {
script "/etc/keepalived/test.sh"
interval 2 #健康检查周期
weight 20 #优先级变化幅度
fall 3 #判定服务异常的检查次数
rise 2 #判定服务正常的检查次数
}
vrrp_instance VI_1 {
state BACKUP
interface ens33
virtual_router_id 51
priority 90
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.110
}
track_script {
chk_nginx
}
}
############################################
# vim /etc/keepalived/test.sh
###################################
#!/bin/bash
count=`ps -ef|grep nginx|grep -v grep|wc -l`
if [ $count -gt 0 ];then
exit 0
else
exit 1
fi
####################################
# chmod +x /etc/keepalived/test.sh
五、综合
综上所述,通过实践可以得出结论:
1.keepalived的主备状态与state值设置无关;
2.主备机由priority值和vrrp_script中的weight值之和决定,大的为主;
3.主备比较权值=priority值+weight值*标志位,当vrrp_script检测脚本为true时标志位为1,反之为0;
4.为保证正常的主备切换,weight值应大于主备priority值之差。