GaussDB (DWS) 集群管理系列:CM启停功能的原理、流程和关键日志

举报
azu 发表于 2020/12/31 15:57:04 2020/12/31
【摘要】 本文介绍了集群管理组件CM启停集群的原理、流程和关键日志,CM_CTL模块通过启动、停止命令删除或生成启停文件,CM_AGENT模块通过循环检查启停文件是否存在以及其他启动条件执行实例的拉起或停止操作。

CM启停集群功能介绍

一 CM_CTL模块

cm_ctlGaussDB(DWS)提供的用来控制集群服务的工具。启动集群和停止集群是cm_ctl的重要功能,其功能的实现主要通过启停文件实现:

  • 集群启停文件 cluster_manual_start
  • 实例启停文件 instance_manual_start_X(X是实例编号,例如instance_manual_start_6001)

       当启动集群、节点、实例时,会删除启停文件,当停止集群、节点、实例时,会生成启停文件。通过cm_ctl生成的启停文件中有三行信息,每行为一个数字,第一个字段保留,第二、三个字段分别记录了停止模式和停止等级。启停文件位于$GAUSSHOME/bin下。其中,GAUSSHOME为环境变量。

行数

字段

取值范围

说明

1

保留字段

0

-

2

停止模式

0:smart

发送SIGTERM信号

1: fast

发送SIGINT信号

2: immediate

发送SIGKILL信号

3

停止等级

0

单实例停止,对应实例级启停文件

1

单节点停止,对应集群级启停文件

2

集群级停止,对应集群级启停文件

 

  • cm_agent组件不区分停止单节点和停止集群,因此启停文件均为集群级;
  • 停止等级仅用于内部识别,不影响实际的停止流程;
  • 停止cm_server进程与具体停止模式无关,均发送SIGKILL信号;
  • 如果启停文件内容为空,则根据名称判断启停文件级别,并执行默认的停止流程,默认的停止模式为smart;
  • 目前不支持通过cm_ctl停止单个cm_server进程,可通过手动生成实例级启停文件的方式控制;
  • smart方式停止节点或集群时,DN环的停止顺序为先停止备DN,再停止主DN

 

cm_ctl启停命令:

启动集群

cm_ctl start

启动节点

cm_ctl start –n nodeid

启动实例

cm_ctl start –n nodeid –D datapath

停止集群

cm_ctl stop

停止节点

cm_ctl stop –n nodeid

停止实例

cm_ctl stop –n nodeid –D datapath

    

     以下图中实例6001为例,其启动命令为cm_ctl start –n 1 –D /home/mpp/data/dnP1

     

具体的启动停止操作将交由cm_agent执行。

二、CM_AGENT模块

cm_agentGaussDB(DWS)提供的部署在集群各主机上用来启停和监控各数据库实例进程的集群管理组件,拉起和停止本主机上部署的实例进程是cm_agent的一个重要功能。该功能由常驻的启停线程来完成,根据检测到的启动、停止条件去相应地启动、停止集群,下面对cm_agent的启停流程进行介绍:

1. CM Agent启停流程

cm_agent的停止实例进程流程如图1所示:

停止检查.PNG

                                                             图1

cm_agent启动实例进程的流程如图2所示:

启动检查.PNG

                                                             图2

CM Agent整体的启停流程大致如图1和图2所示,对于不同类型的实例,其启停流程上会有一些差别,下面对不同实例启停的差别进行描述:

(1)CM Server: 只有在检查到启停文件存在时才会杀死cm_server进程,而在磁盘、网卡有故障时并不会杀死cm_server进程。

(2)CN:对于已经被剔除的CN,不会再对其启动。

(3)DN:拉起DN时进行build进程的检查

       a. build进程pid>0并且running(正在进行build)

       b. build进程pid>0并且not running(即build失败),重新进行build

       c. build进程pid<0,重新进行build

       d.build进程pid=0, 且DN进程不存在,(build已经完成)拉起DN

 

2. 关键日志举例

日志类型

 

关键字段

举例

启动日志

 

GTM磁盘或网卡故障

disk damged/ nic down

stop the gtm instance 1001 due to disk damged or nic down

GTM进程不存在但满足启动条件

GTM START system

gtm(/home/mpp/data/gtm) is not running,now start, try 0 ! !GTM START system(command:…)

CN磁盘故障、网卡故障或CN被剔除

disk fault/ nic fault/ dropped

kill CN because disk fault or nic fault or be dropped

 

CN无法重启

Do not start cn

Do not start cn because cn on current node has been manually stopped.

CN进程不存在但满足启动条件

CN START system

coordinate(/home/mpp/data/cn) is not running, now start, try 0 times!

CN START system(command:…)

DN启停文件存在

manually stopped

Datanode 6001 is manually stopped. Do not perform start check.

cm_server因端口或磁盘原因无法重启

would not be started

CM Server 1 would not be started due to port conflict. 

cm_server启停文件存在无法重启

Do not start cm server

Do not start cm server because cm server on current instance has been manually stopped.

拉起cm_server

CM_SERVER START system

CM_SERVER START system(command:…).

停止日志

检测到集群启停文件

cluster manual start file

Found the cluster manual start file, set the shutdown flag.

所有实例正常停止

all the instances

all the instances have stopped!

仍存在实例进程

Stopping check

all the instances



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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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