Автоматическое переподключение к кластеру RabbitMQ после перезапуска сервера

У меня есть конфигурация ведущий-ведомый RabbitMQ. Как два контейнера Docker, с динамическим внутренним IP (изменяется при каждом перезапуске).

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

rabbitmqctl join_cluster --ram rabbit@master
Clustering node 'rabbit@slave' with 'rabbit@master' ...
Error: {ok,already_member}

И следующее:

rabbitmqctl cluster_status
Cluster status of node 'rabbit@slave' ...
[{nodes,[{disc,['rabbit@slave']}]}]

говорит, что узел не в кластере.

Единственный способ, которым я нашел это удалить этот узел, и только затем попытаться воссоединиться с кластером, как:

rabbitmqctl -n rabbit@master forget_cluster_node rabbit@slave
rabbitmqctl join_cluster --ram rabbit@master

Это работает, но не выглядит хорошо для меня. Я считаю, что должен быть лучший способ присоединиться к кластеру, чем забыть и присоединиться снова. Я вижу, что есть команда update_cluster_nodes также, но кажется, что это что-то другое, не уверен, может ли это помочь.

Как правильно вернуться в кластер при перезапуске контейнера?

1 ответ

Решение

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

Я считаю, что эта проблема была решена в недавнем выпуске RabbitMQ.

Я реализовал Dockerized RabbitMQ Cluster, используя образ управления Rabbit 3.6.5, и мои узлы могут автоматически воссоединяться с кластером при перезапуске контейнера или узла Docker.

Другие вопросы по тегам