继续上次“测试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为正数来临时解决的,最近有空琢磨了一下,才发现问题。