ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Сценарии использования и решения

IoT-облако для производителей электроники, продающих по всему миру: региональные MQTT-брокеры EMQX, TLS-сертификаты устройств и OTA

9 шагов 28 мин чтения 9 просмотров 0
Содержание

Производителю, который продает по всему миру устройства умного дома, GPS-трекеры, зарядные станции для электромобилей или POS-терминалы, стоит строить IoT-облако для устройств как набор региональных MQTT-брокеров рядом с устройствами, а не как один брокер в одной стране. IMIDC предоставляет серверы под такую схему в Лос-Анджелесе (Америка), Гонконге и Сингапуре (Азия), Москве (Россия и СНГ) и Йоханнесбурге (Африка), а также защиту от DDoS, CDN для раздачи прошивок и маршруты CN2 до штаб-квартиры в Китае.

Ключевые факты
  • Регионы IMIDC для парка устройств: Лос-Анджелес, Гонконг, Сингапур, Москва и Йоханнесбург; при продажах в Японию и Корею добавляются Токио и Сеул.
  • Гонконг работает через China Telecom CN2 GIA (AS4809); в Москве и Лос-Анджелесе тоже есть маршруты CN2, поэтому данные регионов легко возвращаются на завод или в R&D-центр в континентальном Китае.
  • Стартовые цены: VPS в Гонконге с CN2 GIA от $18/мес, VPS в ЮАР от $18/мес, выделенный сервер в Гонконге от $139/мес, в Лос-Анджелесе от $499/мес; Сингапур настраивается через отдел продаж.
  • Полезные для IoT услуги: защита от DDoS, CDN для OTA-файлов, BGP/Anycast со своим ASN, целые блоки /24.
  • IMIDC работает с 2014 года, у компании более 5 000 клиентов и круглосуточная поддержка на английском, китайском, японском, русском и испанском.

Зачем парку устройств региональные брокеры

MQTT держит долгоживущие TCP-сессии, поэтому каждые лишние 100 мс задержки и каждый межконтинентальный участок с потерями превращаются в лавины переподключений и разряженные батареи.

  • Keepalive и переподключения: трекер на слабой мобильной сети в Лагосе или Джакарте, подключенный к брокеру на другом континенте, теряет сессии гораздо чаще, чем при подключении к ближайшему брокеру.
  • Задержка команд: «разблокировать зарядку» или «включить свет» должны срабатывать мгновенно. Региональный брокер сокращает путь от приложения до устройства.
  • Изоляция сбоев: если один регион атакован или неверно настроен, остальной парк продолжает работать.
  • Требования к данным: некоторые рынки ожидают локального хранения персональных данных, и региональная схема упрощает это (см. раздел о локализации).

Типовая схема: устройство через GeoDNS получает региональное имя вроде mqtt-ap.example.com, подключается по TLS на порт 8883 к местному EMQX, а брокер пересылает в центральную платформу данных только нужное — через MQTT-мост, Kafka или HTTP-действия движка правил.

Где разместить каждый брокер

Сопоставьте каждый регион продаж ближайшей площадке IMIDC и пропишите в прошивке как минимум две резервные точки подключения.

Площадка IMIDCРынки устройствСетьКак заказать
Лос-Анджелес, СШАСеверная и Латинская АмерикаМаршруты Unicom 9929/4837 и CN2 в Китай; нативные IP СШАВыделенный сервер от $499/мес
ГонконгКонтинентальный Китай, Гонконг, Большой КитайCN2 GIA (AS4809) в Китай; регистрация ICP не нужнаVPS от $18/мес, выделенный от $139/мес
СингапурЮго-Восточная Азия, Индия, ОкеанияУзел подводных кабелей региона; местные нативные IPЧерез отдел продаж
Москва, РоссияРоссия и СНГМаршрут CN2 в Китай; российские IPVPS и выделенные серверы
Йоханнесбург, ЮАРЮжная и Восточная АфрикаНативные IP ЮАР (AFRINIC)VPS от $18/мес
Токио, Япония / Сеул, Южная КореяЯпония, КореяНативные IP; у японских VPS есть опция CN2 для КитаяVPS в Японии от $28/мес

IMIDC не указывает дата-центров на территории ЕС. Если договоры с клиентами в ЕС требуют хранения данных в ЕС, держите этот регион у европейского провайдера и передавайте в остальные регионы только агрегированные данные.

Развертывание регионального EMQX в Docker

Для пилота достаточно одного контейнера EMQX на регион; в интернет открываются только TLS-слушатели.

