Мы также попробовали конфигурацию master / slave, однако стало трудно поддерживать все экземпляры в актуальном состоянии без простоев. И поверьте мне, вы хотите обновить RabbitMQ. Всегда появляются ошибки либо в самом RabbitMQ, либо в Erlang.
Мы получаем около 100 сбоев в год без каких-либо значимых объяснений в журналах. В журнале ошибок есть просто «ошибка при запуске», вот и все. Иногда он не запускается после сбоя, и в большинстве случаев единственное решение - удалить все постоянные сообщения из всех экземпляров, чтобы состояние очереди было синхронизировано по всему кластеру. В других случаях он будет аварийно завершать работу сразу после запуска и только после нескольких повторных попыток будет загружен правильно. Это означает, что при использовании master / slave нет никакой дополнительной надежности. По крайней мере, в нашем случае их не было. (RabbitMQ 3.5.3, Erlang 18.0)
Это работает для производства, но только если вы храните копию сообщения где-то в журналах или в базе данных, откуда оно может быть быстро восстановлено после серьезного сбоя.