rabbitmq - Rabbitmq 加入最新的集群
问题描述
我有一个由两个节点 A(主)和 B(从)组成的集群。A节点是master,B节点成功加入A节点。然后 A 节点实例出现故障,B 节点实例现在队列中的消息比 A 节点多。我重新启动了 A 节点实例,我现在正尝试将 B 节点作为从节点加入,因为它是最新的。但是,我在尝试加入 B 节点时收到以下消息:
sudo rabbitmqctl join_cluster rabbit@bnode
{:badrpc_multi, {:EXIT, {{:function_clause, [{:gen, :do_for_proc, [{:rex, {:error, {:node_name, :short}}}, #Function<0.9801092/1 in :gen.call/4>], [file: 'gen.erl', line: 220]}, {:gen_server, :call, 3, [file: 'gen_server.erl', line: 219]}, {:rpc, :do_call, 3, [file: 'rpc.erl', line: 327]}, {:lists, :foldl, 3, [file: 'lists.erl', line: 1263]}, {:rabbit_mnesia, :discover_cluster, 1, [file: 'src/rabbit_mnesia.erl', line: 779]}, {:rabbit_mnesia, :join_cluster, 2, [file: 'src/rabbit_mnesia.erl', line: 212]}, {:rpc, :"-handle_call_call/6-fun-0-", 5, [file: 'rpc.erl', line: 197]}]}, {:gen_server, :call, [{:rex, {:error, {:node_name, :short}}}, {:call, :rabbit_mnesia, :cluster_status_from_mnesia, [], #PID<0.62.0>}, :infinity]}}}, [error: {:node_name, :short}]}
这是正确的方法吗?
正如我在其他一些帖子中所读到的,我尝试从 A 节点中删除现有的 mnesia 数据:sudo rm -rf /var/lib/rabbitmq/mnesia/*
甚至尝试使用 reset 命令(尽管这不是我想要的)sudo rabbitmqctl reset
我仍然无法加入 B 节点。
解决方案
a)我假设两个节点共享相同的 elrang.cookie:https ://www.rabbitmq.com/clustering.html 。您可以在节点 A 上尝试:
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster rabbit@bnode
sudo rabbitmqctl start_app
b) 另一种选择是从集群中忘记节点 A。
node A: sudo rabbitmqctl stop_app
node B: sudo rabbitmqctl forget_cluster_node rabbit@Anode
在节点 A 上启动应用程序:sudo rabbitmqctl start_app
。如果您收到错误(不一致的集群)重置 A 节点:sudo rabbitmqctl reset; sudo rabbitmqctl start_app
。
推荐阅读
- css - 如何水平对齐来自两个不同标签的文本
- google-kubernetes-engine - GPU 机器类型系列的 K8s 节点池创建错误
- chocolatey - 在 Chocolatey 上安装 libtool 时出错
- web-services - 字符串格式的 SOAP Web 服务数组
- json - 尽管密码与尝试匹配,但密码哈希与哈希尝试不匹配
- python - Python:合并具有相同键和不同值的多个字典
- c - 变量在 fork() 子进程 C 中突然变化 - 非常奇怪的行为
- reactjs - 到达表单挂钩复杂的嵌套对象获取并提交更改到 api
- swift - 选项命令拖动时未调用 NSTextView 的 textViewDidChangeSelection
- python - 使用 pyodbc 和 SQL Server,如何在跳过 NULL 行的同时将行插入表中