通用方案:盘古Master内存压缩

1. 概述

本文主要介绍盘古Master内存压缩的方法。

1.1. 适用范围

  • 专有云V2,盘古
  • 专有云V3,盘古

1.2. 风险说明

  1. 手工压缩需要单台执行,先做两台Secondary,做完之后切换下一台Primary。
  2. 本操作需要提交变更申请,执行过程中,盘古服务几乎不受影响,除非Primary切换失败,需要联系阿里云技术支持。

2. 问题描述

集群中因为entry过多,导致盘古Master内存占用过大,并且盘古中制作的cpt文件也会非常大。当entry数目大量消减之后,盘古Master所用内存不会随之动态减少,需要手动触发盘古Master压缩内存

3. 解决方案

3.1. 环境检查

检查当前集群状态是否正常

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

Web界面操作
  1. 通过以下地址登录盘古汇聚控制台,如果要进入某个集群的Pangu Portal,单击对应集群右侧的详情
    http://[$IP]:8620/
    说明:在专有云V2环境[$IP]为DMSAG的IP地址,在专有云V3环境[$IP]为OPS1的IP。
    image.png
  2. 进入集群的Pangu Portal界面,选择集群运维>Master运维,如果存在一台Primary,两台或以上的Secnodary,表示盘古服务正常。在Master Sync Log标签下,SyncedLogId的两个值相同,表示日志一致,日志同步正常。
    image.png
命令行操作
  1. 登录集群AG。
  2. 切换到admin用户,执行如下命令,查看盘古Master状态。

    puadmin gems

    系统显示类似如下,存在一台Primary,两台或以上的Secondary,表示正常。

  1. 执行如下命令,查看日志同步情况。

    puadmin gss

    系统显示类似如下,三个数值相同,表示日志同步正常。

检查盘古读写情况

  1. 在集群AG服务器新建一个临时文件/$path/file1,内容自定义。

  1. 执行如下命令,将文件上传到盘古。

    pu cp /$path/file1   pangu://localcluster/tmp/
  1. 执行如下命令,查看盘古上的文件内容是否与本地一致,若一致则盘古系统正常。

    pu cat pangu://localcluster/tmp/file1
  1. 执行如下命令,查看0副本文件。

    puadmin fs -abnchunk

    系统显示类似如下,表示系统正常,无0副本文件。

  1. 执行top命令,记录下当前pangu_master内存占比。

3.2. 实施步骤

登录第一台Secondary状态的服务器,执行如下操作,如结果符合预期,则在第二台Secondary状态的服务器,执行同样操作。本文档所有操作都在admin用户下执行。

创建触发压缩标志文件

  1. 登录Secondary状态的一台服务器。
  2. 切换为admin用户,执行如下命令,创建pangu_master_CompactPool文件。

    touch   /apsarapangu/pangu_master_CompactPool
  1. 执行如下命令,查看/apsarapangu目录下的文件。

    ll

    系统显示类似如下。

重启pangu_master进程

  1. 执行如下命令,结束pangu_master进程。

    killall  pangu_master

    提示:pangu_master进程会自动启动,并且之前创建的pangu_master_CompactPool文件会随着进程恢复被自动删除。

  1. 执行如下命令,确认pangu_master进程启动成功。

    ps axu | grep pangu_master

检查盘古Master是否正常

Web界面操作

pangu_master进程启动完成之后,登录盘古汇聚控制台,单击对应集群右侧的详情,进入集群的Pangu Portal界面,选择集群运维>Master运维,确认重启后的机器状态变成Secondary。在Master Sync Log标签下,SyncedLogId的两个值相同,表示日志一致,日志同步正常。

image.png

命令行操作
  1. 登录集群AG,执行如下命令,确认重启的宿主机状态为Secondary。

    puadmin   gems

    系统显示类似如下,存在一台primary,两台或以上的Secnodary,表示正常。

  1. 执行如下命令,查看日志同步情况。

    puadmin gss

    系统显示类似如下,表示日志同步正常。

  1. 执行如下命令,查看ChunkServer上报状态给重启盘古Master的情况。

    puadmin lscs tcp://[$IP]:10260|grep tcp

    说明:[$IP]为重启宿主机IP。

    系统显示类似如下。

  1. 执行如下命令,查看Primary状态盘古Master上的ChunkServer情况,对比两次ChunkServer情况确认一致后,方可执行后续操作。

    puadmin lscs tcp://[$Primary_IP]:10260|grep tcp

    说明:[$Primary_IP]为Primary状态的IP。

检查压缩效果

  1. 执行如下命令,查看pangu_master进程的内存占用比,与未压缩之前进行对比。

    top
  1. 执行下命令,查看/apsarapangu目录下cpt文件的大小,与未压缩之前进行对比。

    ll  /apsarapangu

    注意:如果pangu_master进程的内存占用比和cpt文件没有缩小,则停止后续操作。

登录Primary状态的宿主机,执行以下操作。

第二台Secondary状态的服务器操作完毕,且检查完毕之后,可针对Primary状态的服务器进行操作。

  1. 登录Primary状态的一台服务器。切换为admin用户,执行如下命令,创建pangu_master_CompactPool文件。

    touch /apsarapangu/pangu_master_CompactPool
  1. 执行如下命令,查看/apsarapangu目录下的文件。

    ll

    系统显示类似如下。

盘古Master切换Primary

Web界面操作

登录盘古汇聚控制台,单击对应集群右侧的详情,进入集群的Pangu Portal界面,选择集群运维>Master运维,单击需要将Secondary切换为Primary机器右侧的切换为Primary Master,进行切换。重复检查盘古Master是否正常的操作步骤,确保恢复正常。
image.png

命令行操作
  1. 登录集群AG,执行如下命令,pangu_master容器切换primary。

    puadmin ms -sp tcp://[$Secondary_IP]:10260

    说明:Secondary状态的服务器IP。

    系统显示类似如下,表示pangu_master切换Primary成功。

  1. 重复检查盘古Master是否正常的操作步骤,确保恢复正常。

3.3. 结果验证

检查pangu_master进程内存占用比

  1. 登录pangu_master VM,执行如下命令,查看pangu_master进程的内存占用比,与未压缩之前进行对比。

    top
  2. 执行如下命令,查看/apsarapangu目录下cpt文件的大小,与未压缩之前进行对比。

    ll  /apsarapangu

检查当前集群状态是否正常

Web界面操作

登录盘古汇聚控制台,单击对应集群右侧的详情,进入集群的Pangu Portal界面,选择集群运维>Master运维,确认重启后的机器状态变成Secondary。在Master Sync Log标签下,SyncedLogId的两个值相同,表示日志一致,日志同步正常。

image.png

命令行操作
  1. 登录集群AG,执行如下命令,查看集群状态。

    puadmin gems

    系统显示类似如下,存在一台Primary,两台或以上的Secnodary,表示正常。

  1. 执行如下命令,查看日志同步情况。

    puadmin gss

    系统显示类似如下,表示日志同步正常。

检查盘古读写情况

  1. 登录集群AG,本地新建一个临时文件/$path/file1,内容自定义。

  1. 执行如下命令,将文件上传到盘古。

    pu cp /$path/file1   pangu://localcluster/tmp/
  1. 执行如下命令,查看盘古上的文件内容是否与本地一致,若一致则盘古系统正常。

    pu cat pangu://localcluster/tmp/file1

4. 回滚方案

无需回滚。