共用方式為


設定 Azure 球IoT Edge的 Azure IoT Edge

Azure IoT Edge在下層裝置之間提供篩選和資料處理層,例如 Azure 球體和Azure IoT 中樞。 如果您的 Azure 球體裝置產生相當大量的資料或需要後續處理的資料,請考慮使用 Azure IoT Edge。

本主題說明使用 Azure 球體設定 Azure IoT Edge裝置的步驟。 Azure 球體同時支援 Azure IoT Edge 1.1 和 1.2 版本;指示中指出顯著的差異。 主要差異如下:

  • 套件名稱已變更為 iotedgeaziot-edge
  • 預設設定檔案有新的名稱和位置。 在 Azure IoT Edge 1.1 中,設定檔案為/etc/iotedge/config.yaml。 在 Azure IoT Edge 1.2 中,設定檔案為/etc/aziot/config.toml
  • Azure IoT Edge 1.2 需要完整的功能變數名稱 (FQDN) 透過網路上的 DNS 伺服器存取。

完成本主題中的工作之後,Azure 球體裝置就會設定為透過做為透明閘道的 Azure IoT Edge裝置傳送資料至Azure IoT 中樞。 您可以遵循Azure IoT Edge模組指南,在 Azure IoT Edge裝置上使用模組來新增其他資料篩選和處理。

開始之前

本主題中的步驟假設:

  • 您的 Azure 球體裝置是透過 USB 連接到您的電腦。
  • 您有 Azure 訂閱。
  • 您已建立Azure IoT 中樞實例,並手動布建裝置。 請注意,您稍後必須在步驟 6) (程式中,針對該IoT 中樞使用目錄 CA 憑證。
  • 您已建立資源群組,與Azure IoT 中樞和IoT Edge服務相關的所有資源都必須屬於此資源群組。

重要

雖然您可以免費建立 Azure 訂閱,但註冊程式需要您輸入信用卡號碼。 Azure 提供數種等級的訂閱服務。 根據預設,當您建立Azure IoT 中樞實例時,系統會選取標準層級,以收取每月服務費用。 若要避免每月收費,請選取 [免費] 層級。 免費層級包含搭配Azure IoT 中樞實例使用裝置所需的服務,包括Device Twin。 如果您沒有 Azure 訂閱,請在開始之前 建立免費帳戶

概述

設定 Azure IoT Edge裝置並將它設定為搭配 Azure 球體裝置使用需要多步驟的程式,而且您應該規劃大約 8 小時的步驟,特別是如果您不熟悉 Azure IoT Edge。 如果這是您第一次使用 Azure IoT Edge,請依照每一節的快速入門指示,設定在 Linux 虛擬機器上執行的IoT Edge裝置。

每個 Azure 球體目錄和 Azure IoT Edge裝置只能完成一次這些步驟;不過,每個 Azure 球體裝置都必須在 Azure IoT 中樞 中手動設定,且 Azure IoT Edge 裝置必須設為 Azure 球體裝置的父項。

設定步驟可以分成三個邏輯群組:

  • 建立及設定IoT Edge裝置為透明閘道

    • 步驟 1. 建立 Azure IoT Edge裝置。
    • 步驟 2. 將 Azure IoT Edge閘道裝置設定為伺服器。
    • 步驟 3. 開啟 Azure IoT Edge閘道裝置埠以進行通訊。
    • 步驟 4. 更新 config.toml (Azure IoT Edge版本 1.2) 或 config.yaml (Azure IoT Edge版本 1.1) 中的閘道主機名稱。
  • 在 Azure IoT 中樞 中設定 Azure 球體裝置

    • 步驟 5. 將 Azure IoT Edge裝置設定為 Azure 球體裝置的父系。
  • 在 Azure 球體裝置與IoT Edge裝置之間建立信任的連線

    • 步驟 6. 將 Azure 球體裝置的目錄 CA 憑證提供給 Azure IoT Edge裝置。
    • 步驟 7。 將 Azure IoT Edge裝置的根 CA 憑證提供給 Azure 球體裝置。

步驟 1. 建立 Azure IoT Edge裝置

如果您尚未設定 Azure IoT Edge裝置,您必須先向Azure IoT 中樞註冊。

您可以使用裝置布建服務 (DPS) 來布建 Azure IoT Edge裝置。 不過,您無法使用 DPS 布建 Azure 球體裝置。 不支援使用 Azure IoT 中樞 DPS 自動布建 Azure IoT Edge裝置下方的裝置。

您可以依照 IoT Edge 快速入門] 中的步驟來設定在Linux VMWindows 裝置上執行的 Azure IoT Edge裝置,並向Azure IoT 中樞註冊。

