在Keepalived集群中,其实并没有严格意义上的主、备节点,虽然可以在Keepalived配置文件中设置“state”选项为“MASTER”状态,但是这并不意味着此节点一直就是Master角色。控制节点角色的是Keepalived配置文件中的“priority”值,但并它并不控制所有节点的角色,另一个能改变节点角色的是在vrrp_script模块中设置的“weight”值,这两个选项对应的都是一个整数值,其中“weight”值可以是个负整数,一个节点在集群中的角色就是通过这两个值的大小决定的。

在一个一主多备的Keepalived集群中,“priority”值最大的将成为集群中的Master节点,而其他都是Backup节点。在Master节点发生故障后,Backup节点之间将进行“民主选举”,通过对节点优先级值“priority”和““weight”的计算,选出新的Master节点接管集群服务。

在vrrp_script模块中,如果不设置“weight”选项值,那么集群优先级的选择将由Keepalived配置文件中的“priority”值决定,而在需要对集群中优先级进行灵活控制时,可以通过在vrrp_script模块中设置“weight”值来实现。下面列举一个实例来具体说明。

假定有A和B两节点组成的Keepalived集群,在A节点keepalived.conf文件中,设置“priority”值为100,而在B节点keepalived.conf文件中,设置“priority”值为80,并且A、B两个节点都使用了“vrrp_script”模块来监控mysql服务,同时都设置“weight”值为10,那么将会发生如下情况。

在两节点都启动Keepalived服务后,正常情况是A节点将成为集群中的Master节点,而B自动成为Backup节点,此时将A节点的mysql服务关闭,通过查看日志发现,并没有出现B节点接管A节点的日志,B节点仍然处于Backup状态,而A节点依旧是Master状态,在这种情况下整个HA集群将失去意义。

下面就分析一下产生这种情况的原因,这也就是Keepalived集群中主、备角色选举策略的问题。下面总结了在Keepalived中使用vrrp_script模块时整个集群角色的选举算法,由于“weight”值可以是正数也可以是负数,因此,要分两种情况进行说明。

1. “weight”值为正数时

在vrrp_script中指定的脚本如果检测成功,那么Master节点的权值将是“weight值与”priority“值之和,如果脚本检测失败,那么Master节点的权值保持为“priority”值,因此切换策略为:

Master节点“vrrp_script”脚本检测失败时,如果Master节点“priority”值小于Backup节点“weight值与”priority“值之和,将发生主、备切换。

Master节点“vrrp_script”脚本检测成功时,如果Master节点“weight”值与“priority”值之和大于Backup节点“weight”值与“priority”值之和,主节点依然为主节点,不发生切换。

2. “weight”值为负数时

在“vrrp_script”中指定的脚本如果检测成功,那么Master节点的权值仍为“priority”值,当脚本检测失败时,Master节点的权值将是“priority“值与“weight”值之差,因此切换策略为:

Master节点“vrrp_script”脚本检测失败时,如果Master节点“priority”值与“weight”值之差小于Backup节点“priority”值,将发生主、备切换。

Master节点“vrrp_script”脚本检测成功时,如果Master节点“priority”值大于Backup节点“priority”值时,主节点依然为主节点,不发生切换。

在熟悉了Keepalived主、备角色的选举策略后,再来分析一下刚才实例,由于A、B两个节点设置的“weight”值都为10,因此符合选举策略的第一种,在A节点停止Mysql服务后,A节点的脚本检测将失败,此时A节点的权值将保持为A节点上设置的“priority”值,即为100,而B节点的权值将变为“weight”值与“priority”值之和,也就是90(10+80),这样就出现了A节点权值仍然大于B节点权值的情况,因此不会发生主、备切换。

对于“weight”值的设置,有一个简单的标准,即“weight”值的绝对值要大于Master和Backup节点“priority”值之差。对于上面A、B两个节点的例子,只要设置“weight”值大于20即可保证集群正常运行和切换。由此可见,对于“weight值的设置,要非常谨慎,如果设置不好,将导致集群角色选举失败,使集群陷于瘫痪状态。

本文转自南非蚂蚁51CTO博客,原文链接: http://blog.51cto.com/ixdba/1544858,如需转载请自行联系原作者

