Keepalived中Master和Backup角色选举(结点权重设置问题)

  1. 在Keepalived集群中,没有严格意义上的主备结点,一般情况下都在keepalived配置文件设置stata的选项为”MASTER”就以为就是matser的理解是存在误区的.
  2. 在keepalived集群中,控制节点角色的是Keepalived配置文件中的“priority”值.但他也不控制所有结点的角色.
  3. 另外一个能够改变结点角色的参数是”weight”,整数.weight可能是正负数或者零
  4. Keepalived集群中的角色是通过”weight”和”priority”这2个值的大小决定的.
  5. Keepalived一主多备集群中,”priority”最大的将成为集群中的MASTER结点,其他结点都处于BACKUP状态,一旦MASTER故障,这些处于BACKUP状态的结点将选取一个新的MASTER,这时候就需要按照BACKUP结点设置的”weight”和”priority”值计算,选出最大的值作为新的MASTER.

vrrp_scripts模块里面的”weight”是个特殊的地方,也是很容易理解不到位的地方,在设置不好的情况下,容易发生将导致集群角色选举失败,使集群陷于瘫痪状态.

  1. vrrp_scripts模块,如果不设置”weight”选项值,那么集群的优先级选择由keepalived配置文件中的”priority”值决定.
  2. 如果需要在集群灵活控制,就需要通过在vrrp_scripts模块中设置”weight”值来实现.
  3. “weight”值可以参考标准:”weight”值的绝对值要大于MASTER和BACKUP结点”priority”值之差.

vrrp_script中节点权重改变算法

Keepalived中使用vrrp_script模块时整个集群角色的选举算法,由于“weight”值可以是正数也可以是负数,因此,要分两种情况进行说明。

  1. “weight”值为正时,脚本检测成功时”weight”值会加到”priority”上,检测失败是不加.
    1.1 主失败:
           主priority<备priority+weight之和时会切换.
    1.2 主成功:
           主priority+weight之和>备priority+weight之和时,主依然为主,即不发生切换.
  2. “weight”为负数时,脚本检测成功时”weight”不影响”priority”,检测失败时,Master节点的权值将是“priority“值与“weight”值之差.
    2.1 主失败:
          主priotity-abs(weight) < 备priority时会发生切换.
    2.2 主成功:
          主priority > 备priority 不切换.
此条目发表在Keepalived分类目录,贴了, 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注