RabbitMQ queue-master-locator не работает при остановке одного узла
Мы исследуем политику min-masters 'queue-master-locator', и похоже, что она работает нормально, когда мы создаем новые очереди, но когда по какой-то причине нам нужно остановить один узел кластера, все очереди, существующие на этом узле получить повышение (мастер) на тот же узел, например:
Узел A имеет 30 очередей Узел B имеет 0 очередей Узел C имеет 2 очереди Узел D имеет 3 очереди
Когда мы останавливаем Узел A, все 30 очередей повышаются до Узла B, это ожидаемый результат? Мы надеялись, что 30 очередей будут распределены по узлам B, C и D...
Пожалуйста, мы начинаем сходить с ума вокруг этого. Все ли экспериментировали с этим сценарием? и можно ли достичь того, что мы ожидаем, когда отключить узел A каким-либо автоматическим способом?
Наша политика определяется следующим образом:
Политики листинга... prod ha queues ^ {"ha-mode":"точно","ha-params":3,"ha-sync-mode":"автоматический","queue-master-locator":"min-masters"}
У нас есть 4 узла в кластере, 2 узла оперативной памяти и 2 дисковых узла.
Политика прекрасно работает, когда мы создаем новые очереди, но ничего не делает, когда мы останавливаем один узел.
Спасибо
2 ответа
Согласно официальной документации:
Если мастер выходит из строя […], самое продолжительное зеркало становится мастером
И причина просто следующая:
Предполагается, что он, скорее всего, будет полностью синхронизирован с мастером.
Команда RabbitMQ контролирует rabbitmq-users
список рассылки и только иногда отвечает на вопросы здесь.
Я только что опробовал ваш конкретный сценарий, используя последний предварительный код для 3.6.13
и я могу воспроизвести это. Проблема заключается в том, что RabbitMQ не перемещает существующие мастера очередей в балансировки очередей - он будет перемещать только те очереди, мастер которых существовал на вышедшем из строя узле. Я открыл эту проблему, чтобы рассмотреть то, что вы сообщаете здесь.
Этот неподдерживаемый сценарий можно использовать для перебалансировки хозяев очереди в кластере. Если у вас есть проблемы с запуском скрипта, пожалуйста, напишите rabbitmq-users
и я увижу это