Формирование кластера с брокером Mosquitto

Я использую брокер Mosquitto для реализации протокола MQTT. Но я не могу найти, как кластеризация может быть сделана в случае брокеров комаров. Также есть ли ограничения по количеству клиентов, которые могут обслуживаться одним брокером.

6 ответов

Решение

Вы не можете делать кластеризацию с комарами.

Некоторые другие MQTT-брокеры, поддерживающие кластеризацию, в том числе HiveMQ. HiveMQ обладает гибкой кластерной способностью с автоматическим обнаружением и распределенной архитектурой без мастера и отлично работает на облачных провайдерах, таких как AWS или Azure.

Вы можете увидеть полный список всех брокеров, которые поддерживают кластеризацию здесь.

Отказ от ответственности: я разработчик HiveMQ, поэтому этот ответ может быть предвзятым.

Первоначальный источник этого ответа: горизонтальное масштабирование для брокеров. Я только что добавил поддержку плагинов.

Две функции москитного брокера в сочетании могут быть использованы для настройки n узел кластера.

  1. Москитная опора моста.
  2. Поддержка плагинов - 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 планирует в ближайшем будущем, и оба проекта имеют крупные компании, которые поддерживают их в качестве спонсоров.

Вы также можете заглянуть в HiveMQ, который является самым старым ребенком в блоке, но не может использоваться без платной лицензии.

Способ, которым я рассмотрел кластеризацию для комаров, состоял в том, чтобы настроить интерфейс 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.

EMQX MQTT Брокер

Другие вопросы по тегам