將Azure IoT Edge 設(shè)備配置為通過(guò)代理服務(wù)器進(jìn)行通信

來(lái)源: Microsoft
作者:Microsoft
時(shí)間:2021-03-01
17818
IoT Edge設(shè)備將發(fā)送HTTPS請(qǐng)求以與IoT中心進(jìn)行通信。如果設(shè)備已連接到使用代理服務(wù)器的網(wǎng)絡(luò),則需要將IoT Edge運(yùn)行時(shí)配置為通過(guò)該服務(wù)器進(jìn)行通信。如果代理服務(wù)器發(fā)出不通過(guò)IoT Edge中心路由的HTTP或HTTPS請(qǐng)求,則可能還會(huì)影響各個(gè)IoT Edge模塊。

IoT Edge設(shè)備將發(fā)送HTTPS請(qǐng)求以與IoT中心進(jìn)行通信。如果設(shè)備已連接到使用代理服務(wù)器的網(wǎng)絡(luò),則需要將IoT Edge運(yùn)行時(shí)配置為通過(guò)該服務(wù)器進(jìn)行通信。如果代理服務(wù)器發(fā)出不通過(guò)IoT Edge中心路由的HTTP或HTTPS請(qǐng)求,則可能還會(huì)影響各個(gè)IoT Edge模塊。

本文將引導(dǎo)你完成以下四個(gè)步驟,來(lái)配置并管理代理服務(wù)器后面的IoT Edge設(shè)備:

1.在設(shè)備上安裝IoT Edge運(yùn)行時(shí)

IoT Edge安裝腳本從Internet提取包和文件,因此,設(shè)備需要通過(guò)代理服務(wù)器通信,以發(fā)出這些請(qǐng)求。對(duì)于Windows設(shè)備,安裝腳本還會(huì)提供脫機(jī)安裝選項(xiàng)。

此步驟是首次設(shè)置IoT Edge設(shè)備時(shí)對(duì)其進(jìn)行配置的一次性過(guò)程。更新IoT Edge運(yùn)行時(shí)時(shí),也需要使用相同的連接。

2.在設(shè)備上配置Docker守護(hù)程序和IoT Edge守護(hù)程序

IoT Edge使用設(shè)備上的兩個(gè)守護(hù)程序,這些守護(hù)程序需要通過(guò)代理服務(wù)器發(fā)出Web請(qǐng)求。IoT Edge守護(hù)程序負(fù)責(zé)與IoT中心通信。Moby守護(hù)程序負(fù)責(zé)容器管理,因此將與容器注冊(cè)表通信。

此步驟是首次設(shè)置IoT Edge設(shè)備時(shí)對(duì)其進(jìn)行配置的一次性過(guò)程。

3.在設(shè)備上的config.yaml文件中配置IoT Edge代理屬性

IoT Edge守護(hù)程序最初會(huì)啟動(dòng)edgeAgent模塊。然后,edgeAgent模塊從IoT中心檢索部署清單,并啟動(dòng)其他所有模塊。要使IoT Edge代理能夠與IoT中心建立初始連接,請(qǐng)?jiān)谠O(shè)備本身上手動(dòng)配置edgeAgent模塊環(huán)境變量。建立初始連接后,可以遠(yuǎn)程配置edgeAgent模塊。

此步驟是首次設(shè)置IoT Edge設(shè)備時(shí)對(duì)其進(jìn)行配置的一次性過(guò)程。

4.針對(duì)將來(lái)的所有模塊部署設(shè)置環(huán)境變量,使任何模塊都可以通過(guò)代理進(jìn)行通信

設(shè)置IoT Edge設(shè)備并通過(guò)代理服務(wù)器將其連接到IoT中心后,需要在將來(lái)的所有模塊部署中保持該連接。

此步驟是遠(yuǎn)程執(zhí)行的持續(xù)過(guò)程,目的是在每次更換新模塊或更新部署后,設(shè)備仍可通過(guò)代理服務(wù)器通信。

知道你的代理URL

在開始執(zhí)行本文中的任何步驟之前,需要知道你的代理URL。

代理URL采用以下格式:protocol://proxy_host:proxy_port。

·protocol是HTTP或HTTPS。Docker守護(hù)程序可以根據(jù)容器注冊(cè)表設(shè)置使用任一協(xié)議,但I(xiàn)oT Edge守護(hù)程序和運(yùn)行時(shí)容器應(yīng)始終使用HTTP連接到代理。

·proxy_host是代理服務(wù)器的地址。如果代理服務(wù)器要求進(jìn)行身份驗(yàn)證,則可采用user:password proxy_host格式將憑據(jù)作為proxy_host的一部分提供。

·proxy_port是代理用來(lái)響應(yīng)網(wǎng)絡(luò)流量的網(wǎng)絡(luò)端口。

通過(guò)代理安裝運(yùn)行時(shí)

無(wú)論IoT Edge設(shè)備是在Windows還是Linux上運(yùn)行,都需要通過(guò)代理服務(wù)器訪問(wèn)安裝包。請(qǐng)據(jù)所用的操作系統(tǒng),遵循相應(yīng)的步驟通過(guò)代理服務(wù)器安裝IoT Edge運(yùn)行時(shí)。

Linux設(shè)備

若要在Linux設(shè)備上安裝IoT Edge運(yùn)行時(shí),請(qǐng)將包管理器配置為通過(guò)代理服務(wù)器訪問(wèn)安裝包。例如,設(shè)置apt-get以使用http-proxy。配置包管理器后,請(qǐng)按照安裝Azure IoT Edge運(yùn)行時(shí)中的說(shuō)明照常進(jìn)行操作。

Windows設(shè)備

若要在Windows設(shè)備上安裝IoT Edge運(yùn)行時(shí),需要兩次通過(guò)代理服務(wù)器執(zhí)行操作。第一個(gè)連接用于下載安裝程序腳本文件,第二個(gè)連接用于在安裝過(guò)程中下載必需的組件??梢栽赪indows設(shè)置中配置代理信息,或直接在PowerShell命令中包含代理信息。

以下步驟演示使用-proxy參數(shù)安裝Windows的示例:

1.Invoke-WebRequest命令需要獲得代理信息才能訪問(wèn)安裝程序腳本。然后,Deploy-IoTEdge命令需要獲得代理信息才能下載安裝文件。

PowerShell

.{Invoke-WebRequest-proxy<proxy URL>-useb aka.ms/iotedge-win}|Invoke-Expression;Deploy-IoTEdge-proxy<proxy URL>

2.Initialize-IoTEdge命令不需經(jīng)過(guò)代理服務(wù)器,因此第二步僅需Invoke-WebRequest的代理信息。

PowerShell

.{Invoke-WebRequest-proxy<proxy URL>-useb aka.ms/iotedge-win}|Invoke-Expression;Initialize-IoTEdge

如果擁有不能包含在URL中的復(fù)雜代理服務(wù)器憑據(jù),請(qǐng)使用-InvokeWebRequestParameters中的-ProxyCredential參數(shù)。例如,

PowerShell

$proxyCredential=(Get-Credential).GetNetworkCredential()

.{Invoke-WebRequest-proxy<proxy URL>-ProxyCredential$proxyCredential-useb aka.ms/iotedge-win}|Invoke-Expression;`

Deploy-IoTEdge-InvokeWebRequestParameters {'-Proxy'='<proxy URL>';'-ProxyCredential'=$proxyCredential}

有關(guān)代理參數(shù)的詳細(xì)信息,請(qǐng)參閱Invoke-WebRequest。有關(guān)Windows安裝參數(shù)的詳細(xì)信息,請(qǐng)參閱Windows上IoT Edge的PowerShell腳本。

配置守護(hù)程序

IoT Edge依賴于IoT Edge設(shè)備上運(yùn)行的兩個(gè)守護(hù)程序。Moby守護(hù)程序發(fā)出Web請(qǐng)求,以從容器注冊(cè)表中拉取容器映像。IoT Edge守護(hù)程序發(fā)出Web請(qǐng)求,以與IoT中心進(jìn)行通信。

Moby和IoT Edge守護(hù)程序都需要配置為使用代理服務(wù)器持續(xù)獲得設(shè)備功能。需在最初設(shè)置設(shè)備期間,在IoT Edge設(shè)備上執(zhí)行此步驟。

Moby守護(hù)程序

由于Moby是基于Docker的,因此若要使用環(huán)境變量配置Moby守護(hù)程序,請(qǐng)參閱Docker文檔。大多數(shù)容器注冊(cè)表(包括DockerHub和Azure容器注冊(cè)表)支持HTTPS請(qǐng)求,因此,你應(yīng)當(dāng)設(shè)置的變量為HTTPS_PROXY。如果要從不支持傳輸層安全性(TLS)的注冊(cè)表中拉取映像,則應(yīng)當(dāng)設(shè)置HTTP_PROXY。

選擇適用于IoT Edge設(shè)備操作系統(tǒng)的文章:

·在Linux上配置Docker守護(hù)程序Linux設(shè)備上的Moby守護(hù)程序保留“Docker”這一名稱。

·在Windows上配置Docker守護(hù)程序Windows設(shè)備上的Moby守護(hù)程序名為iotedge-moby。之所以讓這些名稱保持不同,是因?yàn)榭赡軙?huì)在Windows設(shè)備上并行運(yùn)行Docker Desktop和Moby。

IoT Edge守護(hù)程序

IoT Edge守護(hù)程序以類似的方式配置為Moby守護(hù)程序。使用以下步驟根據(jù)所使用的操作系統(tǒng)為服務(wù)設(shè)置環(huán)境變量。

IoT Edge守護(hù)程序始終使用HTTPS將請(qǐng)求發(fā)送到IoT中心。

Linux

在終端中打開編輯器以配置IoT Edge守護(hù)程序。

Bash

sudo systemctl edit iotedge

輸入以下文本,將<proxy URL>替換為代理服務(wù)器地址和端口。然后,保存并退出。

ini

[Service]

Environment="https_proxy=<proxy URL>"

刷新服務(wù)管理器以選取IoT Edge的新配置。

Bash

sudo systemctl daemon-reload

重新啟動(dòng)IoT Edge以使更改生效。

Bash

sudo systemctl restart iotedge

確認(rèn)已創(chuàng)建環(huán)境變量并加載了新配置。

Bash

systemctl show--property=Environment iotedge

Windows

以管理員身份打開PowerShell窗口,運(yùn)行以下命令來(lái)使用新的環(huán)境變量編輯注冊(cè)表。將<proxy url>替換為代理服務(wù)器地址和端口。

PowerShell

reg add HKLMSYSTEMCurrentControlSetServicesiotedge/v Environment/t REG_MULTI_SZ/d https_proxy=<proxy URL>

重新啟動(dòng)IoT Edge以使更改生效。

PowerShell

Restart-Service iotedge

配置IoT Edge代理

IoT Edge代理是在任意IoT Edge設(shè)備上啟動(dòng)的第一個(gè)模塊。該代理基于IoT Edge config.yaml文件中的信息首次啟動(dòng),IoT Edge代理隨后連接到IoT中心以檢索部署清單,其中聲明了應(yīng)在設(shè)備上部署的其他模塊。

需在最初設(shè)置設(shè)備期間,在IoT Edge設(shè)備上執(zhí)行此步驟一次。

1.打開IoT Edge設(shè)備上的config.yaml文件。在Linux系統(tǒng)上,此文件位于/etc/iotedge/config.yaml。在Windows系統(tǒng)上,此文件位于C:ProgramDataiotedgeconfig.yaml。配置文件是受保護(hù)的,因此,你需要管理權(quán)限才能對(duì)其進(jìn)行訪問(wèn)。在Linux系統(tǒng)上,請(qǐng)使用sudo命令,然后在偏好的文本編輯器中打開該文件。在Windows上,請(qǐng)以管理員身份打開記事本之類的文本編輯器,然后打開該文件。

2.在config.yaml文件中,找到“Edge代理模塊規(guī)范”部分。IoT Edge代理定義包括可以在其中添加環(huán)境變量的env參數(shù)。

3.刪除作為env參數(shù)占位符的大括號(hào),并在新行上添加新變量。請(qǐng)記住,YAML中的縮進(jìn)為兩個(gè)空格。

YAML

https_proxy:"<proxy URL>"

4.默認(rèn)情況下,IoT Edge運(yùn)行時(shí)使用AMQP與IoT中心通信。某些代理服務(wù)器會(huì)阻止AMQP端口。如果是這種情況,則還需要將edgeAgent配置為使用基于WebSocket的AMQP。添加第二個(gè)環(huán)境變量。

YAML

UpstreamProtocol:"AmqpWs"

edgeagent-edited.png

5.將更改保存到config.yaml并關(guān)閉編輯器。重新啟動(dòng)IoT Edge以使更改生效。

·Linux:

Bash

sudo systemctl restart iotedge

·Windows:

PowerShell

Restart-Service iotedge

配置部署清單

將IoT Edge設(shè)備配置為與代理服務(wù)器配合使用后,還需要在將來(lái)的部署清單中聲明HTTPS_PROXY環(huán)境變量。可以使用Azure門戶向?qū)Щ蛘咄ㄟ^(guò)編輯部署清單JSON文件,來(lái)編輯部署清單。

始終配置兩個(gè)運(yùn)行時(shí)模塊(edgeAgent和edgeHub),以通過(guò)代理服務(wù)器進(jìn)行通信,從而維持與IoT中心的連接。如果從edgeAgent模塊中刪除了代理信息,則重新建立連接的唯一方法是根據(jù)前一部分中所述,編輯設(shè)備上的config.yaml文件。

除了edgeAgent和edgeHub模塊外,其他模塊也可能需要代理配置。需要訪問(wèn)IoT中心以外的Azure資源(例如blob存儲(chǔ))的模塊必須已在部署清單文件中指定HTTPS_PROXY變量。

以下過(guò)程在IoT Edge設(shè)備的整個(gè)生命周期中適用。

Azure門戶

使用“設(shè)置模塊”向?qū)镮oT Edge設(shè)備創(chuàng)建部署時(shí),每個(gè)模塊都有一個(gè)可在其中配置代理服務(wù)器連接的“環(huán)境變量”部分。

若要配置IoT Edge代理和IoT Edge中心模塊,請(qǐng)?jiān)谙驅(qū)У牡谝徊街羞x擇“運(yùn)行時(shí)設(shè)置”。

configure-runtime.png

將https_proxy環(huán)境變量添加到IoT Edge代理和IoT Edge中心模塊定義。如果在IoT Edge設(shè)備的config.yaml文件中包括UpstreamProtocol環(huán)境變量,也請(qǐng)將其添加到IoT Edge代理模塊定義。

edgehub-environmentvar.png

添加到部署清單的所有其他模塊都遵循相同的模式。

JSON部署清單文件

如果使用Visual Studio Code中的模板或通過(guò)手動(dòng)創(chuàng)建JSON文件來(lái)為IoT Edge設(shè)備創(chuàng)建部署,則可以將環(huán)境變量直接添加到每個(gè)模塊定義。

使用以下JSON格式:

JSON

"env":{

"https_proxy":{

"value":"<proxy URL>"

}

}

如果包括環(huán)境變量,模塊定義應(yīng)類似以下edgeHub示例:

JSON

"edgeHub":{

"type":"docker",

"settings":{

"image":"mcr.microsoft.com/azureiotedge-hub:1.1",

"createOptions":""

},

"env":{

"https_proxy":{

"value":"http://proxy.example.com:3128"

}

},

"status":"running",

"restartPolicy":"always"

}

如果在IoT Edge設(shè)備的confige.yaml文件中包括UpstreamProtocol環(huán)境變量,也請(qǐng)將其添加到IoT Edge代理模塊定義。

JSON

"env":{

"https_proxy":{

"value":"<proxy URL>"

},

"UpstreamProtocol":{

"value":"AmqpWs"

}

}

使用流量檢查代理

如果你嘗試使用的代理對(duì)受TLS保護(hù)的連接執(zhí)行流量檢查,請(qǐng)務(wù)必注意,使用X.509證書的身份驗(yàn)證無(wú)效。IoT Edge建立了一個(gè)TLS通道,該通道使用提供的證書和密鑰進(jìn)行了端到端加密。如果斷開該通道以進(jìn)行流量檢查,則代理無(wú)法使用正確的憑據(jù)重新建立該通道,并且IoT中心和IoT中心設(shè)備預(yù)配服務(wù)會(huì)返回“Unauthorized”錯(cuò)誤。

若要使用執(zhí)行流量檢查的代理,必須使用共享訪問(wèn)簽名身份驗(yàn)證,或者將IoT中心和IoT中心設(shè)備預(yù)配服務(wù)添加到允許列表以避免檢查。

立即登錄,閱讀全文
版權(quán)說(shuō)明:
本文內(nèi)容來(lái)自于Microsoft,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
相關(guān)文章
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
Azure Arc為企業(yè)構(gòu)建安全的云基礎(chǔ)
隨著人工智能技術(shù)持續(xù)重塑企業(yè)運(yùn)營(yíng)方式,企業(yè)需要能夠處理海量數(shù)據(jù)的系統(tǒng),以支持實(shí)時(shí)洞察,同時(shí)幫助他們應(yīng)對(duì)跨IT和OT環(huán)境(包括云端、邊緣和本地)中運(yùn)營(yíng)、應(yīng)用、數(shù)據(jù)和基礎(chǔ)設(shè)施的協(xié)作難題。
Azure
微軟云
云服務(wù)
2024-12-172024-12-17
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
釋放.NET 9和Azure的AI技術(shù)與云計(jì)算潛力:更快、更智能、面向未來(lái)
.NET 9現(xiàn)已正式發(fā)布,它為.NET平臺(tái)的發(fā)展掀開了嶄新的一頁(yè),突破了性能、云原生開發(fā)和AI技術(shù)集成的邊界。
Azure
微軟云
云服務(wù)
2024-12-162024-12-16
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
Azure網(wǎng)絡(luò)管理現(xiàn)已具備智能Microsoft Copilot副駕駛能力
智能Microsoft Copilot副駕駛for Azure網(wǎng)絡(luò)服務(wù)現(xiàn)已推出公共預(yù)覽版。
Azure
微軟云
云服務(wù)
2024-12-102024-12-10
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
Microsoft Fabric功能更新,借助AI驅(qū)動(dòng)的數(shù)據(jù)平臺(tái)加速應(yīng)用創(chuàng)新
一年前,我們正式推出了一款端到端數(shù)據(jù)平臺(tái),旨在幫助組織推動(dòng)人工智能轉(zhuǎn)型,并重新定義數(shù)據(jù)的連接、管理和分析方式。
Azure
微軟云
云服務(wù)
2024-12-092024-12-09
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊(cè)
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊(cè)
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家