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

50

Я использую django-сельдерей для своего проекта django. В прошлый день я изменил имя компьютера компьютера (я использую Ubuntu 12.04, отредактированный файл "/etc/hostname" ), и после следующего перезапуска django-celery с ошибкой

Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 4 seconds...

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

Я надеюсь, что изменение nodename может решить эту проблему. Но я не мог найти способ сделать это. У кого-нибудь есть идея о том, как решить эту проблему?

Обновление

при изменении имени хоста вы должны изменить файлы /etc/hostname и /etc/hosts.

Я заново установил rabbitmq и решил эту проблему, ответит на этот вопрос.

  • 0
    На centos / rhel, если вы переименуете свои сетевые интерфейсы с помощью /etc/udev/rules/70-persistant-net.rules и перезагрузитесь -> это также приведет к тому, что вы получите сообщение об ошибке из rabbitmqctl status "невозможно подключиться к EPMD». -> Исправление совпадает с принятым ответом @RichardHFung на этот вопрос .
  • 0
    "systemctl restart rabbitmq-server.service" решил ту же проблему, что и я.
Показать ещё 1 комментарий
Теги:
rabbitmq
django-celery

11 ответов

51
Лучший ответ

Удалите старую установку RabbitMQ, чтобы устранить эту проблему. Ниже перечислены шаги по переустановке RabbitMQ. Эти команды запускаются как пользователь root:

  • Остановить RabbitMQ: rabbitmqctl stop

  • Изменить /etc/hosts

  • Изменить /etc/hostname

  • Удалите старый RabbitMQ: dpkg -P rabbitmq-server

  • Удалите базу данных RabbitMQs: rm -rf /var/lib/rabbitmq

  • Найдите процесс erlangs, в котором работает кролик: ps ax | grep rabbit

  • Убейте указанный процесс

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

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

ПЕРЕСМОТР

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

  • 0
    Обратите внимание, что мне не нужно было останавливать кролика (потому что он не работал) или удалять папку /var/lib/rabbitmq (потому что его там не было); YMMV.
  • 2
    на Ubuntu (14.04.1 LTS) это не работает для меня. Мне нужно было apt-get purge rabbitmq-server а затем запустить apt-get install rabbitmq-server чтобы все снова apt-get install rabbitmq-server после смены имени хоста.
Показать ещё 6 комментариев
38

Благодаря Ричарду Х Фунгу.

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

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

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

#/etc/hosts  
127.0.0.1       localhost  
192.168.1.115   HOSTNAME

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

  • 2
    это именно та ситуация, которая у меня была, и то же самое решение работало - не нужно переустанавливать и исправлять IP и работать
  • 4
    Это правильное решение.
Показать ещё 7 комментариев
21

Ответ Ричарда хорош, но вы можете потерять некоторую информацию в очередях 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 он ссылается на текущее имя хоста во время установки. Так как это вещь кролика, решение должно работать для других разновидностей Linux. Если вы хотите увидеть полный ответ, вы можете увидеть его по адресу: rabbtimqadmin - Не удалось подключиться: [Errno -2] Имя или служба неизвестна

  • 1
    Это помогло мне. Я обновил до последней версии rabbitmq (3.6.6-1) в ArchLinux и не смог запустить его. /etc/rabbitmq/rabbitmq-env.conf в /etc/rabbitmq/rabbitmq-env.conf и вот, NODENAME был не прав. Вместо rabbit@machine rabbit@machine@machine во время обновления он стал rabbit@machine@machine . Простое удаление последнего @machine проблему.
  • 0
    Это правильный ответ ИМХО ... @ Chewtoy это даже в вики Arch :-D wiki.archlinux.org/index.php/Rabbitmq#Changed_hostname
Показать ещё 1 комментарий
6

Вы можете решить эту проблему, удалив базу данных 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.

  • 0
    Как вы находите базу данных Erlang Mnesia?
  • 0
    Привет @ MatthewCanty: я следовал второму способу.
Показать ещё 2 комментария
5

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

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

5

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

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

  • 0
    Это помогло мне. боролся с этим в течение 2 часов, отключил его и работал как по волшебству, спасибо!
3

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

127.0.0.1 <hostname>

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

  • 0
    Для меня это был ответ, который работал. Однако я все еще озадачен, почему строка 127.0.0.1 localhost.localadmin localhost по умолчанию не перешла в соответствующее имя узла. Большое спасибо!
3

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

  • 0
    Работало, даже не удаляя rabbitmq-сервер
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

Надеюсь, поможет.

0

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

-3

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

sudo netstat -lnp

Ещё вопросы

Сообщество Overcoder
Наверх
Меню