RabbitMQ高可用

集群

一、多台单节点

RabbitMQ高可用

1、准备两台服务器,安装一模一样的rabbitmq

A服务器节点

RabbitMQ高可用

B服务器节点

RabbitMQ高可用

2、修改配置文件

rabbitmq配置文件

主要加入集群节点

C:UsersAdministratorAppDataRoamingRabbitMQ

[ {rabbit, [ {vm_memory_high_watermark_paging_ratio, 0.4}, {vm_memory_high_watermark, 0.4}, {cluster_nodes, ['rabbit@WIN-BN52SEDCTKA', 'rabbit@WIN-0H2D8V9NVNT']} ] } ].

3、hosts配置文件

A,B服务器均做这个配置

C:WindowsSystem32driversetc

RabbitMQ高可用

A服务器: 192.168.140.167 rabbit@WIN-BN52SEDCTKA
B服务器: 192.168.140.142 rabbit@WIN-0H2D8V9NVNT

4、rabbitmq配置环境变量文件

A服务器:添加文件 rabbitmq-env.conf

NODENAME=rabbit@WIN-BN52SEDCTKA NODE_IP_ADDRESS=192.168.140.167 NODE_PORT=5672 RABBITMQ_MNESIA_BASE=C:UsersAdministratorAppDataRoamingRabbitMQdb RABBITMQ_LOG_BASE=C:UsersAdministratorAppDataRoamingRabbitMQlog

B服务器:添加文件 rabbitmq-env.conf

NODENAME=rabbit@WIN-0H2D8V9NVNT NODE_IP_ADDRESS=192.168.140.142 NODE_PORT=5672 RABBITMQ_MNESIA_BASE=C:UsersAdministratorAppDataRoamingRabbitMQdb RABBITMQ_LOG_BASE=C:UsersAdministratorAppDataRoamingRabbitMQlog

5、erlang.cookie文件统一

将A服务器中C:UsersAdministrator中的.erlang.cookie 的文件替换掉B服务器中 C:UsersAdministrator

和C:WindowsSystem32configsystemprofile 目录中的 .erlang.cookie。

保证不同节点可以相互通信的密钥,要保证集群中的不同节点相互通信必须共享相同的Erlang Cookie

重启服务配置集群

B服务器

rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app

A服务器

rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster rabbit@WIN-0H2D8V9NVNT rabbitmqctl start_app

rabbitmqctl join_cluster命令必须关闭应用,以及B服务器中对应端口必须通。

RabbitMQ高可用

登录管理界面,看到配置成功

RabbitMQ高可用

需要注意的是,搭建集群建议最少设置一个磁盘节点,防止机器意外关机等、丢失数据。(上面两个都是磁盘节点)

rabbitmq集群有两种节点 磁盘节点和内存节点。字面上了解,磁盘节点的数据存储在磁盘,内存节点的数据存储的内存中。因此存储速度方面内存节点有优势,数据安全方面磁盘节点有优势。

内存节点集群时的命令

rabbitmqctl join_cluster –ram rabbit@WIN-0H2D8V9NVNT

二、单台多节点

https://blog.csdn.net/zhang_jian__/article/details/69589047

消息镜像/同步

目的就是集群之间队列中信息同步 ,给A服务器发一条消息,自动同步到B服务器。

镜像是通过策略实现,把指定好的策略应用到队列。 策略的好处就是可以批量的匹配。

https://www.rabbitmq.com/ha.html

1、Ha-mode Ha-params 设置镜像队列

Ha-mode=all

同步到所有节点。当一个新的节点加入后,也会在这 个节点上复制一份。

Ha-params

镜像队列将会在集群上复制count份。如果集群数量少于count时候,队列会复制到所有节点上。如果大于Count集群,有一个节点crash后,新进入节点也不会做新的镜像。(一般ha-mode设置为all,这个就不设置就可以)

2、Ha-sync-mode 新从节点加入时 数据同步策略

ha-sync-mode=automatic (自动)

manually “手动”是默认的

自动同步会使队列在一段时间内无响应,这可能不太好取决于队列的用例.并且,只要有新的从属连接,就会发生自动同步.如果存在大量从属加入,则队列将在相当长的一段时间内无响应,除非队列相当空或网络非常快.

RabbitMQ高可用

RabbitMQ高可用

HA负载

HAProxy:在集群机制基础上可以指定集群内任意数量队列组成镜像队列,队列消息会在多节点间复制

https://blog.csdn.net/zhuyu19911016520/article/details/80206202

RabbitMQ脑裂

1、RabbitMQ 集群的网络分区容错性并不是非常高,在网络经常发生分区时会有些问题。

2、RabbitMQ 提供了三种配置:
ignore:默认配置,发生网络分区时不作处理,当认为网络是可靠时选用该配置
autoheal:各分区协商后重启客户端连接最少的分区节点,恢复集群(CAP 中保证 AP,有状态丢失)
pause_minority:分区发生后判断自己所在分区内节点是否超过集群总节点数一半,如果没有超过则暂停这些节点(保证 CP,总节点数为奇数个)

RabbitMQ高可用

CAP理论

RabbitMQ高可用

一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)

可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)

分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。

原文链接:https://blog.csdn.net/weixin_34187862/article/details/94043702

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/5899

(0)
上一篇 2022年8月25日
下一篇 2022年8月25日

相关推荐

发表回复

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

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml