也就是执行以下语句时,出现异常:
rabbitmqctl join_cluster rabbit@node1 --ram异常截图:
其实,根本原因就是由于RabbitMQ的节点名称造成的。
其中异常信息,已经明确地说了:Hostname mismatch:XXXXXX
就是由于阿里云的默认HostName是随机生成的,而RabbitMQ的节点名,默认采用了服务器的HostName。
解决方案有两个:
如之前提到的,直接修改阿里云服务器的HostName,一劳永逸。
修改RabbitMQ的默认节点名。在/etc/rabbitmq/rabbitmq-env.conf(初始不存在)增加以下内容:
NODENAME=node1 节点停止应用失败/无法查看节点集群信息也就是执行以下语句时,出现异常:
rabbitmqctl stop_app或
rabbitmqctl cluster_status异常截图:
或
其实这是由于erlang.cookie是在RabbitMQ启动后替换,而导致的冲突。
解决办法:
通过以下命令重启服务即可
systemctl restart rabbitmq-server RabbitMQ普通模式(单机多节点安装)由于这个不涉及多个真实服务器,所以比较简单。我就不再赘述。
简单引用一下WizMime大佬的过程。
准备工作准备一台已经安装好RabbitMQ的机器
启动RabbitMQ 修改默认节点名(非必要),在/etc/rabbitmq/rabbitmq-env.conf增加以下内容 NODENAME=rabbit1 RabbitMQ单机多节点时需要改为手动启动,先停止运行中的RabbitMQ服务。 sudo systemctl stop rabbitmq-server 启动第一个节点 rabbitmq-server -detached 启动第二个节点 RABBITMQ_NODE_PORT=5673 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15673}]" RABBITMQ_NODENAME=rabbit2 rabbitmq-server -detached 启动第三个节点 RABBITMQ_NODE_PORT=5674 RABBITMQ_SERVER_START_ARGS="-rabbitmq_management listener [{port,15674}]" RABBITMQ_NODENAME=rabbit3 rabbitmq-server -detached 将第二个节点rabbit2加入到集群中 停止rabbit2的应用 rabbitmqctl -n rabbit2 stop_appPS:-n表示针对特定节点进行操作
重置 rabbit2 的设置 rabbitmqctl -n rabbit2 reset rabbit2 节点加入到 rabbit1的集群中 rabbitmqctl -n rabbit2 join_cluster rabbit1 --ram 启动 rabbit2 节点 rabbitmqctl -n rabbit2 start_app rabbit3类似操作 校验通过
rabbitmqctl cluster_status查看集群状态,看到{running_nodes,[rabbit3@node1,rabbit2@node1,rabbit1@node1]}说明节点已启动成功。
PS:同样也可以从Web管理界面查看。
防火墙注意防火墙相关配置,尤其这次增加了许多端口。
sudo firewall-cmd --zone=public --add-port=4369/tcp --permanent sudo firewall-cmd --zone=public --add-port=5672/tcp --permanent sudo firewall-cmd --zone=public --add-port=25672/tcp --permanent sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent sudo firewall-cmd --zone=public --add-port=5673/tcp --permanent sudo firewall-cmd --zone=public --add-port=25673/tcp --permanent sudo firewall-cmd --zone=public --add-port=15673/tcp --permanent sudo firewall-cmd --zone=public --add-port=5674/tcp --permanent sudo firewall-cmd --zone=public --add-port=25674/tcp --permanent sudo firewall-cmd --zone=public --add-port=15674/tcp --permanent 镜像队列模式集群其实就是依赖之前实现的多主集群转发数据模式,再通过Web管理页面的一些设置即可实现。
所以不存在部署方面的问题。