首次更改主机名后,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用户身份运行:
-
停止RabbitMQ:
rabbitmqctl stop
-
更改
/etc/hosts
-
更改
/etc/hostname
-
卸载旧的RabbitMQ:
dpkg -P rabbitmq-server
-
删除RabbitMQ的数据库:
rm -rf /var/lib/rabbitmq
-
find正在运行rabbit的erlang进程:
ps ax | grep rabbit
ps ax | grep rabbit
-
杀死列出的过程
-
重新安装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