分类:12.运维 | 篇章:01 部署指南

在这里插入图片描述
免费详情


TDengine 支持单机、多节点集群、Docker、Kubernetes 多种部署方式。本文按场景给出完整步骤、网络规划、资源建议、生产 Checklist。

部署模式速查

模式 适用 高可用 复杂度
单机 开发/小规模
多 dnode 集群 生产标准
Docker 单机 容器开发
Docker Compose 容器小规模 部分
Kubernetes 云原生生产

详细解析

1. 安装包选择

官方提供:
  - .deb (Debian/Ubuntu)
  - .rpm (RHEL/CentOS)
  - .tar.gz (通用 Linux)
  - .exe (Windows)
  - .pkg (macOS)
  - Docker 镜像
  - Kubernetes Helm Chart


包内容:
  - taosd     服务端
  - taos      客户端 CLI
  - taosadapter 多协议网关
  - taoskeeper 监控
  - taoswriter, taosBenchmark 等工具
  - libtaos   客户端库
  - 头文件 /etc/taos.cfg

2. 单机快速部署

# 方式 1: tar.gz
tar -xzf TDengine-server-3.x.x.tar.gz
cd TDengine-server-3.x.x
./install.sh -e no   # 不交互安装

# 方式 2: deb
sudo dpkg -i tdengine-server_3.x.x_amd64.deb

# 方式 3: rpm
sudo rpm -ivh tdengine-server-3.x.x.rpm


# 启动
systemctl start taosd
systemctl enable taosd       # 开机自启

# 验证
systemctl status taosd
taos                          # 连接 CLI


# 关键配置(/etc/taos/taos.cfg)
firstEp        localhost:6030
fqdn           localhost
serverPort     6030
dataDir        /var/lib/taos
logDir         /var/log/taos

3. 多节点集群部署

集群规划:

  3 节点(最小生产):
    node1: 192.168.1.10
    node2: 192.168.1.11
    node3: 192.168.1.12
  
  网络要求:
    - 节点间互通
    - 端口:6030 (TCP), 6041 (HTTP/WS), 6043-6060
    - 内网 1Gbps+


部署步骤:

  ① 每个节点安装 taosd
  
  ② 配置 /etc/taos/taos.cfg:
     firstEp        192.168.1.10:6030
     fqdn           192.168.1.10  (每节点改成本机)
     serverPort     6030
  
  ③ 启动第一个节点:
     systemctl start taosd  # node1
  
  ④ 启动其他节点(自动加入):
     systemctl start taosd  # node2, node3
  
  ⑤ 在 node1 上添加节点:
     taos
     > CREATE DNODE '192.168.1.11:6030';
     > CREATE DNODE '192.168.1.12:6030';
  
  ⑥ 添加 MNode(高可用元数据):
     > CREATE MNODE ON DNODE 2;
     > CREATE MNODE ON DNODE 3;
  
  ⑦ 验证:
     > SHOW DNODES;
     > SHOW MNODES;


典型配置:
  3 节点:3 dnode + 3 mnode(仲裁)
  5 节点:5 dnode + 3 mnode
  规模更大:增加 dnode,mnode 通常 3 个

4. Docker 单容器

# 拉取镜像
docker pull tdengine/tdengine:3.x.x

# 运行
docker run -d --name tdengine \
  -p 6030:6030 -p 6041:6041 \
  -v /my/data:/var/lib/taos \
  -v /my/log:/var/log/taos \
  -h tdengine \
  tdengine/tdengine:3.x.x

# 进入 CLI
docker exec -it tdengine taos


# 注意:-h tdengine 指定 hostname
# fqdn 需与 hostname 一致

5. Docker Compose 集群

# docker-compose.yml
version: "3"

services:
  td-1:
    image: tdengine/tdengine:3.x.x
    hostname: td-1
    networks:
      - tdnet
    environment:
      - TAOS_FQDN=td-1
      - TAOS_FIRST_EP=td-1:6030
    volumes:
      - td-data-1:/var/lib/taos
  
  td-2:
    image: tdengine/tdengine:3.x.x
    hostname: td-2
    networks:
      - tdnet
    environment:
      - TAOS_FQDN=td-2
      - TAOS_FIRST_EP=td-1:6030
    volumes:
      - td-data-2:/var/lib/taos
    depends_on:
      - td-1
  
  td-3:
    image: tdengine/tdengine:3.x.x
    hostname: td-3
    networks:
      - tdnet
    environment:
      - TAOS_FQDN=td-3
      - TAOS_FIRST_EP=td-1:6030
    volumes:
      - td-data-3:/var/lib/taos
    depends_on:
      - td-1
  
  adapter:
    image: tdengine/tdengine:3.x.x
    hostname: adapter
    networks:
      - tdnet
    ports:
      - "6041:6041"
    command: ["taosadapter", "-c", "/etc/taos"]
    environment:
      - TAOS_ADAPTER_TAOSD_FQDN=td-1
    depends_on:
      - td-1

networks:
  tdnet:

volumes:
  td-data-1:
  td-data-2:
  td-data-3:
docker-compose up -d

# 添加节点
docker exec -it docker-td-1-1 taos -s \
  "CREATE DNODE 'td-2:6030'"
