了解 Azure 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。
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 裝置
IoT Edge 執行階段的責任分為兩類:通訊和模組管理。 這兩個角色由兩項元件執行,該元件屬於 IoT Edge 執行階段的一部分。 IoT Edge 代理程式會部署並監視模組,而 IoT Edge 中樞則負責通訊。
IoT Edge 代理程式和 IoT Edge 中樞都是模組,就像在 IoT Edge 裝置執行的任何其他模組。 它們有時被稱為執行階段模組。
IoT Edge 代理程式
IoT Edge 代理程式是組成 Azure IoT Edge 執行階段的兩個模組之一。 它負責執行個體化模組,確保它們繼續執行,並將模組的狀態回報 Azure 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 執行階段,就像連線到 Azure IoT 中樞一樣。
IoT Edge 中樞並非在本機執行的 Azure IoT 中樞完整版。 IoT Edge 中樞會以靜音方式委派部分工作給 Azure IoT 中樞。 例如,IoT Edge 中樞會在第一次連線時自動從 Azure IoT 中樞下載授權資訊,讓裝置能夠連線。 在建立第一次連線之後,IoT Edge 中樞會在本機快取授權資訊。 未來源自該裝置的連線會收到授權,而無需再次從雲端下載授權資訊。
雲端通訊
為了降低 IoT Edge 解決方案利用的頻寬,IoT Edge 中樞會最佳化雲端的實際連線數量。 IoT Edge 中樞從模組或下游裝置取得邏輯連線,並將其合併為單一實體連線至雲端。 此流程的詳細資料對解決方案的其餘部分而言是透明的。 客戶認為他們有自己的雲連線,即便是他們都是透過相同的連線傳送。 IoT Edge 中樞可利用 AMQP 或 MQTT 通訊協定與雲端進行上游通訊,與下游裝置所利用的通訊協定無關。 不過,IoT Edge 中樞目前僅支援合併邏輯連線為單一實體連線,方法是利用 AMQP 做為上游通訊協定及其多工功能。 AMQP 是預設的上游通訊協定。
IoT Edge 中樞可以判斷它是否連線到 IoT 中樞。 如果連線中斷,IoT Edge 中樞會在本機儲存訊息或對應項更新。 重新建立連線之後,它會同步所有資料。 用於這個暫存快取的位置是由 IoT Edge 中樞模組對應項的屬性決定。 只要裝置具有記憶體容量,快取的大小就不會被封蓋並成長。 如需詳細資訊,請參閱離線功能。
本機通訊
IoT Edge 中樞可輔助本機通訊。 其可透過代理訊息來輔助裝置對模組及模組對模組的通訊,保持裝置與模組彼此獨立。 Azure IoT Edge 中樞支援 IoT 中樞支援的訊息路由功能。
使用路由
代理機制利用與 Azure IoT 中樞相同的路由功能,指定在裝置或模組之間傳遞訊息的方式。 首先,裝置或模組指定其接受訊息的輸入,以及其寫入訊息的輸出。 然後,解決方案開發人員可在來源 (例如輸出) 與目的地 (例如輸入) 之間路由傳送訊息,可能透過篩選。
若裝置或模組利用 Azure IoT 裝置 SDK 來組建,則可透過 AMQP 通訊協定使用路由。 支援所有訊息 Azure IoT 中樞基本類型 (例如遙測)、直接方法、C2D、對應項,但不支援透過使用者定義主題進行通訊。
如需關於路由的更多資訊,請參閱了解如何在 IoT Edge 部署模組及建立路由。
可用的代理機制功能:
功能 | 路由 |
---|---|
D2C 遙測 | ✔ |
本機遙測 | ✔ |
DirectMethods | ✔ |
Twin | ✔ |
適用於裝置的 C2D | ✔ |
排序 | ✔ |
篩選 | ✔ |
使用者定義主題 | |
裝置對裝置 | |
本機廣播 |
連線至 IoT Edge 中樞
IoT Edge 中樞接受源自裝置或模組用戶端的連線,無論是透過 MQTT 通訊協定或 AMQP 通訊協定。
注意
IoT Edge 中樞支援使用 MQTT 或 AMQP 連線的用戶端。 它不支援使用 HTTP 的用戶端。
當用戶端連線至 IoT Edge 中樞時,會發生以下情況:
- 若使用傳輸層安全性 (TLS) (建議做法),則會建立 TLS 通道來建立用戶端與 IoT Edge 中樞之間的加密通訊。
- 驗證資訊會從用戶端傳送至 IoT Edge 中樞以自我識別。
- IoT Edge 中樞會根據其授權原則加以授權或拒絕連線。
安全連線 (TLS)
根據預設,IoT Edge 中樞僅接受由傳輸層安全性 (TLS) 保護的連線,例如第三方無法解密的加密連線。
若用戶端透過連接埠 8883 (MQTTS) 或 5671 (AMQPS) 連線至 IoT Edge 中樞,則必須建立 TLS 通道。 在 TLS 交握期間,IoT Edge 中樞會傳送憑證連結,用戶端需用其進行驗證。 為驗證憑證連結,IoT Edge 中樞的根憑證需安裝作為用戶端的受信任憑證。 如果跟證書不受信任,IoT Edge 中樞會拒絕客戶端連結庫,並出現憑證驗證錯誤。
若要在用戶端裝置安裝代理程式根憑證,應遵守的步驟請參閱透明閘道,以及準備下游裝置文件。 透過 IoT Edge 精靈 API,模組可利用與 IoT Edge 中樞相同的根憑證。
驗證
IoT Edge 中樞只接受來自具有 IoT 中樞身分識別之裝置或模組的連線。 例如,在 IoT 中樞 中註冊,且 IoT 中樞 支援的三種客戶端驗證方法之一,以證明其身分識別:對稱密鑰驗證、X.509 自我簽署驗證、X.509 CA 簽署驗證。 IoT Edge 中樞可在本機驗證上述 Azure IoT 中樞身分識別,因此在離線時仍可建立連線。
IoT Edge 模組目前僅支援對稱金鑰驗證。
授權
驗證用戶端是否屬於 Azure IoT 中樞所定義的受信任用戶端集。 可在 Azure IoT 中樞設定父系/子系或裝置/模組關係,以便指定受信任用戶端集。 在 IoT Edge 建立模組時,該模組與其 IoT Edge 裝置之間會自動建立信任關係。 這是路由代理機制支援的唯一授權模式。
遠端設定
IoT Edge 中樞完全由雲端控制。 透過模組對應項從 Azure IoT 中樞取得其設定。 對應項包含所需的屬性 (稱為路由),該屬性宣告訊息如何在部署傳遞。 如需關於路由的更多資訊,請參閱宣告路由。
此外,您可透過在 IoT Edge 中樞設定環境變數來完成數項設定。
執行階段品質遙測
IoT Edge 會從主機執行階段與系統模組收集匿名遙測,以利改善產品品質。 這項資訊稱為執行階段品質遙測。 收集的遙測會定期從 IoT Edge 代理程式以裝置對雲端的訊息形式傳送至 Azure IoT 中樞。 這些訊息不會出現在客戶的一般遙測,也不會使用量任何訊息配額。
IoT Edge 代理程式與中樞會產生計量,您可收集該計量,了解裝置效能。 IoT Edge 代理程式會收集該計量的子集,做為執行階段品質遙測的部分內容。 針對執行階段品質遙測收集的計量會以標籤 ms_telemetry
加以標記。 如需資訊了解所有可用計量,請參閱存取內建計量。
任何個人或組織識別資訊 (例如裝置與模組名稱) 都會在上傳之前移除,以便確保執行階段品質遙測的匿名性質。
IoT Edge 代理程式每小時一次收集遙測資料,並每 24 小時傳送一則訊息至 Azure IoT 中樞。
如果您不希望從您的裝置傳送執行階段遙測,有兩種方法可退出:
- 將
SendRuntimeQualityTelemetry
環境變數false
設定為 for edgeAgent - 在部署期間,取消核取 Microsoft Azure 入口網站的選項。