GaussDB (DWS) 集群管理系列: CMS通信机制介绍

举报
kleinerFuchs 发表于 2021/02/05 14:44:27 2021/02/05
【摘要】 CMS数据库实例CMS即GaussDB(DWS)集群管理模块(Cluster Manager Server)缩写,是管理和监控分布式系统中各个功能单元和物理资源运行情况,确保整个系统稳定运行的组件。CMS模块分为CMS_Primary和CMS_Standby,作为高可用的一部分,CMS主在故障后,备CMS会自动升为主CMS,避免出现CMS单节点故障。此外,CMS能够对CMAgent上报的集群...

CMS数据库实例

CMS即GaussDB(DWS)集群管理模块(Cluster Manager Server)缩写,是管理和监控分布式系统中各个功能单元和物理资源运行情况,确保整个系统稳定运行的组件。


image-20210205094235661.png



CMS模块分为CMS_Primary和CMS_Standby,作为高可用的一部分,CMS主在故障后,备CMS会自动升为主CMS,避免出现CMS单节点故障。此外,CMS能够对CMAgent上报的集群实例状态做仲裁,判断当前状态是否正常,是否需要修复,并下发指令给CMAgent执行。

CMS通信对象

集群管理中,CM通信主要分为三个对象,分别为:

1、CMA:CMA周期性上报实例GTM,CN,DN状态给CMS,并发送心跳,CMS将仲裁结果下发command给CMA,实现实例重启、主备倒换、failover升主、实例build等操作,其中使用消息类型对各个command进行区分。

2、cm_ctl:cm_ctl查询集群状态,做switchover、build、query等操作时,需要与cms通信,查询操作由cms返回相关数据,集群使能操作通过cms进行转发。

3、CMS主备间通信:CMS主备间通信涉及到集群HA特性,主要用于同步对集群状态监控的数据,并且作为选主操作时候同步信息。

CMS通信的基本方式

CMS底层使用TCP/IP协议进行通信,socket的建立以及通信过程中的收发使用内部通信库完成。其中CMS会建立两个socket端口,如下图所示,其中端口号小的与CMA和cm_ctl进行通信,端口号大的与cms进行主备通信,两个socket可以区分开来,实现通信模型上互不干扰。

tcp        0      0 192.168.233.17:6850     0.0.0.0:*               LISTEN      26087/cm_server
tcp        0      0 192.168.226.35:6851     0.0.0.0:*               LISTEN      7632/cm_server

此外,由于CMS主备通信的连接数有限,但是CMA和cm_ctl的连接数较多,所以会使用不同的通信模型。其中前者使用select模型,后者使用epoll模型+线程池技术。两者都是典型的I/O多路复用技术,即当socket具备读或者写的状态,会触发相应的事件通知,这样多个文件描述符就能够并行的完成相应的工作,提高系统的并发程度。

CMS通信的实现

1、线程池模型

为了提高系统的并发程度和效率,当集群节点数增多,并且在运行过程中需要频繁查询集群状态时候,需要有大量的CMA和cm_ctl对CMS进行访问。CMS为此开辟了专门的线程负责线程池的管理工作,并使用epoll IO多路复用机制。具体线程池接入流程如下图所示:

1)cms主线程

online  epoll.PNG

2)CMS线程池事件处理流程

online  process.PNG


以上流程图可以看出,CMS主线程主要负责分发事件,每个cm_ctl、cma的连接由线程池内线程去完成。

2、select方式

CMS主备之间由于通信压力不大,只有两个实例之间通讯,所以主要采用select轮询的方式。每一个HA线程周期,从socket中select已经具备通信条件的文件描述符,完成消息的收发,实现命令消息同步和选主消息的发送。

GaussDB(DWS)博文后缀.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。