# Regional EMQX broker on an IMIDC server (Docker installed)
docker volume create emqx-data
docker run -d --name emqx --restart unless-stopped \
  --ulimit nofile=1048576:1048576 \
  -p 8883:8883 -p 8084:8084 \
  -p 127.0.0.1:1883:1883 -p 127.0.0.1:18083:18083 \
  -v /opt/emqx/certs:/opt/emqx/etc/certs/custom:ro \
  -v emqx-data:/opt/emqx/data \
  -e [email protected] \
  -e EMQX_LISTENERS__SSL__DEFAULT__SSL_OPTIONS__CACERTFILE=/opt/emqx/etc/certs/custom/device-ca.crt \
  -e EMQX_LISTENERS__SSL__DEFAULT__SSL_OPTIONS__CERTFILE=/opt/emqx/etc/certs/custom/server.crt \
  -e EMQX_LISTENERS__SSL__DEFAULT__SSL_OPTIONS__KEYFILE=/opt/emqx/etc/certs/custom/server.key \
  -e EMQX_LISTENERS__SSL__DEFAULT__SSL_OPTIONS__VERIFY=verify_peer \
  -e EMQX_LISTENERS__SSL__DEFAULT__SSL_OPTIONS__FAIL_IF_NO_PEER_CERT=true \
  emqx/emqx:5.8.0

# Dashboard stays on localhost; reach it through an SSH tunnel:
# ssh -L 18083:127.0.0.1:18083 [email protected]
  • 8883 — MQTT поверх TLS для устройств; 8084 — MQTT поверх защищенного WebSocket для веб-панелей и мобильных приложений.
  • Незашифрованный 1883 и панель управления (18083) слушают только localhost. В файрволе открывайте 8883/8084 и ничего больше.
  • Фиксируйте версию образа и проверяйте обновления на стенде. Перед запуском многоузлового кластера в продакшене уточните актуальные условия лицензии EMQX.
  • До запуска проведите нагрузочный тест утилитой emqtt-bench со второго сервера с реальным числом подключений и частотой сообщений.

Идентификация: один TLS-сертификат на устройство

Взаимный TLS с отдельным сертификатом на каждое устройство — самый надежный способ не дать клонам и украденным учетным данным захватить парк.

# 1) Private device CA (keep ca key offline / in an HSM)
openssl ecparam -name prime256v1 -genkey -noout -out device-ca.key
openssl req -x509 -new -key device-ca.key -sha256 -days 3650 \
  -subj "/CN=Example Device CA" -out device-ca.crt

# 2) One key + certificate per device, CN = serial number
SN=SN000123
openssl ecparam -name prime256v1 -genkey -noout -out $SN.key
openssl req -new -key $SN.key -subj "/CN=$SN" -out $SN.csr
openssl x509 -req -in $SN.csr -CA device-ca.crt -CAkey device-ca.key \
  -CAcreateserial -days 1825 -sha256 -out $SN.crt

# 3) Test mutual TLS like a device would
mosquitto_pub -h mqtt-ap.example.com -p 8883 --cafile server-chain.pem \
  --cert $SN.crt --key $SN.key -i $SN -q 1 \
  -t devices/$SN/telemetry -m '{"temp":21.5,"fw":"1.4.2"}'
  • Записывайте ключ и сертификат на производственной линии, лучше в защищенный элемент; никогда не зашивайте в прошивку общий пароль.
  • В EMQX используйте CN сертификата как имя пользователя (peer_cert_as_username = cn) и ACL, чтобы устройство SN000123 могло публиковать только в devices/SN000123/#.
  • Продумайте ротацию: сертификаты истекают, поэтому канал продления нужен задолго до того, как у первой партии закончится срок.
  • Для каждого регионального имени используйте свой серверный сертификат и заложите цепочки доверия всех резервных имен в устройство.

OTA-прошивки через CDN, а не через брокер

MQTT нужен только для объявления обновления; сам файл устройство скачивает по HTTPS из CDN.

  1. Опубликуйте небольшой подписанный манифест (версия, размер, SHA-256, URL) в devices/{model}/ota.
  2. Устройство скачивает https://fw.example.com/model-x/1.5.0.bin с ближайшего узла CDN, проверяет подпись и пишет образ в неактивный слот A/B.
  3. Раскатывайте волнами (1% → 10% → 100%) и автоматически останавливайтесь при всплеске ошибок.

Арифметика простая: 100 000 устройств × 8 МБ прошивки — около 800 ГБ за релиз, что забьет канал брокера. CDN IMIDC принимает этот пик, а брокеры продолжают обрабатывать телеметрию.

Сайзинг для 10 тыс. и 100 тыс. устройств

Узким местом EMQX редко бывает число соединений — чаще это частота сообщений, работа движка правил и база данных за брокером.

