Кластер HA RabbitMQ изящное завершение работы главного узла при использовании политики «когда синхронизировано» - PullRequest
0 голосов
/ 21 февраля 2020

Предположим, я использую политику 'когда синхронизировано' для кластера высокой доступности при сбое и для продвижения по отказу в кластере высокой доступности.

Если это так, то продвижение по принципу "зеркало-мастер" будет никогда не происходит, и главная очередь блокируется, если при контролируемом отключении мастера нет синхронизированных зеркал.

Так говорится в документации. https://www.rabbitmq.com/ha.html#cluster -shutdown

По умолчанию RabbitMQ откажется использовать несинхронизированное зеркало при контролируемом отключении главного устройства (т. Е. При явной остановке службы RabbitMQ или завершении работы ОС) в чтобы избежать потери сообщения; вместо этого вся очередь будет закрыта, как если бы несинхронизированных зеркал не было.

Если используется политика «когда синхронизировано» и если во время выключения мастера не было синхронизировано ни одного зеркала, в соответствии с документация, мастер, кажется, не отключается изящно.

Мне кажется, что есть только два варианта.

  1. Ожидание восстановления мастера (независимо от того, сколько времени это займет), если я использую «когда синхронизировано».
  2. Отказ от всех сообщений, которые еще не синхронизированы с зеркалами (существует только в мастере) для доступности, если я использую «всегда».

Действительно? Нет опции типа «Блокировать очереди до тех пор, пока одно из зеркал не будет полностью синхронизировано, а затем перенести синхронизированное зеркало на нового мастера»?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...