阿里云首页

通用方案:专有云V2环境AnalyticDB物理机扩容方法

1. 概述

本文主要介绍专有云V2环境AnalyticDB物理机扩容的方法。

方案总览

类别 内容
国产化
风险等级(方案执行的影响)
操作方式 黑屏
操作复杂度
预估执行时长 N/A
客户业务的影响
可监控性 不支持
有效性(重启、重拉、补丁、升级、扩容等配置是否丢失) 固化
数据修订(变更是否涉及增删改操作)
执行灰度策略 请向产品侧咨询,明确灰度策略
首次发布时间 N/A
预计完成时间 N/A

1.1. 适用范围

  • 专有云版本:V2.*
  • 产品:专有云控制台

说明:适用于专有云V2.0.0~V2.5.0环境,包含V2.0.0和V2.5.0环境。

1.2. 风险说明

扩容无风险。

2. 问题描述

在专有云V2环境,因业务量增加等原因,需要对ADS集群中的机器进行动态热扩容操作。

3. 解决方案

3.1. 环境检查

在天目控制台上确认apsara_service和ads_service服务正常可用。

3.2. 实施步骤

3.2.1. 准备工作

3.2.1.1. 装机操作

将新增的机器安装好操作系统。装机模板使用ads_cloud_stand_server,如有疑问请联系阿里云技术支持,其它信息请参照ADS集群的装机任务。

3.2.1.2. 环境检测
  1. 装机完成后,检查/home/admin目录是否为单独挂载。登录装机后的机器,执行如下命令,查看是否有分区信息,如没有请联系阿里云技术支持。

    df -h |grep /home/admin
  1. 将解压后的check.sh文件拷贝到ADS集群AG服务器的/tmp目录下。

    check.tar

  1. 依次执行如下命令,执行健康检查。

    sudo chmod +x /tmp/check.sh
    r ttrl |grep disk |awk '{print $1}' > /tmp/tubo.list
    pscp -h /tmp/tubo.list /tmp/check.sh /tmp/check.sh
    pssh -h /tmp/tubo.list 'sudo mv /usr/local/clonescripts/ads_cloud_server_standard/check.sh /usr/local/clonescripts/ads_cloud_server_standard/check.sh.orig'
    pssh -h /tmp/tubo.list 'sudo cp /tmp/check.sh /usr/local/clonescripts/ads_cloud_server_standard/check.sh'
    pssh -h /tmp/tubo.list 'sudo sh /usr/local/clonescripts/ads_cloud_server_standard/check.sh|grep FAILED'

    如果返回结果中存在“SUCC”信息,则重新执行如下命令。

    sudo sh /usr/local/clonescripts/ads_cloud_server_standard/check.sh|grep FAILED
3.2.1.3. 打通通道 

通过执行以下操作,打通ads_ag容器与新增机器的admin通道。 

  1. 登录DMSAG服务器,执行如下命令,切换到root用户。
    sudo su root
  1. 执行如下命令, 将ads_ag容器的私钥拷贝到DMSAG服务器。 

    scp [$ADS_AG_IP]:/home/amin/.ssh/authorized_keys /tmp/

    说明:[$ADS_AG_IP]为ads_ag容器的IP地址。

  2. 执行如下命令,将秘钥文件的所有者权限改为admin。

    chown admin:admin /tmp/authorized_keys
  3. 准备待扩容机器的IP列表。本文以/tmp/add.list文件为例,将IP地址存放在此文件中。 

    说明:每行一个IP,用换行符隔开。

  4. 执行如下命令,将私钥覆盖到待扩容的机器上。

    pscp -h /tmp/add.list -A /tmp/authorized_keys /home/amin/.ssh/authorized_keys
3.2.2. 检查必备软件及版本
  1. 执行如下命令,检查必备软件是否安装,版本是否与未重装机器之前一致。

    rpm -qa |egrep "apsara-dayu|chenxiang-agent|apsara-netqos|cgroup"

    如版本不一致,可执行如下命令,重新安装。

    pssh -h /tmp/add1.list -i 'yum -y remove apsara-dayu'
    pssh -h /tmp/add1.list -i 'yum -y install apsara-dayu -b test'

    注:/tmp/add1.list为软件版本不一致的机器IP列表。

  1. 执行如下命令,查看ADS使用的Java版本是否为jdk1.8,以该命令获取的版本为准。 

    /opt/taobao/java/bin/java -version

    如版本非jdk1.8,则登录ads_ag容器,执行如下命令,重新安装。如何登录ads_ag容器请参见专有云V2环境中如何登录容器

    prsync -h /tmp/add2.list /opt/aliyun/app/jdk/resources/ali-jdk-1.8.0_66-94.el5.x86_64.rpm /tmp 
    pssh -h /tmp/add2.list "rpm -q ali-jdk || sudo rpm -i /tmp/ali-jdk-1.8.0_66-94.el5.x86_64.rpm --force"

    说明/tmp/add2.list为Java版本不一致的机器IP列表。