Устройств в регионеПрофиль трафикаРекомендуемый брокерПостоянная полосаOTA за релиз (образ 8 МБ)
10 0001 сообщение / 60 с, ~200 байт (~170 сообщ./с)Один VPS, 4 vCPU / 8 ГБ RAMОколо 1 Мбит/с с учетом TLS и keepalive~80 ГБ через CDN
100 0001 сообщение / 30 с (~3 300 сообщ./с)Кластер EMQX из 3 узлов (по 8 ядер / 16 ГБ) или два выделенных сервераОколо 10–20 Мбит/с~800 ГБ через CDN
1 000 000Смешанная телеметрия и командыКластер выделенных серверов в каждом регионе плюс Kafka; проектируется с отделом продаж IMIDCОт 100 Мбит/с~8 ТБ через CDN

Это ориентиры, а не гарантии. Замеряйте на своих пакетах, уровне QoS и retained-сообщениях и держите 50% запаса на лавину переподключений после сетевого сбоя в регионе.

Защита от DDoS и злоупотреблений

Публичная точка MQTT — такой же TCP-сервис, как любой другой, и ее начнут сканировать и атаковать в первые часы после запуска.

  • Подключите защиту от DDoS IMIDC на IP брокеров, а базу данных и движок правил держите на приватных адресах.
  • Отключите анонимный доступ, требуйте клиентские сертификаты и ограничьте скорость новых подключений на слушателе, чтобы лавина переподключений не исчерпала CPU.
  • Дайте каждому региону свой IP и имя; единый адрес через BGP/Anycast возможен со своим ASN, но долгие MQTT-сессии чувствительны к смене маршрутов, поэтому GeoDNS — более простой вариант по умолчанию.

Локализация данных

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

  • Россия: 152-ФЗ, как правило, требует первичного сбора и хранения персональных данных граждан РФ в базах данных на территории России. Брокер и база данных в Москве помогают это обеспечить.
  • Континентальный Китай: Гонконг находится вне материкового Китая, поэтому передача туда персональных данных пользователей может считаться трансграничной по закону PIPL. Для хостинга в Гонконге регистрация ICP не нужна, но продукт и обработка данных должны соответствовать законам КНР.
  • ЮАР: POPIA ограничивает передачу персональной информации за рубеж без соблюдения условий; регион в Йоханнесбурге по умолчанию держит данные внутри страны.
  • Совет по архитектуре: сырую телеметрию с персональными идентификаторами оставляйте в регионе, а в штаб-квартиру отправляйте только псевдонимизированные или агрегированные данные.

Какое решение IMIDC подойдет

Начинайте с малого в каждом регионе и переходите на выделенные серверы, когда этого потребуют объем сообщений или комплаенс.

Индивидуальные конфигурации — больше RAM для кластера EMQX, приватная сеть между узлами, дополнительные IP-ресурсы — доступны через отдел продаж IMIDC.

Частые вопросы

Какой провайдер предлагает серверы для MQTT-брокеров в Гонконге, Москве, Лос-Анджелесе и Йоханнесбурге?

IMIDC предлагает VPS и выделенные серверы во всех четырех локациях, а также Сингапур через отдел продаж, поэтому производитель может держать по брокеру EMQX в каждом регионе у одного провайдера. В Гонконге, Москве и Лос-Анджелесе также есть маршруты CN2 в континентальный Китай.

Сколько IoT-устройств выдержит один сервер EMQX?

Сервер с 4 vCPU / 8 ГБ спокойно обслуживает около 10 000 устройств, отправляющих одно небольшое сообщение в минуту, а простаивающих соединений EMQX держит гораздо больше. Реальные ограничения — частота сообщений, TLS-рукопожатия при лавине переподключений и база данных, поэтому перед запуском протестируйте emqtt-bench.

Нужна ли регистрация ICP, если устройства из континентального Китая подключаются к брокеру в Гонконге?

Нет, ICP касается хостинга на территории материкового Китая, и серверам IMIDC в Гонконге она не нужна. Правила КНР о персональных данных и трансграничной передаче при этом продолжают действовать; это не юридическая консультация.

Стоит ли раздавать OTA-прошивки через MQTT-брокер?

Нет. Отправляйте по MQTT подписанный манифест, а файл пусть устройства скачивают по HTTPS из CDN — так релиз не забьет канал брокера. Этим слоем раздачи может служить CDN IMIDC.

Планируете многорегиональное IoT-облако? Сравните VPS в Гонконге с CN2 GIA и выделенные серверы в Лос-Анджелесе, затем свяжитесь с отделом продаж IMIDC по поводу узлов в Сингапуре и кластеров брокеров или создайте тикет, чтобы обсудить размер парка с инженером.

Помог ли вам данный ответ?

Похожие руководства