zoukankan      html  css  js  c++  java
  • Keepalived 角色选举


    简介:

    1、在 Keepalived 集群中,其实并没有严格意思上的主、备节点,虽然可以在 keepalived.conf 中定义 state 选项为 MASTER 状态,
    但是这并不意味着此节点就一直是 MASTER 角色。控制节点角色的是 keepalived.conf 中的 priority 值,还有 vrrp_script 模块中的 weight 值,
    这两个选项对应的是一个整数值,其中 weight 的值可以是正整数,也可以是负整数,一个节点在集群中的角色就是由这两个值来控制的。

    2、在一个一主多备的 Keepalived 集群中,priority 值最大的将成为集群中的 MASTER 角色,其他的都是 BACKUP 角色。
    当 MASTER 节点发生故障时,BACKUP 节点之间将进行角色选举,通过节点优先级 priority 跟 weight 来计算,选出新的 MASTER 节点接管服务。

    3、在 vrrp_script 模块中,如果不设置 weight 值,那么集群优先级的选择将由 keepalived.conf 配置文件中的 priority 值决定。

    weight 值的设定:

    节点 A 、B 组成 Keepalived 集群,A 的 priority 值为 100 ,B 的 priority 值为 80

    正常情况下 A 为 MASTER / B 为 BACKUP

    现加入资源监控 vrrp_script 模块来监控 nginx

    weight 的值,在正整数的情况下必须大于 20

    因为当 A 节点中的 Nginx 无法提供服务时,A 节点的脚本检测将失败,返回 1

    这时 A 节点的权值将保持 priority 的值 100

    而 B 节点的权值将变为 priority + weight 的和,即 80 + weight ,这个和必须大于 100 才会发生主备切换

    weight 的两种情况:

    1、正整数时

    MASTER 节点 vrrp_script 脚本检测失败时,MASTER 节点的 priority 的值小于 BACKUP 节点 priority + weight 的和时,进行主备切换

    MASTER 节点 vrrp_script 脚本检测成功时,MASTER 节点 priority + weight 的值大于 BACKUP 节点 priority + weight 的和时,主节点依然是主节点,不发生切换

    2、负整数时

    MASTER 节点 vrrp_script 脚本检测失败时,MASTER 节点 priority - weight 小于 BACKUP 节点 priority 的值时,进行主备切换

    MASTER 节点 vrrp_script 脚本检测成功时,MASTER 节点 priority 的值大于 BACKUP 节点 priority 的值时,主节点依然是主节点,不发生切换

    总结:weight 值的绝对值必须大于 MASTER 节点的 priority - BACKUP 节点的 priority 的差 !

  • 相关阅读:
    前端发展态势 && 前端工作流程个人浅析
    Mac在Django安装mysqlclient时报错
    rabbitMQ简单配置及OSError: [Errno 9] Bad file descriptor问题
    MacOS 出现command not found
    Celery简单说明以及在Django中的配置
    Celery目录结构配置
    shell脚本之安装docker
    阿里云按需购买设置
    Java中的关键字 transient
    jvm常用参数
  • 原文地址:https://www.cnblogs.com/wangxiaoqiangs/p/5630551.html
Copyright © 2011-2022 走看看