了解 IoT Edge 裝置、模組及子裝置的延伸離線功能
適用於: IoT Edge 1.5 IoT Edge 1.4
重要
支援 IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge。
Azure IoT Edge 支援 IoT Edge 裝置上的延伸離線作業,也可以讓下游裝置離線執行。 只要 IoT Edge 裝置已有機會連線到 IoT 中樞,該裝置及任何下游裝置便能在間歇性或無網際網路連線的情況下繼續運作。
運作方式
當 IoT Edge 裝置進入離線模式時,IoT Edge 中樞便會擔任三個角色:
- 儲存任何可能前往上游的訊息,並會持續儲存到裝置重新連線為止。
- 代表 IoT 中樞對模組和下游裝置進行驗證,以便它們能够繼續執行。
- 啟用通常經由 IoT 中樞的下游裝置之間的通訊。
下列範例示範 IoT Edge 場景如何在離線模式下運作:
設定裝置
IoT Edge 裝置會自動啟用離線功能。 為了將該能力延伸至子裝置,您需要設定下游裝置,使其信任指派的父裝置,並透過作為閘道的父裝置來路由傳送裝置至雲端間的通訊。
與 IoT 中樞進行同步處理
在安裝完 IoT Edge 執行階段之後,IoT Edge 裝置至少需要處於線上狀態一次,以和 IoT 中樞進行同步處理。 在此同步中,IoT Edge 裝置會取得指派給其的任何下游裝置詳細資料。 IoT Edge 裝置也會安全地更新其本機的快取資料以便能夠進行離線作業,且會擷取遙測訊息本機儲存的設定。
離線
從 IoT 中樞中斷連線時,IoT Edge 裝置、其部署的模組,以及任何下游裝置都能無限期的繼續執行。 模組及下游裝置可在離線狀態時,透過向 IoT Edge 中樞進行驗證來啟動或重新啟動。 要上傳到 IoT 中樞的遙測資料會儲存在本機上。 模組或下游裝置之間的通訊則會透過直接方法或訊息維持。
重新連線並與 IoT 中樞再次進行同步處理
一旦與 IoT 中樞的連線還原,IoT Edge 裝置便會再次進行同步處理。 在本機儲存的訊息會立即傳遞至 IoT 中樞,但取決於連線速度、IoT 中樞延遲和相關因素。 這些訊息會依照儲存時的相同順序進行傳遞。
模組和裝置的期望屬性和報告屬性之間的任何差異都會進行協調。 IoT Edge 裝置會更新任何對其受指派下游裝置集合進行的變更。
限制
IoT Edge 裝置及其受指派的下游裝置可在一開始的首次同步處理之後,於離線狀態下無限期運作。但是,儲存訊息則取決於存留時間 (TTL) 設定及可用於儲存訊息的磁碟空間。
每當部署狀態有變更時,裝置的 EdgeAgent 會更新其回報的屬性,例如新的或失敗的部署。 當裝置離線時,EdgeAgent 無法向 Azure 入口網站報告狀態。 因此,當 IoT Edge 裝置沒有網際網路連線時,Azure 入口網站中的裝置狀態可能會維持在 200 OK。
設定父裝置和子裝置
根據預設,父裝置最多可以有 100 個子裝置。 您可以在 edgeHub 模組中設定 MaxConnectedClients 環境變數,以變更此限制。 子裝置只有一個父裝置。
注意
下游裝置會將資料直接發出至網際網路或網路閘道裝置 (已啟用或未啟用 IoT Edge)。 子裝置可以是巢狀拓撲中的下游裝置或閘道裝置。
下游裝置可為任何註冊到相同 IoT 中樞或非 IoT Edge 的裝置。
如需在 IoT Edge 裝置與 IoT 裝置之間建立父子關聯的更多詳細資訊,請參閱驗證下游裝置至 Azure IoT 中樞。 對稱金鑰、自我簽署 X.509 和 CA 簽署的 X.509 章節示範了如何在建立裝置時使用 Azure 入口網站和 Azure CLI 來定義父子關聯性。 針對現有的裝置,您可以在 Azure 入口網站中,從父裝置或子裝置的裝置詳細資料頁面宣告關聯性。
如需在兩個 IoT Edge 裝置之間建立父子關聯的更多詳細資訊,請參閱將下游 IoT Edge 裝置連線到 Azure IoT Edge 閘道。
將父裝置設定為閘道
您可以將父/子關聯性想像成一個透明的閘道,其中子裝置在 IoT 中樞中擁有自己的身分識別,但透過其父裝置與雲端進行通訊。 若要進行安全的通訊,子裝置必須能夠驗證父裝置是否來自可信任的來源。 否則,第三方可能會設定惡意的裝置來冒充父裝置並攔截通訊。
下列文章將詳細描述建立此信任關係的其中一種方式:
指定 DNS 伺服器
若要提升穩定性,強烈建議您指定您環境中使用的 DNS 伺服器位址。 若要設定 IoT Edge 的 DNS 伺服器,請參閱疑難排解文章中的 Edge 代理程式模組報告「空白的組態檔」,且裝置上未啟動任何模組的解決方式。
選擇性的離線設定
如果您的裝置離線,IoT Edge 父裝置會儲存所有裝置到雲端的訊息,直到連線重新建立為止。 IoT Edge 中樞模組會管理離線訊息的儲存和轉送。
對於可能離線一段時間的裝置,請設定兩個 IoT Edge 中樞設定以最佳化效能:
- 增加存留時間設定,因此 IoT Edge 中樞會保留訊息,直到您的裝置重新連線為止。
- 增加額外的磁碟空間來儲存訊息。
存留時間
存留時間設定是在過期前 (以秒為單位),訊息所能等待傳遞的時間長度。 預設值為 7200 秒 (兩小時)。 最大值只受整數變數最大值 (大約是 20 億) 的限制。
此設定是 IoT Edge 中樞的所需設定,它會儲存在模組對應項中。 您可以在 Azure 入口網站或直接在部署資訊清單中進行設定。
"$edgeHub": {
"properties.desired": {
"schemaVersion": "1.1",
"routes": {},
"storeAndForwardConfiguration": {
"timeToLiveSecs": 7200
}
}
}
系統模組的主機儲存
預設情況下,訊息和模組狀態資訊會儲存在 IoT Edge 中樞的本機容器檔案系統中。 為了提升可靠性 (特別是在離線作業時),您也可以在主機 IoT Edge 裝置上配置專用的儲存空間。 如需詳細資訊,請參閱提供模組存取裝置本機儲存體的權限。
下一步
深入了解如何為您的父裝置/子裝置連線設定透明閘道: