GoWind 开源生态GoWind 开源生态
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
首页
框架
GoWind Admin
GoWind CMS
GoWind IM
GoWind UBA
GoWind IoT
GoWind Toolkit
GoWind Quant
GitHub
  • GoWind IoT

    • GoWind IoT 产品介绍
    • GoWind IoT 安装部署指南

GoWind IoT 安装部署指南

本指南面向 GoWind IoT 的交付工程师与运维人员,覆盖从环境准备、单机部署、集群部署到信创适配的完整流程。

GoWind IoT 为闭源商业产品,部署前请确认已通过商务渠道获取有效的商业授权与部署包。如未获取,请联系微信 yang_lin_bo 或邮箱 yanglinbo@gmail.com。

一、部署前评估

1. 资源规划问卷

在启动部署前,请先与客户确认以下问题,以便合理规划硬件资源:

评估项说明影响
设备规模接入设备的总数量、峰值并发数决定接入网关节点数
消息频率单设备平均上报频率、峰值频率决定计算与存储资源
数据保留周期时序数据的保留时长(3 个月 / 1 年 / 永久)决定时序数据库存储容量
协议类型涉及哪些设备协议(MQTT / Modbus / OPC UA 等)决定协议网关配置
高可用要求是否需要多副本、故障切换决定集群拓扑
部署环境公有云 / 私有云 / 物理机 / 国产化环境决定基础镜像与适配方案

2. 容量规划参考

设备规模接入节点计算节点时序库节点总资源建议
1 万设备111(单机)8C 16G × 1
10 万设备223(集群)16C 32G × 7
100 万设备445+(集群)32C 64G × 13+

以上为参考值,实际配置需要结合消息频率与数据保留周期综合评估。

二、环境准备

1. 系统要求

操作系统

  • CentOS 7.6+ / RHEL 8+ / Ubuntu 20.04+ / Debian 10+
  • 麒麟 V10 / 统信 UOS / openEuler(信创环境)
  • 支持 x86_64 与 ARM64(鲲鹏 920 / 飞腾 / 国产 ARM CPU)

基础软件

组件版本要求说明
Docker20.10+容器化运行环境
Docker Compose2.0+单机编排
Kubernetes1.20+集群编排(可选)
MySQL8.0+关系数据存储
PostgreSQL12+关系数据存储(可选 MySQL)
Redis6.0+缓存与会话
时序数据库见下表任选其一

时序数据库支持矩阵

时序数据库推荐版本适用场景
TDengine3.x国产化首选,高写入吞吐
InfluxDB2.x通用场景,生态完善
TimescaleDB2.x复用 PostgreSQL 运维能力
ClickHouse23.x海量数据分析,列式存储
Apache IoTDB1.x工业物联网场景优化
DolphinDB2.x金融/能源场景,内置分析能力

2. 网络规划

端口协议用途
443HTTPS管理控制台
1883MQTT设备接入(非加密)
8883MQTTS设备接入(TLS)
5683CoAP设备接入(UDP)
502Modbus TCP工业设备接入
4840OPC UA工业设备接入
9092Kafka内部消息总线(可选)
3306 / 5432MySQL / PG数据库
6379Redis缓存

生产环境建议通过负载均衡器(Nginx / HAProxy / F5)统一入口,并开启 TLS 加密。

三、单机部署(Docker Compose)

适用于 PoC 验证、小规模场景(1 万设备以内)。

1. 解压部署包

tar -xzf gowind-iot-<version>.tar.gz
cd gowind-iot

2. 配置环境变量

cp .env.example .env
vim .env

关键配置项:

# ===== 授权 =====
LICENSE_FILE=/data/license/gowind-iot.lic

# ===== 数据库 =====
DB_TYPE=mysql
DB_HOST=mysql
DB_PORT=3306
DB_USER=gowind
DB_PASSWORD=<your-password>
DB_NAME=gowind_iot

