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:
Остановить RabbitMQ:
rabbitmqctl stop
изменить
/etc/hosts
изменить
/etc/hostname
удалить старый RabbitMQ:
dpkg -P rabbitmq-server
удалить базу данных RabbitMQ:
rm -rf /var/lib/rabbitmq
найти Эрланга процесс, который работает rabbit:
ps ax | grep rabbit
убить указанный процесс
Переустановите 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