ThingsBoard蓝绿部署终极指南:实现零停机升级的完整方案

【免费下载链接】thingsboard Open-source IoT Platform - Device management, data collection, processing and visualization. 【免费下载链接】thingsboard 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard

在物联网项目中,系统升级往往意味着服务中断,这对需要24/7运行的设备管理平台来说是不可接受的。ThingsBoard作为开源IoT平台,提供了设备管理、数据收集、处理和可视化的完整解决方案。本文将详细介绍如何通过蓝绿部署策略,在不中断服务的情况下完成ThingsBoard的版本升级,确保业务连续性和数据安全性。

什么是蓝绿部署?

蓝绿部署是一种零停机升级策略,通过维护两个完全相同的生产环境(蓝环境和绿环境)来实现无缝切换。正常情况下,流量只流向其中一个环境(例如蓝环境)。当需要升级时,先在非活动环境(绿环境)部署新版本,测试通过后将流量切换到新环境,从而实现零停机升级。

ThingsBoard控制 widgets界面

图1:ThingsBoard控制widgets界面,展示设备远程控制功能

准备工作:环境与工具

硬件要求

  • 至少2台服务器(或虚拟机),每台建议配置:4核CPU、8GB内存、100GB SSD
  • 负载均衡器(推荐HAProxy)
  • Docker和Docker Compose环境

软件要求

  • Git
  • Docker Engine (20.10+)
  • Docker Compose (v2+)
  • 网络工具:curl、wget

环境规划

  • 蓝环境:当前生产环境,运行ThingsBoard稳定版本
  • 绿环境:升级环境,部署新版本ThingsBoard
  • 共享数据库:PostgreSQL或Cassandra(需支持多实例连接)
  • 负载均衡器:HAProxy,用于流量切换

实施步骤:从零开始的蓝绿部署

1. 克隆项目代码

git clone https://gitcode.com/GitHub_Trending/th/thingsboard
cd thingsboard

2. 配置基础环境

修改Docker Compose配置文件,设置双环境部署架构:

# docker/docker-compose.yml 核心配置片段
services:
  # 蓝环境核心服务
  tb-core-blue:
    image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${TB_VERSION}"
    environment:
      TB_SERVICE_ID: tb-core-blue
      TB_SERVICE_TYPE: tb-core
    volumes:
      - ./tb-node/conf:/config
      - ./tb-node/log:/var/log/thingsboard
      
  # 绿环境核心服务
  tb-core-green:
    image: "${DOCKER_REPO}/${TB_NODE_DOCKER_NAME}:${NEW_TB_VERSION}"
    environment:
      TB_SERVICE_ID: tb-core-green
      TB_SERVICE_TYPE: tb-core
    volumes:
      - ./tb-node-green/conf:/config
      - ./tb-node-green/log:/var/log/thingsboard
      
  # 负载均衡器配置
  haproxy:
    image: thingsboard/haproxy-certbot:2.2.33-alpine
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./haproxy/config:/config

3. 配置负载均衡器

编辑HAProxy配置文件,设置流量路由规则:

# docker/haproxy/config/haproxy.cfg 核心配置
backend tb-api-backend
  balance source
  # 默认路由到蓝环境
  server tbApiBlue tb-core-blue:8080 check inter 5s
  # 绿环境初始状态为备份
  server tbApiGreen tb-core-green:8080 check inter 5s backup

4. 部署蓝环境(当前版本)

# 设置当前版本
export TB_VERSION=3.4.4
# 启动蓝环境服务
docker-compose -f docker/docker-compose.yml up -d

5. 部署绿环境(新版本)

# 设置新版本号
export NEW_TB_VERSION=3.5.0
# 复制配置文件并修改环境标识
cp -r docker/tb-node docker/tb-node-green
# 启动绿环境服务
docker-compose -f docker/docker-compose.yml up -d tb-core-green

6. 数据迁移与测试

绿环境部署完成后,需要执行数据库迁移并进行全面测试:

# 执行数据库迁移
docker exec -it tb-core-green /usr/share/thingsboard/bin/install/install.sh --loadDemo
# 运行自动化测试
docker exec -it tb-core-green /usr/share/thingsboard/bin/run-test.sh

测试重点包括:

  • 设备连接性测试
  • 数据采集与存储验证
  • 规则链执行测试
  • UI功能完整性检查

ThingsBoard时序数据可视化

图2:ThingsBoard时序数据可视化界面,展示设备数据监控效果

7. 流量切换

测试通过后,修改HAProxy配置切换流量:

# 修改配置将流量路由到绿环境
sed -i 's/server tbApiBlue .*backup/server tbApiBlue tb-core-blue:8080 check inter 5s backup/' docker/haproxy/config/haproxy.cfg
sed -i 's/server tbApiGreen .*backup/server tbApiGreen tb-core-green:8080 check inter 5s/' docker/haproxy/config/haproxy.cfg
# 重新加载HAProxy配置
docker-compose -f docker/docker-compose.yml kill -s SIGHUP haproxy

8. 验证与回滚机制

切换后需持续监控系统状态:

# 查看服务状态
docker-compose -f docker/docker-compose.yml ps
# 检查日志
tail -f docker/tb-node-green/log/thingsboard.log

如发现问题,可立即回滚到蓝环境:

# 恢复流量到蓝环境
sed -i 's/server tbApiBlue .*backup/server tbApiBlue tb-core-blue:8080 check inter 5s/' docker/haproxy/config/haproxy.cfg
sed -i 's/server tbApiGreen .*backup/server tbApiGreen tb-core-green:8080 check inter 5s backup/' docker/haproxy/config/haproxy.cfg
docker-compose -f docker/docker-compose.yml kill -s SIGHUP haproxy

最佳实践与注意事项

数据库 considerations

  • 使用外部数据库而非容器内数据库,确保数据持久性
  • 升级前必须备份数据库
  • 对于PostgreSQL,建议使用主从复制架构

配置管理

  • 将环境特定配置存储在环境变量或外部配置文件中
  • 使用配置管理工具(如Consul)统一管理配置
  • 新版本部署前验证配置文件兼容性

监控与告警

  • 部署Prometheus+Grafana监控系统状态
  • 设置关键指标告警:响应时间、错误率、资源使用率
  • 监控规则链执行成功率和设备连接状态

自动化部署

  • 使用CI/CD管道(如Jenkins、GitLab CI)自动化部署流程
  • 编写自动化测试脚本验证新版本功能
  • 实现自动回滚机制,当健康检查失败时自动切换回旧版本

总结

蓝绿部署是保障ThingsBoard零停机升级的有效策略,通过本文介绍的步骤,您可以安全、高效地完成系统升级。关键在于充分的测试、可靠的流量切换机制和完善的回滚方案。随着物联网设备规模的增长,这种部署方式将成为保障系统稳定性的重要实践。

通过合理规划和实施蓝绿部署,您的ThingsBoard平台可以在保持高可用性的同时,持续获得新功能和性能改进,为物联网项目提供可靠的技术支持。

【免费下载链接】thingsboard Open-source IoT Platform - Device management, data collection, processing and visualization. 【免费下载链接】thingsboard 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