通用方案:专有云V3环境如何配置盘古预留空间

通用方案:专有云V3环境如何配置盘古预留空间

更新时间:2020-09-10 11:30:59

1. 概述

本文主要介绍在专有云V3环境中,如何配置盘古预留空间。

1.1. 适用范围

  • 专有云V3,OSS、NAS、OTS(包括天基集群,混布Inner-OTS),其它产品线无需操作。
    说明
    • 对于NAS产品,仅适用于专有云V3.5-V3.9版本。
    • 适用于专有云V3.0-V3.7,且盘古版本低于以下版本的需要操作,V3.8及以上版本已经默认修复。TiantengId可在pang_tools上执行/apsara/deploy/puadmin env -gbi -c命令查看。
      • 盘古0.16版本对应TiantengId为1210526。
      • 盘古0.16.1版本对应TiantengId为1210502。
      • 盘古0.16.2版本对应TiantengId为1210690。
      • dfs对应TiantengId为1210693。
    • 专有云V3.7.1*、V3.7.0*、V3.6.1*、V3.6.2*、V3.5.1*、V3.5.2*版本不适用该方案,请联系阿里云技术支持进行升级修复,如已经升级完毕,则无需再进行操作。确认是否已升级,可以通过上述步骤查询或者联系阿里云技术支持确认。

1.2. 风险说明

安全级别 说明 本文所属级别
L0 包含高危操作,必须研发稳定性审批。  
L1 包含危险操作,需要研发审批。
L2 一般操作,风险低,无需研发审批。  
L3 查询或无风险操作,无需研发审批  

经确认,将预留10%的磁盘空间。如果集群空间不足,直接预留磁盘空间,可能会导致集群不可写入。在执行本方案操作前,请确保集群的使用量在80%以下,如果不满足,请终止操作。

说明:集群使用率的计算请参见补充说明

2. 问题描述

盘古集群如果被写满,将需要进行停服操作。对OSS和NAS等产品,需要额外的空间才能进行删除操作,因此需要先进行扩容操作,再进行删除操作,此过程恢复服务的时间很长。为了避免这种情况,需要修改pangu的配置,保留一部分空间,避免盘古被写满,出现无法写入的情况。此时可以通过修改pangu_chunkserver的一个Flag,让数据可以继续写入,从而优化集群被写满时的故障恢复速度。

3. 解决方案

3.1. 环境检查

确认Flag的取值

  1. 登录集群AG服务器,执行以下命令,获取磁盘大小。

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

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

检查盘古服务

如果项目的部署中有Pangu Portal,请参见Web界面操作,如无Pangu Portal,请参见命令行操作

Web界面操作
  1. 通过以下地址登录盘古汇聚控制台,选择相应集群查看集群大盘节点信息的Master信息。
    http://[$IP]:8620/
    说明:在专有云V2环境[$IP]为DMSAG的IP地址,在专有云V3环境[$IP]为OPS1的IP。
    image.png
  2. 在产品Portal页面,单击配置变更输入相关Flag,单击提交,进行查询。
命令行操作
  1. 登录集群AG服务器,确认/apsara/deploy/puadmin文件存在。
  2. 执行以下命令,获取Primary和Secondary角色信息。
    puadmin gems
    系统显示类似如下,盘古服务正常。
  3. 执行以下命令,查看并记录Flag配置,以备后续回滚方案使用。
    puadmin flag -get pangu_chunkserver_ChooseDiskFreeSpaceHardLimit -c

检查集群终态

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

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

在集群配置页面,根据集群配置,找到对应集群pangu服务使用的模板。

 image.png

3.2. 实施步骤

适用于专有云3.3之前的版本

以下操作以OSS集群为例。

下载模板
  1. 登录OPS1服务器,如何登录OPS服务器请参见专有云如何登录OPS服务器
  2. 执行以下命令,进入指定目录。
    cd /cloud/tool/tianji/
  3. 执行以下命令,导出服务模板。
    ./tianji_clt service_template -g -t [$Template_Name] --dir [$Project]-[$Service_Name]_template -s [$Service_Name] --config /cloud/data/bootstrap_controller/BootstrapController#/bootstrap_controller/tianji_dest.conf

    说明

    • [$Template_Name]为模板名称。
    • [$Service_Name]为服务名,如pangu。
    • [$Project]为产品名,如ECS、ODPS。
    系统显示类似如下。
  4. 执行如下命令,备份导出的模板。
    cp -r oss-pangu_template /home/admin/oss-pangu_template_bak20181022
编辑模板
  1. 执行以下命令,进入指定目录。
    cd oss-pangu_template
  2. 执行以下命令,进入指定目录。
    cd user/pangu_chunkserver

    说明:若提示没有pangu_chunkserver目录,则在user目录下,执行mkdir pangu_chunkserver命令,创建此目录。

  3. 创建pangu_chunkserver_flag.json文件,添加需要修改的Flag及对应值,如下所示。
    {
    "pangu_chunkserver_ChooseDiskFreeSpaceHardLimit": "200"
    }

    说明

    • JSON格式,除最后一行无逗号外,其他行必须以逗号结尾。
    • 此处的Flag数值为举例使用,现场根据实际环境设置。
上传模板
  1. 执行以下命令,进入指定目录。
    cd /cloud/tool/tianji
  1. 执行以下命令,提交更新服务模板。
    ./tianji_clt service_template -u -m "[$Remarks]" -t [$Template_Name] --dir [$Project]-[$Service_Name]_template -s [$Service_Name] --config /cloud/data/bootstrap_controller/BootstrapController#/bootstrap_controller/tianji_dest.conf

    说明:[$Remarks]为备注信息。

    系统显示类似如下。
批量引用模板

模板修改完成后,通过以下操作将模板应用到集群上。

  1. 登录天基控制台,选择运维>服务运维,模糊查询pangu,在搜索结果中单击右侧的管理
  1. 选择服务模板,模糊查询TMPL-PANGU-OSS-0.16-HYBRID,在搜索结果中单击右侧的更多,在下拉菜单中选择批量使用模板
  1. 在批量应用模板升级页面,选择服务实例,单击确定
  2. 通过预览功能,确认该模板为前面步骤所修改的内容。
    image.png
  3. 弹出操作确认提示框,输入提示信息后,单击确认升级
  1. 选择任务>运行任务,查看Rolling任务状态,等待Rolling完毕。

适用于专有云3.3及之后版本

  1. 登录天基控制台,选择运维>服务运维,模糊查询pangu,在搜索结果中单击右侧的管理
  2. 选择服务模板,模糊查询oss,查看模板名称,单击编辑
    image.png
  3. 进入编辑服务模板页面,然后单击下一步
    image.png
  4. 选择user>pangu_chunkserver>pangu_chunkserver_flag.json,若不存在pangu_chunkserver>pangu_chunkserver_flag.json文件,则按照以下方式创建。
    1. 单击user,选择新增文件。
      image.png
    2. 进入创建文件页面,选择类型>文件夹,在文件夹名框中,输入pangu_chunkserver,单击提交
    3. 选择user>pangu_chunkserver>新增文件
    4. 进入创建文件页面,选择类型为文件,在文件名框中,输入pangu_chunkserver_flag.json,单击提交
  1. pangu_chunkserver_flag.json文件配置文件中,添加需要修改的Flag及对应值,如下所示。
    {
    "pangu_chunkserver_ChooseDiskFreeSpaceHardLimit": "200"
    }
    系统显示类似如下。
    image.png
  2. 单击预览并提交,确认修改是否正确。
    image.png
  3. 在pangu服务详情页面,模糊查询oss,搜索结果中单击右侧的更多,在下拉菜单中选择批量使用模板
  4. 在批量应用模板升级页面,选择服务实例,单击确定
  5. 弹出操作确认提示框,输入提示信息后,单击确认升级
  6. 选择任务>运行任务,查看Rolling任务状态,等待Rolling完毕。
  7. 选择任务>历史任务,查看Rolling结果。

 

3.3. 结果验证

  1. 登录天基控制台,Rolling成功后,选择user>pangu_chunkserver>pangu_chunkserver_flag.json,确认集群配置文件中已生效。
    image.png
  2. 登录集群AG服务器,执行以下命令,检查Flag配置。
    puadmin flag -get pangu_chunkserver_ChooseDiskFreeSpaceHardLimit -c
    系统显示类似如下,本文以200为例,具体请以实际计算的值为准。
    image.png
    如果项目的部署中有Pangu Portal在产品Portal页面,单击配置变更输入相关Flag,单击提交,进行查询。
    image.png
  3. TiantengId为“1210*”以上版本做过Hotfix风险点固化,则需依次执行以下命令,检查2个Flag值。
    puadmin flag -get pangu_chunkserver_ChooseDiskLimitByFreeSpacePercent  -c
    puadmin flag -get pangu_chunkserver_ChooseDiskFreeSpaceHardLimitPercent  -c
    系统显示类似如下。

    说明:NAS和OTS集群Value值为8,OSS集群Value值为5。

4. 回滚方案

  1. 参见实施步骤 ,还原之前修改的pangu_chunkserver_flag.json文件内Flag及对应值,并提交Rolling
  2. 如果采取删除模板配置方式回滚,在Rolling成功后,需在集群AG上执行以下命令,使用set参数手动设置Flag值。
    /apsara/deploy/puadmin flag -set pangu_chunkserver_ChooseDiskFreeSpaceHardLimit  10  -c
  3. 设置后执行以下命令,重启一台ChunkServer节点。
     killall chunkserver
  4. 使用get参数查询Flag值,确认回滚成功。
    /apsara/deploy/puadmin flag -get pangu_chunkserver_ChooseDiskFreeSpaceHardLimit  -c

5. 补充说明

集群使用量的计算方法如下:

  1. 登录集群AG服务器,执行以下命令,记录集群的总量和可用量。
    puadmin lscs
    系统显示类似如下。
  2. 通过以下公式计算集群的使用率。
    集群的使用率= (Total - Free )/ Total
    如果项目的部署中有Pangu Portal也可以在集群大盘集群Dashboard中查看使用率。