ESC

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

Search... Ctrl+K
活用シーンとソリューション

海外展開するハードウェアメーカーのIoTデバイスクラウド:地域別EMQX MQTTブローカー、デバイスTLS証明書とOTA配信

9 ステップ 15 分で読めます 7 回閲覧 0
目次

スマートホーム機器、GPSトラッカー、EV充電器、POS端末などを世界中に販売するハードウェアメーカーは、IoTデバイスクラウドを1か国1台のブローカーに集約するのではなく、デバイスの近くに地域別のMQTTブローカーを置く構成にすべきです。IMIDCはロサンゼルス(米州)、香港とシンガポール(アジア)、モスクワ(ロシア・CIS)、ヨハネスブルグ(アフリカ)にこの構成向けのサーバーを提供し、DDoS対策、ファームウェア配信用CDN、中国本社へ戻るCN2回線も用意しています。

重要ポイント
  • デバイス群向けのIMIDC拠点:ロサンゼルス、香港、シンガポール、モスクワ、ヨハネスブルグ。日本・韓国で販売するなら東京とソウルも追加できます。
  • 香港はChina Telecom 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以上、英・中・日・露・西の5言語で24時間365日サポート。

デバイス群に地域別ブローカーが必要な理由

MQTTは長時間維持されるTCPセッションなので、往復遅延が100 ms増えるごとに、また大陸間のロスの多い経路を通るごとに、再接続の嵐とバッテリー消費につながります。

  • キープアライブと再接続:ラゴスやジャカルタの弱いモバイル回線上のトラッカーが別大陸のブローカーに接続すると、近くのブローカーより切断が大幅に増えます。
  • コマンド遅延:「充電器を解錠」「照明をオン」は即時に反応すべき操作です。地域ブローカーならアプリからデバイスまでの往復を短く保てます。
  • 障害範囲の限定:ある地域が攻撃や設定ミスで止まっても、他地域のデバイスは動き続けます。
  • データ規制:個人データの国内保存を求める市場もあり、地域分散ならその対応が容易です(後述)。

一般的な構成は、デバイスがGeoDNSで mqtt-ap.example.com のような地域ホスト名を解決し、8883番ポートのTLSで地域のEMQXに接続、ブローカーはMQTTブリッジ、Kafka、HTTPルールアクションで必要なデータだけを本社のデータ基盤へ転送する、というものです。

各ブローカーの配置先

販売地域ごとに最寄りのIMIDC拠点を割り当て、ファームウェアには最低2つの予備接続先を組み込みます。

IMIDC拠点対象市場ネットワーク注文方法
ロサンゼルス(米国)北米・中南米Unicom 9929/4837とCN2で中国本土へ、米国ネイティブIP専用サーバー 月額$499から
香港中国本土・香港・中華圏中国本土へCN2 GIA(AS4809)、ICP届出不要VPS 月額$18から、専用サーバー 月額$139から
シンガポール東南アジア・インド・オセアニア地域の海底ケーブルハブ、現地ネイティブIP営業経由で構成
モスクワ(ロシア)ロシア・CIS中国本土へのCN2回線、ロシアIPVPS・専用サーバー
ヨハネスブルグ(南アフリカ)南部・東部アフリカ南アフリカのネイティブIP(AFRINIC)VPS 月額$18から
東京(日本)/ ソウル(韓国)日本・韓国ネイティブIP、日本VPSは中国向けCN2オプションあり日本VPS 月額$28から

IMIDCはEU域内のデータセンターを掲載していません。EUの契約でEU内保存が求められる場合は、その地域だけEUの事業者を使い、集計データのみを他地域へブリッジしてください。

DockerでEMQXの地域ブローカーを構築

パイロット段階なら地域ごとにEMQXコンテナ1つで十分です。インターネットには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はWebダッシュボードやモバイルアプリ用のセキュアWebSocketです。
  • 平文の1883とダッシュボード(18083)はlocalhostのみにバインドし、ファイアウォールでは8883/8084だけを開放します。
  • イメージのバージョンを固定し、アップグレードはステージングで検証します。本番でマルチノードクラスターを組む前にEMQXの最新ライセンス条件を確認してください。
  • リリース前に別サーバーから emqtt-bench で実際の接続数とメッセージ頻度を再現して負荷試験します。

デバイスID:1台に1枚の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は更新の通知だけに使い、バイナリはデバイスがCDNからHTTPSでダウンロードします。

  1. 署名付きの小さなマニフェスト(バージョン、サイズ、SHA-256、URL)を devices/{model}/ota に発行します。
  2. デバイスは最寄りのCDNエッジから https://fw.example.com/model-x/1.5.0.bin を取得し、署名を検証してから非アクティブなA/Bスロットに書き込みます。
  3. 段階的に展開(1% → 10% → 100%)し、エラー報告が急増したら自動停止します。

