重新挂载Cgroup(解决GaussDB(DWS)创建资源池失败问题)

举报
幕后小黑爪 发表于 2023/09/21 19:56:05 2023/09/21
【摘要】 现有现有局点遇到,无法创建资源池的问题,报错Cgroup加载失败进入集群后,观察gs_cgroup的状态,通过gs_cgroup -P观察gs_cgroup的状态,如下所示:此种情况下需要进行cgroup重新挂载,遂总结下cgroup挂载的过程 1、识别$GAUSSHOME位置,先备份已有配置文件。cp $GAUSSHOME/etc/***.cfg $GAUSSHOME/etc/***.cf...

现有局点遇到,无法创建资源池的问题,报错Cgroup加载失败

进入集群后,观察gs_cgroup的状态,通过gs_cgroup -P观察gs_cgroup的状态,如下所示:

根因在于:欧拉系统存在一定问题,导致操作系统内核cgroup功能会有机率掉,而资源池池功能依赖cgroup,所以会导致资源池使用异常,在资源池异常的情况下资源管理功能会有一定影响。cgroup掉的这个问题是以机器/容器为单位影响的,所以需要整改对应机器的cgroup配置。

现网在发生过容灾、扩容后,均有一定概率出现该问题,建议现网对于这种问题排查可使用

select pgxc_cgroup_reload_conf();

该命令会对每个节点的cgroup进行重新加载,返回失败,那可能那个节点有问题,该操作对于业务可能有一定影响,建议在业务低峰期或者无业务的时候执行,减少对现网业务的影响。

问题解决:

此种情况下需要进行cgroup重新挂载,遂总结下cgroup挂载的过程


1、识别$GAUSSHOME位置,先备份已有配置文件。

cp $GAUSSHOME/etc/***.cfg $GAUSSHOME/etc/***.cfg.bak1

注:$GAUSSHOMEGaussDB(DWS)的主目录

 

2、切换到root用户下,先解挂cgroup,再挂载gs_cgroup

$GAUSSHOME/bin/gs_cgroup -M
$GAUSSHOME/bin/gs_cgroup -U Ruby -c -H $PATH

此处需要沙箱内的gs_cgroup二进制地址,path使用$GAUSSHOME即可,通常情况下退出沙箱后的$GAUSSHOME会无法访问,可以使用mount命令获取下正常节点的沙箱地址。如:/var/chroot/DWS/manager/app

 

3、连接到沙箱内,切回到ruby用户重新刷新cgroup信息

gs_cgroup --refresh

4、执行命令对比当前节点cgroup是否可用,不再报错即正常(可跳过)

gs_cgroup -P

 5、使用内核函数重新加载

连接进入数据库中,执行select pgxc_cgroup_reload_conf();进行重新检测

 

6、此时重新创建资源池,提示成功。

7、在集群内所有节点的沙箱外root用户执行下面的命令,刷新操作系统的CPUSetAccounting、MemoryAccounting、CPUAccounting配置。

systemctl set-property -- -.slice CPUSetAccounting=yes
systemctl set-property -- -.slice MemoryAccounting=yes
systemctl set-property -- -.slice CPUAccounting=yes
systemctl show -- -.slice | grep -i Accounting

显示结果均为yes,即恢复正常

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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