通用方案:专有云环境Nuwa组件的ZooKeeper与Proxy服务日志清理

通用方案:专有云环境Nuwa组件的ZooKeeper与Proxy服务日志清理

更新时间:2020-06-09 10:19:24

1. 概述

本文主要介绍在专有云环境中,如何清理Nuwa组件ZooKeeper与Proxy服务的日志。

1.1. 适用范围

  • 专有云V2,女娲

  • 专有云V3,女娲

    说明

    • 适用于V3.7.1之前版本,V3.7.1及之后的版本已默认优化日志数量无需再调整。
    • 如果日志个数超过100,请联系阿里云技术支持。

1.2. 风险说明

请务必在Nuwa相关服务正常的前提下清理日志。日志清理时磁盘IO负载较高,请避开业务高峰期和宿主机的负载高峰期。

2. 问题描述

在专有云环境Nuwa组件内,zookeeper_server.logzookeeper_serving.lognuwa_proxy.LOG日志文件数量较多,占用磁盘空间较大。在宿主机磁盘资源紧张时,需要清理这些日志。

3. 解决方案

3.1. 环境检查

确认Nuwa服务都正常

  • 参见以下步骤,使用脚本进行检查。
    1. 下载以下压缩包,解压后获得nuwa_service_checker脚本文件。
      nuwa_service_checker.gz
    2. nuwa_service_checker脚本文件上传到集群AG的admin用户的主目录。
    3. 使用admin用户登录集群AG,执行以下命令,运行该巡检脚本。
      /home/tops/bin/python nuwa_service_checker
      系统返回类似如下,确认Result输出为Nuwa Service OK,说明Nuwa相关服务正常。
  • 某些环境可能无法运行该巡检脚本,可用以下方式进行手动查询。
    1. 使用admin用户登录集群AG。
    2. 执行以下命令,生成Nuwa Master的iplist文件。
      • 专有云V2环境
        me | grep Local_nuwa | awk '{print $2}' | tr '|' '\n' > /tmp/iplist.nuwa
      • 专有云V3环境
        tj_show -r nuwa.NuwaZK# -ip > /tmp/iplist.nuwa
    3. 执行以下命令,确认服务角色运行正常。
      pssh -ih /tmp/iplist.nuwa "echo srvr | nc localhost 10240 | grep Mode"
      系统返回类似如下。

      说明:专有云V3环境只有OPS1可以免密登录其他机器,故需要在OPS1服务器执行该命令。
    4. 执行以下命令,检查Nuwa的ZooKeeper服务。
      /apsara/deploy/nuwa_console --address=nuwa://localcluster/ --command=ls
      系统返回类似如下,确认结果返回正确,说明Nuwa的ZooKeeper服务正常。
    5. 检查Nuwa的Proxy服务。
      • 专有云V2环境执行以下命令。
        /apsara/deploy/rpc_caller --Server=nuwa://localcluster/sys/fuxi/master/ForTubo --Method=/fuxi
        系统返回类似如下,输出信息中有connected,说明Proxy服务正常。
      • 专有云V3环境执行以下命令。
        /apsara/deploy/nuwa_resolver --nuwa_address=nuwa://localcluster/nuwa/not_exist_node_for_check_proxy_service
        系统返回类似如下,输出node not found,说明Proxy服务正常。

确认crond进程存在

在Nuwa组件NuwaZK#与NuwaProxy#所在的Docker VM内,执行以下命令,检查crond进程是否存在。

说明:专有云V2环境请在nuwa容器内执行。

ps axu|grep crond

系统返回类似如下,说明crond进程存在。

3.2. 实施步骤

手动删除日志

  1. 登录NuwaZK#所在的Docker VM,依次执行以下命令,备份zookeeper_server.log日志文件。

    说明

    • 清理zookeeper_serving.log日志文件时,请根据实际情况有则执行清理,无此日志文件请跳过此步骤。
    • 专有云V2环境请在nuwa容器内执行。
    mkdir /apsara/nuwa/log/temp/ && mv /apsara/nuwa/log/zookeeper_server.log.{10..500} /apsara/nuwa/log/temp/
    mv /apsara/nuwa/log/zookeeper_serving.log.{10..500} /apsara/nuwa/log/temp/
  2. 登录NuwaProxy#所在的Docker VM,执行以下命令,备份nuwa_proxy.LOG日志文件。

    说明:专有云V2环境请在nuwa容器内执行。

    • 专有云V2环境
      mkdir /apsara/nuwa_proxy/temp/ && mv /apsara/nuwa_proxy/nuwa_proxy.LOG.{10..500} /apsara/nuwa_proxy/temp/
    • 专有云V3环境
      mkdir /apsara/nuwa_proxy/log/temp/ && mv /apsara/nuwa_proxy/log/nuwa_proxy.LOG.{10..500} /apsara/nuwa_proxy/log/temp/
      说明:在某些环境该日志为gz格式,请根据实际情况替换日志名称。
  3. 等待半小时,参见环境检查,检查Nuwa服务是否正常,确保服务正常的情况下删除备份日志。
    1. 执行以下命令,删除zookeeper_server.log日志文件。

      rm -rf /apsara/nuwa/log/temp
    2. 执行以下命令,删除nuwa_proxy.LOG日志文件。
      • 专有云V2环境
        rm -rf /apsara/nuwa_proxy/temp
      • 专有云V3环境
        rm -rf /apsara/nuwa_proxy/log/temp

添加计划任务

请错开清理集群内三台nuwa容器的日志,不要同时清理。故下述计划任务中前两列数值,三台容器不要写同一时间。在Nuwa组件NuwaZK#与NuwaProxy#所在的Docker VM内,添加如下计划任务,定时删除日志。

说明

  • 清理zookeeper_serving.log日志文件时,请根据实际情况有则执行清理,无此日志文件请跳过此步骤。
  • 专有云V2环境请在nuwa容器内添加。
  • 专有云V2环境

    23 0 */2 * * find /apsara/nuwa_proxy/ -name "nuwa_proxy.LOG.[1-4][0-9][0-9]*" -delete 2>&1
    43 1 */2 * * find /apsara/nuwa/log/ -name "zookeeper_server.log.[1-4][0-9][0-9]" -delete 2>&1
    43 2 */2 * * find /apsara/nuwa/log/ -name "zookeeper_serving.log.[1-4][0-9][0-9]" -delete 2>&1
  • 专有云V3环境

    23 0 */2 * * find /apsara/nuwa_proxy/log/ -name "nuwa_proxy.LOG.[1-4][0-9][0-9]*" -delete 2>&1
    43 1 */2 * * find /apsara/nuwa/log/ -name "zookeeper_server.log.[1-4][0-9][0-9]" -delete 2>&1
    43 2 */2 * * find /apsara/nuwa/log/ -name "zookeeper_serving.log.[1-4][0-9][0-9]" -delete 2>&1

3.3. 结果验证

确认日志已删除,并且磁盘使用率下降。

4. 回滚方案

日志删除无法回滚恢复,删除添加的计划任务即可。