了解 Azure IoT Edge 執行階段和架構

適用于: IoT Edge 1.4 checkmark IoT Edge 1.4

重要

支援的版本是 IoT Edge 1.4。 如果您是舊版,請參閱更新 IoT Edge

IoT Edge 執行階段是指一系列將裝置變成 IoT Edge 裝置的程式。 整體而言,IoT Edge 執行階段元件可讓 IoT Edge 裝置接收要在 Edge 上執行的程式碼並傳達結果。

IoT Edge 執行階段負責在 IoT Edge 裝置上執行下列功能:

  • 在裝置上安裝和更新工作負載。

  • 維護裝置上的 Azure IoT Edge 安全性標準。

  • 確定 IoT Edge 模組 一律正在執行。

  • 向雲端報告模組健康情況以進行遠端監視。

  • 管理下列之間的通訊:

    • 下游裝置和 IoT Edge 裝置
    • IoT Edge 裝置上的模組
    • IoT Edge 裝置和雲端
    • IoT Edge 裝置

Screenshot of how runtime communicates insights and module health to I o T Hub.

IoT Edge 執行時間的責任分為兩個類別:通訊和模組管理。 這兩個角色是由屬於 IoT Edge 執行時間一部分的兩個元件所執行。 IoT Edge 代理程式 會部署及監視模組,而 IoT Edge 中 則負責通訊。

IoT Edge 代理程式和 IoT Edge 中樞都是模組,就像在 IoT Edge 裝置上執行的任何其他模組一樣。 它們有時稱為 執行時間模組

IoT Edge 代理程式

IoT Edge 代理程式是構成 Azure IoT Edge 執行時間的兩個模組之一。 其負責具現化模組、確保模組繼續執行,並將模組的狀態回報回IoT 中樞。 此組態資料會寫入作為 IoT Edge 代理程式模組對應項的屬性。

IoT Edge 安全性精靈 會在裝置啟動時啟動 IoT Edge 代理程式。 代理程式會從IoT 中樞擷取其模組對應項,並檢查部署資訊清單。 部署資訊清單是 JSON 檔案,宣告需要啟動的模組。

部署資訊清單中的每個專案都包含模組的特定資訊,並由 IoT Edge 代理程式用來控制模組的生命週期。 如需 IoT Edge 代理程式用來控制模組之所有屬性的詳細資訊,請參閱 IoT Edge 代理程式和 IoT Edge 中樞模組對應項 的屬性。

IoT Edge 代理程式會將執行時間回應傳送至IoT 中樞。 以下是可能的回應清單:

  • 200 - 確定
  • 400 - 部署設定格式不正確或無效。
  • 417 - 裝置沒有部署組態集。
  • 412 - 部署組態中的架構版本無效。
  • 406 - IoT Edge 裝置已離線或未傳送狀態報表。
  • 500 - IoT Edge 執行時間發生錯誤。

如需建立部署資訊清單的詳細資訊,請參閱 瞭解如何在 IoT Edge 中部署模組和建立路由。

安全性

IoT Edge 代理程式在 IoT Edge 裝置的安全性中扮演重要角色。 例如,它會執行動作,例如在啟動模組之前先驗證模組的映射。

如需 Azure IoT Edge 安全性架構的詳細資訊,請參閱 IoT Edge 安全性管理員

IoT Edge 中樞

IoT Edge 中樞是構成 Azure IoT Edge 執行時間的另一個模組。 它會藉由公開與IoT 中樞相同的通訊協定端點,作為IoT 中樞的本機 Proxy。 此一致性表示用戶端可以連線到 IoT Edge 執行時間,就像IoT 中樞一樣。

IoT Edge 中樞不是在本機執行的IoT 中樞完整版本。 IoT Edge 中樞會以無訊息方式將某些工作委派給IoT 中樞。 例如,IoT Edge 中樞會在其第一個連線上自動從IoT 中樞下載授權資訊,讓裝置能夠連線。 建立第一個連線之後,IoT Edge 中樞會在本機快取授權資訊。 來自該裝置的未來連線已獲得授權,而不需要再次從雲端下載授權資訊。

雲端通訊

為了減少 IoT Edge 解決方案所使用的頻寬,IoT Edge 中樞會將對雲端的實際連線數目優化。 IoT Edge 中樞會從模組或下游裝置取得邏輯連線,並將其結合為雲端的單一實體連線。 此程式的詳細資料對解決方案的其餘部分而言是透明的。 用戶端認為,即使它們全都透過相同的連線傳送,他們還是有自己的雲端連線。 IoT Edge 中樞可以使用 AMQP 或 MQTT 通訊協定來與雲端通訊,與下游裝置所使用的通訊協定無關。 不過,IoT Edge 中樞目前僅支援使用 AMQP 作為上游通訊協定及其多工處理功能,將邏輯連線合併成單一實體連線。 AMQP 是預設的上游通訊協定。

Screenshot showing relationships to I o T Edge hub as a gateway between physical devices and I o T Hub.

IoT Edge 中樞可以判斷它是否連線到IoT 中樞。 如果連線遺失,IoT Edge 中樞會在本機儲存訊息或對應項更新。 重新建立連線之後,它會同步處理所有資料。 此暫存快取所使用的位置是由 IoT Edge 中樞模組對應項的 屬性所決定。 快取的大小不會限制,只要裝置具有儲存體容量,就會成長。 如需詳細資訊,請參閱 離線功能

本機通訊

