在使用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
上就可以到配置成功了。