重新挂载Cgroup(解决GaussDB(DWS)创建资源池失败问题)
【摘要】 现有现有局点遇到,无法创建资源池的问题,报错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
注:$GAUSSHOME:GaussDB(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)