TDengine 部署指南 — 单机、集群、容器化、云原生
·
分类: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。
参考
系统构架篇
- 01-《TDengine 整体架构全景》
- 02-《集群拓扑深度解析》
- 03-《MNode 内部机制深度解析》
- 04-《RPC 通信层深度解析》
- 05-《VNode 生命周期》
- 06-《RAFT 共识协议》
- 07-《端到端的消息流》
数据模型
- 01-《数据库创建与参数详解》
- 02-《超级表/子表/普通表》
- 03-《支持数据类型深度解析》
- 04-《TDengine Tag 设计哲学与 Schema 变更机制》
- 05-《TDengine 虚拟表实现原理》
存储引擎
- 01-《TDengine 存储引擎概览》
- 02-《TDengine MemTable 深度解析》
- 03-《TDengine WAL 预写日志机制》
- 04-《TDengine 数据文件格式》
- 05-《TDengine Commit 与 Flush 机制 》
- 06-《TDengine Compaction 合并策略 》
- 07-《TDengine 数据保留与 TTL》
- 08-《TDengine 压缩编码机制》
- 09-《TDengine Cache 与 Last 查询加速》
- 10-《TDengine 逻辑计划生成》
查询引擎
- 01-《TDengine 查询引擎概览》
- 02-《TDengine SQL 解析与词法分析》
- 03-《TDengine 语义分析与 AST 重写》
- 04-《TDengine 逻辑计划生成》
- 05-《TDengine 物理计划生成》
- 06-《TDengine 扫描算子》
- 07-《TDengine 聚合算子》
- 08-《TDengine 连接算子》
- 09-《TDengine 排序、填充与投影》
- 10-《TDengine 分布式查询执行》
- 11-《TDengine EXPLAIN 与查询优化》
数据写入
- 01-《TDengine SQL INSERT》
- 02-《TDengine 无模式写入》
- 03-《TDengine STMT 写入》
- 04-《TDengine 写入内部流程》
- 05-《TDengine 数据更新删除》
数据订阅
- 01-《TDengine 数据订阅》
- 02-《TDengine 订阅 vs Kafka》
- 03-《TDengine TMQ 消费流程》
- 04-《TDengine 内部机制》
- 05-《TDengine TMQ 最佳实践》
预聚合
索引
SQL 语句
- 01-《TDengine DDL》
- 02-《TDengine DML SELECT》
- 03-《TDengine DML 函数完整参考》
- 04-《TDengine JOIN 完整语法》
- 05-《TDengine 窗口完整语法》
- 06-《TDengine 操作符与表达式》
- 07-《TDengine 系统表》
- 08-《TDengine SQL 与标准 SQL 差异》
客户端与连接器
- 01-《TDengine 的连接方式》
- 02-《TDengine C/C++ 连接器》
- 03-《TDengine java 连接器》
- 04-《TDengine Python 连接器》
- 05-《TDengine Go 与 Rust 连接器》
- 06-《TDengine Node.js 与 C# 连接器》
关于 TDengine
TDengine 专为物联网IoT平台、工业大数据平台设计。其中,TDengine TSDB 是一款高性能、分布式的时序数据库(Time Series Database),同时它还带有内建的缓存、流式计算、数据订阅等系统功能;TDengine IDMP 是一款AI原生工业数据管理平台,它通过树状层次结构建立数据目录,对数据进行标准化、情景化,并通过 AI 提供实时分析、可视化、事件管理与报警等功能。
更多推荐


所有评论(0)