暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

海量智库第18期 | 海量数据库集群资源管理软件Cluster Manager 详解

海量数据 2023-09-28
636


CM(Cluster Manager)是一款针对Vastbase数据库的集群资源管理软件,提供了数据库主备的状态监控、故障自动主备切换、网络通信故障监控、文件系统故障监控等能力,支持自定义资源监控。


集群管理主要功能有:

实现对DN主备的监控,监控内容包括这些节点的运行状态,网络通信故障,文件系统故障。集群启动时仲裁主备关系;在主节点出现故障时,自动进行主备间的切换;在网络故障导致节点失效时进行故障修复。

实现集群、节点、实例的启动和停止。

提供集群状态查询、主备切换、状态重置等工具。



集群管理组网



以一主两备为例,CM组网图如上所示。

组件包括4个可执行文件:

cm_server

cm的服务端,负责收集cm_agent上报的状态,并作为仲裁中心和全局配置中心,集群能否稳定运行以及在发生单点故障后,备实例能否正常切换为主来保证集群的可用性,都与cm_server是否稳定相关。

cm_agent

通常集群中的每台机器都安装一个,负责管理本节点所有实例的状态检测和上报以及cm_server下发命令的执行。

om_monitor

通常集群中的每台机器都安装一个,负责保障本节点cm_agent进程以及monitor自身进程的健康。

cm_ctl

cm的客户端工具,提供集群管理操作。


cm_agent


cm_agent负责各节点的状态检测和上报,其主要线程解读如下:

1

cm_agent对于cm_server创建一个线程,该线程与CMServer建立长连接,每隔1秒,逐个上报该节点所有实例状态信息,异步处理消息。

2

cm_agent逐个上报节点状态信息,以及cms心跳检测,超过10秒未收到心跳消息则打印超时。

3

cm_agent为本节点上每个实例创建一个线程,每个线程都与对应的实例建立长连接,每1秒查询一次该实例的状态信息。

4

cm_agent创建磁盘使用率检查线程,使用系统statfs函数监控数据目录和日志目录的磁盘使用率,一旦磁盘使用率达到设定阈值时,会将集群设为只读。

5

cm_agent创建磁盘损坏检测线程,通过在指定路径下新建disc_readonly_test文件对指定目录进行读写测试,完成后删除文件。若发现磁盘损坏则停止实例并上报磁盘损坏状态。

6

cm_agent会创建一些进程状态检测线程,负责:

· 若无启停标志文件限制,检测到进程不存在且满足进程拉起条件,则拉起进程。

· 若存在启停标志文件,就停止进程。通过进程检测,确认进程是否停止。

· 在实例状态检测时发现进程不存在,会结合磁盘检测网卡检测等检测手段,确认实例故障原因并上报仲裁模块。

· 获取进程运行状态,若进程出现T、D、Z,则确认进程僵死,并上报仲裁模块处理。

cm_server

1

cm_server主线程,接受cm_ctl和cm_agent连接,并为其分配服务线程。

2

cm_server仲裁处理线程,负责处理cm_agent和cm_ctl消息。数量可配,默认五个,其中一个处理cm_ctl消息。

3

cm_serverHA线程, 负责cm_server主备的自仲裁。

4

cm_server监控线程,监控实例心跳,心跳超时后,重置实例状态为Down。


主要故障场景及处理策略

当数据库主机发生不可恢复的故障而无法继续提供服务时,集群管理会感知并基于qurom协议,进行选主仲裁。CM的仲裁都是使用的状态机模式,依据当前数据库状态进行仲裁逻辑的推进。cms周期性的检测数据库的主备状态,如果发现主机不能够正常提供服务,则会触发选主仲裁。


状态:无主


操作:给所有备机发送命令,使其进入LOCK1状态。

说明: 如果备机此时连接主机,则lock1不会成功。Lock1状态成功主要有两个条件:1)备机与主机复制链路永久断开且不再主动重连。2)备机日志全部回放结束,不再增加。

状态:(n+1)/2个备机已经进入LOCK1状态


操作:选合适的主,发送failover

说明:根据qurom的特点,当(n+1)/2个备机进入LOCK1状态后,这几个备机中一定有至少1个同步备,cms从这几个备机中找到日志最多的节点(一定是同步备),发送升主命令。如果有多个满足条件的备机,则按照以下策略:

(1)原主能起来,则选原主。

(2)选择与原主同AZ的。

(3)按节点顺序。

状态:新主升主成功


操作:给主备机发送unlock/lock2消息,恢复成正常状态

说明:如果主机处于lock1状态,则给主机发送unlock消息使其退出lock1状态,如果备机处于lock1状态,则给备机发送lock2消息,指定新主ip,使其连接新主。

通过以上逻辑,CM保证了集群永远只有一个可写主机。

图文编辑|程筱淇

内容审核|市场营销部


于海量数据

北京海量数据技术股份有限公司(股票代码:603138.SH)成立于2007年,是国内首家以数据库为主营业务的主板上市企业。公司十余年来秉承“专注做好数据库”的初心,始终致力于数据库产品的研发、销售和服务。核心产品海量数据库Vastbase系列、数据库一体机Vastcube系列、海量大数据Datalink系列,全栈国产化,应用满足度高,目前广泛应用于政务、制造、金融、通信、能源、交通等多个重点行业,已成为国产企业级数据库的首选之一。



文章转载自海量数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论