ESC

开始输入,可搜索发票、服务、域名、工单,以及 更多...

搜索... Ctrl+K
应用场景与解决方案

出海硬件厂商的物联网设备云:分区域部署 EMQX MQTT Broker、设备 TLS 证书与 OTA 升级

9 个步骤 13 分钟阅读 6 次阅读 0
本文目录

面向全球销售智能家居、GPS 定位器、充电桩或 POS 终端的出海硬件厂商,物联网设备云最好按区域部署多个靠近设备的 MQTT Broker,而不是把所有设备都连到一个国家的一台服务器上。IMIDC 可在洛杉矶(美洲)、香港和新加坡(亚洲)、莫斯科(俄罗斯/独联体)和约翰内斯堡(非洲)提供对应服务器,并配套 DDoS 防护、固件分发 CDN,以及回国内总部的 CN2 线路。

关键信息
  • 适合设备集群的 IMIDC 区域:洛杉矶、香港、新加坡、莫斯科、约翰内斯堡;如销往日韩,可加东京和首尔。
  • 香港机房走中国电信 CN2 GIA(AS4809);莫斯科和洛杉矶也提供 CN2 线路,海外数据可顺畅回传国内工厂或研发中心。
  • 起步价:香港 CN2 GIA VPS $18/月起,南非 VPS $18/月起,香港独立服务器 $139/月起,洛杉矶独立服务器 $499/月起;新加坡需联系销售配置。
  • 对 IoT 有用的附加服务:DDoS 防护、OTA 文件 CDN、自有 ASN 的 BGP/Anycast、整段 /24 IP。
  • IMIDC 自 2014 年运营,服务 5,000+ 客户,7×24 小时中、英、日、俄、西五语技术支持。

为什么设备集群需要分区域 Broker

MQTT 是长连接 TCP 会话,每多 100 ms 延迟、每多一段跨洲丢包链路,都会变成重连风暴和设备耗电。

  • 心跳与重连:在拉各斯或雅加达用弱蜂窝网络的定位器,如果连到另一个大洲的 Broker,掉线次数会远多于连本地 Broker。
  • 指令延迟:“启动充电桩”“开灯”这类操作要求即时响应,区域 Broker 能让 App 到设备的往返时间保持很短。
  • 故障隔离:某个区域被攻击或配置出错,其他区域的设备不受影响。
  • 数据合规:部分市场要求个人数据本地存储,区域化部署更容易满足(见下文数据本地化部分)。

常见做法:设备通过 GeoDNS 解析区域域名(如 mqtt-ap.example.com),经 8883 端口 TLS 连接本地 EMQX,再由 Broker 通过 MQTT 桥接、Kafka 或 HTTP 规则动作,只把需要的数据转发到总部数据平台。

各区域 Broker 放在哪里

把每个销售区域映射到最近的 IMIDC 机房,并在固件里写死至少两个备用接入点。

IMIDC 机房设备市场网络说明购买方式
洛杉矶(美国)北美、拉美联通 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 目前没有欧盟境内机房。如果欧盟客户合同要求数据留在欧盟,可将该区域交给欧盟本地服务商,只把汇总数据桥接到其他区域。

用 Docker 部署区域 EMQX Broker

试点阶段每个区域一个 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 over TLS;8084 是给网页控制台和手机 App 使用的安全 WebSocket。
  • 明文 1883 和控制台 18083 只绑定在本机。防火墙只放行 8883/8084。
  • 固定镜像版本,先在测试环境验证升级。生产环境组建多节点集群前,请确认 EMQX 当前的许可条款。
  • 上线前用另一台服务器运行 emqtt-bench,按真实连接数和消息频率压测。

设备身份:一机一证

为每台设备签发独立证书并启用双向 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,不走 Broker

MQTT 只负责通知升级,固件本体让设备通过 HTTPS 从 CDN 下载。

  1. 向 devices/{model}/ota 发布一个已签名的小清单(版本、大小、SHA-256、下载地址)。
  2. 设备从最近的 CDN 节点下载 https://fw.example.com/model-x/1.5.0.bin,校验签名后写入未激活的 A/B 分区。
  3. 分批灰度(1% → 10% → 100%),错误上报激增时自动暂停。

