Да, Mosquitto поддерживает несколько брокеров.
Mosquitto использует MQTT Bridges для соединения нескольких брокеров, таким образом, маршрутизируя сообщения между этими брокерами Mosquitto. Таким образом, можно установить мост между вашим основным брокером и резервной системой. Избегайте создания петель, хотя. Если оба брокера запускают ваши клиенты, публикуйте их у основного брокера, который затем публикует тему для каждого подписчика, включая вторичного брокера с мостовым соединением. Если первичный отказывает, ваши клиенты заметят (Соединение отказано, Сервер недоступен) и могут вернуться к прямой публикации на вторичный сервер. (Я пока не уверен, как это исправить, наоборот.) Поскольку вы не ожидаете, что клиент беззастенчиво отключится, я думаю, что «Последняя воля и Завет» здесь не применимы (это будет использоваться для уведомления брокера. от имени отключенного клиента).
Однако в этом посте перечислены недостатки этого подхода, особенно в отношении масштабируемости и доступности:
- Механизмы маршрутизации мостов плохо масштабируются, если вы перенаправляете все сообщения на другие мосты
- Затраты на связь между мостами значительны, если вы используете QoS 2 между мостами (что вам нужно сделать, если вы хотите распространять сообщения между клиентами, подключенными к разным мостам)
- Нет аварийного переключения и высокой доступности. В случае сбоя посреднического моста сообщения могут потеряться
- Клиенты MQTT не могут быть перенесены на другие узлы моста. Сеансы MQTT не реплицируются между мостами, поэтому вы потеряете все ваши сообщения и подписки в очереди, если вы используете постоянные сеансы MQTT.