Ubuntu 主机名首次更改后rabbitmq服务器无法启动

Ubuntu 主机名首次更改后rabbitmq服务器无法启动,ubuntu,rabbitmq,django-celery,Ubuntu,Rabbitmq,Django Celery,我正在用django芹菜做我的django项目。上一天我更改了计算机的主机名(我使用的是Ubuntu12.04,编辑文件'/etc/hostname'),下一次重新启动后,django芹菜出现了错误 Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 4 seconds... 在对这个错误进行一些研究之后,我发现,更改主机名导致了这个错误。我的rabbitmq启动日志显示 文件:/var/log

我正在用django芹菜做我的django项目。上一天我更改了计算机的主机名(我使用的是Ubuntu12.04,编辑文件'/etc/hostname'),下一次重新启动后,django芹菜出现了错误

Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 4 seconds...
在对这个错误进行一些研究之后,我发现,更改主机名导致了这个错误。我的rabbitmq启动日志显示

文件:/var/log/rabbitmq/startup\u log

Activating RabbitMQ plugins ...

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

0 plugins activated:

ERROR: epmd error for host "jinesh": nxdomain (non-existing domain)
我的启动错误文件为空

当我跑的时候

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关联的erlang mnesia数据库或重新安装rabbitmq来解决此问题

我得到了第一个解决方案的提示。Erlang Mnesia数据库是特定于主机的(因为它是一个分布式数据库)。修复问题的最简单方法是清除数据库目录。

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

dpkg -P rabbitmq-server

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

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

  • 停止RabbitMQ:
    rabbitmqctl停止

  • 更改
    /etc/hosts

  • 更改
    /etc/hostname

  • 卸载旧RabbitMQ:
    dpkg-p RabbitMQ服务器

  • 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
    
  • 删除RabbitMQ的数据库:
    rm-rf/var/lib/RabbitMQ

  • 查找运行rabbit的erlang进程:
    ps ax | grep rabbit

  • 终止列出的进程

  • 重新安装RabbitMQ:
    apt get安装RabbitMQ服务器

  • 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
    
    我在网上写下了这些步骤

    修订版


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

    在Windows上,我面临的问题是由于McAfee防火墙。确切的错误是:

    主机“”的epmd错误:地址(无法连接到主机/端口)


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

    我的解决方案是检查并更正
    $HOSTNAME
    /etc/HOSTNAME
    。结果是我的路由器有点混乱,给了我一个错误的主机名域。重新启动此操作系统后,我调用了
    export HOSTNAME=the.correct.HOSTNAME
    ,我的兔子在不重新启动服务器操作系统的情况下运行。

    感谢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
    

    因此,我刚刚在我的
    /etc/hosts
    文件中将IP地址更改为
    192.168.1.200
    ,它工作正常。

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


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

    检查qpidd守护程序,它可能已经占用rabbitmq所需的端口

    sudo netstat -lnp
    

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

    简短的回答:

    如果您想保持新主机名的更改,那么可以在
    /etc/rabbitmq
    中创建一个
    rabbitmq env.conf
    文件,该文件引用旧主机名,并且一切都应该正常。以下是
    rabbitmq env.conf
    文件中应该包含的内容:

    NODENAME=rabbit@OLDHOSTNAME
    
    添加配置文件后,重新启动rabbitmq服务器,这样您就可以正常工作了。(例如,
    服务rabbitmq服务器重启
    (可能需要ubuntu的
    sudo

    有关更多详细信息,请访问rabbitmq网站:

    有关答案的更多详细信息:


    我在使用CentOS时遇到了类似的主机名问题。。。根本问题是,当rabbit安装时,它引用安装时的当前主机名。因为这是rabbitmq的事情,所以该解决方案应该适用于其他linux版本。如果您想查看完整答案,可以在以下位置查看:

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

    127.0.0.1 <hostname>
    
    127.0.0.1
    

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

    我也有同样的问题,执行Richard H Fung提供的步骤对我没有帮助。我还必须卸载这些包:
    erlang-erlang-epmd-rabbitmq服务器

    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

    为了解决这个问题,我用新的主机名更改了我的
    /etc/hostname
    文件,然后重新启动了机器。之后,我运行了
    rm-rf/var/lib/rabbitmq/mnesia/*

    然后重新启动服务:
    sudo服务rabbitmq服务器重新启动

    在这一点上,它为我工作。如果仍然不起作用,请通过添加以下信息修改文件
    /etc/rabbitmq/rabbitmq env.conf

    NODENAME=rabbit@YOUR_NEW_HOSTNAME
    NODE_IP_ADDRESS=127.0.0.1
    NODE_PORT=5672
    
    然后重新启动服务:
    sudo服务rabbitmq服务器重新启动


    希望有帮助。

    唯一适合我的解决方案:安装erlang&rabbitmq
    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
    
    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
    
    rabbitmq-service.bat remove
    rabbitmq-service.bat install