首次更改主机名后,rabbitmq-server无法启动

我为我的Django项目使用了django-芹菜。 最后一天,我改变了我的电脑的主机名(我使用的是Ubuntu 12.04,编辑文件“/ etc / hostname”),并在下次重新启动后,django-celery出现故障

Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 4 seconds... 

经过对这个错误的一些研究,我可以发现,改变我的主机名从这里引起这个错误。 我的rabbitmq启动日志显示

文件:/ var / log / rabbitmq / startup_log

 Activating RabbitMQ plugins ... ******************************************************************************** ******************************************************************************** 0 plugins activated: ERROR: epmd error for host "jinesh": nxdomain (non-existing domain) 

我的startup_err文件是空的。

当我跑步

 root@jinesh:/home/jinesh# rabbitmqctl list_users Listing users ... Error: unable to connect to node rabbit@jinesh: nodedown DIAGNOSTICS =========== nodes in question: [rabbit@jinesh] hosts, their running nodes and ports: - unable to connect to epmd on jinesh: nxdomain current node details: - node name: rabbitmqctl4956@jinesh - home dir: /var/lib/rabbitmq - cookie hash: RGhmB2JR1LbZ57j7xWWTxg== 

我希望改变nodename可以解决这个问题。 但我找不到办法做到这一点。 任何人都知道如何解决这个问题?

更新

在更改主机名时,必须更改/etc/hostname/etc/hosts文件。

我重新安装了rabbitmq并解决了这个问题,会回答这个问题。

删除旧的RabbitMQ安装来解决这个问题。 以下是重新安装RabbitMQ的步骤。 这些命令以root用户身份运行:

  1. 停止RabbitMQ: rabbitmqctl stop

  2. 更改/etc/hosts

  3. 更改/etc/hostname

  4. 卸载旧的RabbitMQ: dpkg -P rabbitmq-server

  5. 删除RabbitMQ的数据库: rm -rf /var/lib/rabbitmq

  6. find正在运行rabbit的erlang进程: ps ax | grep rabbit ps ax | grep rabbit

  7. 杀死列出的过程

  8. 重新安装RabbitMQ: apt-get install rabbitmq-server

我在我的博客上写过这些步骤。

修订

我把我的博客移动到一个新的网站。

感谢Richard H Fung。

他的步骤帮助我解决了这个问题。

但是我不必重新安装rabbitmq

当我打开我的/ etc / hosts文件时,发现分配给我的主机名的“IP”与实际的IP(192.168.1.200 [静态])不同。

/ etc / hosts文件

127.0.0.1 localhost
192.168.1.115 HOSTNAME

所以我只是在我的/ etc / hosts文件中将IP地址更改为192.168.1.200,并且它工作正常。

理查德的回答很好,但是您可能会在rabbitmq队列中丢失一些信息。 以下是使用新主机名保留之前的rabbitmq设置的一种可能方法。

简答:

如果你想保持新的主机名更改,那么你可以在/etc/rabbitmq中创build一个引用旧主机名的rabbitmq-env.conf文件,所有这些都应该是好的。 以下是rabbitmq-env.conf文件中的内容:

 NODENAME=rabbit@OLDHOSTNAME 

添加configuration文件后,重新启动rabbitmq服务器,那么你应该是好的。 (例如service rabbitmq-server restart (可能需要Ubuntu的sudo ))

有关更多详细信息,请阅读rabbitmq网站: https ://www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html

关于答案的更多细节:

我有一个类似的使用CentOS的主机名问题…根源问题是兔子安装时,它在安装时引用当前的主机名。 由于这是一个rabbitmq的东西,解决scheme应该适用于其他的linux版本。 如果你想看到完整的答案,你可以看到: rabbtimqadmin – 无法连接:[Errno -2]不知名或服务

您可以通过删除与rabbitmq关联的erlang mnesia数据库或重新安装rabbitmq来解决此问题。

我从rabbitmq邮件列表中得到了第一个解决scheme的提示。 摘自回答, The Erlang Mnesia database is host specific (because it is a distributed DB). The simplest way to get you fixed is to clear out the database dir. The Erlang Mnesia database is host specific (because it is a distributed DB). The simplest way to get you fixed is to clear out the database dir.

第二种方法是最简单的方法(不build议)。 要卸载吗

 dpkg -P rabbitmq-server 

你可以参考这个链接,如果你想知道更多关于安装/删除debian软件包。

在Windows上,我遇到的问题是由于McAfee防火墙。 确切的错误是epmd错误的主机“”:地址(无法连接到主机/端口)

只要我禁用了防火墙,它就开始工作了

删除RabbitMQ数据库: rm -rf /var/lib/rabbitmq/*

这个行动解决了这个问题。 我相信转储的某个地方会存储一个logging,其中包含节点主机名和ips的对应关系。 如果有些主机意外改变,这个事实会引起矛盾。

我的解决scheme是检查并更正$ HOSTNAME和/ etc / hostname。 事实certificate,我的路由器有点困惑,给了我一个错误的主机名域。 重新启动这个之后,我调用export HOSTNAME=the.correct.hostname ,我的兔子不用重新启动服务器操作系统。

在我的情况下,我在/etc/hosts没有以下条目:

 127.0.0.1 <hostname> 

其中<hostname>是我的机器的主机名(由hostname命令给出)。 添加该行后,RabbitMQ成功启动。 我没有任何早期的RabbitMQ安装。

我也遇到了同样的问题,Richard H Fung提供的步骤并没有帮到我。 我也不得不卸载这些软件包: erlang erlang-epmd rabbitmq-server

 zypper remove erlang erlang-epmd rabbitmq-server rm -rf /var/lib/rabbitmq/* zypper install erlang erlang-epmd rabbitmq-server systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service 

如果你有另一个操作系统比openSUSE只使用你的软件包pipe理器来删除这些软件包(如apt-get

检查qpidd守护进程,它可能已经占用了rabbitmq需要的端口。

 sudo netstat -lnp