ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TDengine集群安装部署(图文结合版)

2021-12-24 11:34:02  阅读:441  来源: 互联网

标签:TDengine mnode vnode 集群 dnode 数据 节点 图文


文章目录


一、简介

服务器配置 数量 4 个

组件配置描述
CPU4核
内存16G
硬盘500G
操作系统CentOS Linux release 7.9.2009
网络内网

在这里插入图片描述
一个完整的 TDengine 系统是运行在一到多个物理节点上的,逻辑上,它包含数据节点(dnode)、TDengine 应用驱动(taosc)以及应用(app)。系统中存在一到多个数据节点,这些数据节点组成一个集群(cluster)。应用通过 taosc 的 API 与 TDengine 集群进行互动。下面对每个逻辑单元进行简要介绍。

物理节点(pnode): pnode 是一独立运行、拥有自己的计算、存储和网络能力的计算机,可以是安装有OS的物理机、虚拟机或 Docker 容器。物理节点由其配置的 FQDN (Fully Qualified Domain Name)来标识。TDengine 完全依赖 FQDN 来进行网络通讯,如果不了解 FQDN,请看博文《一篇文章说清楚 TDengine 的 FQDN》

数据节点(dnode): dnode 是 TDengine 服务器侧执行代码 taosd 在物理节点上的一个运行实例,一个工作的系统必须有至少一个数据节点。dnode 包含零到多个逻辑的虚拟节点(vnode),零或者至多一个逻辑的管理节点(mnode)。dnode 在系统中的唯一标识由实例的 End Point (EP)决定。EP 是 dnode 所在物理节点的 FQDN (Fully Qualified Domain Name)和系统所配置的网络端口号(Port)的组合。通过配置不同的端口,一个物理节点(一台物理机、虚拟机或容器)可以运行多个实例,或有多个数据节点。

虚拟节点(vnode): 为更好的支持数据分片、负载均衡,防止数据过热或倾斜,数据节点被虚拟化成多个虚拟节点(vnode,图中 V2, V3, V4等)。每个 vnode 都是一个相对独立的工作单元,是时序数据存储的基本单元,具有独立的运行线程、内存空间与持久化存储的路径。一个 vnode 包含一定数量的表(数据采集点)。当创建一张新表时,系统会检查是否需要创建新的 vnode。一个数据节点上能创建的 vnode 的数量取决于该数据节点所在物理节点的硬件资源。一个 vnode 只属于一个 DB,但一个 DB 可以有多个 vnode。一个 vnode 除存储的时序数据外,也保存有所包含的表的 schema、标签值等。一个虚拟节点由所属的数据节点的EP,以及所属的 VGroup ID 在系统内唯一标识,由管理节点创建并管理。

管理节点(mnode): 一个虚拟的逻辑单元,负责所有数据节点运行状态的监控和维护,以及节点之间的负载均衡(图中 M)。同时,管理节点也负责元数据(包括用户、数据库、表、静态标签等)的存储和管理,因此也称为 Meta Node。TDengine 集群中可配置多个(开源版最多不超过 3 个) mnode,它们自动构建成为一个虚拟管理节点组(图中 M0, M1, M2)。mnode 间采用 master/slave 的机制进行管理,而且采取强一致方式进行数据同步, 任何数据更新操作只能在 Master 上进行。mnode 集群的创建由系统自动完成,无需人工干预。每个 dnode 上至多有一个 mnode,由所属的数据节点的EP来唯一标识。每个 dnode 通过内部消息交互自动获取整个集群中所有 mnode 所在的 dnode 的EP。

