RabbitMQ在Ubuntu上的集群管理操作指南
rabbit1、rabbit2),并在所有节点的/etc/hosts文件中添加集群节点IP与主机名的映射(如192.168.1.101 rabbit1、192.168.1.102 rabbit2),确保可通过主机名互相访问。sudo apt update sudo apt install -y erlang sudo apt install -y rabbitmq-server  sudo systemctl start rabbitmq-server sudo systemctl enable rabbitmq-server  rabbitmq_management插件(默认监听15672端口):sudo rabbitmq-plugins enable rabbitmq_management  RabbitMQ节点通过Erlang Cookie(默认路径/var/lib/rabbitmq/.erlang.cookie)进行身份验证,所有节点的Cookie文件必须内容一致且权限正确(400、属主为rabbitmq:rabbitmq)。
rabbit1)作为Cookie源,复制其Cookie内容到其他节点:# 在rabbit1上查看Cookie sudo cat /var/lib/rabbitmq/.erlang.cookie # 将内容复制到rabbit2、rabbit3(需替换为实际IP或主机名) sudo scp /var/lib/rabbitmq/.erlang.cookie user@rabbit2:/var/lib/rabbitmq/.erlang.cookie sudo scp /var/lib/rabbitmq/.erlang.cookie user@rabbit3:/var/lib/rabbitmq/.erlang.cookie # 在其他节点设置Cookie权限 sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie  rabbit2、rabbit3)上停止RabbitMQ应用并重置(首次加入时需重置,会清除节点原有数据):sudo rabbitmqctl stop_app sudo rabbitmqctl reset sudo rabbitmqctl start_app  join_cluster命令,指定主节点的Erlang节点名称(格式为主机名@节点IP或主机名,如rabbit@rabbit1):sudo rabbitmqctl stop_app sudo rabbitmqctl join_cluster rabbit@rabbit1 # 加入rabbit1的集群 sudo rabbitmqctl start_app  cluster_status命令,查看running_nodes是否包含所有集群节点:sudo rabbitmqctl cluster_status  输出示例(成功加入后):Cluster status of node rabbit@rabbit1 [{nodes,[{disc,[rabbit@rabbit1,rabbit@rabbit2,rabbit@rabbit3]}]}, {running_nodes,[rabbit@rabbit3,rabbit@rabbit2,rabbit@rabbit1]}]  默认情况下,RabbitMQ队列仅在单个节点存储,需通过镜像队列策略将队列复制到多个节点。以下命令将所有队列镜像到集群所有节点,并开启自动同步:
sudo rabbitmqctl set_policy ha-all "^.*" '{"ha-mode":"all","ha-sync-mode":"automatic"}' --priority 0 --apply-to queues  ha-mode: all:队列复制到所有节点;ha-sync-mode: automatic:新节点加入时自动同步队列数据;^.*:匹配所有队列(可修改为特定前缀,如ha-order仅镜像order开头队列);--apply-to queues:策略应用于队列。stop_app→reset→join_cluster(指向集群中任意在线节点)→start_app;cluster_status验证新节点是否加入。rabbit4)上停止应用:sudo rabbitmqctl stop_app  rabbit1)执行forget_cluster_node命令,移除目标节点:sudo rabbitmqctl forget_cluster_node rabbit@rabbit4  reset(清除所有状态信息)→start_app(重启服务):sudo rabbitmqctl reset sudo rabbitmqctl start_app  /var/lib/rabbitmq/.erlang.cookie);ping rabbit2测试)。rabbitmq_management插件已启用(rabbitmq-plugins list查看);ha-mode: all);durable=true参数)。disc,存储元数据),避免单点故障;内存节点(ram,提升性能)可作为辅助节点;/etc/rabbitmq/rabbitmq.conf中添加cluster_partition_handling = pause_minority,避免网络分区导致脑裂;durable=true),防止节点重启数据丢失。