通用方案:专有云V3环境中AnalyticDB机器的RMA处理流程

通用方案:专有云V3环境中AnalyticDB机器的RMA处理流程

更新时间:2020-06-09 10:28:07

1. 概述

本文主要介绍在专有云V3环境中,AnalyticDB相关机器的RMA处理流程。

1.1. 适用范围

  • 专有云V3,AnalyticDB

1.2. 风险说明

  • 物理机下线依赖系统高可用性。
  • RMA期间如果发生单点故障,则有系统不可用风险。

1.3. 用户告知

方案中出现的图例仅供参考,现场操作时需结合实际环境适当修改。

2. 问题描述

在专有云V3环境中,AnalyticDB相关机器发生故障,需要下线进行维修。

3. 解决方案

3.1. 环境检查

请按照以下操作步骤,进行环境检查。

3.1.1. 集群状态检查

  1. 确认OPS1服务器状态正常。
  2. 确认AnalyticDB集群所有服务均已达终态。
  3. 节点下线会触发数据迁移,确保集群内磁盘空间充足。
  4. 如果相关服务的主节点部署在待下线机器,则需要进行主备切换。

3.1.2. 同步系统时间到硬件

登录待下线机器,执行以下命令,同步系统时间到硬件。

hwclock -w

3.1.3. 盘古的数据与服务状态检查

  1. 登录集群AG,切换到admin用户。

  2. 执行以下命令,查看盘古相关信息。

    puadmin lscs | grep NORMAL

    系统显示类似如下,确认盘古ChunkServer的状态、磁盘状态与Rack分布正常。

  3. 依次执行以下命令,检查盘古集群是否有数据丢失。

    puadmin fs -abnchunk -t none
    puadmin fs -abnchunk -t onecopy
    puadmin fs -abnchunk -t lessmin

    系统显示类似如下,无返回值代表正常,说明无数据丢失。

  4. 执行以下命令,查看选举状态。

    puadmin gems

    注意:也可使用puadmin ms -elec命令。

    系统显示类似如下,说明选举状态正常。

  5. 执行以下命令,查看同步状态。

    puadmin gss

    注意:也可使用puadmin ms -elec -s命令。

    系统返回类似如下,确认同步状态正常。

3.1.4. 记录盘古的读写速度

依次执行以下命令,检查盘古的读写速度。

/apsara/deploy/puadmin flag -get pangu_chunkserver_ReplicationMinReadNetThroughput -c
/apsara/deploy/puadmin flag -get pangu_chunkserver_ReplicationMaxReadNetThroughput -c
/apsara/deploy/puadmin flag -get pangu_chunkserver_ReplicationMinWriteNetThroughput -c
/apsara/deploy/puadmin flag -get pangu_chunkserver_ReplicationMaxWriteNetThroughput -c

系统返回类似如下,记录盘古的读写速度。

3.2. 实施步骤

请按照如下操作步骤,进入RMA处理流程。一个集群同一时间只能操作一台机器,如果有多台机故障,则变更完一台后,再操作下一台机器。

3.2.1. 将待下线机器加入黑名单

  1. 登录天基控制台,在页面左侧的Project框中找到ads产品。选择ads-A-XXX>集群运维中心
  2. 在集群运维中心页面,选择ads-service服务与AdminGateway#角色,单击Terminal登录。
  3. 执行以下命令,获得Gallardo的RM节点主机名。
    注意:请使用admin执行下述命令。
    r wheream garuda/garudaAppMaster
  4. 执行以下命令,将待下线机器加入黑名单。
    curl "http://[$Gallardo_RM]:8080/blackList?method=add&hostname=[$Machine]"
    说明
    • [$Gallardo_RM]为上一步获得的RM节点主机名。
    • [$Machine]为待加入黑名单的机器主机名,多台机器可用逗号隔开。
  5. 执行以下命令,确认待下线机器已加入黑名单。
    curl -s "http://[$Gallardo_RM]:8080/blackList?method=list"
    注意:如果后期扩容时还需要使用该机器,可在下线缩容完后通过以下命令取消黑名单,防止扩容时无法使用该机器。
    curl "http://[$Gallardo_RM]:8080/blackList?method=cancel&hostname=[$Machine]"

