
После перезагрузки сервера серверный модуль SIGUR не запустился. При попытке запустить его вручную появлялась ошибка:
Не удается присоединиться к запущенному серверному модулю.
Повторить попытку соединения?
Ошибка запуска RabbitMQ
При проверке выяснилось, что не запускается служба RabbitMQ. В журнале RabbitMQ была ошибка:
cannot get bootfile,start_sasl.bootПосле этого начали разбираться с причиной и обнаружили, что на сервере отсутствует Erlang Runtime. Как выяснилось позже, его случайно удалили примерно за две недели до этого, но проблема проявилась только после перезагрузки.
Erlang устанавливается вместе с RabbitMQ при установке серверной части SIGUR. После того как нашли ошибку RabbitMQ и отсутствие Erlang, решили попробовать обновить SIGUR до новой версии в расчёте на то, что установщик восстановит недостающие компоненты.
Обновление прошло, но проблему не исправило. В каталоге:
C:\Program Files (x86)\SIGUR access management\web\broker\erlпо-прежнему отсутствовала часть файлов, необходимых для запуска Erlang и RabbitMQ.
После ручного восстановления полного Erlang Runtime служба RabbitMQ начала запускаться нормально.
Ошибка аутентификации RabbitMQ
Но серверный модуль SIGUR всё ещё не мог подключиться к брокеру. Теперь в журнале RabbitMQ появилась другая ошибка:
PLAIN login refused: user 'sigur' - invalid credentialsПричина оказалась связана с предыдущим обновлением. Установщик SIGUR успел сгенерировать новый пароль для RabbitMQ и записать его в конфигурационные файлы сервисов. Но применить этот же пароль к пользователю sigur в самом RabbitMQ не смог, потому что в момент обновления брокер не работал из-за отсутствующего Erlang Runtime.
В результате сервисы SIGUR уже использовали новый пароль, а в RabbitMQ он не был установлен.
Получение актуального пароля
В конфигурационных файлах SIGUR пароль RabbitMQ хранится не в открытом виде, а в зашифрованном значении:
message.broker.password=$...Для работы с такими значениями в составе SIGUR есть штатная утилита:
web\utils\password-utils.jarПри разборе утилиты выяснилось, что она умеет расшифровывать значения из конфигурации. Из актуального message.broker.password был получен исходный пароль, который сервисы SIGUR используют для подключения к RabbitMQ.
Синхронизация пароля
После этого пароль пользователя sigur в RabbitMQ синхронизировали:
rabbitmqctl change_password sigur <актуальный_пароль>Проверка аутентификации прошла успешно:
Authenticating user "sigur" ...
SuccessВ журнале RabbitMQ после этого появились нормальные подключения сервисов:
user 'sigur' authenticated and granted access to vhost '/'Итог
Проблема состояла из двух частей.
- После перезагрузки проявилось отсутствие Erlang Runtime, из-за чего перестал запускаться RabbitMQ.
- Обновление SIGUR перезаписало пароль RabbitMQ в конфигурации сервисов, но не смогло применить его к самому брокеру.
После восстановления Erlang Runtime и синхронизации пароля серверные компоненты SIGUR снова начали работать нормально.