ZYLK достигает оптимизации IoT-услуг с помощью оптимизации APISIX

May 26, 2023

Case Study

Обзор

Альфонсо Гонсалес — разработчик в области искусственного интеллекта и интернета вещей (IoT) в компании ZYLK, лидере в оптимизации решений с открытым исходным кодом и цифровой трансформации в Испании. Альфонсо поделился своим опытом использования APISIX для MQTT-коммуникаций и внедрения кибербезопасности в этом решении. Он сказал: "Безопасный, надежный и высокопроизводительный, APISIX, вероятно, лучший шлюз для API."

Проблемы

  • Проблемы с маршрутизацией MQTT, сетевыми настройками Kubernetes (K8S) и HTTP-коммуникациями.
  • Управление и поддержка каждого доступного конечного пункта и маршрута были сложными, что приводило к значительным затратам времени и усилий.
  • Подключение новых пользователей к сети было затруднено, так как им необходимо было ознакомиться со всей архитектурой перед доступом к любому сервису или конечному пункту.

Результаты

  • ZYLK решила проблемы с HTTP-коммуникациями и MQTT, внедрив APISIX.
  • ZYLK использовала APISIX в качестве TCP-прокси для создания безопасного маршрута передачи данных от Raspberry Pi к системе очередей RabbitMQ в облаке, обеспечивая конфиденциальность и целостность передачи данных.
  • ZYLK добилась значительных улучшений инфраструктуры, которая стала более удобной для пользователей, что привело к существенной экономии времени и усилий и, в конечном итоге, к повышению производительности.

Основная информация

ZYLK — это опытная IT-консалтинговая компания, специализирующаяся на Big Data, порталах и веб-сайтах на базе Liferay, а также искусственном интеллекте более 15 лет. Компания является пионером в оптимизации решений с открытым исходным кодом и цифровой трансформации для различных клиентов, включая частные предприятия, государственные администрации и правительственные органы в Испании и Европе с 2004 года.

ZYLK полагается исключительно на программное обеспечение с открытым исходным кодом для предоставления решений, так как считает, что оно предлагает множество преимуществ по сравнению с проприетарными альтернативами, такими как экономическая эффективность, гибкость, прозрачность и поддержка сообщества. До внедрения APISIX команде приходилось вручную управлять каждым конечным пунктом коммуникаций и напрямую ссылаться на каждый из них со стороны клиента. Это приводило к значительным затратам времени и усилий на управление и поддержку каждого доступного конечного пункта и маршрута.

Основные проблемы предыдущего процесса включали подключение новых пользователей к сети, которым необходимо было ознакомиться со всей архитектурой перед доступом к любому сервису или конечному пункту. Кроме того, команда столкнулась с проблемами маршрутизации MQTT, сетевыми настройками Kubernetes и HTTP-коммуникациями.

Выбор технического решения

ZYLK полностью работает с программным обеспечением с открытым исходным кодом, включая множество проектов Apache. Поэтому решение Apache было предпочтительным при поиске API-шлюза. После шести месяцев поиска решения и сравнения с Kong Gateway и HAProxy, ZYLK в конечном итоге выбрала APISIX. Причины следующие:

1. APISIX проще и имеет более комплексные плагины безопасности с удобной панелью управления.

APISIX предоставляет простой и удобный интерфейс с комплексным набором плагинов безопасности, что упрощает управление и защиту API-шлюза. Удобная панель управления также позволяет легко настраивать и управлять API-шлюзом.

2. APISIX поддерживает множество протоколов, не только HTTP.

APISIX поддерживает широкий спектр протоколов, что делает его универсальным инструментом для управления различными типами API-трафика. Эта гибкость позволяет пользователям управлять всем своим API-трафиком в одном месте, упрощая инфраструктуру и снижая сложность.

3. APISIX может перенаправлять входящие MQTT-сообщения с использованием mTLS между клиентом и сервером.

Поддержка APISIX MQTT-сообщений и шифрования mTLS обеспечивает дополнительный уровень безопасности для коммуникаций между клиентами и серверами. С этой функцией входящие MQTT-сообщения могут быть безопасно перенаправлены через APISIX, гарантируя их шифрование и аутентификацию перед достижением назначения. Это повышает общую безопасность системы и защищает конфиденциальную информацию от несанкционированного доступа или вмешательства.

APISIX оказался ценным дополнением к решениям ZYLK, предоставляя более простой и безопасный способ управления их API-шлюзом.

Введение в архитектуру

1. Промышленные устройства: ПЛК регистрируют данные климатического оборудования (в удаленных зданиях)

