Keepalived的权值问题(priority与weight)

2023-11-14

     在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值的设置,要非常谨慎,如果设置不好,将导致集群角色选举失败,使集群陷于瘫痪状态。


本文出自 “王小酸” 博客,请务必保留此出处http://wangaimin.blog.51cto.com/8499946/1903842

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keepalived的权值问题(priority与weight) 的相关文章

  • 网站服务器正常,有的外部http访问会出现503

    Linux系统相关内核参数配置异常 将 etc sysctl conf下 net ipv4 tcp tw recycle 0 net ipv4 tcp timestamps 0 执行 sysctl p 使配置生效 net ipv4 tcp
  • python安装opencv安装出错_在CentOS上安装带有python模块的OpenCV出现错误

    我回答我自己的问题 希望遭受同样问题的人能在短时间内找到解决问题的方法 在 1 首先 用yum更新所有的页面包 在安装OpenCV时 我发现了几个由依赖性问题引起的bug 在sudo yum update skip broken 2 使用
  • js将时间搓转换成字符串格式

    var timestamp 1425553097 var d new Date timestamp 1000 根据时间戳生成的时间对象 var date d getFullYear d getMonth 1 d getDate d getH
  • 网状结构(图)图的存储(邻接矩阵、邻接表)、图的遍历(深度DFS、广度BFS)、图的最短路径

    图 多对多关系 是一种网状数据结构 图是由非空的顶点集合和一个描述顶点之间关系的集合组成 其定义 Graph V E V x x 某个数据对象 E
  • dashicons.min.css,WordPress前端使用跟后台的Dashicons图标字体?

    很多站长都喜欢在站点菜单或其他地方添加一些图标字体 常用的就是添加Font Awesome图标和阿里巴巴矢量库图标 其实我们使用的 wordpress 本身就有一套管理员使用的官方图标字体 Dashicons 登录我们站点后台就能看到这些图
  • 视频码率(Bitrate),帧率(FPS)和分辨率的联系与区别

    一 视频码率 码率就是数据传输时单位时间传送的数据位数 一般我们用的单位是kbps即千位每秒 也就是取样率 并不等同与采样率 采样率的单位是Hz 表示每秒采样的次数 单位时间内取样率越大 精度就越高 处理出来的文件就越接近原始文件 但是文件
  • matlab里的function编程,MATLAB 元编程介绍

    这篇文章对 Matlab 中的元编程进行了简单的介绍 Matlab 是一个古老而又高度专业化的语言 由于这一原因 缺乏很多在现代或者通用语言中拥有的特性 然而 用一些简单的工具 我们可以发现 Matlab 也可以足够灵活去进行非常简单的元编
  • HTML、CSS与JavaScript之间的区别与联系;HTML与HTML5之间的区别、CSS与CSS3之间的区别

    HTML与CSS和JavaScript之间的关系与区别 HTML CSS JS JavaScript 之间是相互依赖 共同构建了网页的展示和交互 HTML HyperText Markup Language 是超文本标记语言 CSS Cas
  • Qtcreator中常用快捷键总结

    转载自 https blog csdn net wuli dear wang article details 82143152 Qtcreator中常用快捷键总结 F1 查看帮助 F2 跳转到函数定义 和Ctrl 鼠标左键一样的效果 Shi
  • 入门系列之Kubernetes部署

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由林岑影 发表于云 社区专栏 容器实例服务 Container Instance Service CIS 可以帮您在云上快捷 灵活的部署容器 让您专注于构建程序和使用容器而非管理
  • 五分钟带你一步一步去了解Spring Boot是如何实现自动配置

    前言 在使用传统的 Spring 去做 Java EE 应用开发时 在项目中会出现大量的 XMl配置文件 使 Java EE 项目变得笨重且繁琐 从而导致开发和部署上的效率降低 Spring Boot 的出现就是简化 Spring 应用的搭
  • 计算机原码反码补码的理解和作用

    摘要 本文旨在深入探讨整数在计算机中的二进制表示形式以及涉及的源码 反码和补码的运算原理 我们将介绍二进制数的基本概念 解释源码 反码和补码的定义和转换规则 并探讨在运算过程中它们的作用和区别 通过详细的解释和示例 我们希望读者能够全面理解
  • Vue项目引用百度地图并实现搜索定位等功能

    Tip 本篇文章为案例分析 技术点较多 所以篇幅较长 认真阅览的你一定会学到很多知识 前言 百度地图开放平台 给开发者们提供了丰富的地图功能与服务 使我们的项目中可以轻松地实现地图定位 地址搜索 路线导航等功能 本文给大家介绍如何在vue项
  • 继续发布VS2005下DataGridView 的多种样式列控件

    VS2005已经发布好久了 但对DataGridView 的使用 在网上的资料还比较少 DataGridView 无论是美观与功能方面都是DataGrid所不能比的 应该说DataGridView 不是DataGrid的升级 因为DataG
  • 大范围自动化时序软件LiCSBAS安装教程

    1 配置虚拟环境 1 1创建虚拟环境 注意随着版本的提升 python现在是3 9 装不上 需要降python改为3 8版本即可 conda create n licsbas python 3 8 13 1 2 安装LiCSBAS所需要的库
  • 华为ensp模拟校园网/企业网实例(精品拓扑图)

    文章简介 本文用华为ensp对企业网络进行了规划和模拟 也同样适用于校园 医院等场景 如有需要可联系作者 可以根据定制化需求做修改 作者简介 网络工程师 希望能认识更多的小伙伴一起交流 可私信或QQ号 1686231613 目录 摘 要 第
  • 华为发布数字资产继承功能

    在华为开发者大会2023 HDC Together 上 华为常务董事 终端BG CEO 智能汽车解决方案BU CEO余承东正式发布了数字资产继承功能 HarmonyOS提供了安全便捷的数字资产继承路径 在鸿蒙世界中 我们每个人在每台设备 应
  • AI技术进阶的75道面试题

    本文转载自AI科技大本营 整理 AI科技大本营 出品 AI科技大本营 公众号id rgznai100 导语 正值求职 跳槽季 无论你是换工作还是找实习 没有真本事都是万万不行的 可是如何高效率复习呢 之前我们给大家推荐了一份 Python

