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 を使用する場合は、適切な再試行パターンを実装します。

次のステップ