Назад | Перейти на главную страницу

RabbitMQ - неожиданные пустые и несинхронизированные очереди после сбоя узла кластера

Я скачал и установил RabbitMQ в кластере в Windows:

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

Что не так с этой очередью? Но есть и другие проблемы. Например:

Это действительно странно. Кто-нибудь знает, что случилось?

Также есть третий тестовый пример:

Возможно, я просто не понял, как работает кластеризация в RabbitMQ. Кто-нибудь может мне помочь и рассказать, что происходит?

Та же проблема, но есть небольшое понимание, а также возможная ловушка.

Во-первых, меня одурачило то, что я не передал свой vhost команде:

rabbitmqctl set_policy -p myvhost HA '*' '{"ha-mode": "all"}'

В противном случае для виртуального хоста по умолчанию используется "/"

После этого, когда я вошел в веб-консоль, я увидел, что поле узла сообщает о двух узлах ... сейчас. Большой :-)

Однако, если вы поднимите и опустите один, а затем другой вверх и вниз, очередь исчезнет !? Это потому, что в зеркальном отображении НЕТ «синхронизации», ТОЛЬКО «стек». Это означает, что если вы отключите узел, остальные сообщения будут отправляться от оставшегося узла (или узлов). Если вы поднимете новый / существующий узел, он будет отражать только НОВЫЕ добавленные сообщения.

Я новичок в этом, поэтому предполагаю, что иметь 3 узла было бы намного лучше, чем два. Это означает, что если один узел выходит из строя, устойчивость по-прежнему сохраняется по сравнению с двумя другими узлами (в зависимости от вашего бизнес-случая). Конечно, если два узла выходят из строя, вы теряете репликацию всего, что осталось в очередях. Я считаю, что это следует называть «сетап с тремя ударами»!