Keepalived状态切换的条件和因素
一、Keepalived 应用场景keepalived的研发是针对LVS的,特点是轻量级、配置简洁。正因为这个特点,个人认为其适合应用在资源相对少,且无共享存储的环境下,尤其适合在负载均衡器上使用,如LVS、haproxy、nginx等上,也可以用于轻量级的http环境,作为其高可用组件。当然理论上很多高可用的场景其都可以实现,不过基于keepalived本身的资源切换方式功能并不推荐使用。
二、影响keepalived状态切换的因素
keepalived状态切换主要通过其VRRP协议中的weight值结合健康脚本实现,节点的优先级也会根据脚本的检测状态动态调整。其实keepalived实现根据资源健康情况进行自由切换会根据跑的业务类型会有差别的的,有些情况当master上的资源由于故障切换到backup上时候,那么如果想再切回来就需要关闭keepalived的服务才可以。
1.MASTER、BACKUP、priority(优先级)
设定keepalived的master和backup值主要是在priority(优先级)相同的前提下才有意义,如果优先级不同的话,还是以优先级高的为master,而不管其设定了master还是backup,通常下我们两个节点最好指定不同的优先级。
2.vrrp_script脚本的weight值
这个weight值必须指定,否则有时候重启服务后该节点被显示为fault 状态。
weight值分为正值和负值,假定weight值为W,初始的优先级为P,
当weight值0时
[*] 如果检测脚本返回值=0,则节点最终优先级=P+W,优先级会增加
[*] 如果检测脚本返回值≠0,则节点最终优先级不改变。
节点优先级的变化和所在节点的业务状态会有很大关系,看下面两个表格:
[*] 一,当两个节点上的业务服务都处于启动状态,如httpd,那么优先级变化会如下:
节点设定优先级weight值节点正常运行优先级
(两个节点httpd都启动)节点A:服务检测失败A恢复,且不抢占 A100-2100100-2=98100 B99-2999999 状态A为masterA为masterA为master切换到B为master切换到A为master
[*] 二,当master节点业务启动,backup节点业务为停止状态,如,haproxy(因为haproxy没有监听的地址是无法启动的,其实很多业务都是两个节点一启一停的)
节点设定优先级weight值节点正常运行时的优先级节点A业务失败时的优先级停止A的keepalived后的优先级重新开启A的keepalived优先级停止B的keepalived后的优先级A100-2100100-2=98无100-2=9898B99-299-2=97(因为haproxy停止)979799无状态A为masterA为masterA为masterA>B,并不切换切换到B为masterA
页:
[1]