Я использую 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 и решил эту проблему, ответит на этот вопрос.
Удалите старую установку 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
Я написал об этих шагах на мой блог.
ПЕРЕСМОТР
Я перевел свой блог на новый веб-сайт.
/var/lib/rabbitmq
(потому что его там не было); YMMV.
apt-get purge rabbitmq-server
а затем запустить apt-get install rabbitmq-server
чтобы все снова apt-get install rabbitmq-server
после смены имени хоста.
Благодаря Ричарду Х Фунгу.
Его шаги помогли мне решить эту проблему.
Но мне не пришлось переустанавливать 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
и он работал нормально.
Ответ Ричарда хорош, но вы можете потерять некоторую информацию в очередях 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] Имя или служба неизвестна
/etc/rabbitmq/rabbitmq-env.conf
в /etc/rabbitmq/rabbitmq-env.conf
и вот, NODENAME
был не прав. Вместо rabbit@machine
rabbit@machine@machine
во время обновления он стал rabbit@machine@machine
. Простое удаление последнего @machine
проблему.
Вы можете решить эту проблему, удалив базу данных 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.
Удалите базу данных RabbitMQ: rm -rf /var/lib/rabbitmq/*
Это действие решает проблему. Я верю, что где-то в дампах хранится запись с соответствием имен узлов узлов и ips. Этот факт вызывает противоречие, если некоторые хосты неожиданно изменились.
В Windows проблема, с которой я столкнулась, была связана с брандмауэром McAfee. Точной ошибкой была ошибка epmd для хоста "": адрес (невозможно подключиться к хосту/порту)
Он начал работать, как только я отключил брандмауэр
В моем случае у меня не было следующей записи в /etc/hosts
:
127.0.0.1 <hostname>
где <hostname>
- имя хоста моей машины (как указано командой hostname
). После добавления этой строки, RabbitMQ начал успешно. У меня не было никаких ранних установок RabbitMQ.
127.0.0.1 localhost.localadmin localhost
по умолчанию не перешла в соответствующее имя узла. Большое спасибо!
Моим решением было проверить и исправить $HOSTNAME
и /etc/hostname
. Оказалось, что мой маршрутизатор немного запутался и дал мне неправильное имя хоста. После перезапуска этого я вызвал export HOSTNAME=the.correct.hostname
и мой кролик работает без перезапуска сервера.
Чтобы решить эту проблему, я изменил файл /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
Надеюсь, поможет.
У меня была такая же проблема, и я сделал шаги, которые Ричард Х Фунг мне не помог. Мне также пришлось удалить эти пакеты: 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
rabbitmqctl status
"невозможно подключиться к EPMD». -> Исправление совпадает с принятым ответом @RichardHFung на этот вопрос .