3.2.2. 迁移相关节点

  1. 登录gallardo_ag容器。
  2. 执行以下命令,获得容器IP地址。
    ip addr
  3. 使用admin用户登录待下线机器。
  4. 执行以下命令,查看节点信息。
    jps  | grep Main  | awk '{print $1}' | xargs pwdx
    系统返回类似如下,确认该节点所属库的库名。
  5. 使用以下链接,登录RMUI控制台。
    http://[$Gallardo_AG]:8315/index
    说明
    • [$Gallardo_AG]为步骤2获得的gallardo_ag容器的IP地址。
    • 如果控制台页面打不开,请登录到gallardo_ag容器,使用admin用户执行以下命令即可。
      /home/admin/gallardo/rm/rmui/bin/startRmUI.sh
  6. 单击AmApp,进入App相关信息页面。
  7. 根据步骤4获得的库名,单击对应的节点。
  8. 根据待下线机器的主机名,获得App NameTask Name参数值。
  9. 登录天基控制台,选择报表>系统报表,单击IP列表
  10. Docker APP IP列表区域,根据GALLARDO_UI#关键字找到gallardo_ui容器的IP地址。
  11. 使用admin用户登录待下线机器。
  12. 执行以下命令,迁移节点。
    curl "http://[$Gallardo_UI]:8313/proxy?op=transaction_shift_tasks" -d 'param={"appName":"[$App_Name]","taskNames":["[$Task_Name]"]}'
    注意
    • [$Gallardo_UI]为步骤10获得的gallardo_ui容器的IP地址。
    • [$App_Name]与[$Task_Name]为步骤8获得的App Name与Task Name参数值。
  13. 执行以下命令,迁移ContainerAppMasterServer节点。
    jps | grep ContainerAppMasterServer | awk '{print $1}' | xargs kill
  14. 待迁移完成之后,执行以下命令进行检查。
    jps
    系统返回类似如下,确认待下线机器上没有MainApp节点与ContainerAppMasterServer节点。

3.2.3. 故障机器pangu数据的备份复制

注意:一个集群同一时间只能操作一台机器。

  1. 登录ads_ag容器,切换到admin用户,执行以下命令,停止故障机器上的pangu服务。
    /apsara/deploy/puadmin cs -stat tcp://[$IP]:10260 --set=SHUTDOWN
    说明:[$IP]为故障机器的IP。
  2. 执行以下命令,确认故障机器的pangu状态变为SHUTDOWN。开始Backup的值为Doing,Doing表示正在备份,等待一段时间后,Backup的值由Doing变为Done,说明盘古数据复制完成。
    puadmin lscs |grep tcp
    系统显示类似如下。
  3. 依次执行以下命令,确认pangu数据没有丢失。
    puadmin abnchunk fs -t none
    puadmin abnchunk fs -t onecopy
    puadmin abnchunk fs -t lessmin
    系统显示类似如下。

2.3.4. 设置待下线机器的Action状态

  1. 登录OPS1服务器。

  2. 执行以下命令,将要待下线机器的Action状态置为rma=pending。

    curl "http://127.0.0.1:7070/api/v5/SetMachineAction?hostname=[$Machine]" -d '{"action_name":"rma", "action_status":"pending"}'

    系统返回类似如下。

  3. 执行以下命令,获取该机器的action_description@mtime参数值。
    curl "http://127.0.0.1:7070/api/v5/GetMachineInfo?hostname=[$Machine]&attr=action_name,action_status,action_description@mtime"
    系统返回类似如下。
  4. 执行如下命令,设置该机器的Audit Log。
    curl "http://127.0.0.1:7070/api/v5/AddAuditLog?object=/m/[$Machine]&category=action" -d '{"category":"action", "from":"tianji.HealingService#", "object":"/m/[$Machine]", "content": "{\n \"action\" : \"/action/rma\",\n \"description\" : \"/monitor/rma=error, mtime:[$Mtime]\",\n \"status\" : \"pending\"\n}\n" }'
    说明:[$Mtime]为本节中步骤3获得的action_description@mtime参数值。
    系统返回类似如下。设置成功后,会自动开始关闭机器上的服务角色。

3.2.5. 关机维修

等待机器的RMA状态变为approved或doing时,关机维修。

  1. 在所有服务角色审批完成后,在天基控制台确认该机器的Aciton状态变为rma=doing或rma=approved时,才可进行关机操作并下线维修。

  2. 维修完成后,开机启动。

