Автоматическое переподключение к кластеру 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.