Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Внимание
Для этого параметра требуется изменить ресурс брокера. Он настраивается только при первоначальном развертывании с помощью Azure CLI или портал Azure. Новое развертывание требуется, если необходимы изменения конфигурации брокера. Дополнительные сведения см. в разделе "Настройка брокера по умолчанию".
Функция буфера сообщений с поддержкой диска используется для эффективного управления очередями сообщений в распределенном брокере MQTT. К преимуществам относятся:
- Эффективное управление очередями: в брокере MQTT каждый подписчик связан с очередью сообщений. Скорость обработки сообщений подписчика напрямую влияет на размер очереди. Если подписчик медленно обрабатывает сообщения или если они отключаются, но запрашивают постоянный сеанс MQTT, очередь может увеличиться больше доступной памяти.
- Сохранение данных для постоянных сеансов: функция буфера сообщений с поддержкой диска гарантирует, что при превышении очереди доступной памяти она легко буферизуется на диск. Эта функция предотвращает потерю данных и поддерживает постоянные сеансы MQTT, позволяя подписчикам возобновлять сеансы с очередями сообщений без изменений при повторном подключении. Диск используется в качестве эфемерного хранилища и выступает в качестве разлива из памяти. Данные, записанные на диск, не являются устойчивыми и теряются при выходе модуля pod. Если хотя бы один pod в каждой внутренней цепочке остается функциональным, брокер в целом не теряет никаких данных.
- Обработка проблем с подключением: облачные соединители рассматриваются как подписчики с постоянными сеансами, которые могут столкнуться с проблемами подключения, когда они не могут взаимодействовать с внешними системами, такими как брокер MQTT Сетка событий Azure MQTT из-за отключения сети. В таких сценариях сообщения (PUBLISHes) накапливаются. Брокер MQTT интеллектуально буферизирует эти сообщения в память или диск, пока не будет восстановлено подключение, что гарантирует целостность сообщений.
По умолчанию функция буфера сообщений с поддержкой диска отключена. В этом случае сообщения остаются в памяти, а обратное давление применяется к клиентам, так как пул чтения или пул царапин достигает предела, определенного ограничением очереди подписчика.
Настройка буфера сообщений с поддержкой диска необходима для поддержания надежной и надежной системы очереди сообщений, особенно в сценариях, когда скорость обработки сообщений и подключение критически важны.
Примечание.
Брокер MQTT записывает данные на диск точно так же, как получено от клиентов, без добавления шифрования. Защита диска необходима для защиты данных, которые хранит брокер.
Варианты конфигурации
Чтобы настроить буфер сообщения с поддержкой диска, измените diskBackedMessageBuffer
раздел в ресурсе Брокера. В настоящее время эта конфигурация поддерживается только с помощью флага --broker-config-file
при развертывании операций Интернета вещей Azure с помощью az iot ops create
команды.
Чтобы приступить к работе, подготовьте файл конфигурации брокера, следуя справочнику по API DiskBackedMessageBuffer .
Например, простейшая конфигурация включает только указание максимального размера. В этом случае emptyDir
том подключен. Значение maxSize
используется в качестве ограничения размера тома emptyDir
. Но этот вариант является наименее предпочтительным из-за ограничений тома emptyDir
.
{
"diskBackedMessageBuffer": {
"maxSize": "<SIZE>"
}
}
Чтобы получить лучшую конфигурацию буфера сообщений с поддержкой диска, укажите временный том или утверждение постоянного тома для подключения выделенного тома хранилища для буфера сообщений. Например:
{
"diskBackedMessageBuffer": {
"maxSize": "<SIZE>",
"ephemeralVolumeClaimSpec": {
"storageClassName": "<NAME>",
"accessModes": [
"<MODE>"
]
}
}
}
{
"persistentVolumeClaimSpec": {
"maxSize": "<SIZE>",
"ephemeralVolumeClaimSpec": {
"storageClassName": "<NAME>",
"accessModes": [
"<MODE>"
]
}
}
}
Настройте параметры буфера сообщений брокера, изменив следующие параметры:
- Настройте том: укажите шаблон утверждения тома для подключения выделенного тома хранилища для буфера сообщений.
-
Выберите класс хранилища: определите требуемый класс хранилища с помощью
storageClassName
свойства. - Определение режимов доступа. Определите режимы доступа, необходимые для тома. Дополнительные сведения см. в режимах постоянного доступа к томам.
Используйте следующие разделы, чтобы понять различные режимы тома:
- Эфемерный том является предпочтительным вариантом.
- Постоянный том является следующим предпочтительным вариантом.
- Том emptyDir является наименее предпочтительным вариантом.
Постоянные и временные тома обычно предоставляются одинаковыми классами хранилища. Если оба варианта доступны, выберите эфемерный вариант. Для временных томов требуется Kubernetes 1.23 или более поздней версии.
Совет
При указании шаблона эфемерного утверждения тома (EVC) или постоянного утверждения тома (ПВХ) можно использовать выбранный класс хранения, что повышает гибкость для некоторых сценариев развертывания. Например, постоянные тома, подготовленные с помощью шаблона ПВХ, отображаются в таких командах, как kubectl get pv
проверка состояния кластера.
Если для узлов Kubernetes недостаточно места на локальном диске для буфера сообщений, используйте класс хранилища, предоставляющий сетевое хранилище, например Хранилище BLOB-объектов Azure. Лучше использовать локальный диск с меньшим maxSize
значением, так как буфер сообщений получает преимущества быстрого доступа и не требует устойчивости.
Развертывание операций Интернета вещей с буфером сообщений с поддержкой диска
Чтобы использовать буфер сообщений с поддержкой диска, разверните операции Интернета вещей с помощью az iot ops create
команды с флагом --broker-config-file
. Используйте следующую команду: (Другие параметры опущены для краткости.)
az iot ops create ... --broker-config-file <FILE>.json
Этот параметр нельзя изменить после развертывания. Чтобы изменить конфигурацию буфера сообщений с поддержкой диска, повторно разверните экземпляр операций Интернета вещей.
Эфемерный том
Временный том является предпочтительным вариантом буфера сообщений.
Для временных объемов следуйте рекомендациям в разделе "Рекомендации для поставщиков хранилища".
Значение ephemeralVolumeClaimSpec
свойства используется в качестве ephemeral.volumeClaimTemplate.spec
свойства тома в StatefulSet
спецификациях внутренних цепей.
Например, чтобы использовать временный том с емкостью 1 гигабайт, укажите следующие параметры в ресурсе Брокера:
{
"diskBackedMessageBuffer": {
"maxSize": "1G",
"ephemeralVolumeClaimSpec": {
"storageClassName": "foo",
"accessModes": [
"ReadWriteOnce"
]
}
}
}
Постоянный том
Постоянный том является следующим предпочтительным вариантом для буфера сообщений после временного тома.
Для постоянного тома следуйте рекомендациям в разделе "Рекомендации для поставщиков хранилища".
Значение persistentVolumeClaimSpec
свойства используется в качестве volumeClaimTemplates.spec
свойства StatefulSet
спецификаций внутренних цепей.
Например, чтобы использовать постоянный том с емкостью 1 гигабайт, укажите следующие параметры в ресурсе Брокера:
{
"diskBackedMessageBuffer": {
"maxSize": "1G",
"persistentVolumeClaimSpec": {
"storageClassName": "foo",
"accessModes": [
"ReadWriteOnce"
]
}
}
}
Том emptyDir
Том emptyDir является наименее предпочтительным вариантом после постоянного тома.
emptyDir
Используйте том только при использовании кластера с квотами файловой системы. Дополнительные сведения см. на вкладке квоты проекта файловой системы. Если функция не включена, кластер выполняет периодическое сканирование, которое не применяет никаких ограничений и позволяет узлу узла заполнить место на диске и пометить весь узел узла как неработоспособный.
Например, чтобы использовать emptyDir
том с емкостью 1 гигабайт, укажите следующие параметры в ресурсе Брокера:
{
"diskBackedMessageBuffer": {
"maxSize": "1G"
}
}
Рекомендации для поставщиков хранилища
Рассмотрим поведение выбранного поставщика хранилища, например при использовании таких поставщиков rancher.io/local-path
. Если поставщик не поддерживает ограничения, заполнение тома потребляет место на диске узла. Это может привести к тому, что Kubernetes помечает узел и все связанные модули pod как неработоспособные. Важно понять, как работает поставщик хранилища в таких сценариях.
Выключено
Если вы не хотите использовать буфер сообщений с поддержкой диска, не включайте diskBackedMessageBufferSettings
свойство в ресурс Брокера. Это поведение также используется по умолчанию.
Сохраняемость
Важно понимать, что функция буфера сообщений с поддержкой диска не является синонимом сохраняемости. В этом контексте сохраняемость относится к данным, которые сохраняются при перезапуске pod. Эта функция предоставляет временное место для хранения данных на диске, что предотвращает переполнение памяти и потерю данных во время перезапуска pod.