Формирование кластера с брокером Mosquitto
Я использую брокер Mosquitto для реализации протокола MQTT. Но я не могу найти, как кластеризация может быть сделана в случае брокеров комаров. Также есть ли ограничения по количеству клиентов, которые могут обслуживаться одним брокером.
6 ответов
Вы не можете делать кластеризацию с комарами.
Некоторые другие MQTT-брокеры, поддерживающие кластеризацию, в том числе HiveMQ. HiveMQ обладает гибкой кластерной способностью с автоматическим обнаружением и распределенной архитектурой без мастера и отлично работает на облачных провайдерах, таких как AWS или Azure.
Вы можете увидеть полный список всех брокеров, которые поддерживают кластеризацию здесь.
Отказ от ответственности: я разработчик HiveMQ, поэтому этот ответ может быть предвзятым.
Первоначальный источник этого ответа: горизонтальное масштабирование для брокеров. Я только что добавил поддержку плагинов.
Две функции москитного брокера в сочетании могут быть использованы для настройки n
узел кластера.
- Москитная опора моста.
- Поддержка плагинов - mosquitto-auth-plug ( 1)
Функциональность моста используется ТОЛЬКО для синхронизации сообщений между всеми брокерами mosquitto, в то время как плагин mosquitto-auth-plugin может быть использован для сохранения авторизации и ACL в одной серверной части базы данных.
При настройке моста обратите внимание на использование тем моста входа / выхода, чтобы избежать петель пересылки ( 2). Шаблон имеет формат
topic pattern [[[ out | in | both ] qos-level] local-prefix remote-prefix]
Цитирование man-страницы mosquitto.conf ( 3), Для входящих тем мост соединит префикс шаблона с удаленным префиксом и подпишется на полученную тему на удаленном посреднике. При получении соответствующего входящего сообщения удаленный префикс будет удален из темы, а затем добавлен локальный префикс. И наоборот для исходящей темы
Пример файла mosquitto.conf для кластера из 3 узлов приведен ниже. Испытание на нагрузку с помощью mqtt-malaria ( 4) и, что более важно, влияние на клиентов, подключающихся с флагом clean_session к false ,.
+-------------------+
+------------------> BRIDGE BROKER <------------+
| | 192.168.1.1 | |
| +--------^----------+ |
| | |
| | |
| | |
Broker A | Broker B | | Broker C
| | |
+----------------------+--+ +----------------+--------+ +--+----------------------+
| connection A | | connection B | | connection C |
| | | | | |
| address 192.168.1.1:1883| | address 192.168.1.1:1883| | address 192.168.1.1:1883|
| | | | | |
| topic # out 2 "" A/ | | topic # out 2 "" B/ | | topic # out 2 "" C/ |
| topic # in 2 "" B/ | | topic # in 2 "" A/ | | topic # in 2 "" A/ |
| topic # in 2 "" C/ | | topic # in 2 "" C/ | | topic # in 2 "" B/ |
+----------------------^--+ +----------------^--------+ +--+----------------------+
| | ^
| | |
| | |
| +-------+---------+ |
+-------------------+ HA PROXY +-------------+
+-----^--^--------+
| |
| |
+ +
На данный момент существует 2 крупных проекта с открытым исходным кодом, которые поддерживают крупномасштабные развертывания и кластеризацию MQTT.
VerneMQ и EMQ оба написаны на Erlang, который очень подходит для распределенного обмена сообщениями, имея всю репликацию как встроенную в набор инструментов часть языка (Erlang).
VerneMQ имеет поддержку коммерческих предприятий, в то время как EMQ планирует в ближайшем будущем, и оба проекта имеют крупные компании, которые поддерживают их в качестве спонсоров.
- VerneMQ ( https://vernemq.com/)
- EMQ ( http://emqtt.io/)
Вы также можете заглянуть в HiveMQ, который является самым старым ребенком в блоке, но не может использоваться без платной лицензии.
- HiveMQ ( http://www.hivemq.com/)
Способ, которым я рассмотрел кластеризацию для комаров, состоял в том, чтобы настроить интерфейс haproxy, который обратный прокси для нескольких прослушивающих брокеров.
Я также сделал еще один шаг, чтобы использовать DNS SD, который последние версии mosquitto поддерживают с -S
флаг.
Однако при такой конструкции были некоторые головные боли, а именно в том, что поддержка приложений для dnssd и libresolv в большинстве дистрибутивов не учитывают поля домена и поиска в resolv.conf.
Поэтому, если вы работаете с унаследованной средой, я бы посоветовал взглянуть на rabbitmq, hivemq или redis pubsub, чтобы найти решение более производительного уровня, которое можно вставить в уже существующие следы.
Это не в списке, упомянутом Домиником, но у Solace Systems есть устройство MQTT, которое поддерживает кластеризацию. Каждый брокер поддерживает несколько сотен тысяч одновременных клиентских подключений.
Отказ от ответственности: я системный инженер в Solace
Вы можете взглянуть на платформу IvyT Bevywise. Это коммерческое предложение. Это дает возможность добавить как можно больше брокеров для увеличения. Это поддерживает протоколы MQTT и MQTT-SN.
Отказ от ответственности: я работаю на сети Bevywise.
Вы также можете проверить EMQX на предмет поддержки кластеризации MQTT.