Во-первых, внимание уделяется промышленным устройствам, таким как ПЛК, которые используются для регистрации данных, генерируемых климатическим оборудованием. Система климат-контроля расположена в удаленном здании, которое считается инфраструктурой периферийных вычислений. Данные, генерируемые этими устройствами, необходимо хранить в облачных серверах. Облако состоит из двух частей, которые обмениваются данными между собой, и данные связаны промышленными протоколами.

2. Промышленные протоколы: Modbus и BACnet используются для чтения данных с ПЛК

Для чтения данных непосредственно с ПЛК используются модули на базе BACnet. ZYLK планирует преобразовать эти модули и информацию BACnet в TCP для упрощения управления. После преобразования данных в подходящий формат они отправляются в облачные серверы с использованием MQTT. Хотя MQTT прост в использовании для IoT-устройств, работа с ним в облаке вызвала некоторые трудности у ZYLK, особенно в части внедрения мер кибербезопасности.

3. MQTT-коммуникации: Преобразование в TCP выполняется, и данные отправляются в облачный сервер через MQTT

ZYLK использует APISIX в качестве решения для безопасных MQTT-коммуникаций в своем кейсе. Данные, генерируемые промышленным климатическим оборудованием, собираются ПЛК и преобразуются в TCP с помощью TCP-шлюза для Modbus, затем отправляются на Raspberry Pi. Данные должны быть отправлены через протокол MQTT для достижения системы очередей, которая может быть либо Mosquitto, либо RabbitMQ, и ZYLK использует APISIX для этого.

edge-infrastructure

Цель хранения этих данных — иметь исторические записи о работе оборудования, которые используются для построения моделей машинного обучения в облаке. ZYLK использует модели NTL для обучения и анализа этих данных. Инфраструктура периферийных вычислений построена с использованием простой схемы, где промышленное климатическое оборудование генерирует данные слева, а ПЛК собирают их.

Raspberry Pi отправлял MQTT-сообщения небезопасным способом, что создавало проблему для ZYLK, так как им нужно было обеспечить безопасность сообщений, по крайней мере, от APISIX до внешней среды, поскольку Raspberry Pi находится в удаленном здании. ZYLK не так беспокоилась о безопасности, когда сообщения достигали APISIX, так как система очередей RabbitMQ находилась на их собственном сервере. Однако обеспечение безопасности первой части коммуникации было критически важным для обеспечения кибербезопасности и шифрования сообщений.

4. Модели машинного обучения: В облаке данные хранятся и используются для обучения и анализа моделей LSTM

cloud-edge-infrastructure

Наконец, в облаке находится кластер Kubernetes с базой данных NIFI. Данные, генерируемые промышленными устройствами, хранятся в облаке и используются для обучения и анализа моделей LSTM.

Процесс внедрения

Шаг 1: Включение плагина

ZYLK описывает шаги, которые они предприняли для включения APISIX в качестве TCP-прокси и создания маршрута передачи данных от APISIX к системе очередей RabbitMQ. Сначала они включили плагин MQTT-прокси, раскомментировав несколько строк в конфигурационном файле и разрешив указанному порту работать как потоковый процесс для TCP-сообщений. Важно отметить, что при такой настройке они могли продолжать использовать все другие функции APISIX и работать с REST API и HTTP-протоколом без проблем.

enable-the-plugin

Шаг 2: Создание маршрута передачи данных

Затем ZYLK создала маршрут передачи данных с использованием специального объекта в APISIX, который похож на дороги, но не отображается на панели управления. Они использовали простую команду для указания используемого плагина, имени и версии протокола MQTT, а также SNI (указание имени сервера) для соответствия их сертификату для безопасной коммуникации. Они указали узел upstream, на котором размещена служба RabbitMQ или любая другая система очередей, которую они предпочли использовать. Включение APISIX в качестве TCP-прокси и настройка маршрутов upstream позволили ZYLK безопасно отправлять MQTT-сообщения от Raspberry Pi к системе очередей RabbitMQ в облаке. Это обеспечило необходимую кибербезопасность и шифрование сообщений для их кейса. Возможность продолжать использовать другие функции APISIX и работать с REST API и HTTP-протоколом сделала решение гибким и адаптируемым к их потребностям. ZYLK успешно протестировала свое решение с брокером Mosquitto и обнаружила, что оно работает идеально.

create-the-stream-route

Шаг 3: Подписание и загрузка сертификатов

