在使用HTTP代理服务器的网络环境中安装和配置Azure IoT Edge设备
分类: Azure物联网 ◆ 标签: #Azure #IoT Edge # ◆ 发布于: 2023-06-14 22:42:42
大部分IoT设备会被部署到严酷的生产环境中。这些环境可能包括工厂,实验室,车间,车站等等各种网络受限的环境,这些环境的网络大都会限制公共网络的访问,规则相当严格。HTTP代理服务器在类似的环境中应用最多,因为它容易配置和监控。要代理服务环境中配置Azure IoT Edge设备,需要更多额外的步骤, 我们本章来学些这些配置步骤。
开始配置之前
在开始配置之前一定要检查一下HTTP代理服务器的限制,检查一下代理服务器中是否有添加对端口5671, 443的阻止或者通过规则,确保HTTP代理服务器可用。
另外如果要使用HTTP代理服务器,那么对于Azure IoT Edge的设备要使用AmqpWS 即amqp-with-websocket协议的支持,否者是无法成功链接到Azure IoT Hub。
您已经有了Azure账号,如果没有,请参考文章注册一个免费的:
您已经创建了Azure IoT Hub, 如果没有,请参考文章:
您已经创建了一个Azure IoT Edge设备,如果没有,请参考文章:
配置的步骤
我们这里以Ubuntu 20.04作为运行Azure IoT Edge的操作系统。
- 配置
Ubuntu 20.04的apt使用代理服务器 - 配置
wget使用代理服务器。 - 安装
moby容器服务。并配置容器服务使用代理服务器。 - 安装
Azure IoT Edge服务,并配置Azure IoT Edge服务使用代理服务器 - 配置
Azure IoT Edge,使其通过Azure IoT Hub上创建的Azure IoT Edge Device的SAS链接字符串链接到Azure IoT Hub。 - 更改配置
Azure IoT Edge配置文件使得使用edgeAgent系统模块使用amqpws协议和添加Http代理服务器 - 通过
Azure Portal安装edgeHub系统模块。
以上就是我们配置的步骤, 接下来我们一一详解:
配置Ubuntu 20.04的apt使用代理服务器
ssh到服务器,使用命令:
sudo nano /etc/apt/apt.conf
编辑该文件,添加内容:
Acquire::http::Proxy "http://yourproxyaddress:proxyport";
注意代理服务器改成您自己的。
保存后,运行:
sudo apt-get update sudo apt-get upgrade
如果这里可以正常的更新,那么说明apt的代理服务器配置成功了。
配置wget使用代理服务器
我们需要使用wget下载微软提供的安装包,这个包会更新微软的软件库源信息以及签名。要在代理服务器的环境下使用wget就需要也需要配置代理服务器
export use_proxy=yes export http_proxy="http://yourproxyaddress:proxyport" wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
这样会下载回来一个deb包,我们使用如下的命令来安装该包
sudo dpkg -i packages-microsoft-prod.deb rm packages-microsoft-prod.deb
然后再次更新
sudo apt-get update sudo apt-get upgrade
安装moby容器服务,并配置该服务使用代理服务器
默认使用moby容器服务,由于我们安装Azure IoT Edge的模块都是需要Docker从库里抓取镜像,因此是需要给moby配置代理服务器的。
我们先来安装:
sudo apt-get update; \ sudo apt-get install moby-engine
安装完成后,配置一下log driver, 编辑文件:
sudo nano /etc/docker/daemon.json
在该文件中输入如下的内容:
{ "log-driver": "local" }
跟着我们来配置docker的代理服务器。
sudo mkdir -p /etc/systemd/system/docker.service.d sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
在该文件里输入如下的内容配置代理服务器:
[Service] Environment="HTTP_PROXY=http://proxy.example.com:80" Environment="HTTPS_PROXY=https://proxy.example.com:443"
如果你的代理服务器就是一个,那就这两个填一样的url就好了, 注意更换代理服务器的地址。
刷新配置,重启服务:
sudo systemctl daemon-reload sudo systemctl restart docker
检查一下是否配置成功了。
sudo systemctl show --property=Environment docker
安装Azure IoT Edge服务,并配置Azure IoT Edge服务使用代理服务器
我们这一节使用apt安装Azure IoT Edge的runtime, 然后配置两个系统服务使用Http代理服务
sudo apt-get update; \ sudo apt-get install aziot-edge defender-iot-micro-agent-edge
安装完成后,配置系统服务aziot-edged和aziot-identityd使用代理服务器
sudo systemctl edit aziot-edged
输入如下的内容:
[Service] Environment=https_proxy=<proxy URL>
保存后退出
sudo systemctl edit aziot-identityd
输入如下的内容,保存后退出:
[Service] Environment=https_proxy=<proxy URL>
重新载入系统配置和重启服务:
sudo systemctl daemon-reload sudo iotedge system restart
可以使用如下的命令检查配置输出是否正确:
systemctl show --property=Environment aziot-edged systemctl show --property=Environment aziot-identityd
到这里Azure IoT Edge的系统服务配置完成。
配置Azure IoT Edge,使其通过Azure IoT Hub上创建的Azure IoT Edge Device的SAS链接字符
在配置Azure IoT Edge链接到Azure IoT Hub之前,我们必须要已经完成了:
- 创建一个
Azure IoT Hub - 在
Azure IoT Hub里创建一个IoT Edge设备
关于如何创建这二者,您可以参考我之前的文章:
我们首先需要拿到
Azure IoT Edge的链接字符串请遵行如下的步骤拿到链接字符串:
a. 登录到
Azure Portal, 找到您的Azure IoT Hub资源。然后选择左侧菜单的IoT Edge, 如下图:

