SystemdDoctor
служба не работает очереди кластеры права

Узлы очередей не соединяются: не совпадает файл общего секрета

Узлы среды исполнения проверяют друг друга по общему секрету из файла. Его несовпадение даёт отказ соединения, а неверные права на файл делают недоступными даже локальные команды управления — что выглядит как полностью неработающая служба.

Вероятные причины

По порядку: сверху то, что встречается чаще.

  1. Секрет различается на узлах

    Без совпадающего секрета узлы не устанавливают соединение и не образуют кластер.

  2. Права на файл секрета неверны

    Среда исполнения требует узких прав. При широких правах она отказывается работать с файлом.

  3. Команды управления запускаются от другого пользователя

    Команда ищет секрет в домашнем каталоге запускающего пользователя. От root это другой файл.

Диагностика

Команды идут в том порядке, в котором их стоит выполнять: каждая следующая проверяет то, что осталось после предыдущей.

Состояние кластера или сообщение об отказе соединения.

sudo rabbitmqctl cluster_status 2>&1 | head -15

Права и владелец файла секрета.

sudo ls -l /var/lib/rabbitmq/.erlang.cookie

Сообщения службы при запуске и соединении узлов.

journalctl -u rabbitmq-server -n 30 --no-pager

Решение

Решение своё для каждой причины. Сначала определите, какая из них ваша, — иначе правки наложатся друг на друга.

1. Секрет различается на узлах
Почему происходит
Без совпадающего секрета узлы не устанавливают соединение и не образуют кластер.
Как проверить
Сравните секреты по контрольной сумме, не раскрывая их.
sudo md5sum /var/lib/rabbitmq/.erlang.cookie 2>/dev/null
sudo rabbitmqctl cluster_status 2>&1 | head -10
Как исправить
Приведите файл секрета к одинаковому содержимому на всех узлах и перезапустите их. Сравнивать содержимое стоит по контрольной сумме.
2. Права на файл секрета неверны
Почему происходит
Среда исполнения требует узких прав. При широких правах она отказывается работать с файлом.
Как проверить
Посмотрите права и владельца.
sudo ls -l /var/lib/rabbitmq/.erlang.cookie 2>/dev/null
Как исправить
Установите права только для владельца и сделайте владельцем пользователя службы. Это требование среды исполнения, а не рекомендация.
sudo chmod 400 /var/lib/rabbitmq/.erlang.cookie && sudo chown rabbitmq: /var/lib/rabbitmq/.erlang.cookie
3. Команды управления запускаются от другого пользователя
Почему происходит
Команда ищет секрет в домашнем каталоге запускающего пользователя. От root это другой файл.
Как проверить
Посмотрите, какой файл видит команда.
sudo ls -l /root/.erlang.cookie 2>/dev/null; sudo ls -l /var/lib/rabbitmq/.erlang.cookie 2>/dev/null
Как исправить
Запускайте команды управления от пользователя службы. Копия секрета в чужом домашнем каталоге — источник путаницы.

Пример вывода

Секрет на узлах различается. Пример показательный: он собран на тестовой машине специально для этой страницы, а не взят из чужого журнала.

rabbitmqctl[12100]: Error: unable to perform an operation on node 'rabbit@node2'
rabbitmqctl[12100]: * Authentication failed (rejected by the remote node), please check the Erlang cookie
rabbitmq[12110]: ** Connection attempt from node 'rabbitmqcli-1@node1' rejected. Invalid challenge reply. **

Связанные ошибки

Где встречается чаще всего

Источники

  • Документация RabbitMQ: узлы и общий секрет документация программы
    сверено 15 сентября 2026
  • Воспроизведено на тестовой машине, systemd 255 (Ubuntu 24.04)
    Воспроизведено разными файлами секрета на двух узлах.
    собственная проверка, systemd 255
    сверено 15 сентября 2026