RabbitMQ 网络分区处置策略配置

概述

集群成员之间的网络连接故障会影响客户端操作的数据一致性和可用性(如CAP定理)。 由于不同的应用程序对一致性有不同的要求 并且可以容忍不同程度的不可用,可以使用不同的分区处理策略。

检测网络分区

节点确定其对等节点是否关闭,如果另一个节点关闭节点在一段时间内无法联系它,默认为60 秒。 如果两个节点重新接触,并且都认为另一个节点已关闭,则节点将确定已发生分区。这将写入 RabbitMQ 日志,其形式如下:

2020-05-18 06:55:37.324 [error] <0.341.0> Mnesia(rabbit@warp10): ** ERROR ** mnesia_event got {inconsistent_database, running_partitioned_network, rabbit@hostname2}

可以通过服务器日志、HTTP API(用于监控)和 CLI 命令来识别分区是否存在。

CLI命令查看网络分区

rabbitmq-diagnostics cluster_status

rabbitmq-diagnostics cluster_status通常会显示 分区的空列表,如果发生网络分区将会显示Node节点:

rabbitmqctl cluster_status
# => Cluster status of node rabbit@warp10 ...
# => Basics
# =>
# => Cluster name: local.1
# =>
# => ...edited out for brevity...
# =>
# => Network Partitions
# =>
# => Node flopsy@warp10 cannot communicate with hare@warp10
# => Node rabbit@warp10 cannot communicate with hare@warp10

Http API查看网络分区

get方式请求/api/nodes接口,将返回分区 “在结点”下的每个节点的信息。

网络分区期间的行为

当网络分区就位时,两端(或更多!)的集群可以独立演化,两边以为对方已经崩溃了。这种情况称为裂脑。队列、绑定、交换可以单独创建或删除。

仲裁队列将在多数派。少数端的仲裁队列副本将不再存在取得进展(即接受新消息、交付给消费者等),所有这些工作都将是由新领导完成。

跨分区拆分的经典镜像队列最终将得到隔板的每一侧各有一个引线,同样是两侧独立行动。

除非分区处理策略,如pause_minority,配置为使用,即使在网络连接恢复后,拆分仍将继续。

脑裂恢复

要从裂脑中恢复,首先选择一个分区你最信任的。此分区将成为系统状态(架构、消息)的权限使用;在其他分区上发生的任何更改都将丢失。

停止其他分区中的所有节点,然后启动所有节点再。当他们重新加入集群时,他们将从受信任分区恢复状态。

最后,您还应该重新启动受信任的所有节点partition以清除警告。

停止整个集群并重新启动它可能更简单;如果是这样,请确保您启动的第一个节点来自受信任的分区。

分区处理策略

RabbitMQ 还提供了三种处理网络分区的方法:

  • pause_minority:发生分区后,会自动关闭处于少数分区的节点,并在网络恢复后自动重新加入。注意:这种模式下,需要rabbitmq的节点数量应为奇数(如3个或者5个)
  • autoheal:发生分区后,各分区下的节点正常工作,网络恢复后,会选出一个连接数最多、分区内节点数最多的节点为winner节点, 并重启其他节点,其他节点从winner节点同步数据。
  • pause-if-all-down:在关注的节点全部下线后会关闭自己,在关注的节点上线后, 可以有两种选择:
    • ignore: 不做任何处理
    • autoheal: 通过autoheal机制来恢复
      如果不配置,则代表忽略网络分区,不做任何处理。

修改方式

  • 进入rabbitmq安装目录(如 /opt/rabbitmq/)

  • 找到配置文件:一般在 安装目录 + rabbitmq-${版本}/etc/rabbitmq/rabbitmq.conf

  • 如果能搜到关键字:“cluster_partition_handling” 则直接修改对应的值为上面选项中的一个,如果没有搜到,则说明采用了忽略网络分区模式,可添加相关配置

示例如下:
pause-minority模式

cluster_partition_handling=pause_minority

pause-minority模式

cluster_partition_handling=autoheal

pause-if-all-down模式

cluster_partition_handling = pause_if_all_down## Recovery strategy. Can be either 'autoheal' or 'ignore'
cluster_partition_handling.pause_if_all_down.recover = ignore## Node names to check
cluster_partition_handling.pause_if_all_down.nodes.1 = rabbit@myhost1
cluster_partition_handling.pause_if_all_down.nodes.2 = rabbit@myhost2

策略选择

  • ignore:在网络可靠性达到最高实际可能的情况下使用节点可用性是最重要的。例如,所有群集节点都可以位于同一机架或等效机架中,与交换机连接,该交换机也是路由对外界。

  • pause_minority:适用于跨机架或可用区群集时在单个区域中,并且丢失大多数节点(区域)的概率一次被认为是非常低的。此模式会牺牲一些可用性。如果/当丢失的节点恢复时自动恢复的能力。

  • autoheal:当更关注服务的连续性时而不是跨节点的数据一致性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个性化纹身设计,Midjourney带你探索独一无二的艺术之美

hello,大家好,欢迎回来。 在当今社会,纹身已经变得非常常见。 在寻求与众不同的个性化纹身时,你是否曾经为了找不到独特的设计而苦恼? 现在,Midjourney将为你打开一扇全新的艺术之门,引领你探索纹身设计…

高通 Android 12 Settings不显示版本号问题