Keepalived中Master和Backup角色选举策略相关推荐

  1. SQL Server中的基数估计角色

    This post opens a series of blog posts dedicated to my observations of the new cardinality estimator ...

  2. RabbitMQ普通集群、镜像集群、集群负载均衡、压力测试、选举策略及测试、集群故障恢复【集群超大全详解】

    前言 这几年一直在it行业里摸爬滚打,一路走来,不少总结了一些python行业里的高频面试,看到大部分初入行的新鲜血液,还在为各样的面试题答案或收录有各种困难问题 于是乎,我自己开发了一款面试宝典,希 ...

  3. KafKa - 控制器作用 及 选举策略

    一.KafKa控制器作用 在 kafka 中分为 broker 和 partition 分区,其中分区副本在前几篇文章中都进行了讲解,本篇文章针对 broker 进行分析,其中在 kafka 集群中, ...

  4. 分布式系统中一些主要的副本更新策略——Dynamo/Cassandra/Riak同时采取了主从式更新的同步+异步类型,以及任意节点更新的策略。...

    分布式系统中一些主要的副本更新策略. 1.同时更新 类型A:没有任何协议,可能出现多个节点执行顺序交叉导致数据不一致情况. 类型B:通过一致性协议唯一确定不同更新操作的执行顺序,从而保证数据一致性 2 ...

  5. linux服务器管理公司用户,在Linux服务器Jenkins中管理用户和角色的方法

    下面将教你如何在Linux服务器Jenkins中管理用户和角色,它需要创建角色并分配给用户,你需要运行Jenkins服务器才能操作接下来的工作. 安装Jenkins参考文章 在Jenkins中管理用户 ...

  6. 错误:在keystone中无法找到默认角色user_Kubernetes RBAC角色权限控制

    摘选:https://i4t.com/4448.html 在Kubernetes中所有的API对象都保存在ETCD里,可是,对这些API对象的操作,却一定是通过访问kube-apiserver实现的. ...

  7. Git工作流中常见的三种分支策略:GitFlow、GitHubFlow和GitLabFlow

    摘要:聊一聊Git中的工作流--分支策略. 本文分享自华为云社区<Git工作流中常见的三种分支策略:GitFlow.GitHubFlow以及GitLabFlow>,原文作者:敏捷的小智. ...

  8. aws cli 使用_学习AWS CLI –使用AWS CLI探索IAM用户,角色,策略

    aws cli 使用 AWS provides a command-line interface (AWS CLI) tool to work with its various cloud servi ...

  9. 用计算机解决小学数学问题,小学数学学习中存在的问题和解决策略

    小学数学学习中存在的问题和解决策略 一.教学方法分层异步 对于AB类型的学生,教学可以直接进入主题,可以向更深的方向讲解,给些这类型学生课堂独立思考时间长一些.而C类型的学生,教师要注重复习引入,慢慢 ...

最新文章

  1. iOS 实现多个可变 cell 复杂界面的制作
  2. 怎样才能正确的挑选和建立关键词词库?
  3. NanoProfiler-Step1翻译
  4. BZOJ 3740. 【TJOI2014】电源插排
  5. python开发多平台app_django下创建多个app并设置urls方法
  6. 策略模式示例代码_策略设计模式示例
  7. java数组代表unicode值么,02-Java的数组
  8. php 使用fseek指针读取大文件日志
  9. Java 已老,Kotlin 或将取而代之!
  10. 封杀抖音,微博在紧张什么?
  11. IIS访问要求输入用户名密码
  12. Spring之AOP理解
  13. 创建MSN界面式的Ext JS布局
  14. 【译】2021年国外十大AI自动写作软件评测
  15. 中南大学计算机学院楠,中南比湖大更湖大,不对,应该说湖大没中南大学中南。...
  16. NC打印模板汇总技巧
  17. 2022-2028全球与中国侧装车载摄像头市场现状及未来发展趋势
  18. 36页智慧安防小区管控系统解决方案
  19. 复盘--写在秋招之后
  20. java 落单_飞太慢会落单,太快会受伤

热门文章

  1. SAP Retail MM41 维护商品主数据,报错 - 估价范围 NM01 还没有生产式的物料帐簿 – 之对策
  2. 人工智能基础-机器学习任务之常规解决的六大问题
  3. 从其他领域和智能机器人的联系,浅谈人工智能的前景
  4. 语音识别已成红海,声纹识别正成为AI领域新热点
  5. SAP MM 如果存在OPEN的盘点凭证,则不能再次创建盘点凭证
  6. CTO的眼界到底有多宽
  7. AI从业者需要应用的10种深度学习方法
  8. 一文概览深度学习中的五大正则化方法和七大优化策略
  9. sklearn.preprocessing下的数据标准化(scale、MinMaxScaler)
  10. 编译原理四种文法的理解补充