# ===== Redis =====
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=<your-password>

# ===== 时序数据库 =====
TSDB_TYPE=tdengine           # tdengine / influxdb / timescaledb / clickhouse / iotdb
TSDB_HOST=tdengine
TSDB_PORT=6030
TSDB_USER=root
TSDB_PASSWORD=taosdata
TSDB_DATABASE=gowind_iot

# ===== MQTT 接入 =====
MQTT_PORT=1883
MQTT_TLS_PORT=8883

# ===== 告警通知(对接 GoWind IM / 钉钉 / 企微) =====
IM_NOTIFY_WEBHOOK=https://im.your-domain.com/api/webhook
DINGTALK_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=xxx

3. 启动服务

# 初始化数据库(首次部署)
docker-compose run --rm iot-init

# 启动全部服务
docker-compose up -d

# 查看运行状态
docker-compose ps

# 查看日志
docker-compose logs -f iot-gateway
docker-compose logs -f iot-rule-engine

4. 验证部署

# 健康检查
curl -k https://localhost/api/health
# 预期输出:{"status":"ok","version":"x.y.z"}

# 管理控制台
# 浏览器访问 https://localhost
# 默认账号:admin / admin(首次登录强制修改)

5. 快速验证设备接入

使用 MQTT 客户端(如 mosquitto_pub)模拟设备上报:

# 模拟设备上线 + 上报遥测数据
mosquitto_pub -h localhost -p 1883 \
  -u "device001" -P "<device-token>" \
  -t "/devices/device001/telemetry" \
  -m '{"temperature":25.6,"humidity":60.2}'

# 在管理控制台「设备管理 → 设备列表」中应能看到 device001 已上线
# 在「数据查询」中应能看到上报的温度与湿度数据

四、集群部署(Kubernetes)

适用于生产环境、大规模设备接入(10 万 + 设备)场景。

1. 前置条件

  • 已有 K8s 集群(1.20+),kubectl 可正常访问
  • 已部署 StorageClass,可提供持久化卷
  • 已部署 Ingress Controller(Nginx Ingress 或 Traefik)
  • 已部署或可对接 MySQL、Redis、时序数据库、Kafka/NATS

2. 准备命名空间与配置

kubectl create namespace gowind-iot

# 创建授权 Secret
kubectl create secret generic iot-license \
  --from-file=gowind-iot.lic=/path/to/license.lic \
  -n gowind-iot

# 创建数据库密码 Secret
kubectl create secret generic iot-secrets \
  --from-literal=DB_PASSWORD='<db-password>' \
  --from-literal=REDIS_PASSWORD='<redis-password>' \
  --from-literal=TSDB_PASSWORD='<tsdb-password>' \
  -n gowind-iot

3. 编写 values.yaml

image:
  registry: registry.your-domain.com/gowind
  tag: "x.y.z"

ingress:
  enabled: true
  host: iot.your-domain.com
  tls: true

# 接入网关副本数(横向扩容核心)
gateway:
  replicas: 4
  resources:
    requests:
      cpu: 2
      memory: 4Gi
    limits:
      cpu: 4
      memory: 8Gi

# 规则引擎副本数
ruleEngine:
  replicas: 2
  resources:
    requests:
      cpu: 1
      memory: 2Gi

# 时序数据库(对接外部集群,不自建)
tsdb:
  external: true
  type: tdengine
  host: tdengine-cluster.gowind-iot.svc.cluster.local
  port: 6030

# MQTT 接入通过 LB 暴露
mqtt:
  type: LoadBalancer
  port: 1883
  tlsPort: 8883

4. 部署 Helm Chart

helm install gowind-iot ./charts/gowind-iot \
  -f values.yaml \
  -n gowind-iot

# 等待所有 Pod 就绪
kubectl get pods -n gowind-iot -w

# 查看 Ingress 入口
kubectl get ingress -n gowind-iot

5. 配置设备接入负载均衡