計算すれば理由は明らかです。10万台 × 8 MBのファームウェアは1回のリリースで約800 GBになり、ブローカーの回線を埋め尽くします。IMIDC CDN がこのピークを吸収し、ブローカーはテレメトリ処理を続けられます。

1万台・10万台のサイジング

EMQXのボトルネックは接続数よりも、メッセージレート、ルールエンジンの処理、背後のデータベースであることがほとんどです。

地域あたり台数想定トラフィック推奨ブローカー構成平常時帯域OTA 1回(8 MBイメージ)
10,000台60秒に1件、約200バイト(約170件/秒)VPS 1台、4 vCPU / 8 GB RAMTLS・キープアライブ込みで約1 Mbps約80 GB(CDN経由)
100,000台30秒に1件(約3,300件/秒)EMQX 3ノードクラスター(各8コア / 16 GB)または専用サーバー2台約10〜20 Mbps約800 GB(CDN経由)
1,000,000台テレメトリとコマンドの混在地域ごとの専用サーバークラスター+Kafka、IMIDC営業と設計100 Mbps以上約8 TB(CDN経由)

これは目安であり保証値ではありません。実際のペイロード、QoS、保持メッセージの使い方で計測し、地域障害後の再接続の嵐に備えて50%の余裕を確保してください。

DDoSと不正アクセス対策

公開MQTTエンドポイントは他のTCPサービスと同じく、公開から数時間でスキャンや攻撃を受けます。

  • ブローカーのIPにIMIDCのDDoS対策を付け、データベースとルールエンジンはプライベートアドレスに置きます。
  • 匿名接続を無効化し、クライアント証明書を必須にし、リスナーに接続レート制限を設定して再接続の嵐でCPUが枯渇しないようにします。
  • 地域ごとに独立したIPとホスト名を使います。自社ASNがあれば BGP/Anycast で単一アドレスも可能ですが、長時間のMQTTセッションは経路変化に弱いため、標準はGeoDNSが無難です。

データローカライゼーションの注意点

データの保存場所は製品要件として扱い、市場ごとに現地の弁護士に確認してください。本節は一般的な情報であり、法的助言ではありません。

  • ロシア:152-FZは一般に、ロシア国民の個人データをロシア国内のデータベースで最初に収集・保存することを求めます。モスクワのブローカーとデータベースが対応の助けになります。
  • 中国本土:香港は中国本土外のため、本土ユーザーの個人情報を香港へ移すことは個人情報保護法(PIPL)上の越境移転に当たる可能性があります。香港でのホスティングにICP届出は不要ですが、製品とデータ処理は中国法に従う必要があります。
  • 南アフリカ:POPIAは条件を満たさない国外移転を制限しています。ヨハネスブルグ拠点ならデータは国内に留まります。
  • 設計のコツ:個人識別子を含む生データは地域内に残し、本社には仮名化・集計済みデータだけを送ります。

どのIMIDC構成が合うか

地域ごとに小さく始め、メッセージ量やコンプライアンス要件に応じて専用サーバーへ移行します。

EMQXクラスター向けのメモリ増設、ノード間プライベートネットワーク、追加の IPリソース などのカスタム構成はIMIDCの営業にご相談ください。

よくある質問

香港・モスクワ・ロサンゼルス・ヨハネスブルグでMQTTブローカー用サーバーを提供している事業者は?

IMIDCは4拠点すべてでVPSと専用サーバーを提供し、シンガポールも営業経由で利用できるため、1社で地域ごとにEMQXブローカーを置けます。香港、モスクワ、ロサンゼルスには中国本土へのCN2回線もあります。

EMQXサーバー1台で何台のIoTデバイスを扱えますか?

4 vCPU / 8 GBのサーバーなら、1分に1件の小さなメッセージを送る約1万台は余裕があり、アイドル接続ならさらに多く保持できます。実際の制約はメッセージレート、再接続時のTLSハンドシェイク、背後のデータベースなので、リリース前にemqtt-benchで試験してください。

中国本土のデバイスが香港のブローカーに接続する場合、ICP届出は必要ですか?

不要です。ICP届出は中国本土内でのホスティングが対象で、IMIDCの香港サーバーには必要ありません。ただし個人情報と越境移転に関する中国の規則は引き続き適用されます(法的助言ではありません)。

OTAファームウェアはMQTTブローカー経由で配信すべきですか?

いいえ。MQTTでは署名付きマニフェストだけを送り、バイナリはCDNからHTTPSで取得させることで、リリース時にブローカーの帯域が埋まるのを防げます。IMIDC CDNをその配信層として使えます。

複数地域のデバイスクラウドを計画中なら、まず 香港CN2 GIA VPS と ロサンゼルス専用サーバー を比較し、シンガポール拠点やカスタムブローカークラスターは IMIDC営業へお問い合わせ ください。台数規模の相談は チケット からエンジニアにどうぞ。

この回答はお役に立ちましたか?

関連チュートリアル