

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系列,全栈国产化,应用满足度高,目前广泛应用于政务、制造、金融、通信、能源、交通等多个重点行业,已成为国产企业级数据库的首选之一。





