GaussDB(DWS)集群启停问题定位指南

举报
召走小子 发表于 2020/06/11 20:20:54 2020/06/11
【摘要】 集群启停问题定位指南1 集群启停基本原理1.1 起停依赖关系描述及图示FIM:集群管理界面,用户可以从FIM界面上下发启动和停止集群操作; cron:系统服务,每一分钟定时查看om_monitor服务是否拉起,如果没有拉起,则拉起;om_monitor:常驻系统,用于拉起cm_agent;cm_agent:起停 cn、dn、gtm、cm_server,以及在停止时,当cn...

集群启停问题定位指南

1      集群启停基本原理

1.1      启停依赖关系描述及图示

FIM:集群管理界面,用户可以从FIM界面上下发启动和停止集群操作;

cron:系统服务,每一分钟定时查看om_monitor服务是否拉起,如果没有拉起,则拉起;

om_monitor:常驻系统,用于拉起cm_agent

cm_agent:启停 cndngtmcm_server,以及在停止时,当cndngtmcm_server停止后,cm_agent自退出。


1.2      日志路径

组件名

日志路径

FIM

/var/log/Bigdata/mpp/scriptlog/prestart.log

/var/log/Bigdata/mpp/scriptlog/start.log

以上日志每个数据节点上均存在

gs_om

/var/log/Bigdata/mpp/omm/om/gs_om-   YYYY-MM-DD_hhmmss.log

以上日志每个数据节点上均存在

om_monitor

/var/log/Bigdata/mpp/omm/cm/om_monitor/om_monitor-YYYY-MM-DD_hhmmss.log

以上日志每个数据节点上均存在

cm_agent

/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_agent-YYYY-MM-DD_hhmmss.log

/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss.log

以上日志每个数据节点上均存在

cm_server

/var/log/Bigdata/mpp/omm/cm/cm_server/cm_server-YYYY-MM-DD_hhmmss.log

以上日志仅在主备cm_server节点上均存在

1.3      集群实例角色状态信息表

集群状态示例:

实例

角色

状态

DN   build 状态和GTM 同步状态

CMS

Primary()

Standby()

Pending(待仲裁状态,等待仲裁为主或者备)

Down



CN


Normal(正常)

Deleteing(正在删除)

Deleted(已经删除)

Down


DN

Primary()

Standby()

Dummy_standby(从备)

Pending(待仲裁状态,等待仲裁为主或者备)

Down

Normal(正常)

Starting(正在启动)

Need   repair(待处理状态)

Waiting   Promoting(等待升主)

Promoting(备机升主中)

Demoting(主机降备中)

Building(备机正在build)

Build   failed(备机build失败)

Manual   stop(手动停止)

Disk   damaged(磁盘故障)

Port   used(端口占用)

Unknown(状态未知)

Connecting(DN主备连接)

Disconnect(DN主备未连接)

Walsegmen   removed(DN日志分叉)

 

GTM

Primary()

Standby()

Pending(待仲裁状态,等待仲裁为主或者备)

Down

Connection   OK(主备连接OK)

Connection   bad(主备连接有问题)

Starting(正在启动)

Manual   stop(手动停止)

Disk   damaged(磁盘故障)

Port   used(端口占用)

Unknown(状态未知)

Sync(同步模式)

Async(非同步模式)

Most   available(最大可用模式)

2      启动集群常见问题分类

3      集群启停问题定位方法及解决措施

使用命令cm_ctl query -Cv查看集群状态,根据状态进入不同分支场景进行排查处理。

3.1      整节点未启动

Step1. 使用命令cm_ctl query -Cv查看集群状态信息确认整节点未启动的主机名;

Step2. omm用户登录对应节点,查看om_monitor进程是否存在,如果om_monitor进程不存在,则可能原因是omm用户定时任务异常、omm用户密码超期、cgroup挂载异常,可通过分析om_monitor日志、omm用户定时任务、omm用户密码超期时间等方式进行进一步分析;

Step3. 如果节点上om_monitor进程存在,cm_agent进程不存在,则可能原因是FIM界面启动命令未成功下发到后台、python版本过高或其它原因导致om_monitor未能启动cm_agent,可通过检查启停标志文件、节点上python版本、om_monitor日志等方式进一步分析。

3.2      节点内部分实例未启动

Step1. 使用命令cm_ctl query -Cv查看集群状态信息确认未启动的实例及所在节点主机名;

Step2. omm用户登录对应节点,查看cn/dn/gtm/cm_server实例进程是否存在,如果进程不存在,则可能原因是端口被占、lvs虚拟ip丢失、cn/dnpostgresql.conf配置文件的listen_address参数存在无效ip、进程监听端口号对应锁文件残留、cn/dn配置文件中存在无效GUC参数、系统信号量参数配置过小、存在多个cm_agent进程、路径无权限、磁盘满、数据目录权限异常等,需要结合日志具体分析;

