У меня версия сервера Rabbitmq 3.5.7-1ubuntu0.16.04.2
установлен на сервере Ubuntu 16.04. При перезагрузке сервера Rabbitmq случайно не запускается. Сервер Rabbit устанавливается из официального репозитория Ubuntu. Кластеризации нет, это всего лишь один независимый сервер.
Когда возникает проблема, при перезагрузке в Journalctl регистрируется следующее:
Jun 03 09:50:52 hostname systemd[1]: Starting RabbitMQ Messaging Server...
...
Jun 03 09:51:23 hostname rabbitmq[1067]: Waiting for 'rabbit@hostname' ...
Jun 03 09:51:24 hostname rabbitmq[1067]: pid is 2455 ...
В 09:51:29 приложение, которое пытается использовать Rabbit, не может подключиться: [Errno 111] Connection refused
Через несколько секунд Rabbit запускается согласно /var/log/rabbitmq/rabbit@hostname.log
:
=INFO REPORT==== 3-Jun-2018::09:52:22 ===
Server startup complete; 6 plugins started.
* rabbitmq_management
* rabbitmq_web_dispatch
* webmachine
* rabbitmq_management_agent
* mochiweb
* amqp_client
Но в тот же момент Rabbit переходит в состояние ошибки из-за тайм-аута операции Start-post:
Jun 03 09:52:22 hostname systemd[1]: rabbitmq-server.service: Start-post operation timed out. Stopping.
Jun 03 09:52:22 hostname systemd[1]: Failed to start RabbitMQ Messaging Server.
Jun 03 09:52:22 hostname systemd[1]: rabbitmq-server.service: Unit entered failed state.
Jun 03 09:52:22 hostname systemd[1]: rabbitmq-server.service: Failed with result 'timeout'.
Вход в систему /var/log/rabbit
не показывать никаких предупреждений об ошибках.
Глядя на файл модуля Systemd, я вижу, что операция Startpost выполняет скрипт /usr/lib/rabbitmq/bin/rabbitmq-server-wait
который содержит следующий код:
. `dirname $0`/rabbitmq-env
/usr/lib/rabbitmq/bin/rabbitmqctl wait $RABBITMQ_PID_FILE
После этой запущенной команды service rabbitmq-server start запускает службу без проблем.
Я не могу понять, какова цель этой операции Start-post и почему она истекает. Что может быть причиной проблемы и как мне продолжить ее исследование?
Команда RabbitMQ контролирует в rabbitmq-users
список рассылки и только иногда отвечает на вопросы по StackOverflow.
Вы используете устаревшую и неподдерживаемую версию RabbitMQ. С тех пор были внесены улучшения в systemd
интеграция. Вам следует использовать последнюю версию RabbitMQ с Erlang 19.3 или новее.