3.2.3. 新增飞天角色

  1. 登录ADS集群AG服务器,切换到admin用户,执行如下命令,生成tubo_ip文件。
    search tubo > /tmp/tubo_ip
  2. 执行如下命令,查看旧ChunkServer节点机器角色。
    for i in `cat /tmp/tubo_ip`;do me -i $i;done |grep chunkserver
    系统显示类似如下。
    10.X.X.95:role_S10-3S.12|role_deploy_agent|role_pangu_chunkserver|role_shennong_inspector|role_tubo|role_watch_dog|role_xihe_worker|clusterName_AYADS-JIUGE2 10.X.X.96:role_S10-3S.12|role_deploy_agent|role_pangu_chunkserver|role_shennong_inspector|role_tubo|role_watch_dog|role_xihe_worker|clusterName_AYADS-JIUGE2 10.X.X.97:role_S10-3S.12|role_deploy_agent|role_pangu_chunkserver|role_shennong_inspector|role_tubo|role_watch_dog|role_xihe_worker|clusterName_AYADS-JIUGE2 10.X.X.98:role_S10-3S.12|role_deploy_agent|role_pangu_chunkserver|role_shennong_inspector|role_tubo|role_watch_dog|role_xihe_worker|clusterName_AYADS-JIUGE2
  3. 执行如下命令,将新增的ChunkServer机器增加飞天角色,如有疑问请联系阿里云技术支持。
    /home/admin/dayu/install/role_resize --set_role="[$Role]" add /tmp/add.list
    说明
    • [$Role]需根据现场环境现有计算节点的角色来设定。[$Role]的内容类似如下。

      ads_cs,deploy_agent,pangu_chunkserver,shennong_inspector,tubo,watch_dog,xihe_worker
    • 通过执行如下命令,查看环境中现有计算节点的角色,一般所有计算节点的角色都一样。根据得到的角色,对格式进行重新编辑。只有角色名,不含“role_”前缀,不含集群名称,角色之间用逗号隔开。 

      me -i [$ADS_CS_IP]

      说明:[$ADS_CS_IP]为现有计算节点的IP地址。

    系统显示类似如下,查看打印的日志,如果返回结果中failed值为空,则表示角色新增成功。
  4. 执行如下命令,查看旧前端机的角色。
    for i in `cat /tmp/tubo_ip`;do me -i $i;done |grep -v chunkserver
  5. 执行如下命令,新增前端机角色,如有疑问请联系阿里云技术支持。查看打印的日志,如果返回结果中failed值为空,则表示角色新增成功。
    /home/admin/dayu/install/role_resize --set_role="[$Role]" add /tmp/add.list

3.2.4. 修改Quota

如果是重新装机,缩扩容的操作请跳过该步骤。

  1. 登录ads_ag容器,切换到admin用户,执行如下命令,查看当前Quota值。

    r quota

    系统显示类似如下,得到扩容前CPU和内存的Quota值,并记录为[$CPU_Quota_Old]和[$MEM_Quota_Old]。ScaledQuota字段为当前Quota。

  1. 执行如下命令,查看当前计算节点个数。

    search tubo |wc -l
  1. 计算新的CPU和内存的Quota值,计算方法如下。

    • [$CPU_Quota_New]=(新扩容机器数+集群原有计算节点个数)/集群原有计算节点个数 * 1.2 * [$CPU_Quota_Old] 

    • [$MEM_Quota_New]=(新扩容机器数+集群原有计算节点个数)/集群原有计算节点个数 * 1.2 * [$MEM_Quota_Old] 

  1. 执行如下命令,设置新Quota值。

    r setquota -i [$Account] -a [$Alias] -s [$CPU_Quota_New] [$MEM_Quota_New]

    说明:[$Account]和[$Alias]为本小节步骤1图中对应的字段值。

3.2.5. 启动飞天

登录ADS集群AG服务器,切换到admin用户,执行如下命令,启动飞天。

pssh -h /tmp/add.list -i "/home/admin/dayu/bin/super-apsarad start"

系统显示类似如下。

3.2.6. 检查飞天状态

执行如下命令,检查飞天状态。

pssh -h /tmp/add.list -i "/home/admin/dayu/bin/super-apsarad status"