Step3.如果cn/dn/gtm/cm_server进程存在,但状态为down或者unknown,则可能原因是当前节点与主cm_server节点网络不通、cm_server无主、节点上存在子网卡等;

Step4.如果cn/dn/gtm/cm_server进程存在,但状态为pending,则说明可能是在做redo,可通过查看堆栈来确认。

3.3      节点实例未停止

Step1. 首先使用如下命令找到未正常停止的实例:

gs_ssh -c 'ps -ef|grep /opt/huawei/Bigdata/mppdb/core/bin/ | grep -v grep'

Step2.1 实例未被停止分为两种情况,一种是实例收到停止信号,但是无法停止,这种现象主要体现在CNDN正在执行业务,无法停止。当CNDN无法停止的时候,需要搜集CNDN堆栈,用于定位问题;

Step2.2 第二种是执行停止的命令异常,此时请查看cma日志,手动拆解停止的shell命令,查看那些命令异常,一般为pstree命令异常。当pstree命令等shell命令异常时,分为两种情况:1)系统不存在该命令,请安装该命令,或者查看环境变量是否正确;2)系统pstree结果不符合预期,请更新该命令版本。

4      集群启停问题常见案例

4.1      整节点未启动,om_monitor进程不存在

问题现象:启动集群时整节点未启动,对应节点上om_monitor进程不存在

定位过程

omm用户登录到到未启动的节点,使用以下命令确认om_monitor进程不存在

ps –eaf | grep om_monitor

4.1.1        Om_monitor定时任务未挂载

场景描述:使用如下命令查看启动om_monitor的定时任务是否挂载到cron服务上,如果未挂载上,则是安装失败或定时任务被删除。通过 crontab服务可以看到如下命令,代表om_monitor服务挂载成功。

crontal -l

解决方法:参照正常节点将om_monitor定时任务服务添加到omm用户的定时任务中。

4.1.2        Omm用户密码超期

场景描述:使用如下命令检查是否设置了omm用户密码超期时间且密码已过期,如果密码超期会导致omm用户定时任务无权限查看,进而导致无法拉起om_monitor进程。

chage -l omm

解决方法:使用如下命令将omm用户密码超期时间设置为永不过期

chage -M 99999 omm

4.2      整节点未启动,cm_agent进程不存在

问题现象:整节点未启动,om_monitor进程存在,但cm_agent进程不存在

定位过程

omm用户登录到未启动的节点,使用以下命令确认cm_agent进程不存在

ps –eaf | grep cm_agent

4.2.1        启停标志文件存在

场景描述:检查om_monitor日志中是否有如下格式的日志打印,如果有说明cgroup未挂载成功,导致CMA拉起异常

can't get the *cgroup*

解决方法:重新挂载cgroup

4.2.2        启停标志文件存在

场景描述:检查bin目录下启停标志文件是否存在,如果存在说明FIM界面启动命令未下发到后端

ll /opt/huawei/Bigdata/mppdb/core/bin/cluster_manual_start

解决方法:

1、  删除此文件即可从后台自动拉起该节点实例;

2、  FIM界面启动命令未下发到内核原因可排查分析该节点上如下两个日志文件中的报错信息来确认

/var/log/Bigdata/mpp/scriptlog/prestart.log

/var/log/Bigdata/mpp/scriptlog/start.log

4.2.3        Python版本过高

场景描述:检查节点上python版本为3.x,与数据库默认的2.7不符,FIM界面启动时start.log日志中有如下报错,则说明是python版本过高导致启动异常

解决方法:

与现场人员确认是否手动升级过python版本或安装了多个版本的python,并让现场人员将节点上默认python版本恢复为2.7版本。

4.2.4          环境变量文件为空

场景描述:检查/opt/huawei/Bigdata/mppdb/.mppdbgs_profile环境变量文件为空,则说明环境变量文件为空导致FIM界面启动命令未下发到内核

         解决方法:从正常节点拷贝一份过来即可。

4.2.5        启停标志文件不存在

场景描述:检查bin目录下启停标志文件不存在,说明是其它原因导致om_monitor未能启动cm_agent

解决方法:收集节点上om_monitorcm_agent日志进一步分析。

4.3      节点内部分实例未启动,cn/dn/gtm/cm_server进程不存在

问题现象:节点内部分实例未启动,未启动的cn/dn/gtm/cm_server实例进程不存在

定位过程

omm用户登录到实例未启动的节点,使用以下命令确认相应实例进程不存在

ps –eaf | grep gaussdb

ps –eaf | grep gs_gtm

ps –eaf | grep cm_server

4.3.1        信号量不足导致cn/dn启动异常

场景描述: 检查对应cn/dn实例的pg_log日志,如果有如下报错,则说明是信号量不足导致cn/dn启动异常

