GaussDB(DWS)集群拓扑详解
逻辑拓扑介绍
DWS集群物理上由3到多个节点组成,目前最大支持256节点。节点可以是ECS,也可以是BMS。
DWS逻辑上包括OM,CM,GTM,WLM,CN,DN六种类型的实例组件,每类组件提供的功能不动,配置的数量也不同,但是共同配合,支撑DWS的运维和业务功能。
想要了解DWS组件,首先再介绍下典型的耳熟能详的DWS集群逻辑架构图。
- OM:运维管理组件,提供触发式运维管理功能。每个节点都部署。
- CM:集群管理组件,提供自动化集群管理功能。每个节点都部署。
- GTM:全局事务管理,负责生成和维护全局事务ID、事务快照、时间戳等全局唯一的信息。DWS集群部署2个,一主一备,分布在不同的节点上。
- WLM:工作负载管理,控制系统资源的分配,防止过量业务负载对系统的冲击而导致业务拥塞和系统崩溃。内置在CN,DN实例内。
- CN:协调节点。负责接收来自应用的访问请求,并向客户端返回执行结果;负责分解任务,并调度任务分片在各DN上并行执行。决定了对外提供的业务访问能力,默认部署2个,最大支持5个,可以在console上增删CN实例。
- DN:数据节点。负责存储业务数据(支持行存、列存、混合存储)、执行数据查询任务以及向CN返回执行结果。决定了对外提供的业务处理能力,根据节点规格,每个节点部署2-4个,DWS目前最大支持1024个。
实例ID介绍
如上,DWS包括6类实例,每类实例也支持部署多个不等。在大集群下,这些实例的配合将会特别复杂。那DWS是怎么管理这些实例的呢?
首先,DWS给每类实例的每一个实例都分配了一个ID来唯一标示这个实例。
- CM-om_monitor:无编号
- CM-cm_server:主编号:1,备编号:2
- CM-cm_agent:按节点顺序编号,区间[10001,19999]
- CM-etcd:按节点顺序编号,区间[7001,10000]
- gtm:主编号:1001,备编号:1002
- CN:按节点顺序编号,区间[5001,6000] --pgxc_node加前缀cn_
- DN-主机/备机:按节点顺序编号,区间[6001,6999] [40000,int_max] --奇数位为master datanode,下一个偶数位为对应的standby datanode --pgxc_node加前缀dn_
- DN-从备:按节点顺序编号,区间[3002,4999] [20000,39999]
安全环介绍
每个实例已经分配了一个唯一编号,那下一步就是如何组织部署这些实例ID,从而达到可靠性,性能,均衡性的最优解。DWS提出了安全环的概念。
安全环是指DN多副本横向部署的最小主机集合。安全环主要作用是故障隔离,可以抵抗节点故障(物理主机)带来的损失。环内主机出现故障,故障不会扩散到环外。如果环内某一单节点故障,所有DN在环内都有副本存在,数据不会丢失。例如Server1发生故障后,DN1的备节点在Server2上,DN2的备节点在Server3上,DN3的节点在Server3上。每个Server运行4个主DN,环内的各主机性能仍然保证均衡。整个集群可以承受的主机故障的最小数为1台,最大数为安全环的数量。
DWS属于主备从架构,因此最小安全环节点数为3个节点。环内出现故障时,对环外无影响,对整个集群的影响的节点范围最小(3节点),对环内每个节点的影响为1/(N-1),即1/2。极端场景下整个集群是一个安全环。环内出现故障,对整个集群的影响的节点范围最大(整个集群),对环内每个节点的影响最小,为1/(N-1)。一种常见的做法是N+1成环,每个节点把他的N个备机均匀分散部署到环内的其余N个节点上。环内出现故障时,对整个集群的影响的节点范围为N+1,对环内每个节点的影响为1/N。
DWS历史版本为3节点成环,末尾不足3节点的追加到上个环。8.1后修改为N+1节点成环,末尾不足成环的节点全部追加到上个安全环。N为每个节点部署的DN数量。
通讯矩阵介绍
DWS网络通道可分运维通道和业务通道。
OM运维操作,CM管理GTM,CN,DN走运维通道,即运维面。
业务接入时,CN,GTM,DN间通信走业务通道,即业务面。
典型的组网结构如下,详细的通讯矩阵可参见产品文档《通讯矩阵》。
三者关联关系
DWS实例ID,集群拓扑,通讯矩阵虽然都是部署架构层面上的事情,但是又是密切关联。通过集群拓扑可以了解CN,DN的部署情况,DN主备的分布情况。进一步了解节点的负载情况,节点故障时影响的实例范围等。
可以通过系统表pgxc_node清晰的看到三者的关联关系。
如下是个三节点集群,总共3个CN,6个DN的集群配置。我们将逐个详解:
node_type |
C代表CN,D代表DN |
node_name |
实例名称,cn或者dn前缀,后面为实例id, DN有两个分别为主及和对应备机的实例id。 |
node_host |
CN或DN主机的IP地址。 |
node_host1 |
DN备机的IP地址。通过node_host和node_host1可以看到该DN主备的部署位置,从而看出安全环信息。 |
node_port |
CN或者主DN的监听端口号。 |
node_port1 |
备DN的监听端口号 |
sctp_port |
主节点使用TCP代理通信库或SCTP通信库的数据通道监听端口。 |
control_port |
主节点使用TCP代理通信库或SCTP通信库的控制通道监听端口。 |
sctp_port1 |
备节点使用TCP代理通信库或SCTP通信库的数据通道监听端口。 |
control_port1 |
备节点使用TCP代理通信库或SCTP通信库的控制通道监听端口。 |
nodeis_central |
标识CN是否为主CN。 |
hostis_primary |
表明当前节点是否发生主备切换。 |
nodeis_primary |
在replication表下,是否优选当前节点作为优先执行的节点进行非查询操作。 |
nodeis_preferred |
在replication表下,是否优选当前节点作为首选的节点进行查询。 |
- 点赞
- 收藏
- 关注作者
评论(0)