IoT Hub と信頼性
Azure IoT Hub は、クラウドでホストされる管理サービスです。IoT アプリケーションとそこに接続されたデバイスとの間における通信において、中央のメッセージ ハブとしての役割を担います。 何百万ものデバイスとそのバックエンド ソリューションとを、高い信頼性で安全に接続することができます。 IoT ハブには、ほぼすべてのデバイスを接続することができます。
IoT Hub は、監視をサポートしており、デバイスの作成、デバイスの接続、デバイスの障害を効率的に追跡することができます。
IoT Hub は、次のメッセージング パターンもサポートしています。
- device-to-cloud テレメトリ
- デバイスからのファイルのアップロード
- クラウドからデバイスを制御するための要求/応答メソッド
IoT Hub の詳細については、「IoT の概念と Azure IoT Hub」を参照してください。
IoT Hub が信頼性の高いワークロードをどのようにサポートするかについては、次のトピックを参照してください。
以下のセクションは、Azure IoT Hub と信頼性に関する説明です。
- 設計上の考慮事項
- 構成チェックリスト
- 推奨構成
設計上の考慮事項
Azure IoT hub サービス レベル アグリーメントの詳細については、「Azure IoT Hub の SLA」を参照してください。
チェック リスト
信頼性を考慮して Azure IoT Hub を構成できていますか?
- 別のリージョンに 2 つ目の IoT Hub をプロビジョニングし、デバイスにルーティング ロジックを設定します。
- イベントを頻繁に送信する場合は、
AMQP
またはMQTT
プロトコルを使用します。 - デバイス接続に x.509 証明書 を使用している場合、運用環境ではルート CA によって検証済みの証明書のみを使用してください。
- 組み込みのエンドポイントを使用する予定がある場合は、最大のスループットを得るために、IoT Hub の作成時に最大のパーティション数 (
32
) を使用します。 - スケーリングを行う場合は、リージョンごとに複数の IoT Hub を追加するのではなく、レベルと割り当てる IoT Hub ユニットを増やします。
- 高スループットのシナリオでは、バッチ イベントを使用します。
- 待機時間を最小限にする必要がある場合は、ルーティングを使用せずに、組み込みエンドポイントからイベントを読み取ります。
- ソリューション全体の可用性とディザスター リカバリー戦略の一環として、IoT Hub のリージョン間ディザスター リカバリー オプションの使用を検討してください。
- Event Hub と互換性がある組み込みエンドポイントからデバイス テレメトリを読み取る場合は、イベント ハブ コンシューマーの推奨事項に関するページを参照してください。
- SDK を使用して IoT Hub にイベントを送信する場合は、再試行ポリシー (
EventHubsException
またはOperationCancelledException
) によってスローされた例外が適切にキャッチされていることを確認します。 - スロットリングやクォータの枯渇によるテレメトリの中断を回避するために、カスタム自動スケール ソリューションを追加することを検討してください。
構成に関する推奨事項
Azure IoT Hub を構成する場合は、信頼性を最適化するための次の推奨事項を考慮してください。
推奨 | 説明 |
---|---|
別のリージョンに 2 つ目の IoT Hub をプロビジョニングし、デバイスにルーティング ロジックを設定します。 | これらの構成は、コンシェルジェ サービスを使用してさらに強化できます。 |
イベントを頻繁に送信する場合は、AMQP または MQTT プロトコルを使用します。 |
AMQP および MQTT ではセッション初期化時のネットワーク コストが高くなりますが、HTTPS では要求ごとに追加の TLS オーバーヘッドが必要になります。 発行の頻度が高い場合は、AMQP および MQTT のパフォーマンスが高くなります。 |
デバイス接続に x.509 証明書 を使用している場合、運用環境ではルート CA によって検証済みの証明書のみを使用してください。 | 有効期限が切れる前に、証明書を更新するためのプロセスが必要です。 |
組み込みのエンドポイントを使用する予定がある場合は、最大のスループットを得るために、IoT Hub の作成時に最大のパーティション数 (32 ) を使用します。 |
Event Hub と互換性があるエンドポイントの Device-to-cloud パーティションの数は、実行できるダウンストリーム並列処理の次数を反映しています。 これにより、同時処理数を 32 までスケールアップし、送信と受信の能力を最大化できます。 作成後にこの数を変更することはできません。 |
スケーリングを行う場合は、リージョンごとに複数の IoT Hub を追加するのではなく、レベルと割り当てる IoT Hub ユニットを増やします。 | すべてのハブを同じ基盤クラスターで実行できるため、リージョンごとに複数の IoT Hub を追加しても、回復性は向上しません。 |
高スループットのシナリオでは、バッチ イベントを使用します。 | このサービスは、1 つではなく複数のイベントを含む配列をコンシューマーに提供します。 コンシューマー アプリケーションは、これらの配列を処理する必要があります。 |
待機時間を最小限にする必要がある場合は、ルーティングを使用せずに、組み込みエンドポイントからイベントを読み取ります。 | IoT Hub でメッセージ ルーティングを使用すると、メッセージ配信の待機時間が長くなります。 平均では、待機時間が 500 ms を超えることはありませんが、配信の待機時間に関する保証はありません。 |
ソリューション全体の可用性とディザスター リカバリー戦略の一環として、IoT Hub のリージョン間ディザスター リカバリー オプションの使用を検討してください。 | このオプションを選択すると、IoT Hub エンドポイントが、ペアになっている Azure リージョンに移動されます。 デバイス レジストリのみがレプリケートされます。 イベントはセカンダリ リージョンにレプリケートされません。 お客様が開始したフェールオーバーの RTO は、10分から数時間になります。 Microsoft が開始したフェールオーバーの場合、RTO は 2-26 時間です。 この RTO がお客様の要件を満たしていることと、より広範な可用性戦略に適合していることを確認してください。 より高い RTO が必要な場合は、クライアント側のフェールオーバー パターンを実装することを検討してください。 |
SDK を使用して IoT Hub にイベントを送信する場合は、再試行ポリシー (EventHubsException または OperationCancelledException ) によってスローされた例外が適切にキャッチされていることを確認します。 |
HTTPS を使用する場合は、適切な再試行パターンを実装します。 |