docker exec -it docker-td-1-1 taos -s \
  "CREATE DNODE 'td-3:6030'"

6. Kubernetes 部署

# StatefulSet 示例
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: tdengine
spec:
  serviceName: tdengine
  replicas: 3
  selector:
    matchLabels:
      app: tdengine
  template:
    metadata:
      labels:
        app: tdengine
    spec:
      containers:
      - name: tdengine
        image: tdengine/tdengine:3.x.x
        ports:
        - containerPort: 6030
        - containerPort: 6041
        env:
        - name: TAOS_FQDN
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: TAOS_FIRST_EP
          value: "tdengine-0.tdengine:6030"
        volumeMounts:
        - name: data
          mountPath: /var/lib/taos
  volumeClaimTemplates:
  - metadata:
      name: data
    spec:
      accessModes: ["ReadWriteOnce"]
      resources:
        requests:
          storage: 100Gi


# 推荐用 Operator
# https://github.com/taosdata/TDengine-Operator

7. 资源规划

节点规格建议:

  小型(< 1000 设备):
    CPU: 4 核
    内存: 8 GB
    磁盘: 100 GB SSD
    网络: 1 Gbps
  
  中型(1 万设备):
    CPU: 8 核
    内存: 32 GB
    磁盘: 1 TB SSD
    网络: 1 Gbps
  
  大型(10 万+ 设备):
    CPU: 16+ 核
    内存: 64+ GB
    磁盘: 5+ TB NVMe
    网络: 10 Gbps


VGroup 数推荐:
  VGroups = CPU 核数 × 1~2
  3 节点 8 核 = 24~48 VGroups


REPLICA:
  - 1:开发/单机
  - 3:生产标准
  - 5:超高可用(成本高)

8. 生产部署 Checklist

✓ 操作系统:
  - 关闭 swap
  - 时间同步 (chronyd/ntpd)
  - 文件描述符 ulimit -n 65535+
  - vm.max_map_count 调大

✓ 网络:
  - 节点 FQDN 可解析
  - 内网带宽 ≥ 1Gbps
  - 防火墙开放端口

✓ 存储:
  - SSD/NVMe 推荐
  - 数据目录与系统盘分离
  - 多盘 dataDir 提升性能

✓ TDengine 配置:
  - fqdn 正确
  - firstEp 一致
  - replica = 3
  - log 路径与策略

✓ 监控:
  - taosKeeper 部署
  - Grafana Dashboard
  - 告警规则

✓ 备份:
  - taosdump 定期
  - 异地副本

代码示例

自动化部署脚本

#!/bin/bash
# install_cluster.sh

NODES=("192.168.1.10" "192.168.1.11" "192.168.1.12")
FIRST_EP="${NODES[0]}:6030"

# 在每个节点上安装
for ip in "${NODES[@]}"; do
  ssh root@$ip "
    wget https://www.taosdata.com/TDengine-server-3.x.x.tar.gz
    tar -xzf TDengine-server-3.x.x.tar.gz
    cd TDengine-server-3.x.x
    ./install.sh -e no
    
    # 配置
    cat > /etc/taos/taos.cfg <<EOF
firstEp        ${FIRST_EP}
fqdn           ${ip}
serverPort     6030
dataDir        /var/lib/taos
logDir         /var/log/taos
EOF
    
    systemctl enable taosd
    systemctl start taosd
  "
done

# 添加节点到集群
sleep 5
for ip in "${NODES[@]:1}"; do
  ssh root@${NODES[0]} "taos -s 'CREATE DNODE \"${ip}:6030\"'"
done

# 添加 MNode
for i in 2 3; do
  ssh root@${NODES[0]} "taos -s 'CREATE MNODE ON DNODE ${i}'"
done

echo "集群部署完成"
ssh root@${NODES[0]} "taos -s 'SHOW DNODES; SHOW MNODES;'"

性能考量

部署模式性能影响

模式 性能 备注
物理机 100% 基准
KVM 虚拟机 80%~90% 通用
Docker 95% 接近物理机
K8s 90% 网络抽象有损

多盘性能

# taos.cfg
dataDir /data1 0
dataDir /data2 0
dataDir /data3 0
# 多盘并行 I/O

FAQ

Q1: 单机能加节点变集群吗?

可以。新节点 firstEp 指向单机,CREATE DNODE 加入。但建库时 REPLICA 不能改,新建库才能用副本。

Q2: K8s 部署推荐 Operator 吗?

强烈推荐。Operator 自动处理 dnode/mnode 拓扑、滚动升级、扩缩容。

Q3: 节点配置不一致行吗?

允许。但建议同集群内节点规格一致,避免性能瓶颈。

Q4: FQDN 怎么规划?

  • 物理机:可用 IP(修改 /etc/hosts)
  • 容器:用 service name
  • K8s:用 StatefulSet 自动 DNS

Q5: 升级需要停机?

滚动升级,逐节点重启。建议先升级 mnode,再升级 dnode。

参考

系统构架篇

数据模型

存储引擎

查询引擎

数据写入

数据订阅

预聚合

索引

SQL 语句

客户端与连接器

关于 TDengine

TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

更多推荐