1. 程式人生 > >使用Harbor+Auzre IOT Edge構建智能邊界(2)

使用Harbor+Auzre IOT Edge構建智能邊界(2)

討論 安裝docker 模擬 port trouble edge 獲取 令行 管理

Azure上創建IOT Hub服務

  1. 登錄到Azure的管理portal,選擇新建,物聯網,創建IOT Hub:

    技術分享圖片

  2. 創建完成後,選擇IOT edge,新建一個IOT Edge的設備:

    技術分享圖片

    技術分享圖片

  3. 創建完成後,點擊設備,獲取設備ID,設備密鑰,連接字符串等等信息:

    技術分享圖片

邊界設備部署

  1. 實際上任何可以安裝和運行docker的設備都可以作為邊界設備來管理,在這個測試案例中,我們選擇在Azure上部署一臺Ubuntu 1604的虛擬機作為邊界設備進行管理,創建過程和harbor服務器一樣,不再贅述。

  2. 登錄到IOT Edge設備,安裝docker環境,安裝pip,然後安裝IOT Edge運行時:

sudo apt-get install python-pip

sudo pip install --upgrade pip

技術分享圖片

  1. 接下來我們將設備註冊並連接到IOT Hub,需要用到之前創建設備時連接字符串:

    sudo iotedgectl setup --connection-string "HostName=myiothubdemo.azure-devices.cn;DeviceId=myiotedge;SharedAccessKey=p45q791E7KAaompZ5+HoyxAD6vfmNJMeR9OgznerWaI=" --nopass

    技術分享圖片

    啟動IOT Edge的運行時,本質上是一個docker的容器,可以使用docker ps來查看狀態:

    sudo iotedgectl start

    技術分享圖片

    技術分享圖片

  2. 登錄到容器註冊表,需要在你的edge虛擬機上安裝證書,然後使用docker login:

    sudo mkdir -p /etc/docker/certs.d/stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/

    sudo cp ca.crt /etc/docker/certs.d/stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/

    docker login stevenrepo.chinanorth.cloudapp.chinacloudapi.cn

    技術分享圖片

  3. 添加註冊表憑據到IOT Edge邊緣設備,註冊表服務器就是harbor服務器:

    sudo iotedgectl login --address stevenrepo.chinanorth.cloudapp.chinacloudapi.cn --username admin ---password PASSWORD

    技術分享圖片

構建並發布你的IOT Edge端應用

我們來開發IOT Edge端應用基本的流程是:

  1. 本地開發構建edge端應用
  2. 使用Dockerfile打包成docker image
  3. 使用Docker tag命令標記你的image
  4. 推送image到你的私有容器註冊表
  5. 通過IOT Hub在你的邊界設備上部署應用

程序開發和使用Dockerfile打包的部分略去,以後有時間再討論,本例通過在開發機上pull down演示的鏡像microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview並將其推送到harbor私有容器註冊表中,然後部署到物聯網邊界設備。

  1. 使用docker pull將你要部署的鏡像拉到本地來:

    docker pull microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview

  2. 使用docker標記這個鏡像:

    docker tag microsoft/azureiotedge-simulated-temperature-sensor:1.0-preview stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/myrepo/azureiotedge-simulated-temperature-sensor:2.0

註意:stevenrepo.chinanorth.cloudapp.chinacloudapi.cn是你的harbor服務器地址;myrepoharbor上你的項目名稱;後面是imagetag

  1. 推送標記過的鏡像到私有容器註冊表:

    docker push stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/myrepo/azureiotedge-simulated-temperature-sensor:2.0

技術分享圖片

  1. 配置你的IOT Hub上的設備部署,將你的應用部署到物聯網邊界設備,在Azure管理界面上,進入IOT Hub的IOT Edge設備管理,點擊"Set Modules":

    技術分享圖片

點擊"添加",添加IOT Edge module,其中name你可以自己起個模塊名字,Image URI是你私有容器註冊表中鏡像地址,例如stevenrepo.chinanorth.cloudapp.chinacloudapi.cn/myrepo/azureiotedge-simulated-temperature-sensor:2.0,點擊保存,下一步,最後submit。

技術分享圖片 技術分享圖片

大約等待1分鐘左右時間,可以看到你的模塊mysensor已經部署成功,並處於"running"狀態,說明你的容器已經被推送到了邊界設備:

技術分享圖片

  1. 登錄到你的邊界設備,檢查當前的Edge agent日誌以及狀態:

docker ps

技術分享圖片

查看edge agent日誌,sudo docker logs edgeAgent,可以看到部署執行的命令:

技術分享圖片

查看我們部署的邊界程序,可以看到他在持續不斷的產生模擬數據,正常工作:

技術分享圖片

  1. 通過之前blog介紹的可以使用visual studio code免費的IOT Hub插件進行監控和管理,設置連接字符串後,我們可以看到當前部署的module,以及module發送到雲端的消息:

    技術分享圖片

問題故障排查

Azure IOT Edge在中國處於preview階段,難免會又一些問題,出現問題時除了仔細檢查配置,提交支持case之外,也可以自己做一些troubleshooting工作,因為edge端本身就是一個docker運行環境,很多相關的命令都可以來使用:

  1. 日誌查看:無論是你的容器還時edge的運行時,都可以通過docker logs來查看問題,例如:

    sudo docker ps

    sudo docker logs -f edgeAgent

    sudo docker logs -f YOURCONTAINER

  2. 關於界面部署出現"Agent configuration format is invalid"錯誤

    在有些情況下,在界面部署會出現長期pending的情況,檢查edgeAgent的日誌會發現:

    技術分享圖片

    解決辦法:使用Azure CLI進行部署:

#設置環境為Azure 中國

az cloud set -n AzureChinaCloud

#登錄

az login

azure cli必須是2.0.24以上版本才可以,az –version可以獲得當前版本

添加IOT的擴展

az extension add --name azure-cli-iot-ext

下載例子配置文件: https://github.com/kingliantop/azurelabs/blob/master/IOTEdge/config.json

命令行執行部署即可:

az iot hub apply-configuration --device-id myedgedevice --hub-name myiotdemo --content ./config.json

使用Harbor+Auzre IOT Edge構建智能邊界(2)