rabbitmq 创建集群

Rabbitmq的集群是依赖于erlang的集群来工作的,所以必须先构建起erlang的 集群环境,而Erlang的集群中各节点是通过一个magic cookie来实现的,这个 cookie 存放在 /var/lib/rabbitmq/.erlang.cookie 中,文件是 400 的权限,所以必须 保证各节点cookie保持一致,否则节点之间就无法通信。

各服务器关闭rabbitmq
systemctl stop rabbitmq-server

在mq-serverl同步.erlang.cookie至碁他两台服务器
scp /var/lib/rabbitmq/.erlang.cookie 172.31.0.106:/var/lib/rabbitmq/.erlang.cookie

chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie #需要重新加下权限不然拷贝过去的文件存在权限问题会导致服务不能启动

各服务器启动rabbitmq
systemctl start rabbitmq-server

査看当前集群状态

rabbitmqctl cluster_status

创建rabbitmq 集群
root@mq-serverl:~# rabbitmqctl stop_app #停止 app 服务
root@mq-serverl:~# rabbitmqctl reset #*清空元数据
Resetting node rabbit@mq-serverl...

#将rabbitmq-serverl添加到集群当中,并成为内存节点,不加-ram默认是磁盘节点
root@mq-serverl:~# rabbitmqctl join_cluster rabbit@mq-server3 -ram
Clustering node rabbit@mq-serverl with rabbit@mq-server3

root@mq-serverl:~# rabbitmqctl start_app #启动 app 服务
Starting node rabbit@mq-serverl ...
completed with 3 plugins.

将集群设置为镜像模式
rabbitmqctl set_policy ha-all "#" '{"ha-mode":"all"}' 一台节点执行即可

验证集群状态
[root@mq-server3 rabbitmq]# rabbitmqctl cluster_status
Cluster status of node 'rabbit@mq-server3' ...
[{nodes,[{disc,['rabbit@mq-server3']},{ram,['rabbit@mq-server1']}]},
{running_nodes,['rabbit@mq-server1','rabbit@mq-server3']},
{cluster_name,<<"rabbit@mq-server3">>},
{partitions,[]},
{alarms,[{'rabbit@mq-server1',[]},{'rabbit@mq-server3',[]}]}]

posted @   运维笔记123  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示