対象:
IoT Edge 1.5
重要
IoT Edge 1.5 LTS は、サポートされているリリースです。 IoT Edge 1.4 LTS は 2024 年 11 月 12 日に終了しました。 以前のリリースを使用している場合は、「Update IoT Edgeを参照してください。
Azure IoT Edgeを使用すると、IoT Edge デバイスを長期間オフラインで動作させ、ダウンストリーム デバイスもオフラインで動作できるようになります。 IoT Edge デバイスが 1 回IoT Hubに接続した後、デバイスとダウンストリーム デバイスは、断続的またはまったくインターネット接続なしで動作し続けることができます。
しくみ
IoT Edge デバイスがオフライン モードになると、IoT Edge ハブは次の 3 つの役割を担います。
- アップストリームに送信されるメッセージを格納し、デバイスが再接続するまでメッセージを保存します。
- モジュールとダウンストリーム デバイスが動作し続けることができるように、IoT Hubの代理として機能します。
- 通常はIoT Hub経由するダウンストリーム デバイス間の通信を有効にします。
次の例は、IoT Edge シナリオがオフライン モードでどのように動作するかを示しています。
デバイスを構成する
IoT Edgeデバイスでは、既定でオフライン機能が有効になっています。 この機能を他のデバイスに拡張するには、ダウンストリーム デバイスを構成して、割り当てられた親デバイスを信頼し、デバイスからクラウドへの通信をゲートウェイとして親経由でルーティングします。
sync with IoT Hub
IoT Edge ランタイムをインストールした後、IoT Edge デバイスが少なくとも 1 回はオンラインで、IoT Hubと同期していることを確認します。 この同期中、IoT Edge デバイスは、そのデバイスに割り当てられているダウンストリーム デバイスに関する詳細を取得します。 また、IoT Edge デバイスはローカル キャッシュを安全に更新してオフライン操作を有効にし、テレメトリ メッセージのローカル ストレージの設定を取得します。
オフラインにする
IoT Hubから切断されている間、IoT Edge デバイス、デプロイされたモジュール、およびダウンストリーム デバイスは無期限に動作し続けることができます。 モジュールとダウンストリーム デバイスは、オフライン時に IoT Edge ハブで認証することで開始および再起動できます。 IoT Hubにアップストリームにバインドされたデバイス テレメトリはローカルに格納されます。 ダイレクト メソッドまたはメッセージによって、モジュール間またはダウンストリーム デバイス間の通信が維持されます。
IoT Hub に再接続して再同期します
IoT Hubへの接続が復元されると、IoT Edgeデバイスが再び同期されます。 ローカルに保存されたメッセージはすぐにIoT Hubに配信されますが、配信は接続の速度、IoT Hub待機時間、および関連する要因によって異なります。 メッセージは、格納された順序と同じ順序で配信されます。
モジュールおよびデバイスにおける、必要なプロパティと報告されたプロパティとの違いが調整されます。 IoT Edge デバイスは、割り当てられた一連のダウンストリーム デバイスに対する変更を更新します。
制約と制限
IoT Edgeデバイスとその割り当てられたダウンストリーム デバイスは、最初の 1 回限りの同期の後、オフラインで無期限に機能できます。ただし、メッセージ ストレージは、time to Live (TTL) 設定および使用可能なディスク領域によって異なります。
デバイス EdgeAgent は 、新しいデプロイや失敗した展開など、展開の状態が変化するたびに、報告されるプロパティを更新します。 デバイスがオフラインの場合、EdgeAgent はAzure ポータルに状態を報告できません。 そのため、IoT Edge デバイスにインターネット接続がない場合、Azure ポータルのデバイスの状態は 200 OK のままである可能性があります。
親デバイスと子デバイスを設定する
既定では、親デバイスは最大 100 の子を持つことができます。 edgeHub モジュールで MaxConnectedClients 環境変数を設定して、この制限を変更します。 子デバイスが持つ親は 1 つだけです。
注
ダウンストリーム デバイスは、インターネットまたはゲートウェイ デバイスに直接データを送信します (IoT Edge有効かどうか)。 子デバイスには、入れ子になったトポロジ内のダウンストリーム デバイスまたはゲートウェイ デバイスを使用できます。
ダウンストリーム デバイスには、同じIoT Hubに登録されている任意のデバイス (IoT Edgeまたは非IoT Edge) を指定できます。
IoT Edge デバイスと IoT デバイスの間に親子関係を作成する方法の詳細については、「ダウンストリーム デバイスをAzure IoT Hubに認証する」を参照してください。 対称キー、自己署名 X.509、および CA 署名付き X.509 セクションには、Azure ポータルとAzure CLIを使用して、デバイスの作成時に親子関係を定義する方法の例が示されています。 既存のデバイスの場合は、親デバイスまたは子デバイスのAzure ポータルのデバイスの詳細ページからリレーションシップを宣言します。
2 つのIoT Edge デバイス間の親子関係の作成の詳細については、「ダウンストリーム IoT Edge デバイスを Azure IoT Edge ゲートウェイに接続するを参照してください。
親デバイスをゲートウェイとして設定する
親子関係は透過的なゲートウェイと考えてください。このゲートウェイでは、子デバイスはIoT Hubに独自の ID を持ちますが、その親を介してクラウド経由で通信します。 セキュリティで保護された通信を行うために、子デバイスは、親デバイスが信頼できるソースから取得されていることを確認する必要があります。 そうしないと、サードパーティによって親を偽装する悪意のあるデバイスが設定され、通信が傍受される可能性があります。
この信頼関係を作成する 1 つの方法については、次の記事で詳しく説明されています。
DNS サーバーの指定
堅牢性を向上させるには、環境内で使用される DNS サーバー アドレスを指定します。 IOT EDGE用に DNS サーバーを設定するには、Edge Agent モジュールの解決策に関する記事を参照してください。このトラブルシューティング記事では、"空の構成ファイル" が報告されデバイスでモジュールが起動しません。
オプションのオフライン設定
デバイスがオフラインになった場合、IoT Edge親デバイスは、接続が再確立されるまで、すべてのデバイスからクラウドへのメッセージを格納します。 IoT Edge ハブ モジュールは、オフライン メッセージの格納と転送を管理します。
長時間オフラインにできるデバイスの場合は、次の 2 つのIoT Edge ハブ オプションを設定してパフォーマンスを最適化します。
- time to live 設定を増やして、IoT Edge ハブがデバイスが再接続するまでメッセージを保持します。
- メッセージ ストレージ用のディスク領域を追加します。
生存時間
Time to Live の設定は、メッセージの配信を待機してから有効期限が切れるまでの時間 (秒単位) です。 既定値は 7,200 秒 (2 時間) です。 最大値は、整数変数の最大値 (約 20 億) によって制限されます。
この設定は、モジュール ツインに格納されているIoT Edge ハブの必要なプロパティです。 Azure ポータルで構成するか、配置マニフェストで直接構成します。
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.1",
"routes": {},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
}
システム モジュール用のホスト ストレージ
既定では、IoT Edge ハブはメッセージとモジュールの状態をローカル コンテナー ファイル システムに格納します。 特にオフラインの場合は、信頼性を高める目的で、ホスト IoT Edge デバイス上のストレージ専用にします。 詳細については、「 モジュールにデバイスのローカル ストレージへのアクセス権を付与する」を参照してください。
次のステップ
親デバイスと子デバイス接続の透過的なゲートウェイを設定する方法の詳細については、次を参照してください。
- 透過的なゲートウェイとして機能するようにIoT Edge デバイスを構成します
ダウンストリーム デバイスを Azure IoT Hub - ダウンストリーム デバイスを Azure IoT Edge ゲートウェイに接続します