系统显示类似如下,若飞天状态正常,扩容完成

3.2.7. 确认老机器打标签的标识

执行如下命令,确认老机器打标签的标识。如返回结果为空,则扩容完成,无需后续的编写机器标识和给新机器打标签操作 

r tbnl

3.2.8. 编写机器标识

本文以扩容fuxiServiceLable为“N36.22”的ChunkServer机器为例。登录ads_ag容器,切换到admin用户,编辑/home/admin/label_n36文件,内容如下所示。

{ 
"fuxiServiceLable":"N36.22", 
"gallardoRM":"gallardoRM", 
"localNode":"localNode" 
}

3.2.9. 给新机器打标签

说明:不同机型的机器,标签不同,需要分开执行,如有疑问请联系阿里云技术支持。

执行如下命令,给新机器打标签。

python /apsara/deploy/rpc_wrapper/set_tubo_node_label_new.py -r default -i /home/admin/[$IP_File] -n /home/admin/[$Label_File]  -u  abc

说明

  • [$IP_File]为机器的IP列表。

  • [$Label_File]为编写的机器标识文件。

3.2.10. 修改前端机不执行MR任务

仅限扩容前端机时操作,扩容后端机时跳过该步骤,如有疑问请联系阿里云技术支持。执行以下操作步骤,可不让MR任务执行到这类机器上。

  1. 登录ads_ag容器,创建文件list,填入内容格式如下所示。
    [ "前端机主机名1", "前端机主机名2", "前端机主机名3"]
  2. 执行如下命令,查看强label独占信息,如返回false,机器未设强独占。
    /apsara/deploy/rpc_caller --Server=nuwa://localcluster/sys/fuxi/master/ForClient --Method=IsMachineInDirectMonopoly  --ParameterFile=front_hostname.list
  3. 执行如下命令,设置label强独占,表示只有请求带label的Job才能运行在这类机器上,返回ok,表示执行成功。
    /apsara/deploy/rpc_caller --Server=nuwa://localcluster/sys/fuxi/master/ForClient --Method=SetMachineDirectMonopoly  --ParameterFile=front_hostname.list
  4. 执行如下命令,再次查看是否设置生效,如返回true,则表示机器设置强独占成功。
    /apsara/deploy/rpc_caller --Server=nuwa://localcluster/sys/fuxi/master/ForClient --Method=IsMachineInDirectMonopoly  --ParameterFile=front_hostname.list
    系统显示类似如下。

3.3. 结果验证

3.3.1. 角色验证

登录ADS集群AG服务器,切换到admin用户,执行如下命令,进行角色验证。

me -i [$IP]

说明:[$IP]为扩容的机器IP。

系统显示类似如下,应返回该IP的所有角色。

3.3.2. 飞天资源验证

  • 如扩容的是ChunkServer机器,依次执行如下命令,返回该扩容机器信息。

    puadmin lscs |grep tcp
    r ttrl

    说明:如遇执行r ttrl命令没有返回扩容的机器信息,则登录ads_ag容器,执行如下命令,查看机器是否被Fuxi添加到黑名单。如果返回结果中存在扩容的机器主机名,则说明机器被Fuxi添加到黑名单。

    /apsara/deploy/rpc_wrapper/rpc.sh blacklist cluster get
  • 如扩容的是前端机,则执行如下命令,返回该扩容机器信息 。

    r ttrl

3.3.3. Gallardo资源验证

  1. 登录ads_ag容器,切换到admin用户,依次执行 如下命令,确认每台机器上都存在NodeMoniTor进程 。

    r ttrl |grep disk |awk '{print $1}'> /tmp/ttrl.list
    pssh -h /tmp/ttrl.list -i "jps |grep NodeMoniTor"
  2. 如存在机器没有NodeMoniTor进程启动的情况,查看是否被Gallardo添加到黑名单。执行如下命令,返回一个机器主机名。

    r wheream garuda/garudaAppMaster
  3. 登录到返回的这个机器,执行jps命令,检查是否有ResourceManagerServer进程。有则表示正常,并记录机器IP地址。

  4. 登录ads_ag容器,切换到admin用户,执行如下命令,检查机器是否在黑名单中。如果机器在黑名单中,则需要

    从黑名单中删除。
    curl "http://[$Host]:8080/blackList?method=cancel&hostname=[$Machine]"

    说明

    • [$Host]为上一步记录的机器IP地址。

    • [$Machine]为异常的机器主机名。

  5. 以上都没有问题则表示扩容验证完成。

4. 回滚方案

无需回滚。

首页 通用方案:专有云V2环境AnalyticDB物理机扩容方法