随机推荐

  • 如何把 Git Submodule 变成普通文件夹

    转载于此文章 记录一下 感觉最重要的是把原来的submodule中的 git删除掉 先删除 Git Submodule 删除所有相关的git配置文件即可 再把 submodule 中的文件添加到主仓库 删除 Git submodule 的命
  • MATLAB求矩阵最大、最小值

    矩阵求最大 最小值用max min函数 max A min A 返回行向量 求每列最大 最小值 max A B min A B 返回一个A B中比较大 较小元素组成的矩阵 max A dim min A dim dim 1 比较A的列 di
  • PowerOJ 2543: 赛场布置

    题目链接 对于每个点 它可以选择男或者女 如果要加上的贡献 那么相邻的一定得是异性才可以 所以 对相邻的 我们可以考虑成 然后 我们对于点坐标的的奇偶性分别讨论即可 当然 还需要考虑的贡献 然后就是全选减去最少割去的即可 include
  • iOS面试题(2.类变量的@protected,@private,@public,@package声明各有什么含义)拓展:常用框架和第三方框架

    2 类变量的 protected private public package声明各有什么含义 private 作用范围只能在自身类 protected 作用范围在自身类和继承自己的子类 默认 public 作用范围最大 可以在任何地方被访
  • nginx匹配以XXX结尾的

    匹配以do结尾的所有文件 如http 192 168 126 168 8080 delivery transportPlanData do startRelease 2019 07 06 endRelease 2019 07 06 sear
  • 初识Composer

    文章目录 依赖管理工具Composer 参考 1 简介 2 安装Composer 3 声明和安装依赖 4 自动加载 5 模块仓库 依赖管理工具Composer 参考 Composer 中文网 Packagist 中国全量镜像官方 地址htt
  • cygwin的git vscode中的使用

    背景 需要用到cygwin 编辑器是vscode 版本 vscode 版本1 55 cygwin版本2 11 2 1 cygcheck c cygwin cygwin的git2 17 cygcheck c git vscode报错 open
  • 算法篇-------贪心2

    文章目录 题目1 活动选择 题目2 无重叠区间 题目3 最多可以参加的会议数目 题目4 去除重复字母 题目5 移掉K位数字 题目6 拼接最大数 题目1 活动选择 有n个需要在同一天使用同一个教室的活动a1 a2 an 教室同一时刻只能由一个
  • linux指令_龙红云

    一 基础指令 1 ls指令 ls 列出当前目录下的所有文件 文件夹的名字 ls root 列出root下的所有文件 文件夹的名字 ls l 以详细列表的形式展示 ls la ls a 显示所有文件 文件夹 包含了隐藏文件 文件夹 ls lh
  • Spring学习总结

    因为是学习总结 所以参考了很多资料做的博客 如果有侵权 请联系我 写的不对的欢迎指出 Spring 开源的轻量级框架 Spring核心 IOC 控制反转控 制反转还有一个名字叫做DI Dependency Injection 中文意思叫依赖
  • Python轻量级Web框架Flask(9)——图书馆项目

    1 项目要求 创建一个项目 用来说明出版社 书籍和作者的关系 作者和书籍之间的关系 1对多 一本书由一个作者完成 一本书可以有多个创作者 出版社和书籍之间的关系 多对多 一个出版社可以出版多本书 一本书可以由多个出版社出版 要求 1 在书籍
  • React项目开发常用API

    记录一下React项目开发常用API 作为后续开发的参考 路由配置 配置文件形式 router index js import React lazy Suspense from react Suspense配合lazy实现懒加载 const
  • Golang 微框架 Gin 简介

    框架一直是敏捷开发中的利器 能让开发者很快的上手并做出应用 甚至有的时候 脱离了框架 一些开发者都不会写程序了 成长总不会一蹴而就 从写出程序获取成就感 再到精通框架 快速构造应用 当这些方面都得心应手的时候 可以尝试改造一些框架 或是自己
  • element-ui的table动态渲染表头

  • ruoyi管理系统+微信小程序登录解决

    原料 ruoyi管理系统项目模板 基于springboot 微信小程序项目 阿里云服务器 有域名 有ssl证书 阿里云服务器的ssl证书可以买一个仅限一年免费的那个证书 注意事项 1 微信小程序调用云服务器接口需要https csdn ne
  • Android:usb转232串口通信

    准备工作 首先得adb进入盒子root模式 将 dev ttys1这个文件改为777 使得所有用户可操作 adb root adb remount adb shell 进入设备的root模式 执行 chmod 777 dev ttys1 执
  • 项目 谷粒学院Day16-18

    Day 16 07 13 统计分析模块 后台 准备工作 创建统计表 创建service statistics模块 使用代码生成器生成代码 创建启动类 SpringBootApplication ComponentScan basePacka
  • 《Hadoop权威指南》书摘-HDFS概述

    转载请注明出处 独立博客 http wangnan tech 简书 http www jianshu com u 244399b1d776 知乎 https zhuanlan zhihu com c 121958856 设计 超大文件 已经
  • pthread_cond_timedwait

    pthread cond timedwait pthread cond signal
  • Keepalived的权值问题(priority与weight)

    在Keepalived集群中 其实并没有严格意义上的主 备节点 虽然可以在Keepalived配置文件中设置 state 选项为 MASTER 状态 但是这并不意味着此节点一直就是Master角色 控制节点角色的是Keepalived配置文