当前位置: 首页>>技术教程>>正文


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

, ,

问题描述

我在我的django项目中使用django-celery。最后一天我更改了计算机的主机名(我正在使用Ubuntu 12.04,编辑文件’/etc/hostname’),并在下次重启后django-celery失败并出现错误

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

经过对此错误的一些研究后,我发现,更改我的主机名会导致here出现此错误。我的rabbitmq启动日志显示

file:/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==

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

更新

更改主机名时,您必须更改/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. 找到运行rabbit的erlang进程:ps ax | grep rabbit

  7. 杀死列出的流程

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

我在my blog上写了这些步骤。

修订

我将我的博客移到了一个新网站。

次佳解决方案

感谢Richard H Fung。

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

But I did not have to reinstall the rabbitmq.

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

#/etc/hosts  
127.0.0.1       localhost  
192.168.1.115   HOSTNAME

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

第三种解决方案

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

简答:

如果要更改新主机名,则可以在/etc/rabbitmq中创建引用旧主机名的rabbitmq-env.conf文件,并且所有文件都应该是好的。以下是rabbitmq-env.conf文件中应该包含的内容:

NODENAME=rabbit@OLDHOSTNAME

添加配置文件后,重新启动rabbitmq服务器,那么你应该很好。 (例如service rabbitmq-server restart(可能需要带有ubuntu的sudo))

有关详细信息,请访问rabbitmq网站:https://www.rabbitmq.com/man/rabbitmq-env.conf.5.man.html

关于答案的更多细节:

我使用CentOS时有类似的主机名问题…根问题是当安装Rabbit时,它在安装时引用了当前的主机名。由于这是一个rabbitmq的东西,该解决方案应该适用于其他Linux风格。如果您想查看完整答案,可以在以下位置查看:rabbtimqadmin – Could not connect: [Errno -2] Name or service not known

第四种方案

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

我得到了来自rabbitmq mailing list的第一个解决方案的提示。摘录答案,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.

第二种方法是最简单的方法(尽管不推荐)。卸载做

dpkg -P rabbitmq-server

如果您想了解有关安装/删除debian软件包的更多信息,可以参考此link

第五种方案

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

一旦禁用防火墙,它就开始工作了

第六种方案

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

此操作可以解决问题。我相信转储中的某个地方存储了一个记录,其中包含节点主机名和ips的对应关系。如果某些主机意外更改,这一事实会导致矛盾。

第七种方案

就我而言,我在/etc/hosts中没有以下条目:

127.0.0.1 <hostname>

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

第八种方案

我的解决方案是检查并纠正$HOSTNAME/etc/hostname。事实证明我的路由器有点困惑,并给了我一个错误的主机名域。重新启动这个后,我调用export HOSTNAME=the.correct.hostname,我的兔子在不重启服务器操作系统的情况下运行。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6619.html,未经允许,请勿转载。