Восстановление работоспособности Rabbit
Окружение.
Создано 3 виртуальные машины и кластер. Проверить построение кластера. Главный узел yzm1(128), подчиненный узел yzm2(129), подчиненный узел yzm3(130).
Главный узел работает нормально, но подчиненный узел не работает.
Проверьте состояние кластера, все 3 виртуальные машины работают нормально:
Проверка состояния кластера
Выключите yzm2, завершите работу виртуальной машины, соответствующей yzm2:
Выключение yzm2
Удалите узел yzm2:
Удаление yzm2
Перезапустите службу RabbitMQ yzm2:
Перезапуск службы RabbitMQ
Сообщение об ошибке: по данным узла
Rabbit@yzm2он кластеризован с узломRabbit@yzm3, но данныеRabbit@yzm3не совпадают с этими данными.Это означает, что простой yzm2 не является нормальным выходом из кластера, и информация о конфигурации узла кластера по-прежнему сохраняется, но узел yzm2 исключен из кластера.
Решением является очистка информации о конфигурации зарезервированного узла:
rm -rf /var/lib/rabbitmq/mnesia/*.
Очистка информации о конфигурации
После удаления файлов в каталоге mnesia они через некоторое время будут восстановлены.
Восстановление данных
Если вы случайно удалили каталог mnesia, создайте его заново, но вы должны убедиться, что пользователь и группа каталога — RabbitMQ.
Команда:
chown Rabbitmq:rabbitmq /var/lib/rabbitmq/
yzm2 снова присоединяется к кластеру:
Присоединение yzm2 к кластеру
Главный узел не работает, а подчиненный узел работает нормально.
Закрыть yzm3, yzm2
Закрытие yzm3, yzm2
yzm1 не работает, выключите виртуальную машину.
В это время yzm1 является последним узлом, и последний узел также считается главным узлом.
Запустите yzm2, он будет ждать запуска yzm1 и не сможет запуститься по истечении времени ожидания:
Запуск yzm2
Используйте yzm3, чтобы вывести yzm1:
Вывод yzm1
Основная команда:
rabbitmqctl force_boot rabbitmqctl start_app rabbitmqctl forget_cluster_node rabbit@yzm1
Также может использоваться параметр --offline, но по неизвестной причине его использование не было успешным.
Например, такое использование:
rabbitmqctl forget_cluster_node --offline rabbit@yzm1 rabbitmqctl -n rabbit@yzm3 forget_cluster_node --offline rabbit@yzm1
На конечном этапе перезапустите yzm1 и присоединитесь к кластеру.
Этот шаг аналогичен приведенному выше перезапуску yzm2 для присоединения к кластеру. Сначала необходимо удалить информацию о конфигурации узла, статус кластера:
Удаление конфигурации
Обновление узла перед запуском узла.
Текущий кластер имеет узлы yzm2 и yzm3.
Узлы yzm2 и yzm3
Выключение узла yzm2:
Выключение узла yzm2
В то же время запустите yzm1, чтобы снова присоединиться к кластеру (перед запуском службы RabbitMQ необходимо очистить информацию о конфигурации узла):
Запуск yzm1
Закройте узел yzm3 и запустите узел yzm2:
Закрытие yzm3
Запуск yzm2
yzm2 будет ждать, пока истечет время ожидания, и сообщит об ошибке.
Перед запуском необходимо проверить yzm1, который нормально работает в кластере:
rabbitmqctl update_cluster_nodes rabbit@yzm1
Проверка yzm1