Oui, Mosquitto prend en charge plusieurs courtiers.
Mosquitto utilise des ponts MQTT pour connecter plusieurs courtiers, acheminant ainsi les messages entre ces courtiers moustiques. De cette façon, un pont entre votre courtier principal et un système de secours peut être établi. Évitez cependant de créer des boucles. Si les deux courtiers exécutent vos clients, publiez sur le courtier principal qui publie ensuite le sujet à chacun des abonnés, y compris le courtier secondaire ponté. Si le serveur principal échoue, vos clients le noteront (connexion refusée, serveur indisponible) et peuvent se replier pour publier directement sur le serveur secondaire. (Je ne sais pas encore comment résoudre le problème dans l'autre sens.) Comme vous ne vous attendez pas à ce que le client se déconnecte sans grâce, je pense que "Last Will and Testament" ne s'applique pas ici (il serait utilisé pour que le courtier le notifie au nom d'un client déconnecté).
Ce billet énumère cependant les inconvénients de cette approche, notamment en ce qui concerne l'évolutivité et la disponibilité:
- Les mécanismes de routage des ponts ne s'adaptent pas bien si vous transférez tous les messages aux autres ponts
- La surcharge de communication entre les ponts est importante si vous utilisez la QoS 2 entre les ponts (ce que vous devez faire si vous souhaitez propager des messages entre des clients connectés à différents ponts)
- Il n'y a pas de basculement et de haute disponibilité. Si un pont de courtage tombe en panne, les messages peuvent se perdre
- Les clients MQTT ne peuvent pas être migrés vers d'autres nœuds de pont. Les sessions MQTT ne sont pas répliquées sur les ponts, vous perdrez donc tous vos messages et abonnements en file d'attente si vous utilisez des sessions persistantes MQTT.