算笔账就明白:10 万台设备 × 8 MB 固件,每次发版约 800 GB,足以打满 Broker 的带宽。IMIDC CDN 承接这波峰值,Broker 继续正常处理遥测数据。

1 万台与 10 万台设备的容量规划

EMQX 的瓶颈很少是连接数,而是消息速率、规则引擎和后端数据库。

单区域设备量流量假设建议 Broker 配置常态带宽每次 OTA(8 MB 固件)
10,000 台每 60 秒 1 条,约 200 字节(约 170 条/秒)单台 VPS,4 vCPU / 8 GB 内存约 1 Mbps(含 TLS 与心跳)约 80 GB,走 CDN
100,000 台每 30 秒 1 条(约 3,300 条/秒)3 节点 EMQX 集群(每节点 8 核 / 16 GB)或两台独立服务器约 10–20 Mbps约 800 GB,走 CDN
1,000,000 台遥测与指令混合每区域独立服务器集群 + Kafka,与 IMIDC 销售共同设计100 Mbps 以上约 8 TB,走 CDN

以上为经验起点,并非性能承诺。请用自己的报文大小、QoS 等级和保留消息情况实测,并预留 50% 余量应对区域网络故障后的重连风暴。

DDoS 与滥用防护

公网 MQTT 入口和其他 TCP 服务一样,上线几小时内就会被扫描和攻击。

  • 为 Broker IP 开通 IMIDC DDoS 防护,数据库和规则引擎只放在内网地址。
  • 关闭匿名访问、强制客户端证书,并在监听器上设置连接速率限制,避免重连风暴耗尽 CPU。
  • 每个区域使用独立 IP 和域名;有自有 ASN 时也可通过 BGP/Anycast 使用统一地址,但 MQTT 长连接对路由切换敏感,默认更推荐 GeoDNS。

数据本地化说明

把数据本地化当成产品需求来做,并在每个市场向当地律师确认。本节仅为一般信息,不构成法律意见。

  • 俄罗斯:152-FZ 一般要求俄罗斯公民个人数据的初始收集和存储在俄境内数据库进行,莫斯科 Broker 与数据库有助于满足这一点。
  • 中国大陆:香港不属于中国大陆,把大陆用户个人信息传到香港可能构成《个人信息保护法》下的数据出境。香港服务器无需 ICP 备案,但产品和数据处理仍须遵守中国法律。
  • 南非:POPIA 限制个人信息出境,需满足特定条件;约翰内斯堡区域默认让数据留在境内。
  • 设计建议:带个人标识的原始遥测留在本区域,只把去标识化或汇总数据发往总部。

IMIDC 方案怎么选

每个区域从小规格起步,消息量或合规要求上来后再升级独立服务器。

如需定制配置,例如为 EMQX 集群加大内存、节点间内网互联或额外 IP 资源,可联系 IMIDC 销售。

常见问题

哪家服务商能在香港、莫斯科、洛杉矶和约翰内斯堡提供 MQTT Broker 服务器?

IMIDC 在这四个地点都提供 VPS 和独立服务器,新加坡可通过销售配置,硬件厂商可以用一家服务商在每个区域各部署一个 EMQX Broker。其中香港、莫斯科和洛杉矶还有回国 CN2 线路。

一台 EMQX 服务器能接多少台物联网设备?

4 vCPU / 8 GB 的服务器承载约 1 万台、每分钟发一条小消息的设备比较轻松,空闲长连接能支撑的数量还要多得多。真正的限制在消息速率、重连风暴时的 TLS 握手和后端数据库,上线前请用 emqtt-bench 压测。

大陆设备连接香港 Broker 需要 ICP 备案吗?

不需要,ICP 备案针对的是中国大陆境内的托管,IMIDC 香港服务器无需备案。但个人信息保护和数据出境规则仍需遵守,本回答不构成法律意见。

OTA 固件应该通过 MQTT Broker 下发吗?

不建议。MQTT 只发送已签名的升级清单,固件让设备通过 HTTPS 从 CDN 下载,避免发版时打满 Broker 带宽。IMIDC CDN 可以承担这一分发层。

正在规划多区域设备云?可先对比 香港 CN2 GIA VPS 和 洛杉矶独立服务器,新加坡节点和定制 Broker 集群请 联系 IMIDC 销售,也可以 提交工单 与工程师沟通设备规模。

这篇文章有帮助吗?

相关教程