4. InfluxDB 部署方式:单机部署、集群部署(InfluxDB Enterprise)、Docker 部署

在生产环境中,选择合适的部署方式是保障时序数据高可用与查询性能的第一步。InfluxDB 主要提供三种部署形态:单机部署(OSS)、企业级集群部署(Enterprise)以及容器化部署(Docker)。三种方式在架构复杂度、扩展能力、运维成本上存在显著差异,厂务运维团队需根据数据规模、预算和 SLA 要求进行选型。

选型建议: 对于单节点日写入量低于 500 万点、无需跨节点容灾的厂务边缘站点,优先选择单机部署;对于需要水平扩展、跨机房容灾的核心厂务数据中心,必须采用 Enterprise 集群;Docker 部署适用于快速验证、CI/CD 环境或资源受限的边缘网关。

4.1 单机部署(InfluxDB OSS)

单机部署是 InfluxDB 开源版本的标准形态,所有组件(写入、查询、存储、HTTP API)运行在同一个进程中。其架构简单,适合开发测试、小规模监控或厂务边缘节点。

4.1.1 架构特点

  • 单一进程:无分布式协调开销,部署与维护成本最低。
  • 本地存储:数据直接写入本地文件系统(TSM 引擎),无网络 IO 延迟。
  • 无副本机制:数据仅存一份,节点故障将导致数据丢失。
  • 垂直扩展:性能提升依赖增加 CPU、内存、磁盘 IOPS。
适用场景: 厂务车间级监控(< 10 台设备)、开发/测试环境、POC 验证、离线数据采集网关。

4.1.2 部署步骤(Linux 二进制)

  1. 下载 InfluxDB OSS 二进制包并解压。
  2. 修改配置文件 /etc/influxdb/influxdb.conf,设置 [meta]、[data]、[http] 等关键参数。
  3. 创建数据目录并授权。
  4. 使用 systemd 管理服务,设置开机自启。
  5. 验证服务状态与 HTTP API 响应。
# 示例:单机部署核心配置片段(influxdb.conf)
[meta]
  dir = "/var/lib/influxdb/meta"

[data]
  dir = "/var/lib/influxdb/data"
  wal-dir = "/var/lib/influxdb/wal"
  # 保留策略自动创建
  retention-autocreate = true

[http]
  bind-address = ":8086"
  auth-enabled = false   # 生产环境建议开启认证

4.1.3 单机部署架构图

单机部署架构(InfluxDB OSS) 写入客户端 HTTP API 查询客户端 查询引擎 + 写入引擎 TSM 存储引擎 本地文件系统(TSM 文件) 无副本 · 单点

4.2 集群部署(InfluxDB Enterprise)

InfluxDB Enterprise 是商业版集群方案,通过 Meta 节点与 Data 节点分离架构实现水平扩展与高可用。厂务核心数据中心通常采用 3 节点 Meta + 多 Data 节点的部署模式。

4.2.1 核心组件

组件 角色 推荐数量 关键职责
Meta 节点 集群协调 3(奇数) 维护数据库/保留策略/用户元数据;通过 Raft 协议保证一致性
Data 节点 数据存储与查询 2~N 存储实际时序数据;执行查询下推;支持数据分片(Shard)与副本
Enterprise Web UI 集群管理 1 可视化监控集群健康状态、节点负载、数据分布

4.2.2 集群部署架构图

InfluxDB Enterprise 集群架构 Meta 节点组 Meta-1 (Leader) Meta-2 (Follower) Meta-3 (Follower) Raft 共识 Data 节点组 Data-1 Data-2 Data-3 Shard 副本 = 2 元数据同步 负载均衡器 (HAProxy/Nginx) 写入 / 查询客户端 水平扩展 · 自动故障转移 数据分片 + 副本

4.2.3 集群部署关键配置

# Meta 节点配置示例(meta-1)
[meta]
  dir = "/var/lib/influxdb/meta"
  bind-address = ":8089"
  # 集群内所有 Meta 节点地址
  meta-bind-address = "192.168.1.10:8089"
  meta-bind-address = "192.168.1.11:8089"
  meta-bind-address = "192.168.1.12:8089"

# Data 节点配置示例(data-1)
[data]
  dir = "/var/lib/influxdb/data"
  wal-dir = "/var/lib/influxdb/wal"
  # 副本数,建议 2
  replication-factor = 2

[cluster]
  # Meta 节点地址列表
  meta-nodes = ["192.168.1.10:8091","192.168.1.11:8091","192.168.1.12:8091"]
重要: 集群部署必须保证 Meta 节点为奇数(3 或 5),否则 Raft 共识无法在故障时达成多数派。Data 节点建议至少 2 台,并设置副本数 ≥ 2,避免单点数据丢失。

4.3 Docker 部署

Docker 部署将 InfluxDB 及其依赖封装在容器中,实现环境一致性、快速启动与资源隔离。厂务边缘网关或快速原型验证场景广泛使用此方式。

4.3.1 部署方式对比

对比维度 单机部署 Enterprise 集群 Docker 部署
部署复杂度 低 高 低
扩展性 垂直扩展 水平扩展 单容器垂直扩展
高可用 无 支持(自动故障转移) 依赖宿主机/编排
资源隔离 进程级 进程级 容器级(cgroups)
启动时间 秒级 分钟级(含初始化) 秒级
适用环境 生产小规模 生产大规模 开发/测试/边缘

4.3.2 Docker 部署步骤

  1. 拉取官方镜像:docker pull influxdb:2.7
  2. 创建持久化数据卷:docker volume create influxdb-data
  3. 启动容器并映射端口与数据卷。
  4. 通过环境变量配置初始组织、Bucket、。
  5. 验证容器日志与 HTTP 健康检查。
# Docker 启动 InfluxDB 2.x 示例
docker run -d \
  --name influxdb \
  -p 8086:8086 \
  -v influxdb-data:/var/lib/influxdb2 \
  -e DOCKER_INFLUXDB_INIT_MODE=setup \
  -e DOCKER_INFLUXDB_INIT_USERNAME=admin \
  -e DOCKER_INFLUXDB_INIT_PASSWORD=secretpassword \
  -e DOCKER_INFLUXDB_INIT_ORG=factory \
  -e DOCKER_INFLUXDB_INIT_BUCKET=plant_metrics \
  influxdb:2.7

4.3.3 Docker 部署架构图

Docker 部署架构 宿主机(Linux / Windows) Docker Engine InfluxDB 容器 端口 8086 数据卷挂载 数据卷 持久化存储 外部客户端
生产建议: Docker 部署时务必使用数据卷(Volume)而非绑定挂载(bind mount),并限制容器内存(--memory)与 CPU(--cpus),避免容器资源争抢导致 InfluxDB OOM。对于厂务边缘网关,推荐使用 docker-compose 统一管理 InfluxDB 与 Telegraf 采集器。