解决方法:

1、  使用root用户执行如下命令可以将节点上os参数配置为预期值;

/opt/huawei/Bigdata/mppdb/wisequery/script/gs_checkos -i B1 --detail

2建议使用巡检工具对集群进行全面巡检和整改。

4.3.2        postgresql.conf配置文件存在无效GUC参数

场景描述:检查对应节点上cm_agentsystemcall日志中如果有如下报错,则说明cn/dnpostgresql.conf配置文件中存在无效参数配置

/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_agent-YYYY-MM-DD_hhmmss-current.log

/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log

解决方法:

删除postgresql.conf配置文件中无效参数即可。

4.3.3        端口号被占

场景描述:检查对应节点上cm_agentsystemcall日志中如果有如下报错,则说明cn/dn/cm_server/gtm的端口号被占

/var/log/Bigdata/mpp/omm/cm/cm_agent/cm_agent-YYYY-MM-DD_hhmmss-current.log

/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log

 

Port 25308 is used, run 'netstat -anop|grep 25308' or 'lsof -i:25308'(need root) to see who is using this port.

解决方法:

1、  使用如下命令找到占用端口的进程

netstat -anop|grep port

lsof -i:port root执行)

2、  kill -9清理掉占用端口的进程,然后重新启动。

4.3.4        Lvs虚拟ip未挂载

场景描述:cnlisten_addresses参数中配置了lvs虚拟ip,但cn节点上lvs虚拟ip未正常挂载,则也会导致cn启动不了

检查cn实例listen_addresses配置命令:

cat /srv/BigData/mppdb/data1/coordinator/postgresql.conf|grep listen_addresses

查看节点上ip信息命令:/sbin/ifconfig

解决方法:使用如下命令重新挂载lvs虚拟ip

sh /etc/init.d/gs_vip start

4.3.5          进程监听端口号锁文件残留

场景描述:机器异常掉电重启等情况下可能会导致进程监听端口号锁文件残留,这样当重新启动时会因锁文件已存在而无法启动。

检查锁文件命令:

ls -la  /opt/huawei/Bigdata/mppdb/mppdb_tmp

检查查出来的锁文件产生时间是否是在启动时间之前,如果是则说明是之前残留的。

解决方法:将残留的锁文件删除。

4.3.6        Cn/dnlisten_addresses中存在无效ip

场景描述:cn/dnpostgresql.conf配置文件的listen_addresses参数存在无效ip时会导致cn/dn无法正常启动,system_call日志中会有如下报错:FATAL:  could not create listen socket for "100.185.180.62"

/var/log/Bigdata/mpp/omm/cm/cm_agent/system_call-YYYY-MM-DD_hhmmss-current.log

检查cn实例listen_addresses配置命令:

cat /srv/BigData/mppdb/data1/coordinator/postgresql.conf|grep listen_addresses

解决方法:listen_addresses参数中的无效ip删除。

4.3.7        数据目录无权限

场景描述:cn/dn/gtm/cm_server的数据目录权限预期是700,当权限不足时cm_agent日志中会有如下报错:

data path disc writable test failed, /srv/BigData/mppdb/data3/slave1

解决方法:根据报错提示修复cn/dn/gtm/cm_server数据目录的权限。

4.3.8        磁盘满

场景描述:节点上数据盘、日志盘等满均会导致cn/dn/gtm/cm_server进程启动异常。

磁盘使用率检查命令:df -lh

解决方法:清理释放磁盘空间,消除磁盘满。

4.4      节点内部分实例未启动,查看状态CNDNGTM实例状态为down或者unknown

启动集群失败,后台查看集群状态,发现CNDNGTM实例显示down或者unknown

4.4.1        当前节点与主cm_server节点网络不通

场景描述:当节点与主cm_server节点网络不通时,当前节点cm_agent无法将实例状态上报给cm_server,导致实例状态显示为downunknown

检查当前节点与主cm_server节点网络命令:在当前节点上ping cm_server节点ip,如果不能ping通则说明网络异常。

解决方法:联系网络侧人员解决网络问题。

4.4.2        Cm_server无主

场景描述:当集群中两个cm_server实例均为pending状态,没有选出主时,无法对DN状态进行仲裁,导致DN状态均显示为downunknown

检查当前集群cm_server状态命令:

cm_ctl query -vCd|grep cm_server

解决方法:收集主备cm_server日志并联系研发人员处理。

4.4.3        节点上存在多个om_monitor进程

场景描述:当节点上存在多个om_monitor进程时,会导致cm_agent进程反复被杀,无法持续向cm_server上报实例状态,进而导致节点上实例状态显示为downunknown

检查当前节点om_monitor个数命令:

ps -ef|grep om_monitor|grep -v grep

解决方法:kill掉当前所有om_monitor进程待起自动重新拉起。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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