Назад | Перейти на главную страницу

Кластер RabbitMQ перезагружается каждые 30 минут.

У меня есть двухузловой кластер RabbitMQ 3.6.1 (на CentOS 6.8 в AWS), который, кажется, регулярно перезагружается каждые 30 минут. Я только что просмотрел логи (/var/log/rabbitmq/rabbit@<hostname>.log) на обеих машинах, чтобы получить график того, что происходит. Я перегруппировал их в этот список:

После этого в журнале больше не будет записей до 19:52:11 UTC, когда весь процесс повторяется. Когда отдельный сервер перезагружается, все соединения с этим сервером закрываются.

У меня есть порт 5672 с балансировкой нагрузки между обоими серверами, и я могу видеть, что он не проходит проверки работоспособности, выводя оба сервера из пула балансировщика нагрузки, поэтому клиенты не могут подключиться. Очевидно, это вызовет у меня проблемы.

Есть ли у кого-нибудь представление о том, почему оба этих узла должны регулярно перезапускаться, один за другим, каждые 30 минут? Это очень простые установки RabbitMQ, автоматически сгруппированные с использованием SaltStack для остановки приложения, кластеризация с другими именами хостов, а затем запуск приложения.

Я придумал ответ на эту проблему. Это было вызвано моей конфигурацией солевых состояний. Когда я впервые настраивал систему, я следил за RabbitMQ руководство по кластеризации к T, так что я установил состояние Salt, чтобы остановить приложение, кластеризовать со всеми узлами RabbitMQ, а затем перезапустить приложение. Он делал это независимо от того, были ли в кластере новые узлы или нет.

Как оказалось, он перезапускался, потому что я установил свой государственный график запускать highstates в этих системах каждые 30 минут. Итак, это остановка и запуск приложения RabbitMQ! Я узнал, тестируя rabbitmq_cluster.joined заявить, что он сначала проверит статус кластера, а затем остановит / присоединится / запустит только если host нужно добавить в кластер.

Тайна раскрыта!