使用快速入門中的步驟來:

  • 將 Azure IoT Edge裝置註冊到您的Azure IoT 中樞實例。 請勿在此步驟中建立新的 IoT 中樞,只要將您的 Azure IoT Edge裝置註冊到您已建立的 IoT 中樞即可。
  • 在 Azure IoT Edge裝置上安裝並啟動 Azure IoT Edge執行時間。

注意

在 IoT Edge 快速入門] 中,先停止部署模組。

步驟 2. 將IoT Edge閘道裝置設定為伺服器

依照指示將Azure IoT Edge裝置設定為透明閘道, (Azure IoT Edge 1.2) Azure IoT Edge 1.1,但到達「在閘道裝置上開啟埠」一節時停止。雖然這些指示指示您將憑證檔案複製到IoT Edge裝置,但請勿在本程式步驟 8 之前將檔案複製到 VM。

在您完成將裝置閘道設定為伺服器的步驟中,您已經擁有:

  • 設定 Azure IoT Edge裝置憑證。
  • 已部署 Azure IoT Edge集線器模組。
  • 設定透過 Azure IoT Edge傳送郵件。

此外,在這些步驟中,您也會建立下列憑證:

  • 根 CA 憑證: certs/azure-iot-test-only.root.ca.cert.pem
  • 用來將IoT Edge裝置註冊到IoT 中樞) 的裝置 CA 憑證和私密金鑰 (:
    • certs/iot-edge-device-identity-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-identity-<cert-name>.key.pem
  • IoT Edge CA 憑證和私密金鑰 (複製到IoT Edge裝置,並在其設定檔案中參照) :
    • certs/iot-edge-device-ca-<cert-name>-full-chain.cert.pem
    • private/iot-edge-device-ca-<cert-name>.key.pem

如果您遵循快速入門,如果您要產生憑證的電腦是 Linux 型電腦,請使用 Linux 指示來設定示範憑證。 如果您要產生憑證的電腦是 Windows 電腦,請使用 Windows 指示來產生示範憑證。 請參閱將 根憑證複製到 Linux VM 或本機 Windows 電腦一節。

Azure IoT Edge根 CA 憑證將在步驟 7中修改,但您需要步驟 8中的原始憑證。 保留原始憑證的複本,以便重複使用。

注意

更新 config.toml (Azure IoT Edge 1.2) 或 config.yaml (Azure IoT Edge 1.1) 檔案的憑證區段時, 請確認 certificates: config.toml (Azure IoT Edge 1.2) 或 config.yaml (Azure IoT Edge 1.1) 中沒有前述空格,且每個巢狀憑證都由兩個空格縮排。

更新檔案後,請確認edgehub模組在 Azure IoT Edge裝置上執行:

sudo iotedge list

如需詳細資訊,請參閱如何將IoT Edge裝置當做閘道使用 (Azure IoT Edge 1.2) Azure IoT Edge 1.1

如果您使用的是測試憑證,請在產生下層裝置憑證之前停止,如在 Azure IoT Edge 1.2) 或 Azure IoT Edge 1.1 (建立下層裝置憑證中所述。

步驟 3. 開啟 Azure IoT Edge閘道裝置埠以進行通訊

閘道裝置必須能夠接收來自其下游裝置的訊息。 若要讓閘道案例正常運作,至少必須開啟其中一個 IoT 中樞支援的通訊協定,以供來自下方裝置的輸入流量使用。

Azure 球體使用通訊協定 MQTT。 此通訊協定使用埠 8883。

如需詳細資訊,請參閱在 Azure 裝置 (Azure IoT Edge 1.2) Azure IoT Edge 1.1上開啟埠。

在快速入門中設定 Edge 裝置之後,請依照下列步驟在 Windows VM 上開啟埠 8883:

  1. 如有需要,請使用Azure 帳戶登入您的Azure 入口網站
  2. 流覽至您在步驟 1:建立 Azure IoT Edge裝置一節中建立的虛擬機器。
  3. 在左側的 [ 設定] 區段中,選取 [ 網路],然後選取 [新增輸入連接埠規則]
  4. 在 [ 新增輸入連接埠規則 ] 刀鋒的 [ 目的地埠範圍] 底下,將值變更為 8883
  5. 在 [ 通訊協定]底下,選取 [TCP]
  6. 在 [ 名稱]底下,將值變更為 MQTT
  7. 將所有其他設定保留為預設值,然後選取 [ 新增]

在快速入門中設定 Azure IoT Edge裝置之後,請依照下列步驟在 Linux VM 上開啟埠 8883:

  1. 執行下列命令以檢查 MQTT 埠是否已開啟:

    sudo netstat -lptu

  2. 如有需要,請使用下列命令來開啟埠:

    sudo ufw allow 8883

這會定義輸入安全性規則,允許 MQTT 通訊協定與 Azure IoT Edge閘道通訊。

步驟 4. 更新閘道主機名稱

此步驟會根據您使用的 Azure IoT Edge版本使用不同的程式:Azure IoT Edge 1.2Azure IoT Edge 1.1

Azure IoT Edge 1.2:在 config.toml 中更新閘道主機名稱

Azure IoT Edge執行時間支援小於 64 個字元的主機名稱。 實體電腦通常沒有很長的主機名稱,但如果您使用虛擬機器做為 Azure IoT Edge裝置,就像快速入門中的範例一樣,您必須手動設定主機名稱。

若要疑難排解不正確主機名稱,請參閱常見的錯誤解決。

在快速入門中設定 MQTT 埠之後,請依照下列步驟設定 Azure IoT Edge裝置主機名稱稱:

  1. 若要尋找IoT Edge閘道的完整功能變數名稱 (FQDN) ,請在 Azure 入口網站中流覽至IoT Edge裝置 (Linux VM) ,然後從概觀頁面複製DNS 名稱的值。

  2. 如有需要,請登入 Azure IoT Edge裝置。

  3. 在文字編輯器中開啟 config.toml 檔案。

    /etc/aziot/config.toml

  4. 將 FQDN 貼到 config.toml的主機名稱區段。 請確定名稱都是小寫。

    hostname: "<iotedge_machinename>.<mydomain>"
    

    注意

    根據 Azure IoT Edge v1.2 及更新版本的設計,主機名必須是 FQDN 名稱, (無法再使用 IP 位址,如 v1.1) ,因此在同一個網路上具有適當 A 記錄的 DNS 伺服器是必要的。

  5. iotedge重新開機 daemon。

    sudo systemctl restart iotedge

  6. 如果您在狀態中看到 (首碼為 「[ERROR]」) 的彩色文字錯誤,請檢查 daemon 記錄檔以取得詳細的錯誤資訊。

    sudo journalctl -u iotedge --no-pager --no-full

  7. 若要避免警告,請在 Azure IoT Edge裝置上設定模組的 DNS 設定,以在/etc/docker/daemon.json包含組態檔,例如:

    {
         "dns": ["<IP address of your DNS server>"]
    }
    

Azure IoT Edge 1.1:在 config.yaml 中更新閘道主機名稱

Azure IoT Edge執行時間支援小於 64 個字元的主機名稱。 實體電腦通常沒有很長的主機名稱,但如果您使用虛擬機器做為 Azure IoT Edge裝置,就像快速入門中的範例一樣,您必須手動設定主機名稱。

若要疑難排解不正確主機名稱,請參閱常見的錯誤解決。

在快速入門中設定 MQTT 埠之後,請依照下列步驟設定 Azure IoT Edge裝置主機名稱稱:

  1. 在Azure 入口網站中,流覽至您的虛擬機器。 從 [概觀] 區段複製電腦) 的DNS 名稱 (FQDN 值。

  2. 如有需要,請登入 Azure IoT Edge裝置。

  3. 在文字編輯器中開啟 config.yaml 檔案。

    /etc/iotedge/config.yaml

  4. 將 FQDN 貼到 config.yaml的主機名稱區段。 請確定名稱都是小寫。

    `hostname: "<machinename>.<region>.cloudapp.azure.com"`
    

    注意

    如果您的 DNS 解析程式位於網路上,您可能必須針對主機名稱使用空的機器名稱 (IP 位址或實際主機名稱) ,因為 Azure 球體不支援 netbios。

  5. iotedge重新開機 daemon。

    sudo systemctl restart iotedge

  6. 如果您在狀態中看到 (首碼為 「[ERROR]」) 的彩色文字錯誤,請檢查 daemon 記錄檔以取得詳細的錯誤資訊。

    sudo journalctl -u iotedge --no-pager --no-full

  7. 若要避免警告,請在 Azure IoT Edge裝置上設定模組的 DNS 設定,以在/etc/docker/daemon.json包含組態檔,例如:

    {
        "dns": ["<IP address of your DNS server>"]
    }
    

步驟 5. 將 Azure IoT Edge裝置設定為 Azure 球體裝置的父系

請依照下列步驟,將 Azure IoT Edge裝置設定為 Azure 球體裝置的父項:

  1. 流覽至上述手動布建的 Azure 球體裝置。
  2. 取 [裝置識別碼]
  3. 選取 [ 無父裝置]底下的齒輪圖示。
  4. 選取您要設為父項的 Azure IoT Edge裝置。
  5. 選取 [確定],然後選取 [ 儲存]

Azure IoT Edge裝置現在已成為 Azure 球體裝置的上層。

步驟 6. 將 Azure 球體裝置的目錄 CA 憑證提供給IoT Edge裝置

若要驗證 Azure 球體裝置憑證,Azure IoT Edge裝置必須有自己的目錄 CA 複本。

  1. 如果您尚未下載目錄 CA 憑證,請下載該憑證。 注意:您應該已在設定Azure IoT 中樞中完成此工作。

    • 從命令提示字元登入您的 Azure 登入:

      az login
      
    • 下載 Azure 球體目錄的 CA 憑證。 此命令會將憑證下載到目前工作目錄中名為 CAcertificate.cer 的檔案。 請確定您將檔案下載到您擁有寫入權限的目錄,否則下載作業將會失敗。 輸出檔案必須有 .cer 副檔名。

      az sphere ca-certificate download --resource-group MyResourceGroup --catalog MyCatalog --output-file CACertificate.cer
      
  2. 將型錄 CA 憑證轉換為 PEM 格式。 在 Windows 電腦上轉換格式的範例指示如下:

    • 找出您電腦上憑證的路徑,然後按兩下憑證加以開啟。
    • 開啟 [ 詳細資料] 索 引標籤,然後選 取 [複製到檔案]
    • 在 [ 憑證匯出 ] 精靈中,選取 [ 下一步]
    • 選取以 Base-64 編碼的 X.509 (CER) 格式,然後選取 [下一步]
    • 輸入要匯出之憑證的檔案名,然後選取 [ 下一步]
    • 選取 [完成] 以完成精靈。
    • 將下載的憑證檔案重新命名為副檔名為 .pem。
  3. 將型錄憑證新增至 Azure IoT Edge根憑證。 請記住,您已在步驟 2 建立 Azure IoT Edge憑證。

    • 如有需要,請登入 Azure IoT Edge裝置。
    • 找出IoT Edge裝置的根 CA 憑證路徑,然後在文字編輯器中開啟它。 如果您遵循快速入門,然後使用 Azure IoT Edge git 存放庫中提供的腳本來建立示範憑證,則根 CA 憑證名稱為azure-iot-test-only.root.ca.cert.pem
    • 在文字編輯器中開啟 PEM 格式的 Azure 球型目錄 CA 憑證 () 。 複製內容,然後貼到IoT Edge根 CA 憑證的結尾。
    • 將對 Azure 所做的變更儲存IoT Edge根 CA 憑證,然後關閉檔案。
    • 重新開機 Azure IoT Edge裝置。 對於 Linux Azure IoT Edge裝置,請執行: sudo systemctl restart iotedge
    • 確認模組正在您的 Azure IoT Edge裝置上執行。 對於 Linux Azure IoT Edge裝置,請執行: sudo iotedge list

步驟 7。 將 Azure IoT Edge裝置的根 CA 憑證提供給 Azure 球體裝置

若要驗證 Azure IoT Edge裝置憑證,Azure 球體裝置 (下層裝置) 必須擁有您在步驟 2中設定的 Azure IoT Edge裝置根 CA 憑證的專屬複本。

如需詳細資訊,請參閱將下層裝置連線至 Azure IoT Edge閘道

  1. 找出原始的 Azure IoT Edge裝置根憑證。

    • 請記住,原始的 Azure IoT Edge裝置根憑證是您在步驟 2 中建立的憑證。
    • 如果您遵循快速入門,然後使用 IoT Edge git 存放庫中提供的腳本來建立示範憑證,則根 CA 憑證稱為azure-iot-test-only.root.ca.cert.pem
  2. 將 Azure IoT Edge根憑證新增至應用程式套件,將它複製到 Azure 球體裝置。

步驟 8. 將 IoT 根憑證複製到遠端電腦

請依照下列步驟,將 Azure IoT Edge根憑證複製到遠端 Linux VM 或本機 Windows 電腦:

  • 您可以安裝 WinSCP 工具 來傳輸檔案。 此工具提供 GUI,因此比命令列方法更容易使用。

  • 若要使用命令列,請使用 SCP (安全複製) 命令列工具。

  • 若要將檔案從本機 Windows 電腦傳輸到遠端 Linux VM,請在 Windows PowerShell 中執行下列命令:

    powershell -Command scp -r <path-to-file-name> <userName@remote-ip>:<path-to-destination-directory>
    

    範例語法:

    scp C:\Documents\cert.pem AzureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/

  • 若要將檔案從遠端 Linux VM 傳輸到本機 Windows 電腦,請在 Windows PowerShell 中執行下列命令:

    powershell -Command scp -r <userName@remote-ip>:<path-to-file-name> <path-to-destination-dir>
    

    範例語法:

    scp azureUser@edgevmname-west.westus22.cloudapp.azure.com:/home/azureUser/test/cert.pem C:\Documents\

故障 排除

如果您在環境中執行 Azure IoT Edge 時遇到問題,請使用下列文章進行疑難排解與診斷:

後續步驟

  • 完成本主題中的步驟之後,您可以依照使用 Azure IoT Edge連線的指示執行Azure IoT 範例