После создания маршрута передачи данных следующим шагом было создание и подписание сертификатов, а также их загрузка в экземпляр APISIX. Они использовали Python-скрипт для создания SSL-объектов с сертификатом, ключом и SNI, гарантируя, что SNI соответствует указанному в маршруте передачи данных.

sign-and-load-certificates

ZYLK подчеркивает важность правильного указания SNI. После загрузки сертификатов было установлено взаимное TLS между клиентом и сервером, причем оба показывали свои сертификаты. С такой настройкой ZYLK обеспечила безопасную коммуникацию от APISIX до внешней среды. Они также могли шифровать коммуникацию между APISIX и их upstream, если это было необходимо, но решили оставить ее незашифрованной. ZYLK использовала APISIX для других задач и обнаружила, что плагин предоставляет дополнительные функции. Они перенаправляли входящий трафик на MQTT-брокеры, используя идентификатор клиента для разделения сообщений на разные темы, если это было необходимо. Также была возможна аутентификация MQTT.

Использование APISIX и MQTT позволило ZYLK решить уникальные проблемы и расширить свои возможности за пределы типичных проблем, связанных с HTTP. Создав безопасный канал коммуникации, они смогли хранить и анализировать данные, генерируемые промышленным оборудованием, и использовать их для обучения моделей машинного обучения для прогнозирующего обслуживания.

Достижения после использования APISIX

ZYLK высоко оценивает APISIX и с удовольствием рекомендует его своим деловым партнерам. Описывая APISIX другу, Альфонсо Гонсалес сказал бы: "APISIX — это API-шлюз от Apache, который предоставляет множество функций для маршрутизации, включая аутентификацию, ограничение скорости и отслеживаемость." Альфонсо считает, что APISIX — лучший шлюз для API.

Кейс ZYLK включал промышленные устройства, промышленные протоколы, MQTT-коммуникации и модели машинного обучения. Преимущества, которые ZYLK получила от использования APISIX, включают:

1. Безопасная отправка MQTT-сообщений с APISIX в промышленных условиях

Промышленные устройства, такие как ПЛК, регистрируют данные климатического оборудования, которые преобразуются в TCP и отправляются в облачные серверы с использованием MQTT. APISIX использовался для безопасной отправки MQTT-сообщений от Raspberry Pi к системе очередей RabbitMQ в облаке, обеспечивая необходимую кибербезопасность и шифрование сообщений для их кейса.

2. Обеспечение безопасной коммуникации с плагином MQTT Proxy и взаимным TLS

ZYLK включила плагин MQTT Proxy и создала маршрут передачи данных с использованием специального объекта в APISIX. Они также подписали и загрузили сертификаты с помощью Python-скрипта, гарантируя, что SNI соответствует указанному в маршруте передачи данных. Установив взаимное TLS между клиентом и сервером, ZYLK обеспечила безопасную коммуникацию от APISIX до внешней среды.

3. Расширение возможностей с APISIX

Успешное внедрение APISIX и MQTT позволило ZYLK решить уникальные проблемы и расширить свои возможности за пределы типичных проблем, связанных с HTTP. Они смогли хранить и анализировать данные, генерируемые промышленным оборудованием, и использовать их для обучения моделей машинного обучения для прогнозирующего обслуживания.

ZYLK стремится оставаться на передовой своей отрасли и предоставлять своим клиентам лучшие возможные решения. Продолжая решать вызовы будущего, они, несомненно, найдут новые и инновационные способы использования технологий, таких как APISIX, для достижения своих целей.

Итог

До внедрения APISIX ZYLK приходилось вручную управлять каждым конечным пунктом коммуникаций, что было трудоемким и неэффективным. Они столкнулись с несколькими проблемами, связанными с маршрутизацией MQTT, сетевыми настройками Kubernetes и HTTP-коммуникациями.

После исследования различных решений для API-шлюзов ZYLK в конечном итоге выбрала APISIX благодаря его комплексным функциям безопасности, удобной панели управления и простоте. С APISIX ZYLK смогла безопасно открыть порт маршрутизатора для MQTT-коммуникаций и внутренней маршрутизации API. Они также смогли перенаправлять входящие MQTT-сообщения с использованием mTLS между клиентом и сервером. ZYLK также добилась значительных улучшений в своей инфраструктуре, что привело к экономии времени и усилий.

В планах на будущее ZYLK видит кибербезопасность, конвергенцию IT и OT, а также объяснимый глубокий машинный обучение как основные вызовы для своей отрасли. В течение следующих шести месяцев команда планирует продолжать работу над проектами R&D и развивать собственный сервис IoT.

Tags: