TDengine集群部署
TDengine 是一款高性能、分布式、支持 SQL 的时序数据库 (Database)。
1. 集群管理
TDengine 支持集群,提供水平扩展的能力。如果需要获得更高的处理能力,只需要多增加节点即可。TDengine 采用虚拟节点技术,将一个节点虚拟化为多个虚拟节点,以实现负载均衡。同时,TDengine可以将多个节点上的虚拟节点组成虚拟节点组,通过多副本机制,以保证供系统的高可用。
v2.6
https://docs.taosdata.com/2.6/cluster/
v3.0
https://docs.taosdata.com/deployment/
Arbitrator
TDengine中的Arbitrator类似于PostgreSQL中的witness服务,防止集群出现脑裂(split brain)。
如果副本数(replicas)为偶数,当一个 vnode group 里一半或超过一半的 vnode 不工作时,是无法从中选出 master 的。同理,一半或超过一半的 mnode 不工作时,是无法选出 mnode 的 master 的,因为存在“split brain”问题。
为解决这个问题,TDengine 引入了 Arbitrator 的概念。Arbitrator 模拟一个 vnode 或 mnode 在工作,但只简单的负责网络连接,不处理任何数据插入或访问。只要包含 Arbitrator 在内,超过半数的 vnode 或 mnode 工作,那么该 vnode group 或 mnode 组就可以正常的提供数据插入或查询服务。比如对于副本数为 2 的情形,如果一个节点 A 离线,但另外一个节点 B 正常,而且能连接到 Arbitrator,那么节点 B 就能正常工作。
2.6版本下,TDengine 建议在双副本环境要配置 Arbitrator,以提升系统的可用性。
3.0的版本中,官方文档并没有提及Arbitrator。
taosAdapter
提供了一种使用restful接口直接访问TD数据的方式。
taosAdapter 是一个 TDengine 的配套工具,是 TDengine 集群和应用程序之间的桥梁和适配器。它提供了一种易于使用和高效的方式来直接从数据收集代理软件(如 Telegraf、StatsD、collectd 等)摄取数据。它还提供了 InfluxDB/OpenTSDB 兼容的数据摄取接口,允许 InfluxDB/OpenTSDB 应用程序无缝移植到 TDengine。
连接器是 TDengine 的一个重要组成部分,它可以让用户通过不同的编程语言和接口方式与 TDengine 数据库进行交互,执行 SQL 语句,实现数据的插入、查询、订阅等操作。TDengine 提供连接器的两种使用方式:
- 通过 TDengine 客户端驱动程序(taosc)原生连接 TDengine 实例
- 通过 taosAdapter 提供的 REST 接口连接 TDengine 实例
连接器的优点有以下几点:
- 易用性:连接器支持多种编程语言,用户可以根据自己的喜好和需求选择合适的语言进行开发,无需学习新的语法或框架。
- 兼容性:连接器支持 SQL 语言,可以与众多第三方工具无缝集成,方便用户进行数据分析和可视化。
- 灵活性:连接器支持两种接口方式,即原生接口和 REST 接口,用户可以根据自己的网络环境和性能需求选择合适的方式进行连接。
- 功能性:连接器支持 TDengine 的全部或部分功能特性,如参数绑定、数据订阅、Schemaless 等,提供了丰富的 API 和示例代码,帮助用户快速实现自己的业务逻辑。
serverPort
2.6
https://docs.taosdata.com/2.6/reference/config/#serverport
属性 | 说明 |
---|---|
适用范围 | 仅服务端适用 |
含义 | taosd 启动后,对外服务的端口号 |
缺省值 | 6030 |
补充说明 | RESTful 服务在 2.4.0.0 之前(不含)由 taosd 提供,默认端口为 6041; 在 2.4.0.0 及后续版本由 taosAdapter,默认端口为 6041 |
note: 确保集群中所有主机在端口 6030-6042 上的 TCP/UDP 协议能够互通。(详细的端口情况请参见下表)
协议 | 默认端口 | 用途说明 | 修改方法 |
---|---|---|---|
TCP | 6030 | 客户端与服务端之间通讯。 | 由配置文件设置 serverPort 决定。 |
TCP | 6035 | 多节点集群的节点间通讯。 | 随 serverPort 端口变化。 |
TCP | 6040 | 多节点集群的节点间数据同步。 | 随 serverPort 端口变化。 |
TCP | 6041 | 客户端与服务端之间的 RESTful 通讯。 | 随 serverPort 端口变化。注意 taosAdapter 配置或有不同,请参考相应文档。 |
TCP | 6042 | Arbitrator 的服务端口。 | 随 Arbitrator 启动参数设置变化。 |
TCP | 6043 | TaosKeeper 监控服务端口。 | 随 TaosKeeper 启动参数设置变化。 |
TCP | 6044 | 支持 StatsD 的数据接入端口。 | 随 taosAdapter 启动参数设置变化(2.3.0.1+以上版本)。 |
UDP | 6045 | 支持 collectd 数据接入端口。 | 随 taosAdapter 启动参数设置变化(2.3.0.1+以上版本)。 |
TCP | 6060 | 企业版内 Monitor 服务的网络端口。 | |
UDP | 6030-6034 | 客户端与服务端之间通讯。 | 随 serverPort 端口变化。 |
UDP | 6035-6039 | 多节点集群的节点间通讯。 | 随 serverPort 端口变化。 |
6030-6034端口负责客户端和服务端的通信。而6035-6040端口存在多节点集群之间的通讯和数据同步。6041 RestFul通讯,6042 Arbitrator
3.0
https://docs.taosdata.com/reference/config/#serverport
属性 | 说明 |
---|---|
适用范围 | 仅服务端适用 |
含义 | taosd 启动后,对外服务的端口号 |
缺省值 | 6030 |
note: 确保集群中所有主机在端口 6030 上的 TCP 协议能够互通。(详细的端口情况请参见下表)
协议 | 默认端口 | 用途说明 | 修改方法 |
---|---|---|---|
TCP | 6030 | 客户端与服务端之间通讯,多节点集群的节点间通讯。 | 由配置文件设置 serverPort 决定。 |
TCP | 6041 | 客户端与服务端之间的 RESTful 通讯。 | 随 serverPort 端口变化。注意 taosAdapter 配置或有不同,请参考相应文档。 |
TCP | 6043 | taosKeeper 监控服务端口。 | 随 taosKeeper 启动参数设置变化。 |
TCP | 6044 | 支持 StatsD 的数据接入端口。 | 随 taosAdapter 启动参数设置变化 |
UDP | 6045 | 支持 collectd 数据接入端口。 | 随 taosAdapter 启动参数设置变化 |
TCP | 6060 | 企业版内 Monitor 服务的网络端口。 |
部署测试
使用docker部署的方式,参考3.0的集群部署。
版本: 2.6
方式:docker
配置文件taos.cfg:fqdn:port
docker(失败)
TDengine 集群的每个节点是由 End Point 来唯一标识的,End Point 是由 FQDN 外加 Port 组成,比如 h1.tdengine.com:6030。
在docker容器内部,由于容器与主机网络是隔离的,td解析fqdn失败,运行td失败。
可以设置--network host
让容器直接使用主机的网络配置(ip+port),可以成功部署td集群。(不如直接安装TD