虚拟节点组(VGroup): 不同数据节点上的 vnode 可以组成一个虚拟节点组(vnode group)来保证系统的高可靠。虚拟节点组内采取 master/slave 的方式进行管理。写操作只能在 master vnode 上进行,系统采用异步复制的方式将数据同步到 slave vnode,这样确保了一份数据在多个物理节点上有拷贝。一个 vgroup 里虚拟节点个数就是数据的副本数。如果一个 DB 的副本数为 N,系统必须有至少 N 数据节点。副本数在创建DB时通过参数 replica 可以指定,缺省为 1。使用 TDengine 的多副本特性,可以不再需要昂贵的磁盘阵列等存储设备,就可以获得同样的数据高可靠性。虚拟节点组由管理节点创建、管理,并且由管理节点分配一个系统唯一的 ID,VGroup ID。如果两个虚拟节点的 vnode group ID 相同,说明他们属于同一个组,数据互为备份。虚拟节点组里虚拟节点的个数是可以动态改变的,容许只有一个,也就是没有数据复制。VGroup ID 是永远不变的,即使一个虚拟节点组被删除,它的ID也不会被收回重复利用。

TAOSC: taosc 是 TDengine 给应用提供的驱动程序(driver),负责处理应用与集群的接口交互,提供 C/C++ 语言原生接口,内嵌于 JDBC、C#、Python、Go、Node.js 语言连接库里。应用都是通过 taosc 而不是直接连接集群中的数据节点与整个集群进行交互的。这个模块负责获取并缓存元数据;将插入、查询等请求转发到正确的数据节点;在把结果返回给应用时,还需要负责最后一级的聚合、排序、过滤等操作。对于 JDBC、C/C++、C#、Python、Go、Node.js 接口而言,这个模块是在应用所处的物理节点上运行。同时,为支持全分布式的 RESTful 接口,taosc 在 TDengine 集群的每个 dnode 上都有一运行实例。

二、安装步骤

2.1服务端配置工作

2.1.1.查看服务器ip地址 ifconfig

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.2.修改hostname

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.1.3.配置hosts文件

在这里插入图片描述
在这里插入图片描述
taos02服务 与 taos03服务 同样在hosts文件 加入相同配置

2.2.客户端配置工作

2.2.1.不同系统安装客户端

Windows

在这里插入图片描述
在这里插入图片描述
安装完成后,配置hosts文件,默认在C:\Windows\System32\drivers\etc
在这里插入图片描述

测试是否配置成功
在这里插入图片描述

Linux

在这里插入图片描述
安装完成后,配置hosts文件
默认文件地址 /etc/hosts
在这里插入图片描述

2.2.2.修改taos.cfg 配置

Windows

默认文件地址在 C:\TDengine\cfg
在这里插入图片描述

Linux

默认文件地址 /etc/taos
在这里插入图片描述

2.3.服务端安装工作

2.3.1.开放端口

在这里插入图片描述
需要开放TCP/UDP 6030-6042

firewall-cmd --zone=public --add-port=6030-6042/tcp --permanent

firewall-cmd --zone=public --add-port=6030-6042/udp --permanent

命令含义:

–zone #作用域

–add-port=9200/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

注意:添加端口后,必须用命令firewall-cmd --reload重新加载一遍才会生效

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3.2.上传服务端安装包

并解压
在这里插入图片描述
解压安装包
在这里插入图片描述
进入解压后的安装包,执行install.sh文件进行安装
在这里插入图片描述
注意:这时候先不要启动taos服务

2.3.3.服务端修改taos.cfg

默认/etc/taos

服务端需修改firsEp 与fqdn
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
一定要修改的参数是firstEp和fqdn。在每个数据节点,firstEp需全部配置成一样,但fqdn一定要配置成其所在数据节点的值。其他参数可不做任何修改,除非你很清楚为什么要修改。

加入到集群中的数据节点dnode,涉及集群相关的下表参数必须完全相同,否则不能成功加入到集群中。
在这里插入图片描述

2.3.4.启动第一个taos服务

在这里插入图片描述

2.3.5.客户端测试连接

在这里插入图片描述

2.4.搭建集群

动态加入后续节点

启动taos02服务,并且把taos02加入集群
在这里插入图片描述
在这里插入图片描述
启动taos03服务,并且把taos03加入集群
在这里插入图片描述
在这里插入图片描述
则集群部署完成

2.5.扩展

TDengine通过多副本的机制来提供系统的高可用性,包括vnode和mnode的高可用性。

2.5.1.Vnode高可用

