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

Jin*_*esh 56 ubuntu rabbitmq django-celery

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

Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 4 seconds...
Run Code Online (Sandbox Code Playgroud)

这个错误经过一番研究,我能找到的,改变我的主机名从导致该错误在这里.我的rabbitmq启动日志显示

file:/ var/log/rabbitmq/startup_log

Activating RabbitMQ plugins ...

********************************************************************************
********************************************************************************

0 plugins activated:

ERROR: epmd error for host "jinesh": nxdomain (non-existing domain)
Run Code Online (Sandbox Code Playgroud)

我的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==
Run Code Online (Sandbox Code Playgroud)

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

更新

更改主机名时,您必须更改文件/etc/hostname/etc/hosts文件.

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

Ric*_*ung 54

删除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. 找到运行兔子的erlang进程: ps ax | grep rabbit

  7. 杀死列出的流程

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

我在博客上写了这些步骤.

修订

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

  • RabbitMQ没有任何理由破解,修复它的唯一方法是卸载并重新安装?这令人担忧...... (8认同)
  • 我给downvote因为解决方案不是真正的解决方案.如果我再次更改主机名怎么办?再次移除兔子,再次安装.... (7认同)
  • 无论如何这样做而不会丢失数据? (6认同)
  • 在ubuntu(14.04.1 LTS)上,这对我不起作用.我需要`apt-get purge rabbitmq-server`然后运行`apt-get install rabbitmq-server`以在主机名更改后再次运行它. (2认同)

Kis*_*war 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
Run Code Online (Sandbox Code Playgroud)

所以我只是改变了IP地址192.168.1.200我的/etc/hosts文件,它工作得很好.

  • 这应该被接受为正确的解决方案. (3认同)
  • 这是我的确切情况和相同的解决方案工作 - 无需重新安装和修复IP和工作 (2认同)

Jam*_*vec 22

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

简答:

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

NODENAME=rabbit@OLDHOSTNAME
Run Code Online (Sandbox Code Playgroud)

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

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

关于答案的更多细节:

我使用CentOS时有类似的主机名问题...根问题是当安装Rabbit时,它在安装时引用了当前的主机名.由于这是一个rabbitmq的东西,该解决方案应该适用于其他Linux风格.如果你想看到完整的答案,你可以在:rabbtimqadmin看到它- 无法连接:[Errno -2]名称或服务未知


Jin*_*esh 6

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

我从rabbitmq邮件列表中得到了第一个解决方案的提示.节选自答案,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
Run Code Online (Sandbox Code Playgroud)

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


小智 5

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

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