rabbitmq镜像集群搭建

用到的ip地址

ip地址 端口
192.168.101.65(主) 15672
192.168.101.75 15672
192.168.101.85 15672

安装erlang和rabbitmq

安装

安装三个包

yum install esl-erlang_23.0-1_centos_7_amd64.rpm -y

yum install esl-erlang-compat-18.1-1.noarch.rpm -y

rpm -ivh rabbitmq-server-3.8.9-1.el7.noarch.rpm

启动rabbitmq和web插件

rabbitmq启动失败

复制代码
[root@rabbitmq01 rabbitmq]# journalctl -xe
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: {{shutdown,
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: 14:02:03.632 [error]                    {failed_to_start_child,auth,
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: 14:02:03.632 [error]                        {"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces",
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: {failed_to_start_child,auth,
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: {"Error when reading /var/lib/rabbitmq/.erlang.cookie: eacces",
8月 17 14:02:03 rabbitmq01 rabbitmq-server[27206]: [{auth,init_cookie,0,[{file,"auth.erl"},{line,290}]},

rabbitmq没有读取.erlang.cookie的权限,修改权限所有者

复制代码
chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie

配置镜像集群

修改映射文件

复制代码
vi /etc/hosts

添加

复制代码
192.168.101.65 rabbitmq01
192.168.101.75 rabbitmq02
192.168.101.85 rabbitmq03

重启网络服务

复制代码
service network restart

修改主机名(不要在集群启动后再去修改,会让集群节点名称是根据主机名来的,中途改掉会报错)

复制代码
hostnamectl set-hostname new_hostname(rabbitmq01/0/03)

同步 rabbitmq的cookie 文件.erlang.cookie (隐藏文件,使用 ls -all 显示)

复制代码
scp /var/lib/rabbitmq/.erlang.cookie 192.168.101.75:/var/lib/rabbitmq
scp /var/lib/rabbitmq/.erlang.cookie 192.168.101.85:/var/lib/rabbitmq

75和85重启rabbitmq-server

复制代码
systemctl restart rabbitmq-server

75和85加入集群

复制代码
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbitmq01
rabbitmqctl start_app


如果中途在主节点删过从节点,但是从节点没有重置,又再次想加入主节点,会报下面的错

复制代码
[root@rabbitlocalhost miaoruntu]# rabbitmqctl join_cluster rabbit@rabbitmq01
Clustering node rabbit@rabbitlocalhost with rabbit@rabbitmq01
Error:
{:inconsistent_cluster, 'Node rabbit@rabbitmq01 thinks it's clustered with node rabbit@rabbitlocalhost, but rabbit@rabbitlocalhost disagrees'}

在从节点重置,再重新加入主节点

复制代码
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq01
rabbitmqctl start_app

添加用户

复制代码
rabbitmqctl add_user supeizhi 123
rabbitmqctl set_user_tags supeizhi administrator
rabbitmqctl set_permissions -p "/" supeizhi ".*" ".*" ".*"

设置镜像策略

pattern:"^queue_" 表示对队列名称以"queue_"开头的所有队列镜像,而"^"表示匹配所有的队列

definition:镜像定义,包括三个部分ha-mode, ha-params, ha-sync-mode

ha-mode:高可用模式,有效值为 all/exactly/nodes,策略模式为 all(复制到所有节点,包含新增节点)

创建队列

点击testQueue发送消息

后面蓝色的+2表示有两个消息节点,total1表示消息发送成功

将节点01停掉

复制代码
rabbitmqctl stop_app

后面蓝色变成+1没有了

将节点03停掉,后面没有从节点了

启动01和03节点(鼠标过去会显示节点未同步)

同步队列

复制代码
rabbitmqctl sync_queue testQueue


变回蓝色

相关推荐
2501_933329553 小时前
企业舆情处置技术实践:基于AI的智能监测与申诉系统架构解析
人工智能·分布式·架构·系统架构
爱丽_7 小时前
Redis 分布式锁:SET NX、过期时间、续租、可重入、Redlock 与坑
数据库·redis·分布式
ok_hahaha9 小时前
java从头开始-黑马点评-分布式锁-redis实现基础版
java·redis·分布式
传感器与混合集成电路10 小时前
法珀干涉与光栅补偿:井下压力温度一体化光纤监测技术
分布式
@insist12311 小时前
数据库系统工程师-分布式数据库与数据仓库核心考点及应用体系
数据库·数据仓库·分布式·软考·数据库系统工程师·软件水平考试
XDHCOM12 小时前
TP5框架Redis分布式缓存实战,解决高并发场景下的数据一致性问题
redis·分布式·缓存
Fzuim12 小时前
从CLI到分布式智能体:重新理解AI Agent的演进路径与工程现实
人工智能·分布式·ai·agent·agentic
_院长大人_14 小时前
Spring Boot 3.3 + Atomikos 分布式事务日志路径配置踩坑记录
spring boot·分布式·后端
Data 实验室15 小时前
TaskPyro “小龙虾版本”专业爬虫管理平台来了:AI+分布式+IM 机器人,一套搞定企业级爬虫调度
人工智能·分布式·爬虫
想你依然心痛15 小时前
HarmonyOS 5.0教育行业解决方案:基于分布式能力的沉浸式智慧课堂系统
分布式·wpf·harmonyos