DevOps开发运维
成长之路

DM8-DSC-DMCSS

DMCSS(Dameng Cluster Synchronization Services)达梦集群同步服务,使用DMASM集群或DMDSC集群都必须配置DMCSS服务。在DMASM集群或DMDSC集群中,每个节点都需要配置一个DMCSS服务。这些DMCSS服务自身也构成一个集群,DMCSS集群中负责监控、管理整个DMASM集群和DMDSC集群的节点称为控制节点(control node),其他DMCSS节点称为普通节点(normal node)。DMCSS普通节点不参与DMASM集群和DMDSC集群管理,当DMCSS控制节点故障时,会从活动的普通节点中重新选取一个DMCSS控制节点。

工作原理

在Voting disk中,为每个被监控对象(dmasmsvr、dmserver、dmcss)分配一片独立的存储区域,被监控对象定时向Voting disk写入信息(包括时间戳、状态、命令、以及命令执行结果等);DMCSS控制节点定时从Voting disk读取信息,检查被监控对象的状态变化,启动相应的处理流程;被监控对象只会被动的接收DMCSS监控节点命令,执行并响应。

DMCSS主要功能

写入心跳信息、选举DMCSS控制节点、选取DMASM\DMDSC控制节点、管理被监控对象的启动流程、集群状态监控、节点故障处理、节点重加入等,DMCSS还可以接收并执行DMCSSM指令。

启动命令

./dmcss HELP
格式: dmcss.exe KEYWORD=value
例如: dmcss.exe DCR_INI=/home/data/DAMENG/dmdcr.ini
关键字说明(默认)
—————————————————————-
DCR_INI dmdcr.ini 路径
-NOCONSOLE 以服务方式启动
HELP 打印帮助信息

心跳信息

DMCSS实例启动后,每间隔1秒向Voting Disk指定区域写入心跳信息(包括自身状态、时间戳等),表示DMCSS节点处于活动状态。

选举DMCSS控制节点

DMCSS启动后向Voting Disk写入信息,并读取其他DMCSS节点的信息,如果DMCSS集群中还没有活动的控制节点,则选举控制节点。DMCSS选举的原则有两条。

1、先启动的DMCSS作为控制节点

2、DMCSS同时启动,则选择节点号小的节点为控制节点。

选取监控对象控制节点

DMCSS控制节点启动后,会为基于DMASM/裸设备的DMDSC集群指定控制节点。DMCSS选取监控对象控制节点的原则有两条:

1、只有一个活动节点,则设置活动节点为控制节点。

2、存在多个活动节点,则选择节点号小的节点为控制节点。

启动流程管理

DMASM和DMDSC集群中的实例启动后,一直处于waiting状态,等待DMCSS的启动命令。DMCSS控制节点在选取监控对象控制节点后,通过控制节点启动,在控制节点启动完成后,在依次通知其他普通节点启动。

状态检测

DMCSS维护集群状态,随着节点活动信息的变化,集群状态也会产生变化,DMCSS控制节点会通知被监控节点执行不同命令,来控制节点启动、故障处理、故障重加入等操作。

DMCSS控制节点每秒从Voting disk读取被监控对象的心跳信息。一旦被监控对象的时间戳在DCR_GRP_DSKCHK_CNT秒内没有变化,则认为被监控对象出现异常。

DMCSS普通节点定时读取DMCSS控制节点的心跳信息,监控DMCSS运行状态。

故障处理

DMCSS控制节点检测到实例故障后,首先向故障实例的Voting disk区域写入kill命令(所有实例一旦发现kill命令,无条件自杀),避免故障实例仍然处于活动状态,引发脑裂,然后启动故障处理流程,不同类型的实例的故障处理流程存在一定差异。

一、DMCSS控制节点故障处理流程

1、活动节点重新选举DMCSS控制节点

2、新的DMCSS控制节点通知出现故障的节点对应的dmasmsvr、dmserver强制退出。

二、DMASMSVR实例故障处理流程

1、挂起工作线程

2、更新DCR的节点故障节点信息

3、通知故障节点对应的dmserver强制退出

4、dmasmsvr进行故障恢复

5、恢复工作线程

三、dmserver实例故障处理流程

1、更新SCR故障节点信息

2、重新选取一个控制节点

3、通知dmserver控制节点启动故障处理流程

4、等待dmserver故障处理结束

节点重加入

如果检测到故障节点恢复,DMCSS会通知控制节点启动单节点重加入流程

一、数据库实例重加入

1、挂起工作线程

2、修改节点的状态

3、执行恢复操作

4、重新进入STARTUP状态,准备启动

5、OPEN重加入节点

6、重启工作线程

7、执行OPEN数据库实例的操作

二、DMASM实例重加入

1、挂起工作线程

2、修改节点的状态

3、执行恢复操作

4、重新进入startup转台,准备启动

5、open重加入节点

6、重启工作线程

集群指令

DMCSS控制节点通过一系列的集群指令,控制被监控对象的启动、故障处理、状态切换等。DMCSS控制节点向目标对象的Votin disk指令区写入命令,通知目标对象执行相应命令,并等待执行响应。每条指令的功能都比较单一,比如修改状态,设置控制节点、执行一条sql等,复杂的集群流程控制就是由这些简单的指令组合起来完成的。

状态查看

在 DMCSS 控制台输入 show 命令可以看到所监控的集群状态,如下所示。
group[] 行显示的内容为
name: 集群名称
seq: 集群编号
type: 集群类型[CSS/ASM/DB]
control_node: 集群内控制节点
ep 行显示的内容为:
inst_name: 节点实例名
seqno: 节点编号
port: 实例对外提供服务的端口号
mode: 模式[控制/普通]
sys_status: 实例系统状态[MOUNT/OPEN 等]
vtd_status: 实例的集群状态[WORKING/SHUTDOWN/SYSHALT 等]
is_ok: 实例在集群内是否正常, ERROR 的节点暂时从集群内剔除
active: 实例是否活动
guid: 实例的 guid 值
ts: 实例的时间戳

配置VIP

如果为集群环境DB节点配置VIP,则CCS会在不同实例配置VIP(假设节点为EP1,EP2);

1、DB启动前,各节点CCS会配置对应的VIP。

2、节点DB1故障,则故障节点对应的css1会取消配置的VIP1,活动节点EP2对应的ccs2会配置故障接地那的VIP1,此时活动节点EP2会有两个VIP(VIP2,已经故障的节点的VIP1)。原来连接DB1的应用,重新连接时会连接到DB2。

3、故障节点DB1重加入,则EP2对应的CSS2会取消VIP1,之后EP1对应的CCS1会重新配置VIP1,这样VIP配置信息就恢复最开始的状态了。

注意事项

1、如果节点A的DMCSS退出或者故障,活动DMCSS会给节点A上所监控的ASMSVR和DMSERVER发送halt命令,确保节点A上的asmsvr和dmserver自动退出
2、配置VIP信息需要root权限,所以要确保dmcss以root权限启动。
赞(0)

评论 抢沙发

评论前必须登录!

 

LNMP社群 不仅仅是技术

关于我们网站地图