TDengine 手动部署实战指南:从 taosd 集群组建到 taosAdapter、taosKeeper、taosExplorer 全组件部署

发布时间:2026/9/14 17:28:55
TDengine 手动部署实战指南:从 taosd 集群组建到 taosAdapter、taosKeeper、taosExplorer 全组件部署 TDengine 手动部署实战指南从 taosd 集群组建到 taosAdapter、taosKeeper、taosExplorer 全组件部署【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine本文是 TDengine 集群手动部署的完整操作指南覆盖从环境检查、taosd 多节点集群组建、dnode/mnode 扩容到 taosAdapter、taosKeeper、taosExplorer 等周边组件的部署与负载均衡配置。读完本文你将掌握 TDengine 全组件的本地化部署流程、firstEp/fqdn等关键配置的准确含义以及常见的节点离线问题排查方法。部署总览TDengine 集群由多个服务组件构成其中核心数据库服务是taosd。以手动方式而非 Docker、Kubernetes 等方式部署时需要依次完成以下工作部署并组建taosd集群dnode 与 mnode部署taosAdapter为集群提供 RESTful 与 WebSocket 接入能力部署taosKeeper启用监控功能可选部署taosX / taosX-Agent启用数据接入能力企业版功能部署taosExplorer获得可视化管理界面。本文以官方部署文档 01-manual.md 为主线并结合 taos.cfg 配置模板与 mndDnode.c、mndMnode.c 等源码实现展开说明。部署 taosdtaosd是 TDengine 集群中最主要的服务组件。手动部署 taosd 集群的核心思路是先启动第 1 个 dnode 形成集群再逐台启动其余 dnode 并通过 SQL 命令将它们加入集群最后按需创建 mnode 实现管理节点的高可用。清除数据如果搭建集群的物理节点上存在之前的测试数据或者安装过其他版本如 1.x/2.x的 TDengine请先卸载旧版本并清空所有数据目录避免残留数据与配置干扰新集群的组建。检查环境在进行集群部署之前全面检查所有 dnode 以及应用程序所在物理节点的网络设置至关重要。按以下步骤执行第 1 步在每个物理节点上执行hostname -f命令确认所有节点的 hostname 是唯一的。对于应用程序驱动所在的节点这一步骤可以省略。第 2 步在每个物理节点上执行ping host命令其中host是其他物理节点的 hostname用于检测当前节点与其他物理节点之间的网络连通性。如果无法 ping 通请立即检查网络和 DNS 设置Linux 系统检查/etc/hosts文件Windows 系统检查C:\Windows\system32\drivers\etc\hosts文件。网络不通畅将导致无法组建集群。第 3 步在应用程序运行的物理节点上重复上述网络检测步骤确保应用程序能够连接到 taosd 服务必要时修正应用节点的 DNS 设置或 hosts 文件。第 4 步检查端口确保集群中所有主机在6030端口上的 TCP 能够互通。6030 是 taosd 的默认服务端口对应配置项serverPort。安装为了确保集群内各物理节点的一致性和稳定性请在所有物理节点上安装相同版本的 TDengine。安装包构建与安装流程可参考 install.cmake 与 INSTALLATION_GUIDE.md。修改配置修改 TDengine 的配置文件所有节点的配置文件都需要修改。配置文件默认位于/etc/taos/taos.cfg仓库中的 taos.cfg 给出了完整的配置模板与注释。假设准备启动的第 1 个 dnode 的 endpoint 为h1.taosdata.com:6030与集群配置相关的参数如下# firstEp 是每个 dnode 首次启动后连接的第 1 个 dnode firstEp h1.taosdata.com:6030 # 必须配置为本 dnode 的 FQDN如果本机只有一个 hostname可注释或删除如下这行代码 fqdn h1.taosdata.com # 配置本 dnode 的端口默认是 6030 serverPort 6030一定要修改的参数是firstEp和fqdn。对于每个 dnodefirstEp配置应保持一致都指向集群首个节点的 endpoint但fqdn一定要配置成其所在 dnode 自身的值。其他参数可不做修改除非你很清楚为什么要修改。firstEp和fqdn的语义在 taos.cfg 中有明确注释firstEp本 dnode 或 CLI 工具启动时要连接的首个集群 dnode 的 endpointhostname:6030格式fqdn本 dnode 所在主机的 FQDN也可以配置为 IP 地址serverPortdnode 启动后对外提供服务的端口默认 6030。加入集群的 dnode 必须保持一致性的参数对于希望加入集群的 dnode必须确保下表所列的与 TDengine 集群相关的参数设置完全一致。任何参数的不匹配都可能导致 dnode 无法成功加入集群。参数名称含义statusIntervaldnode 向 mnode 报告状态的间隔timezone时区locale系统区位信息及编码格式charset字符集编码ttlChangeOnWritettl 到期时间是否伴随表的修改操作而改变其中statusInterval的取值范围在 taos.cfg 中注明为[1..10]秒dnode 正是通过该心跳机制向 mnode 报告运行状态mnode 以此判断节点的在线状态源码中对应mndIsDnodeOnline的判断逻辑参见 mndMnode.c。启动按照前述步骤启动第 1 个 dnode例如h1.taosdata.com。接着在终端中执行taos启动 taos shell并执行show dnodes命令查看当前集群中的所有 dnode 信息taos show dnodes; id | endpoint | vnodes|support_vnodes|status| create_time | note | 1| h1.taosdata.com:6030 | 0| 1024| ready| 2022-07-16 10:50:42.673 | |可以看到刚刚启动的 dnode 的 endpoint 为h1.taosdata.com:6030这个地址就是新建集群的 firstEp。show dnodes的结果由 mnode 从系统库SDB中检索 dnode 信息生成相关实现见 mndDnode.c。添加 dnode按照前述步骤在每个物理节点启动taosd。每个 dnode 都需要在taos.cfg中将firstEp参数配置为新建集群首个节点的 endpoint本例为h1.taosdata.com:6030。然后在第 1 个 dnode 所在机器上运行taos打开 taos shell登录集群后执行如下 SQL将新 dnode 的 endpoint 加入集群的 endpoint 列表create dnode h2.taosdata.com:6030注意fqdn:port需要加上双引号否则运行时出错。请将示例中的h2.taosdata.com:6030替换为新 dnode 的实际 endpoint。创建完成后在日志中确认输出的 dnode 的 fqdn 和端口与你尝试添加的 endpoint 一致如果不一致请修正为正确的 endpoint。最后执行如下 SQL 查看新节点是否成功加入show dnodes;若要加入的 dnode 当前处于离线状态请参考本节后面的常见问题部分进行解决。从源码层面看create dnode的完整处理链路位于 mndDnode.c 的mndProcessCreateDnodeReqmnode 会先校验 fqdn 非空、端口合法0 port UINT16_MAX超出即返回TSDB_CODE_MND_INVALID_DNODE_EP再通过 endpoint 检查该 dnode 是否已存在已存在则返回TSDB_CODE_MND_DNODE_ALREADY_EXIST随后调用mndCreateDnode真正完成节点注册。这也是重复创建同一 endpoint 会报错的底层原因。Tips任何已经加入集群的 dnode 都可以作为后续待加入节点的firstEp。firstEp参数仅仅在该 dnode首次加入集群时起作用加入集群后该 dnode 会保存最新的 mnode endpoint 列表后续不再依赖这个参数。之后配置文件中的firstEp参数主要用于客户端连接——如果没有为taosshell 设置连接参数则默认连接由firstEp指定的节点。两个没有配置firstEp参数的 dnode 在启动后会独立运行此时无法将其中一个 dnode 加入另外一个 dnode 形成集群。TDengine不允许将两个独立的集群合并成新的集群。添加 mnode创建 TDengine 集群时首个 dnode 将自动成为集群的 mnode负责集群的管理和协调工作。为了实现 mnode 的高可用后续添加的 dnode 需要手动创建 mnode。请注意以下限制一个集群最多允许创建 3 个 mnode每个 dnode 上只能创建一个 mnode当集群中的 dnode 数量达到或超过 3 个时可以为现有集群创建 mnode。在第 1 个 dnode 上通过taosshell 登录 TDengine然后执行如下 SQLcreate mnode on dnode dnodeId请将dnodeId替换为刚创建 dnode 的序号可通过show dnodes命令获得。最后执行show mnodes查看新创建的 mnode 是否成功加入集群。源码中 mndMnode.c 的mndProcessCreateMnodeReq完整体现了上述限制目标 dnode 上已存在 mnode 时返回TSDB_CODE_MND_MNODE_ALREADY_EXISTdnode 不存在返回TSDB_CODE_MND_DNODE_NOT_EXIST当系统库中 mnode 数量达到 3 个时返回TSDB_CODE_MND_TOO_MANY_MNODESdnode 不在线返回TSDB_CODE_DNODE_OFFLINE。Tips添加 dnode 后节点始终离线Offline的排查步骤在搭建 TDengine 集群的过程中如果在执行create dnode命令添加新节点后新节点始终显示为离线状态请按照以下步骤排查第 1 步检查新节点上的 taosd 服务是否已经正常启动。可以通过查看日志文件或使用ps命令确认。第 2 步如果 taosd 服务已启动检查新节点的网络连接是否畅通并确认防火墙是否已关闭。网络不通或防火墙设置可能会阻止节点与集群的其他节点通信。第 3 步使用taos -h fqdn命令连接到新节点然后执行show dnodes命令观察新节点作为独立集群的运行状态。如果显示的列表与主节点上显示的不一致说明新节点可能已自行组成一个单节点集群。解决方法如下首先停止新节点上的 taosd 服务其次清空新节点上taos.cfg配置文件中dataDir目录下的所有文件默认数据目录为/var/lib/taos见 taos.cfg 中dataDir注释删除与该节点相关的所有数据和配置信息最后重新启动新节点上的 taosd 服务使新节点恢复到初始状态并重新加入主集群。部署 taosAdaptertaosAdapter为 TDengine 集群提供RESTful 和 WebSocket 接入能力在集群中扮演着很重要的角色。它的主要功能包括WebSocket 接口SQL 执行、无模式数据写入、参数绑定和数据订阅、InfluxDB v1 数据写入、OpenTSDB JSON/telnet 格式写入、collectd/StatsD/icinga2/TCollector 数据接入、Prometheus remote_read/remote_write、JSON 数据写入及 RESTful 接口等详见 03-taosadapter.md。安装TDengine 安装完成后即可使用 taosAdapter。如果想在不同的服务器上分别部署 taosAdapter需要在这些服务器上都安装 TDengine。单一实例部署部署单一实例非常简单直接启动服务即可Linux 下执行systemctl start taosadapter。taosAdapter 对外提供 HTTP/WebSocket 服务的默认端口为6041对应配置项port详见 03-taosadapter.md。更多配置参数请参考 taosAdapter 参考手册。多实例部署部署多个 taosAdapter 实例的主要目的如下提升集群吞吐量避免 taosAdapter 成为系统瓶颈提升集群的健壮性和高可用能力当一个实例故障而不再提供服务时可将进入业务系统的请求自动路由到其他实例。多实例部署时需要解决负载均衡问题避免某个节点过载而其他节点闲置。部署过程与单一实例完全相同——分别部署多个单一实例即可。接下来关键的部分是配置Nginx。以下是一个经过验证的较佳实践配置只须将其中的 endpoint 替换为实际环境中的正确地址即可各参数含义请参考 Nginx 官方文档user root; worker_processes auto; error_log /var/log/nginx_error.log; events { use epoll; worker_connections 1024; } http { access_log off; map $http_upgrade $connection_upgrade { default upgrade; close; } server { listen 6041; location ~* { proxy_pass http://dbserver; proxy_read_timeout 600s; proxy_send_timeout 600s; proxy_connect_timeout 600s; proxy_next_upstream error http_502 non_idempotent; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; } } server { listen 6043; location ~* { proxy_pass http://keeper; proxy_read_timeout 60s; proxy_next_upstream error http_502 http_500 non_idempotent; } } server { listen 6060; location ~* { proxy_pass http://explorer; proxy_read_timeout 60s; proxy_next_upstream error http_502 http_500 non_idempotent; } } upstream dbserver { least_conn; server 172.16.214.201:6041 max_fails0; server 172.16.214.202:6041 max_fails0; server 172.16.214.203:6041 max_fails0; } upstream keeper { ip_hash; server 172.16.214.201:6043 ; server 172.16.214.202:6043 ; server 172.16.214.203:6043 ; } upstream explorer{ ip_hash; server 172.16.214.201:6060 ; server 172.16.214.202:6060 ; server 172.16.214.203:6060 ; } }该配置同时代理了三条后端链路要点如下dbserver6041 端口对 taosAdapter 集群做负载均衡使用least_conn最少连接算法并把读/写超时放大到 600 秒以适配长查询与 WebSocket 长连接proxy_http_version 1.1配合Upgrade/Connection头用于支持 WebSocket 协议升级。keeper6043 端口对 taosKeeper 集群做负载均衡使用ip_hash算法保证同一客户端 IP 的请求稳定路由到同一后端实例。explorer6060 端口对 taosExplorer 集群做负载均衡同样使用ip_hash算法。部署 taosKeeper如果要使用 TDengine 的监控功能taosKeeper 是一个必要的组件。关于监控的使用请参考 TDinsight相对仓库根目录为 docs/zh/12-operations-and-tooling/03-components/08-tdinsight/index.md关于部署 taosKeeper 的细节请参考 taosKeeper 参考手册。部署时的关键约束摘自 05-taoskeeper.md启动前置条件在运行 taosKeeper 之前要确保 TDengine 集群与 taosAdapter 已经在正确运行并且 TDengine 已开启监控服务——在taos.cfg中至少需要配置monitor和monitorFqdn例如monitor 1 monitorFqdn localhost # taoskeeper 服务的 FQDN启动与运维Linux 下使用systemctl start taoskeeper启动服务并用systemctl status taoskeeper检查状态也支持systemctl restart/stop taoskeeper管理服务。若系统不支持 systemd可手动运行/usr/local/taos/bin/taoskeeper启动。健康检查可访问 taosKeeper 的check_health接口判断服务是否存活服务正常时返回 HTTP 200 状态码。多实例注意v2 内存缓存模式下TDengine 集群可能将监控数据分片上报到不同的 taoskeeper 实例单个实例只收到部分指标数据因此必须在 Prometheus 中配置所有 taoskeeper 实例的端点才能获取完整监控数据这正好对应上述 Nginx 配置中keeper负载均衡组的意义。部署 taosX如果想使用 TDengine 的数据接入能力如对接各类工业数据源需要部署taosX服务。它的详细说明和部署请参考企业版参考手册相关文档见 06-taosx.md。部署 taosX-Agent有些数据源如PI、OPC等由于网络条件和数据源访问的限制taosX 无法直接访问数据源。这种情况下需要部署一个代理服务taosX-Agent。它的详细说明和部署请参考企业版参考手册相关目录见 07-taosx-agent。部署 taosExplorerTDengine 提供了可视化管理 TDengine 集群的能力要想使用图形化界面需要部署taosExplorer服务。其详细说明和部署请参考 taosExplorer 参考手册。部署要点摘自 04-explorer.mdtaosExplorer无需单独安装从 TDengine v3.3.0.0 开始它随 TDengine 安装包一起发布安装完成后即可看到taos-explorer服务注自行编译源代码生成的安装包不包含 taosExplorer。服务默认绑定端口为6060配置文件项port默认绑定地址0.0.0.0配置项addr可用systemctl start taos-explorerLinux或sc.exe start taos-explorerWindows启动。安装完成后打开浏览器访问http://ip:6060即可进入图形化管理界面。总结手动部署 TDengine 集群的核心链路可以概括为先检查网络环境再统一安装同版本 TDengine修改firstEp/fqdn等关键配置后启动首个 dnode 形成集群通过create dnode逐步扩容节点通过create mnode实现管理节点高可用最后按需部署 taosAdapter含 Nginx 负载均衡、taosKeeper、taosX/taosX-Agent 与 taosExplorer。部署过程中最常见的两类问题及其解决方向如下新节点始终离线优先检查 taosd 服务状态、网络与防火墙再用taos -h fqdn检查新节点是否自组成单节点集群若是则清空dataDir后重启参数不一致导致无法入群确保statusInterval、timezone、locale、charset、ttlChangeOnWrite等集群相关参数在所有节点上完全一致。如果希望实现更自动化的部署方式还可以参考同目录下的 02-docker.mdDocker 部署与 03-kubernetes.mdKubernetes 部署。【免费下载链接】TDengineHigh-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考