1、最近项目遇到一个奇葩问题,编译系统版本号不见了? 2、一开始我想着可能是自己代码没有make clean结果编译几个小时,然后烧录固件发现还是未生效。 3、然后这时候我又去看git log review最近修改也没有太大发现(待定&#xff…

docker安装flink

docker安装flink 5.1、拉取flink镜像,创建网络 docker pull flink docker network create flink-network5.2、创建 jobmanager # 创建 JobManager docker run \-itd \--namejobmanager \--publish 8081:8081 \--network flink-network \--env FLINK_PROPERTIES&…

第一篇:大纲

目录 第一篇:大纲 第二篇:CamX初认识(框架、代码结构介绍) 第三篇:CamX日志打印系统 第四篇:CamX确认当前选择的usecase、pipeline、sensormode 第五篇:CamX添加自定义node 第六篇:CamX添加自定义ven…

ArcgisForJS如何在线编辑ArcGIS Server发布的几何要素?

文章目录 0.引言1.ArcGIS创建几何要素2.ArcGIS Server发布几何要素3.ArcgisForJS在线编辑ArcGIS Server发布的几何要素 0.引言 ArcGIS For JS 是一种用于创建和编辑地理信息的 JavaScript 库,它允许用户在线编辑 ArcGIS Server 发布的几何要素。本文从ArcGIS创建几…

07 MyBatis之高级映射 + 懒加载(延迟加载)+缓存

1. 高级映射 例如有两张表, 分别为班级表和学生表 自然, 一个班级对应多个学生 像这种数据 , 应该如果如何映射到Java的实体类上呢? 这就是高级映射解决的问题 以班级和学生为例子 , 因为一个班级对应多个学生 , 因此学生表中必定有一个班级编号字段cid 但我们在学生的实体…

Yolov9全文翻译!

Yolo v9全文翻译 论文链接:👿 YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information 代码链接:👿 https://github.com/WongKinYiu/yolov9/tree/main 大量图片来袭!

为什么说抖店适合电商新手入局?门槛及运营玩法,今天一文详解!

大家好,我是电商小布。 现在,越来越多的人开始加入到了电商这个行业,原因就是看到了它发展的可能性。 而抖音小店这个项目,作为近几年发展势头非常猛的电商项目,成为了很多小伙伴们的首选。 为什么会这样呢&#xf…

QT/自定义槽和信号

创建两个类student和teacher,父类都为QObject 在teacher中自定义Signal,hungry //自定义信号,写道signals下 signals://返回值void//只需要声明//可以有参数,可以重载void hungry();void hungry(QString FoodName); 在student中…

抖音数据抓取工具|视频内容提取软件

引言部分: 介绍针对抖音视频下载需求开发的强大工具突出解决用户获取抖音视频繁琐问题的初衷 工具功能介绍: 详细描述工具功能,包括关键词搜索、自动批量抓取、选择性批量下载等提及基于C#开发的优势以及支持通过分享链接进行单个视频抓取…

10:部署Dashboard|部署Prometheus|HPA集群

部署Dashboard|部署Prometheus|HPA集群 Dashboard部署Dashboard上传镜像到私有仓库安装服务发布服务创建管理用户查看登录的Token信息 Prometheus步骤一:导入所有后续需要的镜像到私有镜像仓库(在master主机操作操作)步…

【区块链】智能交易模式下的数据安全流通模型

【区块链】智能交易模式下的数据安全流通模型 写在最前面**区块链智能交易模式概述****数据安全流通的挑战****数据安全流通模型的核心要素****实现数据安全流通的区块链技术****区块链智能交易模式下数据安全流通模型的设计原则****数据安全流通模型的应用案例分析****面临的挑…

ONLYOFFICE8.0——赋能办公

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-xdAoM2pHRmDFP0tF {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

c语言常用输入输出函数

目录 *概述*1. printf函数:用于向屏幕输出格式化的数据。2. scanf函数:用于从键盘读取输入并赋值给变量。3. getchar函数:用于从键盘读取单个字符。4. putchar函数:用于向屏幕输出单个字符。5. gets函数:用于从键盘读取…

IDEA 重装我都会默默的下载这些好用的插件

本文已经收录公众号:面汤放盐 IDEA 重装我都会默默的下载这些好用的插件 (qq.com) 这几年用得最多的插件,分享给大家。工欲善其事,必先利其器!每一次电脑重装,更换工作,我都会默默地打开我的插件收藏单&a…

SpringBoot项目实现文件上传,MINIO+OSS阿里云

MINIO 安装以及部署 官网:MinIO | Code and downloads to create high performance object storage 下载后是一个minio.exe的文件,可以先创一个文件夹来存放数据以及文件 在文件的目录下cmd进入控制台 minio.exe server data 启动成功后控制台会打印账…

Raspbian命令行RTSP/RTP服务

Raspbian命令行RTSP/RTP服务 1. 源由2. Raspbian摄像头2.1 命令行启动RTP摄像头2.2 命令行启动RTSP摄像头 3. 示例3.1 测试RTP摄像头3.2 测试RTSP摄像头3.3 QGroundControl测试3.3.1 RTSP配置3.3.2 RTP配置 4. 总结5. 参考资料 1. 源由 鉴于实际测试发现RTP协议下,…

利用DevOps和ITSM的集成能促进IT技术

在当今这个快节奏和技术驱动的世界里,DevOps 和 IT 服务管理(ITSM)理念在培养心理健康和减少技术压力的工作环境中正在发挥重要作用。混合最佳实践,实现更好、更快、更安全的服务。 什么是DevOps? DevOps 专注于采用协…

多人协作记账账本小程序开源版开发

多人协作记账账本小程序开源版开发 支持多人协作的记账本小程序,可用于家庭,团队,组织以及个人的日常收支情况记录,支持周月年度统计 便捷记账 便捷的记账方式,支持多种记账类型,快捷切换账本等 多账本 支…

猫头虎分享已解决Bug || ValueError: Setting an array element with a sequence.

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …