将Azure IoT Edge 设备配置为通过代理服务器进行通

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Microsoft网络

小提示:您能找到这篇{将Azure IoT Edge 设备配置为通过代理服务器进行通}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的将Azure IoT Edge 设备配置为通过代理服务器进行通内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

< ">IoT Edge设备将发送HTTPS请求以与IoT中心进行通信。如果设备已连接到使用代理服务器的网络,则需要将IoT Edge运行时配置为通过该服务器进行通信。如果代理服务器发出不通过IoT Edge中心路由的HTTP或HTTPS请求,则可能还会影响各个IoT Edge模块。

< ">本文将引导你完成以下四个步骤,来配置并管理代理服务器后面的IoT Edge设备:

< ">1.在设备上安装IoT Edge运行时

< ">IoT Edge安装脚本从Internet提取包和文件,因此,设备需要通过代理服务器通信,以发出这些请求。对于Windows设备,安装脚本还会提供脱机安装选项。

< ">此步骤是首次设置IoT Edge设备时对其进行配置的一次性过程。更新IoT Edge运行时时,也需要使用相同的连接。

< ">2.在设备上配置Docker守护程序和IoT Edge守护程序

< ">IoT Edge使用设备上的两个守护程序,这些守护程序需要通过代理服务器发出Web请求。IoT Edge守护程序负责与IoT中心通信。Moby守护程序负责容器管理,因此将与容器注册表通信。

< ">此步骤是首次设置IoT Edge设备时对其进行配置的一次性过程。

< ">3.在设备上的config.yaml文件中配置IoT Edge代理属性

< ">IoT Edge守护程序最初会启动edgeAgent模块。然后,edgeAgent模块从IoT中心检索部署清单,并启动其他所有模块。要使IoT Edge代理能够与IoT中心建立初始连接,请在设备本身上手动配置edgeAgent模块环境变量。建立初始连接后,可以远程配置edgeAgent模块。

< ">此步骤是首次设置IoT Edge设备时对其进行配置的一次性过程。

< ">4.针对将来的所有模块部署设置环境变量,使任何模块都可以通过代理进行通信

< ">设置IoT Edge设备并通过代理服务器将其连接到IoT中心后,需要在将来的所有模块部署中保持该连接。

< ">此步骤是远程执行的持续过程,目的是在每次更换新模块或更新部署后,设备仍可通过代理服务器通信。

< ">知道你的代理URL

< ">在开始执行本文中的任何步骤之前,需要知道你的代理URL。

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

< ">protocol是HTTP或HTTPS。Docker守护程序可以根据容器注册表设置使用任一协议,但IoT Edge守护程序和运行时容器应始终使用HTTP连接到代理。

< ">proxy_host是代理服务器的地址。如果代理服务器要求进行身份验证,则可采用user:password proxy_host格式将凭据作为proxy_host的一部分提供。

< ">proxy_port是代理用来响应网络流量的网络端口。

< ">通过代理安装运行时

< ">无论IoT Edge设备是在Windows还是Linux上运行,都需要通过代理服务器访问安装包。请据所用的操作系统,遵循相应的步骤通过代理服务器安装IoT Edge运行时。

< ">Linux设备

< ">若要在Linux设备上安装IoT Edge运行时,请将包管理器配置为通过代理服务器访问安装包。例如,设置apt-get以使用http-proxy。配置包管理器后,请按照安装Azure IoT Edge运行时中的说明照常进行操作。

< ">Windows设备

< ">若要在Windows设备上安装IoT Edge运行时,需要两次通过代理服务器执行操作。第一个连接用于下载安装程序脚本文件,第二个连接用于在安装过程中下载必需的组件。可以在Windows设置中配置代理信息,或直接在PowerShell命令中包含代理信息。

< ">以下步骤演示使用-proxy参数安装Windows的示例:

< ">1.Invoke-WebRequest命令需要获得代理信息才能访问安装程序脚本。然后,Deploy-IoTEdge命令需要获得代理信息才能下载安装文件。

< ">PowerShell

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

< ">2.Initialize-IoTEdge命令不需经过代理服务器,因此第二步仅需Invoke-WebRequest的代理信息。

< ">PowerShell

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

< ">如果拥有不能包含在URL中的复杂代理服务器凭据,请使用-InvokeWebRequestParameters中的-ProxyCredential参数。例如,

< ">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}

< ">有关代理参数的详细信息,请参阅Invoke-WebRequest。有关Windows安装参数的详细信息,请参阅Windows上IoT Edge的PowerShell脚本。

< ">配置守护程序

< ">IoT Edge依赖于IoT Edge设备上运行的两个守护程序。Moby守护程序发出Web请求,以从容器注册表中拉取容器映像。IoT Edge守护程序发出Web请求,以与IoT中心进行通信。

< ">Moby和IoT Edge守护程序都需要配置为使用代理服务器持续获得设备功能。需在最初设置设备期间,在IoT Edge设备上执行此步骤。

< ">Moby守护程序

< ">由于Moby是基于Docker的,因此若要使用环境变量配置Moby守护程序,请参阅Docker文档。大多数容器注册表(包括DockerHub和Azure容器注册表)支持HTTPS请求,因此,你应当设置的变量为HTTPS_PROXY。如果要从不支持传输层安全性(TLS)的注册表中拉取映像,则应当设置HTTP_PROXY。

< ">选择适用于IoT Edge设备操作系统的文章:

< ">在Linux上配置Docker守护程序Linux设备上的Moby守护程序保留“Docker”这一名称。

< ">在Windows上配置Docker守护程序Windows设备上的Moby守护程序名为iotedge-moby。之所以让这些名称保持不同,是因为可能会在Windows设备上并行运行Docker Desktop和Moby。

< ">IoT Edge守护程序

< ">IoT Edge守护程序以类似的方式配置为Moby守护程序。使用以下步骤根据所使用的操作系统为服务设置环境变量。

< ">IoT Edge守护程序始终使用HTTPS将请求发送到IoT中心。

< ">Linux

< ">在终端中打开信息流标题编辑器以配置IoT Edge守护程序。

< ">Bash

< ">sudo systemctl edit iotedge

< ">输入以下文本,将<proxy URL>替换为代理服务器地址和端口。然后,保存并退出。

< ">ini

< ">[Service]

< ">Environment="https_proxy=<proxy URL>"

< ">刷新服务管理器以选取IoT Edge的新配置。

< ">Bash

< ">sudo systemctl daemon-reload

< ">重新启动IoT Edge以使更改生效。



< ">Bash

< ">sudo systemctl restart iotedge

< ">确认已创建环境变量并加载了新配置。

< ">Bash

< ">systemctl show--property=Environment iotedge

< ">Windows

< ">以管理员身份打开PowerShell窗口,运行以下命令来使用新的环境变量编辑注册表。将<proxy url>替换为代理服务器地址和端口。

< ">PowerShell

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

< ">重新启动IoT Edge以使更改生效。

< ">PowerShell

< ">Restart-Service iotedge



< ">配置IoT Edge代理

< ">IoT Edge代理是在任意IoT E网络口碑营销是什么dge设备上启动的第一个模块。该代理基于IoT Edge config.yaml文件中的信息首次启动,IoT Edge代理随后连接到IoT中心以检索部署清单,其中声明了应在设备上部署的其他模块。

< ">需在最初设置设备期间,在IoT Edge设备上执行此步骤一次。



< ">1.打开IoT Edge设备上的config.yaml文件。在Linux系统上,此文件位于/etc/iotedge/config.yaml。在Windows系统上,此文件位于C:ProgramDataiotedgeconfig.yaml。配置文件是受保护的,因此,你需要管理权限才能对其进行访问。在Linux系统上,请使用sudo命令,然后在偏好的文本编辑器中打开该文件。在Windows上,请以管理员身份打开记事本之类的文本编辑器,然后打开该文件。

< ">2.在config.yaml文件中,找到“Edge代理模块规范”部分。IoT Edge代理定义包括可以在其中添加环境变量的env参数。

< ">3.删除作为env参数占位符的大括号,并在新行上添加新变量。请记住,YAML中的缩进为两个空格。

< ">YAML

< ">https_proxy:"<proxy URL>"

< ">4.默认情况下,IoT Edge运行时使用AMQP与IoT中心通信。某些代理服务器会阻止AMQP端口。如果是这种情况,则还需要将edgeAgent配置为使用基于WebSocket的AMQP。添加第二个环境变量。

< ">YAML

< ">UpstreamProtocol:"AmqpWs"

< ">5.将更改保存到config.yaml并关闭编辑器。重新启动IoT Edge以使更改生效。

< ">Linux:

< ">Bash

< ">sudo systemctl restart iotedge

< ">Windows:

< ">PowerShell

< ">Restart-Service iotedge

< ">配置部署清单

< ">将IoT Edge设备配置为与代理服务器配合使用后,还需要在将来的部署清单中声明HTTPS_PROXY环境变量。可以使用Azure门户向导或者通过编辑部署清单JSON文件,来编辑部署清单。

< ">始终配置两个运行时模块(edgeAgent和edgeHub),以通过代理服务器进行通信,从而维持与IoT中心的连接。如果从edgeAgent模块中删除了代理信息,则重新建立连接的唯一方法是根据前一部分中所述,编辑设备上的config.yaml文件。

< ">除了edgeAgent和edgeHub模块外,其他模块也可能需要代理配置。需要访问IoT中心以外的Azure资源(例如blob存储)的模块必须已在部署清单文件中指定HTTPS_PROXY变量。

< ">以下过程在IoT Edge设备的整个生命周期中适用。

< ">Azure门户

< ">使用“设置模块”向导为IoT Edge设备创建部署时,每个模块都有一个可在其中配置代理服务器连接的“环境变量”部分。

< ">若要配置IoT Edge代理和IoT Edge中心模块,请在向导的第一步中选择“运行时设置”。

< ">将https_proxy环境变量添加到IoT Edge代理和IoT Edge中心模块定义。如果在IoT Edge设备的config.yaml文件中包括UpstreamProtocol环境变量,也请将其添加到IoT Edge代理模块定义。

< ">添加到部署清单的所有其他模块都遵循相同的模式。

< ">JSON部署清单文件

< ">如果使用Visual Studio Code中的模板或通过手动创建JSON文件来为IoT Edge设备创建部署,则可以将环境变量直接添加到每个模块定义。

< ">使用以下JSON格式:

< ">JSON

< ">"env":{

< ">"https_proxy":{

< ">"value":"<proxy URL>"

< ">}

< ">}

< ">如果包括环境变量,模块定义应类似以下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设备的confige.yaml文件中包括UpstreamProtocol环境变量,也请将其添加到IoT Edge代理模块定义。

< ">JSON

< ">"env":{

< ">"https_proxy":{

< ">"value":"<proxy URL>"

< ">},

< ">"UpstreamProtocol":{

< ">"value":"AmqpWs"

< ">}

< ">}

< ">使用流量检查代理

< ">如果你尝试使用的代理对受TLS保护的连接执行流量检查,请务必注意,使用X.509证书的身份验证无效。IoT Edge建立了一个TLS通道,该通道使用提供的证书和密钥进行了端到端加密。如果断开该通道以进行流量检查,则代理无法使用正确的凭据重新建立该通道,并且IoT中心和IoT中心设备预配服务会返回“Unauthorized”错误。

< ">若要使用执行流量检查的代理,必须使用共享访问签名身份验证,或者将IoT中心和IoT中心设备预配服务添加到允许列表以避免检查。

将Azure IoT Edge 设备配置为通过代理服务器进行通

上一篇:如何将Azure IoT Edge设备用作网关
下一篇:Airwallex空中云汇如何帮助Lazada卖家收款提现?


版权声明:以上主题为“将Azure IoT Edge 设备配置为通过代理服务器进行通"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    将Azure IoT Edge 设备配置为通过代理服务器进行通
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“将Azure IoT Edge 设备配置为通过代理服务器进行通”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通将Azure IoT Edge 设备配置为通过代理服务器进行通的相关事宜。

关键词:将Azure,IoT,Edge,设备配置为

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号