南大通用GBase 8a 故障排查gcluserd服务由于主程序被设置成root用户且没有可执行权限,导致服务启动失败,状态为CLOSE

现场一个项目,在节点替换后,需要单独升级一个gclusterd的补丁,但在打补丁时,使用了root用户,且没有将补丁文件chown +x增加可执行的权限,导致该节点的gcluster服务处于CLOSE状态。

现象

反馈gcadmin显示,刚做完节点替换的机器的gcluser服务为CLOSE状态

排查

查看gcluster进程的启动日志 system.log

发现了节点替换时的正常启动和shutdown关机信息,但后续没有看到再次启动的信息。

排查gcmonit日志 gcmonit.log

发现了尝试重启记录,但返回失败 -2。在失败10次后,不再尝试。

人工执行gclusterd

怀疑gclusted服务本身有问题,手工在操作系统gbase用户下执行gclusterd,发现报错: Permission denied, 而且错误开头是bash: 怀疑程序没有可执行权限,当成bash运行了。

查看gclusted程序文件

发现属主是root用户,而且没有可执行权限。且文件时间戳是2020年,不是操作当时的2021年。判断是更新了补丁

查找原因

确认在结点替换操作完成后,在做补丁替换时,没有切换到gbase用户,而是用的root用户操作的。而且没有chonw +x 增加可执行权限。

解决方案

将程序属主改成gbase:gbase 增加可执行权限。然后重启服务即可。