rabbitmq-сервер не запускается после первого изменения имени хоста

я использую 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 и решил эту проблему, ответит на этот вопрос.

10 ответов


удалите старую установку 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:ps ax | grep rabbit

  7. убить указанный процесс

  8. Переустановите RabbitMQ:apt-get install rabbitmq-server

я писал об этих шагах на мой блог.

редакция

я переместил свой блог на новый веб-сайт.


спасибо Ричарду х Фунгу.

его шаги помогли мне решить эту проблему.

но мне не пришлось переустанавливать rabbitmq.

когда я открыл свой /etc/hosts файл я нашел, что IP присвоенное моему имени хоста отличается от фактического ip(192.168.1.200 [static]).

#/etc/hosts  
127.0.0.1       localhost  
192.168.1.115   HOSTNAME

поэтому я просто изменил IP-адрес to 192.168.1.200 в своем /etc/hosts файл, и он работал нормально.


ответ Ричарда хорош, но вы можете потерять некоторую информацию в очередях 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-не удалось подключиться: [Errno -2] имя или служба не известны


вы можете решить эту проблему, удалив базу данных erlang mnesia, связанную с rabbitmq или переустановив 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

вы можете сослаться на это ссылке если вы хотите узнать больше об установке / удалении debian пакеты.


в Windows проблема, с которой я столкнулся, была связана с брандмауэром McAfee. Точной ошибкой была ошибка epmd для хоста"": address (не удается подключиться к хосту/порту)

Он начал работать, как только я отключил брандмауэр


удалить базу данных RabbitMQ:rm -rf /var/lib/rabbitmq/*

это действие решает проблему. Я считаю, что где-то в дампах хранится запись с соответствием имен узлов хоста и ips. Этот факт вызывает противоречие, если некоторые хосты неожиданно изменились.


в моем случае у меня не было следующей записи в /etc/hosts:

127.0.0.1 <hostname>

здесь <hostname> - это имя хоста моей машины (как указано hostname command). После добавления этой строки RabbitMQ начал успешно. У меня не было более ранних установок RabbitMQ.


моим решением было проверить и исправить $HOSTNAME и /etc/hostname. Оказалось, что мой маршрутизатор был немного смущен и дал мне неправильный домен имени хоста. После перезапуска этого я позвонил export HOSTNAME=the.correct.hostname и мой кролик работает без перезагрузки ОС сервера.


у меня была та же проблема, и выполнение шагов Ричарда х Фунга не помогло мне. Мне также пришлось удалить эти пакеты: 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)


Проверьте демон qpidd, он также может быть уже занят портом, который нужен rabbitmq.

sudo netstat -lnp