接入网关通过 LoadBalancer 类型 Service 暴露,云厂商 LB 会自动分配入口 IP。对于裸金属集群,建议使用 MetalLB 或外部硬件 LB。

kubectl get svc -n gowind-iot iot-gateway-mqtt
# 记下 EXTERNAL-IP,将设备的 MQTT Broker 地址指向此 IP

五、信创(国产化)部署

GoWind IoT 通过 Go 语言静态编译,天然适配国产化环境。

1. 国产 CPU 适配

CPU 架构支持情况
鲲鹏 920 (ARM64)完整支持,提供原生 ARM64 镜像
飞腾 2000+/2500 (ARM64)完整支持
龙芯 3A5000/3C5000 (LoongArch)完整支持,提供 LoongArch 镜像
海光 (x86_64)完整支持
兆芯 (x86_64)完整支持

2. 国产操作系统适配

操作系统版本
麒麟 KylinOSV10 SP1/SP2/SP3
统信 UOSV20 / V25
openEuler22.03 LTS+
中科方德NFSChina 4.0+

3. 信创部署注意事项

  • 数据库适配:信创场景推荐 TDengine + 达梦数据库 / 人大金仓的组合,满足自主可控要求
  • 容器运行时:部分国产 OS 默认提供 podman / buildah,可根据需要替换 Docker
  • 镜像仓库:建议使用 Harbor 或国产镜像仓库解决方案,避免对 Docker Hub 的依赖
  • 时钟同步:所有节点必须开启 NTP 时钟同步,避免设备数据时序错乱

六、配置详解

1. 时序数据库切换

GoWind IoT 通过 TSDB_TYPE 环境变量声明式切换时序数据库,业务层无需改动:

# TDengine
TSDB_TYPE=tdengine
TSDB_HOST=tdengine
TSDB_PORT=6030

# InfluxDB
TSDB_TYPE=influxdb
TSDB_HOST=influxdb
TSDB_PORT=8086
TSDB_TOKEN=<influxdb-token>
TSDB_ORG=gowind
TSDB_BUCKET=iot

# TimescaleDB
TSDB_TYPE=timescaledb
TSDB_HOST=timescaledb
TSDB_PORT=5432
TSDB_USER=gowind
TSDB_PASSWORD=<password>
TSDB_DATABASE=gowind_iot

# ClickHouse
TSDB_TYPE=clickhouse
TSDB_HOST=clickhouse
TSDB_PORT=8123
TSDB_USER=default
TSDB_PASSWORD=<password>
TSDB_DATABASE=gowind_iot

2. 自定义协议接入

对于私有 TCP/UDP 协议,通过在 protocols/ 目录下放置协议描述文件即可接入:

# protocols/my-protocol.yaml
name: my-private-protocol
transport: tcp
port: 9000

codec:
  type: lua           # 使用 Lua 编解码
  script: codecs/my_protocol.lua

deviceMapping:
  serialNumber:
    offset: 4
    length: 16
    encoding: ascii

upstream:
  telemetry:
    topic: /devices/{deviceId}/telemetry
    fields:
      temperature: int16 @ offset 20, scale 0.1
      pressure: uint16 @ offset 22, scale 0.01

3. 告警通知渠道配置

# config/alert-channels.yaml
channels:
  - name: gowind-im
    type: webhook
    url: https://im.your-domain.com/api/webhook/iot-alert
    headers:
      Authorization: Bearer <token>

  - name: dingtalk
    type: dingtalk
    webhook: https://oapi.dingtalk.com/robot/send?access_token=xxx
    secret: SECxxx

  - name: email
    type: smtp
    host: smtp.your-domain.com
    port: 465
    from: iot-alert@your-domain.com
    password: <smtp-password>

rules:
  - when: severity in [critical, major]
    then: [gowind-im, dingtalk, email]
  - when: severity == minor
    then: [gowind-im]

七、运维与监控

1. 健康检查

