Добавление новой ноды в RabbitMQ кластер

У вас уже есть несколько машин, участвующих в 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

Share
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x