@HAG

Как репликация RabbitMQ согласуется с балансировкой нагрузки?

Всем привет.
Покурил мануалы по настройке HA-кластера RabbitMQ и что-то не складывается в голове цельная картина.
Может быть кто-то сможет прояснить такие вопросы т.к. в мануалах они подробно не расписаны:
Если включить зеркалирование очередей между нодами, то получается что одна нода мастер, а другие зеркала, причем в мануалах указывается что все изменения сначала происходят на мастере и потом уже реплицируются на слейвы.
Отсюда вопросы:
- Мастер-слейв это уровень нод или очередей? В смысле что мы можем завести часть мастер очередей на одной ноде, а часть на другой или у нас все очереди на одном мастере, а на всех остальных нодах только реплики этих очередей?
- Если изменения сначала записываются на мастер, то можем ли мы например подключиться и запостить или получить сообщения со слейва? Если можем то как данные синхронизируются с мастером если изменения сначала должны произойти на мастере а потом уже на всех слейвах? Или слейв если видит что мастер очередь не у него, проксирует запрос на мастер? Или как? Как это все может работать за HAProxy балансировщиком, который тупо проксирует запросы на все ноды без разбору, то есть клиент может прицепиться и к мастеру, и к зеркалу?
  • Вопрос задан
  • 58 просмотров
Решения вопроса 1
@yarkin
1) Уровень очередей, мастеры очередей могут быть на разных нодах, вот тут описано, как Вы можете повлиять на процесс выбора мастера.

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

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы