应急预案:盘古TiantengId为1210*以下版本NAS集群高水位的应急处理方法

1. 概述

本文主要介绍在专有云V3环境中,盘古TiantengId1210*以下版本,NAS集群高水位的应急处理方法。

1.1. 适用范围

  • 专有云V3企业版,NAS
    说明:适用于专有云V3.5.2及以上版本,盘古TiantengId为1210*以下版本。

1.2. 用户告知

  • 适用平台:x86
  • 授权级别:L2(二线技术支持工程师)
  • 临时或固化方案:临时
  • 操作复杂度:高
  • 预估执行时长:1.5小时
  • 业务影响:否
    说明:此方案仅对盘古和NAS侧的最大可用容量限制值调高,不影响客户业务。
  • 风险等级:高
    说明:在执行方案操作前,需确保集群终态。

2. 问题描述

NAS集群的盘古如果被写满,将会造成服务停止,如需要通过删除操作释放部分资源,则需要额外的空间才能进行删除操作。由于需要先扩容,再删除,因此恢复服务的时间非常长。可在盘古和NAS侧进行容量限制调整,以恢复服务的正常使用。

说明:问题发生的原因是使用过程中,未合理评估可用容量,导致水位过高。

  • 盘古侧:专有云V3.8.1之后环境默认的盘古预留空间为8%,当水位达到92%则触发禁写,避免写满盘古。当出现无法写入的情况时,可以通过修改预留空间值的Flag,让数据能继续写入,从而优化集群写满时的恢复速度。
  • NAS侧:
    • 通过限制youchao_storage_BackupDirMaxSize的大小,减少KV回收站的数据量。
    • 通过nas_disk_usage_limit参数设置NAS存储限制的上限为集群容量的94%。

3. 解决方案

3.1. 环境检查

3.1.1. 水位检查

  1. 登录天基控制台,在Project框中搜索nas,单击StandarNasCluster-A-XXX集群右侧的集群运维中心,选择nas-recycle服务与RecycleJob#服务角色,单击机器右边的Terminal,登录对应的机器。

  1. 切换为admin用户,执行以下命令,查看Disk SpaceFree的百分比。

    puadmin summ
    系统显示类似如下,若Free百分比低于20%,则需按照此方案对水位进行控制。

3.1.2. 收集NAS集群的数据占用信息

收集NAS集群的水位占用信息,供阿里云技术支持进行分析。

  1. 通过以下地址登录Pangu Portal控制台。
    http://[$IP]:8620/
    说明:[$IP]为OPS1的IP地址。
  2. 模糊搜索目标集群。单击搜索结果中目标集群右侧的详情
  3. 单击数据管理菜单下的文件运维,查看根目录下的磁盘空间使用量。

    说明
    • deleted为盘古回收站数据占用的目录,需要阿里云技术支持确认后,进行回收站清理。
    • apsara为用户数据占用的目录,若为此目录占用空间较高,则需进一步查看哪个文件系统占用的数据量较多。
    • apsara目录下的磁盘空间使用情况如下:
    • /apsara/kvengineDataRoot/nas目录下的磁盘空间使用情况如下:
  4. 登录RecycleJob#服务角色的机器,执行以下命令,查看盘古tempChunks的占用情况。
    tj_show -r `tj_show -l |grep chunkserver -i` >/tmp/cs.iplist
    pssh -ih /tmp/cs.iplist "sudo du -s --block-size=4K /apsarapangu/disk*/* | grep tempChunks | awk '{s+=\$1}END{print s}'" | grep -v SUCC | awk '{s+=$1}END{print s*4/1024/1024/1024.0,"TB"}'

3.1.3. 集群终态检查

因为持久化配置需重新Rolling,在修改配置前,请确认该集群已达终态,避免因其他服务角色未到终态导致意外情况。

  1. 登录天基控制台,选择运维>集群运维
  2. 集群运维页面,搜索相应的集群,确认集群已达终态。

3.1.4. 确认盘古Master服务正常

  1. 登录集群AG服务器,确认/apsara/deploy/puadmin文件存在。
  2. 执行以下命令,获取Primary和Secondary角色信息。
    puadmin gems
  3. 如果部署有Pangu Portal,可选择相应集群,单击集群大盘>节点信息,查看盘古Master信息。

3.1.5. 获取集群pangu服务使用的模板

  1. 登录天基控制台,在Project框中搜索nas,单击StandarNasCluster-A-XXX集群右侧的集群配置文件
  2. 集群配置页面,选择services>pangu>template.conf,找到pangu服务使用的模板,右侧的TemplateName即为模板名称。

3.1.6. 获取集群pangu的版本信息

执行以下命令,获取盘古版本,确认TiantengId1210*以下版本。

puadmin –buildinfo

系统显示类似如下。

3.2. 实施步骤

3.2.1. 盘古服务操作

3.2.1.1. 手动清空回收站

注意:确认为盘古回收站占用水位后,执行此操作请务必获取L3(产品研发工程师)或L2(二线技术支持工程师)的授权。

登录RecycleJob#服务角色的机器,切换到admin用户,执行以下命令,手动清空回收站。

puadmin fs -crb
3.2.1.2. 编辑模板

编辑模板,减少盘古预留空间值,使业务可以继续写入。

  1. 登录天基控制台,选择运维>服务运维,搜索pangu服务,单击右侧的管理
  2. 在服务管理页面,选择服务模板,模糊查询nas,查看模板名称,单击模板右侧的编辑
    Image 1.png
  3. 基础信息窗口中,单击下一步
  4. 编辑服务模板页面,选择user>pangu_chunkserver>pangu_chunkserver_flag.json,若不存在pangu_chunkserver目录和pangu_chunkserver_flag.json文件,则按照下一步进行创建。
    1. 单击user,选择新增文件。
    2. 进入创建文件页面,选择类型>文件夹,在文件夹名框中,输入pangu_chunkserver,单击提交
    3. 选择user>pangu_chunkserver>新增文件
    4. 进入创建文件页面,选择类型为文件,在文件名框中,输入pangu_chunkserver_flag.json,单击提交
  5. 修改pangu_chunkserver_flag.json配置文件。
    1. pangu_chunkserver_flag.json配置文件中,添加需要修改的Flag及对应值,修改完成后单击预览并提交
      {
         "pangu_chunkserver_ChooseDiskFreeSpaceHardLimit": "200"
      }
      注意:这里的Flag数值仅做举例使用,无实际意义,具体的值请参考补充说明进行计算。
      系统显示类似如下。
    2. 确认提交窗口中,确认修改正确后,单击提交
3.2.1.3. 批量引用模板
  1. 在pangu服务管理页面,模糊查询nas,在搜索结果中单击右侧的更多,在下拉菜单中选择批量使用模板
  2. 在批量应用模板升级页面,选择服务实例,单击确定
  3. 弹出操作确认提示框,输入提示信息后,单击确认升级
  4. 选择任务>运行任务,查看Rolling任务状态,等待Rolling完毕。
  5. 选择任务>历史任务,查看Rolling结果。

3.2.2. NAS服务操作

3.2.2.1. 修改kv_master Flag值
  1. 登录RecycleJob#服务角色的机器,切换到admin用户,执行以下命令,查看youchao_storage_BackupDirMaxSize的值。
    /apsara/deploy/rpc_caller --Server=nuwa://localcluster/sys/kvengine/KVMaster --Method=/fuxi/GetGlobalFlag | grep youchao_storage_BackupDirMaxSize
    系统显示类似如下。
  2. 修改nas-kvengine服务模板。
    说明:kv的配置文件如果在模板中已存在,则直接进行修改,无需新建。
    1. 登录天基控制台,选择运维>服务运维,搜索nas-kvengine服务,单击右侧的管理
    2. 在服务管理页面,选择服务模板,查看模板名称,单击模板右侧的编辑
    3. 基础信息窗口中,单击下一步
    4. 编辑服务模板页面,选择user>kv_master_flag.json,若不存在kv_master_flag.json文件,请在user目录下新增kv_master_flag.json文件。
  3. 修改kv_master_flag.json文件,添加以下内容,修改完成后单击预览并提交
    {
        "youchao_storage_BackupDirMaxSize": 1024
    }
  4. 确认提交窗口中,确认修改正确后,单击提交
  5. 在pangu服务管理页面,模糊查询nas-kvengine,在搜索结果中单击右侧的更多,在下拉菜单中选择批量使用模板
  6. 在批量应用模板升级页面,选择服务实例,单击确定
  7. 弹出操作确认提示框,输入提示信息后,单击确认升级
  8. 选择任务>运行任务,查看Rolling任务状态,等待Rolling完毕。
  9. 选择任务>历史任务,查看Rolling结果。
3.2.2.2. 修改nas-nfs的配置文件
  1. 登录天基控制台,在Project框中搜索nas,单击StandarNasCluster-A-XXX集群右侧的集群配置文件
  2. 集群配置页面,选择services>nas-nfs>user,在user目录下新增nfs_supervisor目录。
    说明:若已存在nfs_supervisor目录和nfs_supervisor.json配置文件,则直接修改,无需新增。
  3. 然后在nfs_supervisor目录下新增nfs_supervisor.json配置文件,文件中添加以下内容。
    {
       "nas_disk_usage_limit": 94
    }
  4. 确认提交窗口中,确认修改正确后,单击提交
  5. 选择任务>运行任务,查看NAS升级任务是否完成。

3.3. 结果验证

3.3.1. 检查盘古预留空间值

  1. 待Rolling成功后,登录天基控制台,在集群配置页面,查看services/pangu/user/pangu_chunkserver/pangu_chunkserver_flag.json配置文件中是否已生效。
  2. 登录RecycleJob#服务角色的机器,执行以下命令,检查Flag值,确认为修改后的值,则符合预期。
    puadmin flag -get pangu_chunkserver_ChooseDiskFreeSpaceHardLimit -c
    系统显示类似如下。
  3. 如果项目的部署中有Pangu Portal,在产品Portal页面,单击配置变更,输入相关Flag,单击提交,进行查询。
    image.png

3.3.2. 检查youchao_storage_BackupDirMaxSize的值

请参见3.2.2.1. 修改kv_master Flag值中的第1步,检查youchao_storage_BackupDirMaxSize值,确认符合预期。

3.3.3. 检查nas-nfs文件是否下发

  1. 登录天基控制台,在Project框中搜索nas,单击StandarNasCluster-A-XXX集群右侧的集群运维中心,选择nas-nfs服务与NFSSupervisor#服务角色,单击机器右边的Terminal,登录对应的机器。
  2. 执行以下命令,确认nas-nfs文件已下发。
    cat /apsara/nfs_supervisor/conf.merge/nfs_supervisor.json
    系统显示类似如下。

4. 回滚方案

  1. 回滚步骤和实施步骤相同,请参见实施步骤中的方法将添加的Flag恢复到原来的值,提交Rolling。
  2. 如果盘古采取删除模板配置的方式回滚,在Rolling成功后,需登录RecycleJob#服务角色的机器,执行以下命令,手动设置Flag值。
    /apsara/deploy/puadmin flag -set pangu_chunkserver_ChooseDiskFreeSpaceHardLimit  10  -c
  3. 设置后,执行以下命令,重启一台ChunkServer节点。
    killall chunkserver
  4. 重新检查Flag的值,验证是否回滚成功。 

5. 补充说明

预留空间的计算方法如下:

  1. 登录RecycleJob#服务角色的机器,执行以下命令,获取磁盘大小。

    说明:如果集群中磁盘的规格不同,则以最小的磁盘为准。

    /apsara/deploy/puadmin lscs |grep -v SSDCache|grep TotalSize: |awk '{print $6}' |tr ":" ' ' |awk '{print $2}' |sort | uniq
  2. 要修改的值为上一步返回值的5%,且取整数。比如返回值为1863,则取90即可。如果返回值有多个,则在执行以上命令时,请删除uniq去重命令,统计每个数值的个数,然后联系阿里云技术支持决定取值。