TDengine通过多副本的机制来提供系统的高可用性,包括vnode和mnode的高可用性。

vnode的副本数是与DB关联的,一个集群里可以有多个DB,根据运营的需求,每个DB可以配置不同的副本数。创建数据库时,通过参数replica 指定副本数(缺省为1)。如果副本数为1,系统的可靠性无法保证,只要数据所在的节点宕机,就将无法提供服务。集群的节点数必须大于等于副本数,否则创建表时将返回错误"more dnodes are needed"。比如下面的命令将创建副本数为3的数据库demo:

CREATE DATABASE demo replica 3;

一个DB里的数据会被切片分到多个vnode group,vnode group里的vnode数目就是DB的副本数,同一个vnode group里各vnode的数据是完全一致的。为保证高可用性,vnode group里的vnode一定要分布在不同的数据节点dnode里(实际部署时,需要在不同的物理机上),只要一个vgroup里超过半数的vnode处于工作状态,这个vgroup就能正常的对外服务。

一个数据节点dnode里可能有多个DB的数据,因此一个dnode离线时,可能会影响到多个DB。如果一个vnode group里的一半或一半以上的vnode不工作,那么该vnode group就无法对外服务,无法插入或读取数据,这样会影响到它所属的DB的一部分表的读写操作。

因为vnode的引入,无法简单地给出结论:“集群中过半数据节点dnode工作,集群就应该工作”。但是对于简单的情形,很好下结论。比如副本数为3,只有三个dnode,那如果仅有一个节点不工作,整个集群还是可以正常工作的,但如果有两个数据节点不工作,那整个集群就无法正常工作了。

2.5.2.Mnode高可用

TDengine集群是由mnode (taosd的一个模块,管理节点) 负责管理的,为保证mnode的高可用,可以配置多个mnode副本,副本数由系统配置参数numOfMnodes决定,有效范围为1-3。为保证元数据的强一致性,mnode副本之间是通过同步的方式进行数据复制的。

一个集群有多个数据节点dnode,但一个dnode至多运行一个mnode实例。多个dnode情况下,哪个dnode可以作为mnode呢?这是完全由系统根据整个系统资源情况,自动指定的。用户可通过CLI程序taos,在TDengine的console里,执行如下命令:

SHOW MNODES;

来查看mnode列表,该列表将列出mnode所处的dnode的End Point和角色(master, slave, unsynced 或offline)。当集群中第一个数据节点启动时,该数据节点一定会运行一个mnode实例,否则该数据节点dnode无法正常工作,因为一个系统是必须有至少一个mnode的。如果numOfMnodes配置为2,启动第二个dnode时,该dnode也将运行一个mnode实例。

为保证mnode服务的高可用性,numOfMnodes必须设置为2或更大。因为mnode保存的元数据必须是强一致的,如果numOfMnodes大于2,复制参数quorum自动设为2,也就是说,至少要保证有两个副本写入数据成功,才通知客户端应用写入成功。

注意:一个TDengine高可用系统,无论是vnode还是mnode, 都必须配置多个副本。

2.5.3.负载均衡

有三种情况,将触发负载均衡,而且都无需人工干预。

(1)当一个新数据节点添加进集群时,系统将自动触发负载均衡,一些节点上的数据将被自动转移到新数据节点上,无需任何人工干预。

(2)当一个数据节点从集群中移除时,系统将自动把该数据节点上的数据转移到其他数据节点,无需任何人工干预。

(2)如果一个数据节点过热(数据量过大),系统将自动进行负载均衡,将该数据节点的一些vnode自动挪到其他节点。

当上述三种情况发生时,系统将启动各个数据节点的负载计算,从而决定如何挪动。

【提示】负载均衡由参数balance控制,它决定是否启动自动负载均衡。

更多关于集群部署相关知识 http://https://www.taosdata.com/cn/documentation/cluster#prepare

标签:TDengine,mnode,vnode,集群,dnode,数据,节点,图文
来源: https://blog.csdn.net/weixin_44499403/article/details/122121926

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有