Skip to main content

使用 Docker 快速部署物聯網

隨著物聯網端點的數量倍增,使用其資料的服務也跟著增加,我們需要用擴充性更好的方式來協調和部署軟體。

容器技術如 Docker 對於克服這項挑戰很有幫助。容器化的程式碼可以橫跨分散式系統從中央整合協調,因此能夠更輕鬆擴大設計規模。容器也有一道硬體抽象層,可以在物聯網端點中常見的不同系統上執行。

但是這只解決了一半的問題。有如物聯網端點,物聯網服務有極大差異性,各服務使用許多不同的 API 和傳訊通訊協定。要在各種異質的裝置和服務之間傳輸資料,開發人員需要一個通訊中樞,把所有這些系統之間的訊息轉譯。

為了克服這些挑戰,結合容器化與傳訊的平台因此崛起。開發人員可利用這些平台在雲端建立 Docker 化的工作負載,把它們部署到邊緣裝置,在本機分析資料,並做出適當反應。邊緣裝置接著把資料和結果推送到雲端,必要時可供遠端監控(圖 1)。

圖 1. Azure IoT Edge 這類的平台可進行 Docker 化工作負載佈建與端對端傳訊。(資料來源:Microsoft)

在本文中,我們會探討一種這類的服務,也就是 Microsoft Azure IoT。

容器化程序

Azure IoT 是一個可以開發、部署和管理物聯網應用程式的雲端平台。在眾多功能之中,此平台提供可縮短上市時程的各種服務模組,例如機器學習和串流分析。

雖然這些雲端服務很實用,但是此平台真正的價值在於它有能力把工作負載推送到邊緣。使用最近發佈的 Azure IoT Edge 2.0,開發人員可以利用 Docker 把模組容器化,並將它們部署到執行 Linux 或 Windows 的裝置上。這樣一來,雲端智慧和分析便可以擴大適用於更多裝置,從 Raspberry Pi 乃至強大的工業閘道。

為了管理這些不同的端點,IoT Edge 與 Azure IoT Hub 密切合作。此服務驗證並建立與物聯網裝置的通訊,然後自動執行裝置註冊和佈建。IoT Hub 也可以當作容器化模組的登錄檔、安全傳訊的管道,以及已部署模組的遠端管理連結。

圖 2 所示,使用 IoT Edge 的程序如下:

  • 建立一個 IoT Hub(或使用已經建立的)
  • 向該 IoT Hub 註冊一個 IoT Edge 裝置
  • 開始 IoT Edge 執行階段
  • 從遠端部署一個模組到 IoT Edge 裝置

圖 2. Azure IoT Edge 允許使用 Docker 把模組容器化,並利用安全傳訊進行遠端管理。(資料來源:Microsoft)

邊緣裝置上的 IoT Edge 執行階段負責基本服務,例如邊緣裝置離線時的安全性、儲存和轉送資料,以及管理與網際網路隔離的系統(例如連接到邊緣裝置的感應器)。它也管理模組與雲端之間的通訊。例如,機器學習 (ML) 模組可能僅傳送警示到雲端,而不是全部資料(圖 3)。

圖 3. Azure Edge IoT 執行階段控制含有必要功能與服務的 Docker 模組。(資料來源:Microsoft)

IoT Edge 使用相同的 API 作為 IoT Hub,所以閘道可以當作本機 IoT Hub 使用。Microsoft 應用技術開發經理 Brett Stateham 指出:「這樣一來,便可以預先設定模組並且同時存放在雲端和儲存庫中,等待被下載使用。」

預裝與自訂服務

雖然目前提供預裝服務,但是開發人員仍可自由複製預裝服務的內容再作修改。或者,他們可以使用自選的語言,從頭編寫自己的模組,再使用 Docker 將它包起來。「所以,它的延伸性極大。」Stateham 表示。

這些服務包括用於商業智慧、人工智慧和機器學習的分析,以及行動服務等,族繁不及備載。但是任何服務均可存取資料,因為 Azure IoT Hub 支援 Python、Java、PHP 和 .Net 使用開放 API 與 SDK。「最差的情況下,有些標準 REST API 可以消耗這些訊息。」Stateham 說道。

透過安全的遙測傳訊功能,例如 AMQPS、MQTTS 和 HTTPS,邊緣裝置的資料會安全地傳送出去,而且儲存完成之後,即可供任何後端服務讀取使用。IoT Edge 和 IoT Hub 使用相同的安全傳訊通訊協定,所以通訊、佈建、註冊和整體管理更加簡易。

部署在邊緣硬體上

雖然 IoT Edge 可以在各種各樣的裝置上執行,許多既有系統並非原生支援網際網路連線功能。例如,感應器模組可能具有 Modbus 或 CAN 匯流排的有線介面,或是藍牙低功耗 (BLE) 的無線介面,但是沒有 TCP/IP 堆疊且無法把資料直接推送到雲端。

這時候,Intel® NUC 這類的裝置便能派上用場,Stateham 這樣指出(圖 4)。這些裝置可以執行 Windows 10 或 Wind River Linux,而且能部署在邊緣。他說:「它有 USB 連接埠和 Wi-Fi,以及許許多多其他酷炫的設計」,「而且它可以用來與 BLE 模組對話,並藉此與雲端連線」。同樣地,任何其他模組或感應器,無論有線或無線,均可連接到閘道作為聚合點。

圖 4. 使用邊緣運算系統,例如 Intel® NUC 作為聚合點,具備有線或無線連線的感應器模組就能連線到雲端。(資料來源:Microsoft)

把智慧功能推送到邊緣

IoT Edge 作為 Azure IoT 堆疊的延伸功能,開發人員現在可以馬上安全地把可擴充的物聯網分析和其他服務新增到邊緣,以便連接感應器模組並開始對 AI 原則套用物聯網功能。

想要進一步瞭解部署容器化物聯網工作負載,請觀看網路研討會「Creating Field Gateways with Azure IoT Edge and the Intel® NUC」(利用 Azure IoT Edge 和 Intel® NUC 建立現場閘道)。

作者簡介

Patrick Mannion is a independent content developer and consultant who has been analyzing developments in technology for more than 25 years. Formerly Brand Director for EETimes, EDN, Embedded, Planet Analog, and Embedded.com, now part of AspenCore, he has also been developing and executing community-oriented online- and events-based engineer-to-engineer learning platforms. His focus is on connecting engineers to find novel design solutions and focused skills acquisition in the areas of Embedded, IoT, Test and Measurement, RF/Wireless, and Analog & Mixed-Signal Design.

Profile Photo of Patrick Mannion