docker - RabbitMQ 集群:无法将从节点加入到主节点
问题描述
我在不同的服务器中有两个使用 docker 的 RabbitMQ 节点:
rabbitmq-1.myhost.com(主) rabbitmq-2.myhost.com(从)
我尝试加入从属到主创建一个两节点集群:
root@rabbitmq-2:/# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rabbitmq-2 ...
root@rabbitmq-2:/# rabbitmqctl join_cluster rabbit@rabbitmq-1.myhost.com
但我得到:
root@rabbitmq-2:/# rabbitmqctl join_cluster rabbitmq-1.myhost.com
Clustering node rabbit@rabbitmq-2 with rabbitmq-1.myhost.com
Error:
{:badarg, [{:rpc, :rpcify_exception, 2, [file: 'rpc.erl', line: 467]}, {:rpc, :call, 5, [file: 'rpc.erl', line: 410]}, {:lists, :foldl, 3, [file: 'lists.erl', line: 1263]}, {:rabbit_mnesia, :discover_cluster, 1, [file: 'src/rabbit_mnesia.erl', line: 804]}, {:rabbit_mnesia, :join_cluster, 2, [file: 'src/rabbit_mnesia.erl', line: 236]}]}
编辑:我在添加上一行之前复制我的 /etc/hosts :
root@rabbitmq-2:/# cat /etc/hosts
127.0.0.1localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
XX.XX.XX.XX rabbitmq-1.myhost.com rabbitmq-1
YY.YY.YY.YY rabbitmq-2.myhost.com rabbitmq-2
但是当我启动我的 docker 容器时我得到了这个:
Attaching to rabbitmq-2
rabbitmq-2 | 11:02:14.540 [error]
rabbitmq-2 |
rabbitmq-2 | BOOT FAILED
rabbitmq-2 | ===========
rabbitmq-2 | 11:02:14.542 [error] BOOT FAILED
rabbitmq-2 | 11:02:14.543 [error] ===========
rabbitmq-2 | 11:02:14.543 [error] ERROR: epmd error for host rabbitmq-2: address (cannot connect to host/port)
rabbitmq-2 | ERROR: epmd error for host rabbitmq-2: address (cannot connect to host/port)
解决方案
我终于得到了它将具有别名(rabbitmq-1 和 rabbitmq-2)的两个 IP 添加到 /etc/hosts 并在从节点(rabbitmqctl-2)中使用这些命令:
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq-1
rabbitmqctl start_app
rabbitmqctl cluster_status
推荐阅读
- http - 什么是 Web 服务器端超时?
- symfony - 导入 PDF 并使用 Symfony 签名
- vba - VBA:仅将可见行作为值复制到另一个工作簿
- javascript - 理解 React Router 嵌套子路由
- redis - 单分片 Redis Cluster 怎么会报 CROSSSLOT 错误?
- wpf - 如何打开 TCP 连接并通过 WPF 中的另一个方法发送数据?
- r - 从 r 中的向量舍入到固定间隔
- azure - 错误:在任何资源组中都找不到 ADLA 帐户 - DataLakeStoreGen1
- java - 我怎样才能使这段代码更短更干净
- python - 是否可以在 Tensorflow 上的不同设备上运行网络的某些层?