以两台主机部署集群为例,假设ip分别为:192.168.2.100,192.168.2.200 192.168.2.100为主节点 1,环境准备 修改两台主机 /etc/hosts 文件,添加内容如下: 192.168.2.100 node1 192.168.2.200 node2 其中node1、node2为主机名称。 验证修改是否生效: 在node1主机上 ping node2,在node2主机上 ping node1 修改两台主机的静态名称: 在node1 上执行:sudo hostnamectl set-hostname node1 --static 在node2 上执行:sudo hostnamectl set-hostname node2 --static 2,在node1上启动rabbitmq,命令:sudo rabbitmq-server 将node1上/var/lib/rabbitmq/.erlang.cookie文件拷贝到node2下同路径, 保持两台主机.erlang.cookie保持一致。安装ssh来拷贝文件。 安装命令:sudo apt install ssh 由于.erlang.cookie是rabbitmq创建并且只有读权限,需要先修改文件权限才能拷贝。 两台主机都需要执行以下命令: sudo chmod 666 /var/lib/rabbitmq/.erlang.cookie sudo chown root:root /var/lib/rabbitmq/.erlang.cookie sudo chmod 777 /var/lib/rabbitmq 然后拷贝,node1上执行:scp /var/lib/rabbitmq/.erlang.cookie [用户名@node2主机名]:/var/lib/rabbitmq/ --注:[用户名@node2主机名]表示完整的主机名,比如zx@node-server3 拷贝完需要还原相关权限: sudo chmod 755 /var/lib/rabbitmq sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie sudo chown rabbitmq:rabbitmq /var/lib/rabbitmq/.erlang.cookie 启动node2上的rabbitmq:sudo rabbitmq-server 停止node2上的rabbitmq服务:sudo rabbitmqctl stop_app 重置node2上的rabbitmq:sudo rabbitmqctl reset 将node2加入到node1集群:sudo rabbitmqctl join_cluster rabbit@node1 3,在node1上开启镜像队列 在node1上执行sudo rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}' 4,开启node2节点服务 sudo rabbitmqctl start_app 备注: 命令:sudo rabbitmqctl join_cluster rabbit@node1 其中rabbit@node1,rabbit表示rabbitmq服务节点名称。 在启动rabbitmq时会读取/etc/rabbitmq/rabbitmq下的配置文件rabbitmq-env.conf, NODENAME=rabbit可设置节点名称, 注释后默认名称为rabbit 后面node1表示主机名称