3.2.6. 选择是否重新克隆系统

根据现场实际情况,选择是否重新克隆系统。

需要克隆系统
  1. 登录OPS1服务器。执行以下命令,设置故障机器的Action状态。
    curl "http://127.0.0.1:7070/api/v5/SetMachineAction?hostname=[$Machine]&action_name=rma&action_status=doing" -d '{"action_name":"clone", "action_status":"approved", "action_description":"", "force":true}'
    若机器下线时Action状态为rma=approved,则使用以下命令。
    curl "http://127.0.0.1:7070/api/v5/SetMachineAction?hostname=[$Machine]&action_name=rma&action_status=approved" -d '{"action_name":"clone", "action_status":"approved", "action_description":"", "force":true}'
  2. 登录clone容器,执行以下命令,查看克隆任务。

    /home/tops/bin/python /root/opsbuild/bin/opsbuild.py acli list -n 10000 | tail
    系统返回类似如下,根据下线机器的机器名可搜索到任务进度。

    也可以在天基控制台查看克隆任务,确认机器动作是“clone|doing”。

  3. 等待克隆结束。在天基控制台选择报表>系统报表>机器clone报表,确认克隆任务执行成功。

无需克隆系统

执行以下命令,恢复机器的Action状态。

curl "http://127.0.0.1:7070/api/v5/SetMachineAction?hostname=[$Machine]&action_name=rma" -d '{"action_name":"rma","action_status":"done", "force":true}'

3.2.7. 检查机器状态

执行以下命令,检查机器状态,确认状态为GOOD,说明机器维修完成,恢复正常使用。

curl "http://127.0.0.1:7070/api/v5/GetMachineInfo?hostname=[$Machine]&attr=state,hostname"

系统返回类似如下。

3.2.8. 恢复机器ChunkServer状态

克隆后的机器不需操作这一步,机器重新克隆后会自动启动pangu服务。

  1. 登录ads_ag容器,切换到admin用户,执行以下命令,启动修复后机器上的pangu服务。
    /apsara/deploy/puadmin cs -stat tcp://[$IP]:10260 --set=NORMAL
    说明:[$IP]为故障机器的IP。
  2. 执行以下命令,确认修复后机器的pangu状态变为“NORMAL”。 
    puadmin lscs |grep tcp
    系统显示类似如下。

3.2.9. 移除机器gallardo黑名单

  1. 登录AdminGateway#服务角色的机器,执行以下命令,获得Gallardo的RM节点主机名。
    说明:请使用admin执行以下命令。
    r wheream garuda/garudaAppMaster
  2. 执行以下命令,将待下线机器加入黑名单。
    curl "http://[$Gallardo_RM]:8080/blackList?method=cancel&hostname=[$Machine]"
    说明
    • [$Gallardo_RM]为上一步获得的RM节点主机名。
    • [$Machine]为待加入黑名单的机器主机名,多台机器可用逗号隔开。
  3. 执行以下命令,确认机器是否已移除黑名单。如查看不到对应的机器主机名信息,则移除成功。
    curl -s "http://[$Gallardo_RM]:8080/blackList?method=list"

3.3. 结果验证

3.3.1. 检查集群终态

在天基控制台,确定新上线机器上所有服务均已达终态。

3.3.2. 检查盘古的数据和服务状态

  1. 登录集群AG,切换到admin用户。

  2. 执行以下命令,确认盘古ChunkServer的状态、磁盘状态与Rack分布正常。
    puadmin lscs | grep [$Machine]
  3. 依次执行以下命令,确认盘古集群无数据丢失。

    puadmin fs -abnchunk -t none
    puadmin fs -abnchunk -t onecopy
    puadmin fs -abnchunk -t lessmin

3.3.3. 确认可获取Fuxi资源

登录AdminGateway#角色所在的机器。执行以下命令,确认可获取新上线机器相关Fuxi资源。

r ttrl | grep [$Machine]

系统返回类似如下。

3.3.4. 确认存在NodeMoniTor进程

登录新上线机器。执行jps命令,确认存在NodeMoniTor进程。

4. 回滚方案

无需回滚,操作前已经为非正常状态。