ESC

開始輸入,可搜尋發票、服務、域名、工單,以及 更多...

搜尋... Ctrl+K
應用場景與解決方案

出海硬體廠商的物聯網裝置雲:分割槽域部署 EMQX MQTT Broker、裝置 TLS 證書與 OTA 升級

9 個步驟 13 分鐘閱讀 7 次閱讀 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 銷售,也可以 提交工單 與工程師溝通裝置規模。

這篇文章有幫助嗎?

相關教程