Встроенный локальный брокер MQTT для Операции Интернета вещей Azure

Операции Интернета вещей Azure включает брокер MQTT, соответствующий корпоративному классу и стандартам. Брокер MQTT является масштабируемым, высокодоступным и родным для Kubernetes. Он предоставляет платформу обмена сообщениями для Операции Интернета вещей Azure, обеспечивает двунаправленное взаимодействие между облаком и периферией и поддерживает событийно-управляемые приложения на границе.

Соответствие MQTT

MQTT — это общий протокол в пространстве Интернета вещей. Его простой дизайн позволяет одному брокеру обслуживать тысячи клиентов одновременно, создавая и управляя темами с легкой системой публикации и подписки. Многие устройства Интернета вещей изначально поддерживают MQTT. Подчиненные шлюзы перевода преобразуют различные протоколы Интернета вещей в MQTT.

Брокер MQTT поддерживает уровень обмена сообщениями в Операции Интернета вещей Azure и совместим с MQTT версии 3.1.1 и MQTT версии 5. Дополнительные сведения о поддерживаемых функциях MQTT см. в разделе "Поддержка функций MQTT" в брокере MQTT.

Архитектура

Брокер MQTT имеет два основных уровня:

  • Внешний интерфейс без отслеживания состояния
  • Уровень серверной части с сохранением состояния и шардированием

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

Цели архитектуры:

  • Отказоустойчивость и изоляция: Публикация сообщений продолжается, если серверные контейнеры терпят сбой, и сбои не распространяются на остальную часть системы.
  • Восстановление отказов: автоматическое восстановление отказа без вмешательства оператора.
  • Нет потери сообщений: сообщения доставляются, если выполняется по крайней мере один интерфейсный модуль pod и один серверный модуль в секции.
  • Эластичное масштабирование: Горизонтальное масштабирование производительности для процессов публикации и подписки поддерживает пограничные и облачные развертывания.
  • Согласованная производительность в масштабе: ограничивает задержку сообщений из-за репликации цепочки.
  • Операционная простота. Уменьшает зависимость от внешних компонентов, чтобы упростить обслуживание и сложность.

Настройка

Для настройки брокер MQTT использует несколько пользовательских ресурсов Kubernetes для определения различных аспектов поведения и функциональности брокера:

  • Основным ресурсом является брокер, который определяет глобальные параметры, такие как кратность, профиль использования памяти и параметры диагностики.
  • Ресурс брокера может содержать до трех брокеров, каждый из которых прослушивает входящие подключения MQTT по указанному типу службы (NodePortилиLoadBalancerClusterIP). Каждый ресурс BrokerListener может иметь несколько портов.
  • Каждый порт в ресурсе BrokerListener можно связать с ресурсом BrokerAuthentication и ресурсом BrokerAuthorization. Эти политики проверки подлинности и авторизации определяют, какие клиенты могут подключаться к порту и какие действия они могут выполнять на брокере.

Внимание

Используйте портал Azure или Azure CLI для управления прослушивателями брокера.

Связь между брокером и BrokerListener является одной ко многим, а связь между BrokerListener и BrokerAuthentication/BrokerAuthorization — многие ко многим. Схема связей сущностей для этих ресурсов:

Схема, показывющая модель ресурсов брокера.

По умолчанию IoT Операции развертывают default Broker, default BrokerListener, и default BrokerAuthentication. Все эти ресурсы называются по умолчанию. Вместе эти ресурсы предоставляют базовую настройку брокера MQTT, необходимую для работы операций Интернета вещей. Настройка по умолчанию:

Схема, показывая ресурсы брокера по умолчанию и связи между ними.

Внимание

Чтобы избежать нарушения взаимодействия между внутренними компонентами Операций Интернета вещей, не изменяйте конфигурацию по умолчанию.

Чтобы настроить развертывание брокера MQTT, добавьте новые ресурсы, такие как BrokerListeners, BrokerAuthentication и BrokerAuthorization в брокер по умолчанию.

