首页 > 其他分享 >使用Docker部署TDengine集群

使用Docker部署TDengine集群

时间:2024-04-19 19:46:51浏览次数:17  
标签:TDengine tdengine 节点 集群 docker 6030 Docker

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 提供连接器的两种使用方式:

  1. 通过 TDengine 客户端驱动程序(taosc)原生连接 TDengine 实例
  2. 通过 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

标签:TDengine,tdengine,节点,集群,docker,6030,Docker
From: https://www.cnblogs.com/cralor/p/18146667

相关文章

  • centos6.5重启docker容器死机问题
      概述近期在整理服务问题,使用docker容器重新部署服务。过程中有不少坑,主要是系统配置和系统版本的问题。环境CentOSrelease6.5(Final)dockerversion1.7.1问题现象使用restart命令重启docker容器,系统突然卡死,并不断重启,重启3次后恢复。检查系统日志“/var/log/......
  • 性能测试——性能测试-课程-docker命令
    我自己的学习整理:https://www.cnblogs.com/xiaobaibailongma/category/2011457.html 课程截图——简介版本:        ......
  • 使用 Docker 部署 Draw.io 在线流程图系统
    1)介绍Draw.ioGitHub:https://github.com/jgraph/drawioDraw.io是一款开源的绘制流程图的工具,拥有大量免费素材和模板。程序本身支持中文在内的多国语言,创建的文档可以导出到多种网盘或本地。无论是创建流程图、组织结构图、网络拓扑图还是其他类型的图表,Draw.io基本都能满足......
  • 6.Centos7 安装最新版本 Kubernetes + Docker
    在Centos7安装最新版本Kubernetes+Docker1.容器运行时说明:v1.24之前的Kubernetes版本直接集成了DockerEngine的一个组件,名为dockershim。自1.24版起,Dockershim已从Kubernetes项目中移除。需要在集群内每个节点上安装一个容器运行时以使Pod可以运行在上面......
  • docker部署苍穹外卖
    首先修改配置信息和自己的docker部署信息相符:MySQL、redis。记得把MySQL数据导上去(记得数据库信息的完整) 1.通过maven下载三个jar包 2.上传,编写dockerfile,注意这些文件放在一级,注意dockerfile的命名 #使用JDK8作为基础镜像FROMopenjdk:8-jdk#创建一个目录用......
  • 在副本集和分片集群上构建 MongoDB 索引
    1.限制留有足够的内存来容纳工作集是非常重要的。不一定所有索引都要放在内存中。在v4.0之前,索引键的限制应小于1024字节。从v4.2版开始,这一限制被取消。索引名也是如此,在使用fcv4.0及以下版本的数据库中,索引名的最大长度为127字节。在dbv4.2和fcv4.2中,这一......
  • Kubernetes(k8s)与docker的区别
    k8s与docker的区别Kubernetes(通常简称为"k8s")和Docker是两个不同的技术,它们在容器化应用程序方面扮演着不同的角色。Docker是一种开源的容器化技术,它允许应用程序在一个独立、可移植的容器中运行。容器化是一种将应用程序及其所有依赖项打包到一个独立、可移......
  • 【Docker】临时起意用docker在阿里云ECS上部署项目遇到的坑
    我的小项目用到了两个springboot搭建的模块,还有mysql,redis,rabbitmq。因为不了解docker中网络协议栈的隔离而导致一个简单的部署花了我一天时间。关于容器之间端口的映射,可以运行如下命令来查看:[root@iZwz9337zr98g77j7a141hZ~]#dockerps-aCONTAINERIDIMAGE......
  • docker容器内部CLOSE_WAIT调优
    这2天遇见一个神奇的事情使用netstat-pan|grepCLOSE_WAIT|wc-l命令对docker宿主机上CLOSE_WAIT状态统计出来为0,进入到容器内部发现CLOSE_WAIT状态已经600多了。来吧,操作起来,先研究研究官方文档https://docs.docker.com/compose/compose-file/05-services/如何配置首先我们需......
  • docker - [03] docker原理
    题记 一、Docker是怎么工作的Docker是一个CS(Client-Server)结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问、DockerServer接收到DockerClient的指令就会执行、 二、Docker为什么比虚拟机快1、docker有着比虚拟机更少的抽象层2、docker利用的是宿主......