# 平台整体健康
curl -k https://iot.your-domain.com/api/health

# 各组件状态
curl -k https://iot.your-domain.com/api/health/components

2. 指标暴露

GoWind IoT 暴露 Prometheus 格式的监控指标:

http://<host>:9090/metrics

核心指标:

指标说明
iot_connected_devices当前在线设备数
iot_messages_received_total累计接收消息数
iot_messages_per_second消息处理 QPS
iot_rule_engine_triggered_total规则引擎触发次数
iot_ota_tasks_running进行中的 OTA 任务数
iot_alerts_active活跃告警数

3. 推荐监控大盘

  • 通过 Prometheus + Grafana 构建监控大盘
  • GoWind IoT 提供 Grafana Dashboard JSON 模板,导入即可使用
  • 建议关注:设备连接数、消息处理延迟、规则引擎延迟、时序数据库写入延迟、磁盘使用率

4. 日志管理

# Docker Compose 场景
docker-compose logs -f --tail=200 iot-gateway

# K8s 场景
kubectl logs -f -n gowind-iot -l app=iot-gateway --tail=200

生产环境建议接入 ELK / Loki / 国产日志方案统一收集与分析。

八、升级与备份

1. 平台升级

# 1. 备份当前版本配置
cp -r gowind-iot/ gowind-iot-backup-$(date +%Y%m%d)/

# 2. 拉取新版本部署包
tar -xzf gowind-iot-<new-version>.tar.gz

# 3. 执行数据库迁移
docker-compose run --rm iot-migrate

# 4. 滚动重启
docker-compose up -d

K8s 场景下通过 Helm 滚动更新:

helm upgrade gowind-iot ./charts/gowind-iot \
  -f values.yaml \
  -n gowind-iot

2. 数据备份

关系数据库

mysqldump -h <host> -u gowind -p gowind_iot > gowind_iot_$(date +%Y%m%d).sql

时序数据库(以 TDengine 为例)

taosdump -h tdengine -u root -p taosdata \
  -D gowind_iot \
  -o /backup/tdengine_$(date +%Y%m%d)

建议结合定时任务(cron)实现每日自动备份,并定期验证备份可恢复性。

九、常见部署问题排查

Q: 启动后管理控制台无法访问

  1. 检查容器是否正常运行:docker-compose ps
  2. 检查 443 端口是否被占用:netstat -tlnp | grep 443
  3. 检查授权证书路径是否正确:查看 .env 中 LICENSE_FILE
  4. 查看网关日志:docker-compose logs iot-gateway

Q: 设备无法连接到 MQTT Broker

  1. 确认设备使用正确的接入地址与端口
  2. 确认设备证书 / Token 正确(在控制台「设备详情 → 认证信息」查看)
  3. 检查防火墙是否放行 1883 / 8883 端口
  4. 查看接入网关日志中是否有认证失败记录

Q: 时序数据库写入失败

  1. 确认时序数据库实例可达:telnet <tsdb-host> <port>
  2. 确认账号有写入权限
  3. 确认 TSDB_TYPE 配置与实际数据库一致
  4. 查看数据采集服务日志:docker-compose logs iot-data-service

Q: 规则引擎不触发

  1. 在控制台「规则引擎 → 规则列表」确认规则已发布(非草稿态)
  2. 检查规则的触发条件是否匹配实际数据
  3. 查看规则引擎日志中是否有错误:docker-compose logs iot-rule-engine
  4. 确认数据源消息已成功进入消息总线

十、获取帮助

  • 部署包获取与授权:微信 yang_lin_bo(备注:公司-姓名-IoT 部署)
  • 技术支持邮箱:yanglinbo@gmail.com
  • 产品介绍文档:GoWind IoT 产品介绍
  • GoWind 框架文档:框架总览
Edit this page
Last Updated:: 6/22/26, 12:03 PM
Contributors: Bobo
Prev
GoWind IoT 产品介绍