保姆级教程:在CentOS 7上用Docker Compose一键部署EdgeX Foundry 3.1(含虚拟设备服务)
保姆级教程:在CentOS 7上用Docker Compose一键部署EdgeX Foundry 3.1(含虚拟设备服务)
EdgeX Foundry作为开源物联网边缘计算框架,正在成为工业4.0和智能设备管理的核心技术栈。本文将带您完成从零开始在企业级CentOS 7环境部署EdgeX 3.1的全过程,特别针对需要快速搭建原型系统的开发者,提供包含虚拟设备服务的完整解决方案。
1. 环境准备与系统优化
在开始部署前,我们需要对CentOS 7进行基础环境配置。许多部署失败案例都源于忽视了这个准备阶段。
系统基础配置:
# 设置永久主机名
sudo hostnamectl set-hostname edgex-gateway
echo "127.0.0.1 edgex-gateway" | sudo tee -a /etc/hosts
# 关闭并禁用防火墙(测试环境)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 禁用SELinux(需要重启生效)
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
网络时间协议(NTP)配置: 边缘计算对时间同步有严格要求,建议配置:
sudo yum install -y chrony
sudo systemctl enable chronyd
sudo systemctl start chronyd
chronyc sources # 验证时间源
提示:生产环境应考虑保留防火墙规则,仅开放EdgeX所需端口(4000,4800,8500等)
2. Docker环境深度配置
EdgeX 3.1要求Docker 19.03+版本,我们采用阿里云镜像加速安装:
Docker CE安装:
# 卸载旧版本
sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
# 设置仓库
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装特定版本
sudo yum install -y docker-ce-19.03.15 docker-ce-cli-19.03.15 containerd.io
优化Docker配置: 创建/etc/docker/daemon.json:
{
"registry-mirrors": ["https://gcctk8ld.mirror.aliyuncs.com"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
应用配置并验证:
sudo systemctl enable docker
sudo systemctl restart docker
docker info | grep -E 'Storage Driver|Registry Mirrors'
3. Docker Compose定制化安装
EdgeX的完整部署需要docker-compose 1.25+版本:
二进制安装方式:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 验证安装
docker-compose --version
常用Compose命令备忘:
| 命令 | 作用 | 使用场景 |
|---|---|---|
| up -d | 后台启动 | 首次部署 |
| ps | 查看状态 | 日常检查 |
| logs -f | 跟踪日志 | 故障排查 |
| stop | 停止服务 | 维护期间 |
| down | 删除容器 | 环境重置 |
4. EdgeX Foundry核心部署流程
4.1 获取部署工具包
使用官方compose-builder工具生成定制化配置:
git clone https://github.com/edgexfoundry/edgex-compose.git
cd edgex-compose
git checkout v3.1 # 明确指定版本
4.2 生成带虚拟设备的配置文件
进入compose-builder目录执行:
make gen ds-virtual no-secty
关键参数说明:
ds-virtual:包含虚拟设备服务no-secty:非安全模式(适合测试环境)
生成的文件结构:
edgex-compose/
├── compose-builder/
│ ├── docker-compose.yml # 主配置文件
│ ├── add-device-virtual.yml # 虚拟设备扩展
│ └── ...其他组件定义
4.3 网络配置调整
编辑生成的docker-compose.yml,确保服务可被外部访问:
services:
consul:
ports:
- "8500:8500"
edgex-ui-go:
ports:
- "4000:4000"
# 其他服务端口配置...
注意:生产环境应配置自定义网络而非使用默认bridge
4.4 启动EdgeX服务栈
分步启动更利于问题排查:
# 先拉取所有镜像
docker compose pull
# 启动核心服务(不包含设备服务)
docker compose up -d core-command core-data core-metadata
# 确认核心服务运行正常后再启动其他
docker compose up -d
验证服务状态:
docker compose ps
健康服务应显示为"running"状态。
5. 虚拟设备服务验证
5.1 Consul配置中心访问
浏览器访问:
http://<服务器IP>:8500
在Consul界面应看到:
- 所有EdgeX服务注册状态
- 配置键值存储
- 健康检查状态
5.2 EdgeX控制台操作
访问地址:
http://<服务器IP>:4000
虚拟设备验证步骤:
- 导航到"Device Services"确认device-virtual状态
- 检查"Devices"列表中的虚拟设备
- 使用"Command"标签页测试设备数据读取
5.3 命令行测试示例
通过curl测试设备服务:
# 获取设备列表
curl -s http://localhost:59881/api/v3/device/all | jq .
# 读取虚拟设备数据
curl -s http://localhost:59881/api/v3/device/name/Random-Integer-Device/command/RandomValue | jq .
6. 常见问题解决方案
Q1: 容器启动后立即退出
# 查看具体日志
docker compose logs -f device-virtual
Q2: 端口冲突处理
# 查找占用端口的进程
sudo netstat -tulnp | grep 8500
# 在compose文件中修改端口映射
ports:
- "8501:8500" # 主机端口:容器端口
Q3: 镜像拉取失败
# 尝试单独拉取问题镜像
docker pull edgexfoundry/device-virtual:3.1.0
# 或更换镜像源
docker compose --env-file .env pull
性能优化建议:
- 为Docker分配至少4GB内存
- 使用SSD存储提高IO性能
- 对核心服务配置资源限制:
services:
core-data:
deploy:
resources:
limits:
cpus: '1'
memory: 512M
7. 进阶配置技巧
7.1 数据持久化配置
默认配置数据不持久化,添加卷配置:
services:
redis:
volumes:
- edgex-redis-data:/data
volumes:
edgex-redis-data:
7.2 日志收集方案
配置ELK栈收集日志:
services:
core-data:
logging:
driver: "syslog"
options:
syslog-address: "tcp://logstash:5044"
tag: "edgex-core-data"
7.3 自定义设备服务集成
添加新设备服务的通用流程:
- 将设备服务镜像添加到compose文件
- 配置服务依赖项
- 定义设备配置档案
- 通过REST API注册设备
在项目实践中,我们发现合理配置资源限制和日志策略可以显著提高EdgeX在资源受限环境中的稳定性。对于需要频繁重启服务的场景,建议使用docker compose restart而非完整的down/up循环,这可以保持网络配置不变。
更多推荐
所有评论(0)