【问题标题】:how to reinstall a dead node in rabbitmq cluster如何在rabbitmq集群中重新安装死节点
【发布时间】:2018-01-03 23:26:37
【问题描述】:

我在 rabbit1、rabbit2 和 rabbit3 上有一个 rabbitmq 集群。 Rabbit2 和 Rabbit3 作为 RAM 节点加入 rabbit1 集群。而且rabbit3崩溃了。在 rabbit1 和 rabbit2 中,检查集群状态时,我得到了以下答案。

ubuntu@rabbit2:~$ sudo rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit2
[{nodes,[{disc,[rabbit@rabbit1]},{ram,[rabbit@rabbit3,rabbit@rabbit2]}]},
 {running_nodes,[rabbit@rabbit1,rabbit@rabbit2]},
 {cluster_name,<<"rabbit@localhost">>},
 {partitions,[]},
 {alarms,[{rabbit@rabbit1,[]},{rabbit@rabbit2,[]}]}]

现在我卸载 rabbitmq3 并重新安装。在rabbit3上安装rabbitmq成功。

sudo service rabbitmq-server stop
sudo rm -rf /var/lib/rabbitmq/
sudo apt-get remove rabbitmq-server -y
sudo apt-get autoremove -y 
sudo apt-get install rabbitmq-server -y

安装后,我尝试再次将rabbit3添加到集群中。第一步,我检查 rabbit3 上的集群状态。

ubuntu@rabbit3:~$ sudo rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit3
[{nodes,[{disc,[rabbit@rabbit3]}]},
 {running_nodes,[rabbit@rabbit3]},
 {cluster_name,<<"rabbit@localhost">>},
 {partitions,[]},
 {alarms,[{rabbit@rabbit3,[]}]}]

然后我覆盖cookie文件

ubuntu@rabbit3:~$ sudo sh -c "echo abcdefg > /var/lib/rabbitmq/.erlang.cookie"
ubuntu@rabbit3:~$ sudo cat  /var/lib/rabbitmq/.erlang.cookie
abcdefg

再次检查集群。

ubuntu@rabbit3:~$ sudo rabbitmqctl cluster_status
Cluster status of node rabbit@rabbit3
Error: unable to connect to node rabbit@rabbit3: nodedown

DIAGNOSTICS
===========

attempted to contact: [rabbit@rabbit3]

rabbit@rabbit3:
  * connected to epmd (port 4369) on rabbit3
  * epmd reports node 'rabbit' running on port 25672
  * TCP connection succeeded but Erlang distribution failed
  * suggestion: hostname mismatch?
  * suggestion: is the cookie set correctly?
  * suggestion: is the Erlang distribution using TLS?

current node details:
- node name: 'rabbitmq-cli-25@localhost'
- home dir: /var/lib/rabbitmq
- cookie hash: esZsDxSN6VGbi9JkMSxNZA==

rabbit@rabbit3 节点无法连接,无法再配置。我检查了rabbitmq安装文档。它介绍了如何使用快乐路径配置集群。 但是如果一个节点已经死了,如何重新安装它。

【问题讨论】:

    标签: rabbitmq rabbitmqctl


    【解决方案1】:

    我安装的时候出错了,一​​般情况下应该先停止rabbitmq再设置cookie,比如

     sudo rabbitmqctl stop
    sudo sh -c "echo abcd123456 > /var/lib/rabbitmq/.erlang.cookie"
    sudo cat  /var/lib/rabbitmq/.erlang.cookie
    sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie 
    sudo sh -c "echo abcd123456 > ~/.erlang.cookie"
    sudo chmod 400 ~/.erlang.cookie 
    

    【讨论】: