我在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并解决了这个问题,将回答这个问题。
答案 0 :(得分:54)
删除RabbitMQ的旧安装以解决此问题。以下是重新安装RabbitMQ的步骤。这些命令以root用户身份运行:
停止RabbitMQ:rabbitmqctl stop
更改/etc/hosts
更改/etc/hostname
卸载旧的RabbitMQ:dpkg -P rabbitmq-server
删除RabbitMQ的数据库:rm -rf /var/lib/rabbitmq
查找运行兔子的erlang进程:ps ax | grep rabbit
终止列出的流程
重新安装RabbitMQ:apt-get install rabbitmq-server
我在my blog上写过这些步骤。
<强> REVISION 强>
我将博客移至新网站。
答案 1 :(得分:39)
感谢Richard H Fung。
他的步骤帮助我解决了这个问题。
但我没有必要重新安装rabbitmq 。
当我打开/etc/hosts
文件时,发现分配给我的主机名的IP
与实际的ip(192.168.1.200 [static])
不同。
#/etc/hosts
127.0.0.1 localhost
192.168.1.115 HOSTNAME
所以我刚刚在我的192.168.1.200
文件中将 IP地址更改为/etc/hosts
,它运行正常。
答案 2 :(得分:20)
理查德的答案很好,但你可能会丢失rabbitmq队列中的一些信息。以下是使用新主机名保留rabbitmq先前设置的可能方法。
简答:
如果要更改新主机名,则可以在rabbitmq-env.conf
中创建引用旧主机名的/etc/rabbitmq
个文件,所有文件都应该是好的。以下是rabbitmq-env.conf
文件中应包含的内容:
NODENAME=rabbit@OLDHOSTNAME
添加配置文件后,重新启动rabbitmq服务器,那么你应该很好。 (例如service rabbitmq-server restart
(可能需要sudo
和ubuntu))
有关详细信息,请访问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
答案 3 :(得分:6)
您可以通过删除与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。
答案 4 :(得分:5)
在Windows上,我遇到的问题是由McAfee防火墙引起的。主机“”:地址(无法连接到主机/端口)
的确切错误是epmd错误我在禁用防火墙后立即开始工作
答案 5 :(得分:5)
删除RabbitMQ数据库:rm -rf /var/lib/rabbitmq/*
此操作可解决此问题。我相信转储中的某个地方存储了一个记录,其中包含节点主机名和ips的对应关系。如果某些主机意外地发生了变化,这个事实会引起矛盾。
答案 6 :(得分:3)
我的解决方案是检查并更正 $HOSTNAME
和/etc/hostname
。事实证明我的路由器有点困惑,并给了我一个错误的主机名域。重新启动这个之后,我调用了export HOSTNAME=the.correct.hostname
并且我的兔子在没有重新启动服务器操作系统的情况下运行。
答案 7 :(得分:3)
就我而言,我在/etc/hosts
中没有以下条目:
127.0.0.1 <hostname>
其中<hostname>
是我的机器的主机名(由hostname
命令给出)。添加该行后,RabbitMQ成功启动。我之前没有安装任何RabbitMQ。
答案 8 :(得分:0)
我遇到了同样的问题并且做了理查德·H·冯提供的步骤并没有帮助我。我还必须卸载这些软件包: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,只需使用您的包管理器删除这些包(例如apt-get
)
答案 9 :(得分:0)
为解决此问题,我用新的主机名更改了/etc/hostname
文件,然后重新启动了计算机。之后,我运行了rm -rf /var/lib/rabbitmq/mnesia/*
然后重新启动服务:sudo service rabbitmq-server restart
在这一点上,它为我工作。如果仍然无法使用,请通过添加以下信息来修改文件/etc/rabbitmq/rabbitmq-env.conf
:
NODENAME=rabbit@YOUR_NEW_HOSTNAME
NODE_IP_ADDRESS=127.0.0.1
NODE_PORT=5672
然后重新启动服务:sudo service rabbitmq-server restart
希望有帮助。
答案 10 :(得分:0)
唯一适用于我的解决方案:从deb安装erlang和Rabbitmq ,因此:
先删除:
apt-get purge rabbitmq-server
apt-get purge erlang
apt-get autoremove
reboot
安装wget之后:
sudo apt-get -y install socat logrotate init-system-helpers adduser
sudo apt-get -y install wget
安装erlang:
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb
sudo dpkg -i erlang-solutions_1.0_all.deb
sudo apt-get update
sudo apt-get install erlang
安装rabbitmq:
sudo apt-get update
wget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.17/rabbitmq-server_3.7.17-1_all.deb
sudo dpkg -i rabbitmq-server_3.7.17-1_all.deb
rm rabbitmq-server_3.7.17-1_all.deb
答案 11 :(得分:0)
在Windows上(很抱歉,我理解该主题是针对Ubuntu的),只需重新安装RabbitMQ
服务:
rabbitmq-service.bat remove
rabbitmq-service.bat install
该脚本位于C:\Program Files\RabbitMQ Server\rabbitmq_server-<version>\sbin
文件夹中。
或者仅更改HKEY_LOCAL_MACHINE\SOFTWARE\Ericsson\Erlang\ErlSrv\1.1\RabbitMQ\@SName
的值即可。
答案 12 :(得分:-2)
检查qpidd守护进程,它也可能已经占用了rabbitmq所需的端口。
sudo netstat -lnp