
openGauss3.0.0新特性--新增集群管理工具,提升高可用能力
openGauss作为一款企业级开源关系型数据库,具有高性能,高可用,高安全,易运维等特点。CM的加入,使openGauss集群在易运维,可靠性等方面进一步提升。
CM是什么?
CM(Cluster Manager)是一款集群资源管理软件。支持自定义资源监控,提供了数据库主备的状态监控、网络通信故障监控、文件系统故障监控、故障自动主备切换等能力。
CM能做什么?
CM提供了丰富的集群管理能力,如集群、节点、实例级的启停,集群状态查询、选主、主备切换、日志管理等。
CM架构图如上所示,组件包括4个可执行文件:
进程监控
cm接管集群后,会周期性的对集群中的所有进程(包括cma,cms,openGauss等进程)进行探测监控,负责集群进程的保活及僵死恢复。
数据库状态采集
cma会周期性的采集openGauss数据库的运行状态,采集指标包括主备状态,日志位置及回放速率,日志发送接收进度等信息,并汇总在cms,这些信息将被用于选主仲裁及工具展示。
日志压缩
cma提供了日志管理能力,通过日志文件总大小,日志文件数量,日志时间等维度对日志目录进行监控,自动归档,清理日志。
可靠的选主仲裁
当数据库主机发生不可恢复的故障而无法继续提供服务时,集群管理会感知并基于qurom协议,进行选主仲裁。CM的仲裁都是使用的状态机模式,依据当前数据库状态进行仲裁逻辑的推进。
以上是CMS选主仲裁的时序图,总体流程包含上报和仲裁两大部分(仲裁命令实际实时都是通过信息上报获取的,图中返回结果只是为了方便理解)。
信息采集上报:
每个数据库实例的状态都会被cma定时采集并上报cms。
选主仲裁:
cms周期性的检测数据库的主备状态,如果发现主机不能够正常提供服务,则会触发选主仲裁。
1. 状态:无主。
操作:给所有备机发送命令,使其进入LOCK1状态。
说明: 如果备机此时连接主机,则lock1不会成功。Lock1状态成功主要有两个条件:1)备机与主机复制链路永久断开且不再主动重连。2)备机日志全部回放结束,不再增加。
2. 状态:(n+1)/2个备机已经进入LOCK1状态。
操作:选合适的主,发送failover
说明:根据qurom的特点,当(n+1)/2个备机进入LOCK1状态后,这几个备机中一定有至少1个同步备,cms从这几个备机中找到日志最多的节点(一定是同步备),发送升主命令。如果有多个满足条件的备机,则按照以下策略:
a)原主能起来,则选原主
b)选择与原主同AZ的
c)按节点顺序
3. 状态:新主升主成功。
操作:给主备机发送unlock/lock2消息,恢复成正常状态
说明:如果主机处于lock1状态,则给主机发送unlock消息使其退出lock1状态,如果备机处于lock1状态,则给备机发送lock2消息,指定新主ip,使其连接新主。
通过以上逻辑,CM保证了集群永远只有一个可写主机,且RPO=0。
CM集群的安装
在安装带CM的openGauss之前,需要创建clusterconfig.xml配置文件。XML文件包含部署openGauss+CM的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss、CM如何部署。用户需根据不同场配置对应的XML文件,带CM的安装,除安装配置文件需要添加CM外,其余步骤与openGauss安装完全相同。
下面以一主二备的部署方案为例,说明如何创建带CM的openGauss集群XML配置文件。以下value取值信息仅为示例,可自行替换。每行信息均有注释进行说明。
集群安装xml样例
注:此处xml中的ip、nodeNames、path等变量均只作为演示,需要按实际情况填写。
安装过程与openGauss安装一致,如需请查看官网。
安装后集群状态确认
部分出现名词的解析:
至此,一个由CM管理的一主两备openGauss集群就部署好了,后续就可以用过CM提供的工具对集群做一些基本的运维操作。
CM客户端工具cm_ctl
cm_ctl客户端工具提供了丰富的集群操作和管理接口,使集群管理变得更加便捷和可靠。
功能概览
启停集群
停止整个集群:
任意机器,普通用户下执行命令:
执行结果:
任意机器上查询状态:
查询结果:
启动整个集群
任意机器上执行命令:
执行结果:
任意机器上查询状态:
查询结果:
启停节点
任意机器上执行停止命令:
任意机器上执行启动命令:
openGauss数据库主备切换
指定数据库切换为主
任意机器执行命令:
结果:
任意机器上查询状态:
查询结果:
恢复成初始主备关系
任意节点执行命令:
结果:
任意机器上查询状态:
代码片段:可切换语言,无法单独设置文字格式
查询结果:
CM集群部分高可用能力
CM支持数据库进程保活,备机故障后自动主备切换,备机日志损坏后的自动重建等高可用能力。
自动恢复数据库实例演示
在节点1(node1)上,故障注入
查看进程示例:
查看进程信息,发现数据库进程已经被拉起
查看进程示例:
其他高可用场景能力大家可以实际安装体验。
CM集群管理的加入,使openGauss的高可用能力得到了巨大的提升,其强大的故障检测和自动恢复能力使数据库在应对各种故障场景的运维变得更加简单可靠。
文章转自公众号:openGauss
