瞭解IoT Edge裝置、模組和子裝置的擴充離線功能

適用於:IoT Edge 1.5 複選標記 IoT Edge 1.5 IoT Edge 1.4 複選標記 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 場景如何在離線模式下運作:

  1. 設定裝置

    IoT Edge 裝置會自動啟用離線功能。 若要將該功能擴充至其他裝置,您必須設定下游裝置來信任其指派的父裝置,並透過父系路由傳送裝置到雲端通訊作為網關。

  2. 同步處理 IoT 中樞

    至少在安裝IoT Edge運行時間之後一次,IoT Edge裝置必須上線才能與 IoT 中樞 同步。 在此同步處理中,IoT Edge 裝置會取得指派給它之任何下游裝置的詳細數據。 IoT Edge 裝置也會安全地更新其本機的快取資料以便能夠進行離線作業,且會擷取遙測訊息本機儲存的設定。

  3. 脫機

    與 IoT 中樞 中斷連線時,IoT Edge 裝置、其已部署的模組,以及任何下游裝置都可以無限期地運作。 模組和下游裝置可以在離線時向IoT Edge中樞進行驗證,以啟動和重新啟動。 要上傳到 IoT 中樞的遙測資料會儲存在本機上。 模組之間或下游裝置之間的通訊是透過直接方法或訊息來維護。

  4. 使用 IoT 中樞 重新連線和重新同步

    還原與 IoT 中樞的連線之後,IoT Edge 裝置會再次同步處理。 本機儲存的訊息會立即傳遞至 IoT 中樞,但取決於連線速度、IoT 中樞 延遲和相關因素。 它們會依儲存的順序來傳遞。

    模組和裝置的期望屬性和報告屬性之間的任何差異都會進行協調。 IoT Edge 裝置會更新其一組指派下游裝置的任何變更。

限制

IoT Edge 裝置及其指派的下游裝置可以在初始的一次性同步處理之後無限期離機運作。不過,訊息的儲存取決於 存留時間 (TTL) 設定 ,以及儲存訊息的可用磁碟空間。

每當部署狀態發生變更時,裝置的 EdgeAgent 會更新其報告的屬性,例如新的或失敗的部署。 當裝置脫機時,EdgeAgent 無法向 Azure 入口網站 報告狀態。 因此,當 IoT Edge 裝置沒有網際網路連線時,Azure 入口網站中的裝置狀態可能會維持在 200 OK

設定父裝置和子裝置

根據預設,父裝置最多可以有100個子系。 您可以在edgeHub模組中設定 Max 連線 edClients 環境變數,以變更此限制。 子裝置只有一個父系。

注意

下游裝置會將數據直接發出至因特網或閘道裝置(已啟用IoT Edge或未啟用IoT Edge)。 子裝置可以是巢狀拓撲中的下游裝置或閘道裝置。

下游裝置可以是註冊至相同 IoT 中樞 的任何裝置、IoT Edge 或非 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 裝置上配置專用的儲存空間。 如需詳細資訊,請參閱 為模組提供裝置本機記憶體的存取權

下一步

深入瞭解如何為您的父/子裝置連線設定透明網關: