4、InfluxDB部署方式选择:单机部署、集群部署、Docker部署、Kubernetes部署

在厂务时序数据平台建设中,部署方式的选择直接影响系统的可用性、扩展性、运维复杂度以及初始投入成本。InfluxDB 从 1.x 到 2.x/3.x 的演进过程中,部署架构发生了显著变化。本章将系统对比四种主流部署方式,帮助你在不同场景下做出合理选择。

核心观点:没有“最好”的部署方式,只有“最适合”当前业务阶段与团队运维能力的方案。厂务场景通常从单机或 Docker 起步,随着数据规模增长逐步演进到 Kubernetes 集群。

4.1 部署方式全景对比

下表从关键维度对四种部署方式进行横向对比,便于快速建立整体认知:

对比维度 单机部署 集群部署 Docker 部署 Kubernetes 部署
适用规模 单节点 < 1TB 多节点 > 1TB 单节点 < 500GB 多节点弹性伸缩
高可用 无(单点故障) 支持(副本机制) 依赖宿主机 原生支持(Pod 自愈)
扩展性 垂直扩展(有限) 水平扩展 垂直扩展 水平扩展(自动)
运维复杂度 低 高 中 高(需 K8s 技能)
部署速度 分钟级 小时级 秒级 分钟级(YAML 就绪后)
资源隔离 进程级 进程级 容器级 容器级 + 命名空间
版本升级 手动替换二进制 滚动升级 替换镜像重启 滚动更新策略
厂务推荐场景 小型产线、边缘站点 大型工厂、数据中心 开发测试、快速验证 云原生厂区、微服务架构
关键决策点:如果厂务系统对数据写入的连续性要求极高(如 7×24 小时生产监控),应优先考虑具备高可用能力的集群或 Kubernetes 部署;如果是边缘机台或临时采集项目,单机或 Docker 部署足以满足需求。

4.2 单机部署

单机部署是最简单、最直接的 InfluxDB 运行方式,适合数据量较小、对高可用无要求的场景。InfluxDB 1.x 和 2.x 均支持单机模式,3.x 目前也提供单进程运行选项。

4.2.1 部署步骤(以 InfluxDB 2.x 为例)

  1. 下载二进制包:从官方仓库获取对应操作系统的压缩包。
  2. 解压并配置:解压后修改 influxdb.conf 或通过环境变量设置存储路径、HTTP 端口等。
  3. 启动服务:执行 ./influxd 启动,默认监听 8086 端口。
  4. 初始化:通过 Web UI 或 CLI 创建初始组织、Bucket 和 。
# 下载 InfluxDB 2.7 二进制包(Linux amd64)
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.1-linux-amd64.tar.gz
tar -xzf influxdb2-2.7.1-linux-amd64.tar.gz
cd influxdb2-2.7.1-linux-amd64

# 启动(前台运行,生产环境建议使用 systemd)
./influxd --reporting-disabled \
  --store=disk \
  --engine-path=/var/lib/influxdb2/engine \
  --bolt-path=/var/lib/influxdb2/influxd.bolt
注意:单机部署存在单点故障风险。如果宿主机宕机或磁盘损坏,所有时序数据将丢失。厂务生产环境务必配合定期备份策略(如 influx backup 命令)。

4.2.2 单机部署架构图

下图展示了单机部署的核心组件与数据流:

单机部署架构 PLC / 传感器 SCADA 系统 API 写入 InfluxDB 单机 HTTP API (8086) TSM 存储引擎 WAL 预写日志 查询引擎 Grafana / 应用 本地磁盘 / NFS 单点故障风险 · 无副本

4.3 集群部署

InfluxDB 1.x 提供官方的开源集群方案(Meta Node + Data Node),2.x 和 3.x 则通过 InfluxDB Clustered(商业版)或 InfluxDB Enterprise 实现高可用与水平扩展。集群部署适用于厂务数据量超过单机处理能力、需要跨节点冗余的场景。

4.3.1 集群核心组件

组件 职责 推荐数量 说明
Meta Node 管理集群元数据、分片分配、节点心跳 3 或 5(奇数) 使用 Raft 协议保证一致性
Data Node 存储实际时序数据、处理读写请求 ≥ 2 可水平扩展,支持副本因子
Load Balancer 分发客户端请求到 Data Node 1 或 2(HA) 可选 Nginx / HAProxy

4.3.2 集群部署架构图

InfluxDB 集群部署架构 写入 / 查询客户端 负载均衡器 Meta Node 1 Meta Node 2 Meta Node 3 Data Node 1 分片 A, B Data Node 2 分片 B, C Data Node 3 分片 A, C 共享存储 / 本地 SSD(副本因子=2)
集群部署要点:
  • Meta Node 必须为奇数(3 或 5),避免脑裂。
  • Data Node 的副本因子建议设置为 2,在数据冗余与存储成本之间取得平衡。
  • 厂务场景中,建议将 Data Node 部署在不同物理机架或可用区,提升容灾能力。

4.4 Docker 部署

Docker 部署是开发测试环境以及中小型厂务边缘节点的首选方案。InfluxDB 官方提供维护良好的 Docker 镜像,支持快速启动和版本切换。

4.4.1 快速启动命令

# 拉取 InfluxDB 2.x 镜像
docker pull influxdb:2.7

# 启动容器(挂载数据卷,映射端口)
docker run -d \
  --name influxdb2 \
  -p 8086:8086 \
  -v influxdb2-data:/var/lib/influxdb2 \
  -v influxdb2-config:/etc/influxdb2 \
  -e DOCKER_INFLUXDB_INIT_MODE=setup \
  -e DOCKER_INFLUXDB_INIT_USERNAME=admin \
  -e DOCKER_INFLUXDB_INIT_PASSWORD=password123 \
  -e DOCKER_INFLUXDB_INIT_ORG=factory \
  -e DOCKER_INFLUXDB_INIT_BUCKET=plant_metrics \
  influxdb:2.7

4.4.2 Docker 部署架构图

Docker 部署架构 宿主机操作系统 (Linux / Windows) Docker Engine InfluxDB 容器 influxd 进程 端口 8086 数据卷 /var/lib/influxdb2 持久化存储 外部访问:http://宿主机IP:8086
Docker 部署优势:环境一致性、快速启停、易于版本管理。厂务开发团队可以使用 docker-compose 同时启动 InfluxDB + Telegraf + Grafana 全套监控栈,加速原型验证。

4.5 Kubernetes 部署

Kubernetes(K8s)部署是云原生时代的标准方案,特别适合大型厂务系统需要弹性伸缩、自动恢复、滚动更新的场景。InfluxDB 官方提供 Helm Chart 和 Operator 两种部署方式。

4.5.1 使用 Helm 部署 InfluxDB 2.x

# 添加 InfluxData Helm 仓库
helm repo add influxdata https://helm.influxdata.com/
helm repo update

# 部署 InfluxDB 2.x(自定义 values.yaml)
helm install influxdb2 influxdata/influxdb2 \
  --namespace factory-monitoring \
  --create-namespace \
  --set persistence.enabled=true \
  --set persistence.size=100Gi \
  --set resources.requests.cpu=2 \
  --set resources.requests.memory=4Gi \
  --set service.type=ClusterIP

4.5.2 Kubernetes 部署架构图

Kubernetes 部署架构 Kubernetes 集群 Namespace: factory-monitoring Service (ClusterIP) Pod: influxdb-0 influxd 主进程 就绪探针 / 存活探针 Pod: influxdb-1 influxd 副本 数据同步 Pod: influxdb-2 influxd 副本 数据同步 PersistentVolumeClaim (PVC) — 100Gi SSD ConfigMap: influxdb-config Secret: influxdb-auth
K8s 部署注意事项:
  • InfluxDB 是有状态应用,必须使用 StatefulSet 而非 Deployment,确保 Pod 标识和存储卷的稳定绑定。
  • 生产环境建议配置 Pod 反亲和性,避免同一节点上运行多个 InfluxDB 副本。
  • 监控 Pod 的 CPU 和内存使用,及时调整 resource requests/limits,防止 OOMKill。

4.6 部署方式选择决策树

以下决策树可以帮助你在厂务项目中快速定位合适的部署方式:

部署方式选择决策树 数据量 < 500GB/天? 是 → 需要高可用? 否 → 需要弹性伸缩? ← 上一章 📖 返回目录 下一章 →