У вас уже есть несколько машин, участвующих в RabbitMQ кластере. Вы хотите добавить ещё одну, новую. Операционная система и сам кролик уже установлены на новой машине.
Важно: версия RabbitMQ должна совпадать на всех машинах, в том числе на новой подключаемой.
Проверить версию можно командой
newnode$ sudo rabbitmqctl status
Вывод у команды длинный, но найти что-то типа “RabbitMQ version: 3.11.16” не составит труда. Можно грепнуть.
При этом версии и даже классы операционных систем, на которых установлен заяц, могут вообще не совпадать никак.
При попытке подключить новую ноду к существующему кластеру с другой версией кролика, вы получите сообщениеerror: incompatible_feature_flags
Если версии НЕ совпадают, то варианта два:
1. менять версию на уже работающем кластере (как правило обновлять)
2. менять версию на новой ноде (как правило даунгрейдить)
Чтобы кластер собрался, обязательно должны совпадать Erlang cookie на всех машинах. Для точного совпадения копируем файл с куками с существующей машины. Просмотреть файл и скопировать его содержимое в другой файл не получится.
/var/lib/rabbitmq/.erlang.cookie
У файла должны быть правильные права доступа (400) и правильный владелец. Если что – chmod и chown вас спасут.
Рестартуем кролик-сервис. Чтобы без лишних сюрпризов.
newnode$ sudo systemctl restart rabbitmq-server
Останавливаем приложение на новой ноде
newnode$ sudo rabbitmqctl stop_app
Выполняем reset конфигурации нового кролика
newnode$ sudo rabbitmqctl reset
Добавляем ноду посредством подключения к существующей ноде в работающем кластере
newnode$ sudo rabbitmqctl join_cluster rabbit@<old-node-name>
ВАЖНО! Регистр имени ноды имеет значение! – должен совпадать с именем в RabbitMQ существующей ноды.
Запускаем обратно
newnode$ sudo rabbitmqctl start_app
Проверяем текущий статус кластера
newnode$ sudo rabbitmqctl cluster_status