IoT Edge 中樞有助於進行本機通訊。 它可藉由代理訊息,讓裝置對模組和模組通訊彼此獨立。 IoT Edge 中樞支援 IoT 中樞 支援的訊息路由功能。

使用路由

訊息代理機制會使用與IoT 中樞相同的路由功能來指定訊息在裝置或模組之間傳遞的方式。 第一個裝置或模組會指定其接受訊息的輸入,以及其寫入訊息的輸出。 然後,解決方案開發人員可以在來源之間路由傳送訊息(例如輸出),以及具有潛在篩選的目的地(例如輸入)。

Screenshot showing how routes between modules go through I o T Edge hub.

路由可供使用 AMQP 通訊協定以 Azure IoT 裝置 SDK 建置的裝置或模組使用。 支援所有傳訊IoT 中樞基本類型(例如遙測)、直接方法、C2D、對應項,但不支援透過使用者定義的主題進行通訊。

如需路由的詳細資訊,請參閱 瞭解如何在 IoT Edge 中部署模組和建立路由。

可用的代理機制功能:

功能 路由
D2C 遙測
本機遙測
DirectMethods
Twin
適用于裝置的 C2D
訂購
篩選
使用者定義的主題
裝置到裝置
本機廣播

連線至 IoT Edge 中樞

IoT Edge 中樞會透過 MQTT 通訊協定或 AMQP 通訊協定接受來自裝置或模組用戶端的連線。

注意

IoT Edge 中樞支援使用 MQTT 或 AMQP 連線的用戶端。 它不支援使用 HTTP 的用戶端。

當用戶端連線到 IoT Edge 中樞時,會發生下列情況:

  1. 如果使用傳輸層安全性 (TLS),則會建置 TLS 通道,以建立用戶端與 IoT Edge 中樞之間的加密通訊。
  2. 驗證資訊會從用戶端傳送至 IoT Edge 中樞,以識別本身。
  3. IoT Edge 中樞會根據其授權原則授權或拒絕連線。

安全連線 (TLS)

根據預設,IoT Edge 中樞只接受使用傳輸層安全性 (TLS) 保護的連線,例如,協力廠商無法解密的加密連線。

如果用戶端在埠 8883 (MQTTS) 或 5671 (AMQPS) 上連線到 IoT Edge 中樞,則必須建置 TLS 通道。 在 TLS 交握期間,IoT Edge 中樞會傳送用戶端需要驗證的憑證鏈結。 若要驗證憑證鏈結,IoT Edge 中樞的根憑證必須安裝為用戶端上的受信任憑證。 如果根憑證不受信任,IoT Edge 中樞將會拒絕用戶端程式庫,並出現憑證驗證錯誤。

在裝置用戶端上安裝此訊息代理程式根憑證的步驟說明于 透明閘道 準備下游裝置 檔中。 模組可以使用與 IoT Edge 中樞相同的根憑證,方法是使用 IoT Edge 精靈 API。

驗證

IoT Edge 中樞只接受來自具有IoT 中樞身分識別之裝置或模組的連線。 例如,已在 IoT 中樞 中註冊,且 IoT 中樞支援三種用戶端驗證方法之一來證明其身分識別: 對稱金鑰驗證 、X.509 自我簽署驗證 X.509 CA 簽署驗證 。 IoT Edge 中樞可以在本機驗證這些IoT 中樞身分識別,讓連線在離線時仍可進行。

IoT Edge 模組目前僅支援對稱金鑰驗證。

授權

藉由確認用戶端屬於其IoT 中樞中定義的受信任用戶端集。 在 IoT 中樞 中設定父/子系或裝置/模組關聯性,可指定信任的用戶端集合。 在 IoT Edge 中建立模組時,此模組與其 IoT Edge 裝置之間會自動建立信任關係。 這是路由代理機制唯一支援的授權模型。

遠端設定

IoT Edge 中樞完全由雲端控制。 它會透過模組對應項從IoT 中樞取得其 態。 對應項包含稱為路由的所需屬性,可宣告在部署內傳遞訊息的方式。 如需路由的詳細資訊,請參閱 宣告路由

此外,您可以在 IoT Edge 中樞 上設定 環境變數,以完成數個設定。

執行時間品質遙測

IoT Edge 會從主機執行時間和系統模組收集匿名遙測,以改善產品品質。 這項資訊稱為執行時間品質遙測。 收集的遙測會定期以裝置到雲端訊息的形式傳送至 IoT Edge 代理程式IoT 中樞。 這些訊息不會出現在客戶的一般遙測中,也不會取用任何訊息配額。

IoT Edge 代理程式和中樞會產生計量,您可以收集以瞭解裝置效能。 IoT Edge 代理程式會收集這些計量的子集,做為執行時間品質遙測的一部分。 針對執行時間品質遙測收集的計量會加上標籤 ms_telemetry 。 如需所有可用計量的相關資訊,請參閱 存取內建計量

上傳之前,會移除任何個人或組織標識資訊,例如裝置和模組名稱,以確保執行時間品質遙測的匿名本質。

IoT Edge 代理程式每小時會收集遙測,並每隔 24 小時傳送一則訊息給IoT 中樞。

如果您想要退出從裝置傳送執行時間遙測,有兩種方式可以執行此動作:

  • SendRuntimeQualityTelemetry 環境變數 false 設定為 edgeAgent ,或
  • 取消核取部署期間Azure 入口網站中的選項。

下一步