b.然后从列表中选择设备名:
c.取得设备链接字符串:
拿到链接字符串之后,配置该设备链接到:拿到链接字符串之后,配置该设备链接到:- 拿到链接字符串之后,配置该设备链接到
Azure IoT Hub:sudo iotedge config mp --connection-string 'PASTE_DEVICE_CONNECTION_STRING_HERE' sudo iotedge config apply -c '/etc/aziot/config.toml'
至此我们的设备已经算是可以链接到Azure IoT Hub了。
注意
需要注意的是Azure IoT Edge的运行环境默认情况仅仅是安装了一个必须的系统模块edgeAgent, 该模块要和Azure IoT Hub通讯,我们仍然需要配置http代理服务器。
更改配置Azure IoT Edge配置文件使得使用edgeAgent系统模块使用amqpws协议和添加Http代理服务器
我们通过更改配置文件/etc/aziot/config.toml 来配置系统模块edgeAgent。
sudo nano /etc/aziot/config.toml
在该文件中找到区块:
[agent.env] # "RuntimeLogLevel" = "debug" UpstreamProtocol = "AmqpWs" https_proxy = "<proxy URL>"
注意这里必须是协议AmqpWs, 大小写都不能出错。
然后重新刷新配置文件:
sudo iotedge config apply -c '/etc/aziot/config.toml'
重新刷新系统配置,重启服务:
sudo systemctl daemon-reload sudo iotedge system restart
安装和配置edge Hub系统模块
Azure IoT edge运行时安装时仅仅安装了一个edgeAgent模块,要使得Azure IoT Edge设备可以正常的运行,您还得安装Edge Hub模块,我们可以通过Azure Portal来完成这个步骤。
登陆到
Azure Portal找到您的Azure IoT Hub资源,然后从左侧菜单选择IoT Edge,从列表里找到您的IoT Edge设备,然后如下图:

选择
runtime setting, 如下图:

如下图配置edgeAgent:

2处填写:mcr.microsoft.com/azureiotedge-agent:1.3, 注意后面的1.3是当前的版本号,如果你想了解其他的版本号,可以到https://mcr.microsoft.com/en-us/product/azureiotedge-agent/tags, 查看最新的版本号.
3处填写变量名https_proxy, 4处就是你的代理服务器了如下图配置
EdgeHub:

2处填写:mcr.microsoft.com/azureiotedge-hub:1.3, 注意后面的1.3是当前的版本号,如果你想了解其他的版本号,可以到https://mcr.microsoft.com/en-us/product/azureiotedge-hub/tags, 查看最新的版本号. 3处填写变量名https_proxy, 4处就是你的代理服务器了
然后就直接下一步下一步,到最后create完成部署就好了。
在这个过程中要稍等一下,因为拉取镜像,配置镜像都是需要一会儿的。最后在Azure Portal上就可以到配置成功了。