Ресурс брокера неизменяем и не может быть изменен после развертывания, но требует настройки только в сложных сценариях. Дополнительные сведения о настройке ресурса брокера см. в разделе "Настройка брокера по умолчанию".

В полном развертывании вы можете использовать несколько BrokerListeners, каждый из которых имеет несколько портов, и каждый порт может иметь различные ресурсы BrokerAuthentication и BrokerAuthorization, связанные с ним.

Например, начиная с установки по умолчанию, вы добавляете следующее:

  • LoadBalancer BrokerListener с именем example-lb-listener и двумя портами: 1883 и 8883.
  • NodePort BrokerListener с именем example-nodeport-listener с одним портом 1884 (nodePort 31884).
  • Ресурс BrokerAuthentication с именем example-authn с пользовательским методом проверки подлинности.
  • Ресурс BrokerAuthorization с именем example-authz с пользовательскими параметрами авторизации.

Если настроить все новые порты с теми же ресурсами BrokerAuthentication и BrokerAuthorization, настройка выглядит следующим образом:

Схема, показывающая полное развертывание кастомного брокера и взаимоотношения между элементами.

Этот подход сохраняет настройку по умолчанию без изменений и позволяет добавлять новые ресурсы для настройки развертывания брокера MQTT.

Ресурс брокера по умолчанию

Каждое развертывание Операций Интернета вещей может иметь только один брокер, и оно должно быть названо по умолчанию. Ресурс брокера по умолчанию необходим для работы операций Интернета вещей. Он неизменяем и не может быть изменен после развертывания.

Внимание

Не удаляйте ресурс брокера по умолчанию. Это нарушает взаимодействие между внутренними компонентами Операций Интернета вещей и развертывание перестает работать.

Настройка брокера по умолчанию

Настройка ресурса брокера по умолчанию не требуется для большинства настроек. Параметры, требующие настройки, включают:

  • Кардинальность: Определяет емкость брокера для обработки большего количества подключений и сообщений, а также увеличивает высокую доступность в случае сбоев pod или узла.
  • Профиль памяти. Задает максимальное использование памяти брокера и как обрабатывать использование памяти по мере увеличения масштаба брокера.
  • Буфер сообщений с резервной копией диска: настройка буферизации сообщений на диск по мере заполнения ОЗУ.
  • Параметры диагностики: настройка параметров диагностики, таких как уровень журнала и конечная точка метрик.
  • Дополнительные параметры клиента MQTT: настройка расширенных параметров клиента MQTT, таких как срок действия сеанса, истечение срока действия сообщения и сохранение активности.
  • Шифрование внутреннего трафика: настройка шифрования внутреннего трафика между интерфейсными и внутренними модулями pod брокера.

Брокер по умолчанию можно настроить только во время первоначального развертывания с помощью Azure CLI или портала Azure. Новое развертывание требуется, если вам нужны разные параметры конфигурации брокера.

Чтобы настроить брокер по умолчанию во время развертывания, следуйте инструкциям для метода развертывания:

При выполнении руководства по развертыванию операций Интернета вещей в разделе "Конфигурация " просмотрите конфигурацию брокера MQTT. Здесь можно настроить параметры кардинальности и профиля памяти. Чтобы настроить другие параметры, включая буфер сообщений с поддержкой диска и дополнительные параметры клиента MQTT, используйте Azure CLI.

Внимание

Вы не можете обновить ресурс брокера после первоначального развертывания. Изменения конфигурации кардинальности, профиля памяти или буфера диска запрещены после развертывания.

В качестве обходного решения при развертывании Операции Интернета вещей Azure с помощью команды az iot ops create можно включить параметр --broker-config-file с файлом конфигурации JSON для брокера MQTT. Дополнительные сведения см. в разделе "Планирование развертывания".

Просмотр параметров брокера по умолчанию

Чтобы просмотреть параметры брокера по умолчанию, выполните следующие действия.

  1. На портале Azure перейдите к вашему экземпляру IoT Operations.
  2. В разделе "Компоненты" выберите MQTT Broker.
  3. В разделе "Сведения о брокере" выберите вид JSON.