继续上次“测试keepalived备备模式”的配置后,测试运行状态中主从的切换过程

主要是分析优先级的改变过程。(目前的分析不一定正确,且可能片面,后续会更新,仅供参考)


优先级priority用P来代替

1、首先:
Pa = 85
Pb = 75

此时 Pa > Pb
主 = Pa
从 = Pb

weight = -20

检测脚本(retval)返回0,表示成功,其他(例如1),则表示失败
weight>0时,
retval=0,则P = P + weight
retval=1,不改变

weight<0时,
retval=0,不改变
retval=1,则P = P + weight


2、Pa上的服务失败了,监测脚本返回1
retval = 1
Pa = 85 + (-20) = 65
Pb = 75

此时,Pb > Pa,抢夺vip
主 = Pb
从 = Pa


3、Pa上的服务恢复了,监测脚本返回0
retval = 0
Pa = 85,恢复成原来的值
Pb = 75

但设置了不抢占(nopreempt),所以Pb依然是主,此时可以调整nopreempt参数来迁移vip
例如,先设置Pb为nopreempt,然后注释Pa的nopreempt,则,
此时,Pa > Pb,抢夺vip
主 = Pa
从 = Pb

我在之前的操作中,不小心忘了将Pa的脚本设置为可执行的,因此优先级在第3步一直是65,而不是期望的85,导致主从切换异常,后来是通过调整Pa的weight为正数来临时解决的,最近有空琢磨了一下,才发现问题。