本文主要介绍专有云V2环境AnalyticDB物理机扩容的方法。
方案总览
类别 | 内容 |
国产化 | 否 |
风险等级(方案执行的影响) | 低 |
操作方式 | 黑屏 |
操作复杂度 | 中 |
预估执行时长 | N/A |
客户业务的影响 | 无 |
可监控性 | 不支持 |
有效性(重启、重拉、补丁、升级、扩容等配置是否丢失) | 固化 |
数据修订(变更是否涉及增删改操作) | 无 |
执行灰度策略 | 请向产品侧咨询,明确灰度策略 |
首次发布时间 | N/A |
预计完成时间 | N/A |
说明:适用于专有云V2.0.0~V2.5.0环境,包含V2.0.0和V2.5.0环境。
扩容无风险。
在专有云V2环境,因业务量增加等原因,需要对ADS集群中的机器进行动态热扩容操作。
在天目控制台上确认apsara_service和ads_service服务正常可用。
将新增的机器安装好操作系统。装机模板使用ads_cloud_stand_server,如有疑问请联系阿里云技术支持,其它信息请参照ADS集群的装机任务。
装机完成后,检查/home/admin
目录是否为单独挂载。登录装机后的机器,执行如下命令,查看是否有分区信息,如没有请联系阿里云技术支持。
df -h |grep /home/admin
将解压后的check.sh文件拷贝到ADS集群AG服务器的/tmp
目录下。
依次执行如下命令,执行健康检查。
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
通过执行以下操作,打通ads_ag容器与新增机器的admin通道。
sudo su root
执行如下命令, 将ads_ag容器的私钥拷贝到DMSAG服务器。
scp [$ADS_AG_IP]:/home/amin/.ssh/authorized_keys /tmp/
说明:[$ADS_AG_IP]为ads_ag容器的IP地址。
执行如下命令,将密钥文件的所有者权限改为admin。
chown admin:admin /tmp/authorized_keys
准备待扩容机器的IP列表。本文以/tmp/add.list
文件为例,将IP地址存放在此文件中。
说明:每行一个IP,用换行符隔开。
执行如下命令,将私钥覆盖到待扩容的机器上。
pscp -h /tmp/add.list -A /tmp/authorized_keys /home/amin/.ssh/authorized_keys
执行如下命令,检查必备软件是否安装,版本是否与未重装机器之前一致。
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列表。
执行如下命令,查看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列表。
search tubo > /tmp/tubo_ip
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
/home/admin/dayu/install/role_resize --set_role="[$Role]" add /tmp/add.list
说明:系统显示类似如下,查看打印的日志,如果返回结果中failed值为空,则表示角色新增成功。
[$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地址。
for i in `cat /tmp/tubo_ip`;do me -i $i;done |grep -v chunkserver
/home/admin/dayu/install/role_resize --set_role="[$Role]" add /tmp/add.list
如果是重新装机,缩扩容的操作请跳过该步骤。
登录ads_ag容器,切换到admin用户,执行如下命令,查看当前Quota值。
r quota
系统显示类似如下,得到扩容前CPU和内存的Quota值,并记录为[$CPU_Quota_Old]和[$MEM_Quota_Old]。ScaledQuota字段为当前Quota。
执行如下命令,查看当前计算节点个数。
search tubo |wc -l
计算新的CPU和内存的Quota值,计算方法如下。
[$CPU_Quota_New]=(新扩容机器数+集群原有计算节点个数)/集群原有计算节点个数 * 1.2 * [$CPU_Quota_Old]
[$MEM_Quota_New]=(新扩容机器数+集群原有计算节点个数)/集群原有计算节点个数 * 1.2 * [$MEM_Quota_Old]
执行如下命令,设置新Quota值。
r setquota -i [$Account] -a [$Alias] -s [$CPU_Quota_New] [$MEM_Quota_New]
说明:[$Account]和[$Alias]为本小节步骤1图中对应的字段值。
登录ADS集群AG服务器,切换到admin用户,执行如下命令,启动飞天。
pssh -h /tmp/add.list -i "/home/admin/dayu/bin/super-apsarad start"
系统显示类似如下。
执行如下命令,检查飞天状态。
pssh -h /tmp/add.list -i "/home/admin/dayu/bin/super-apsarad status"
系统显示类似如下,若飞天状态正常,扩容完成。
执行如下命令,确认老机器打标签的标识。如返回结果为空,则扩容完成,无需后续的编写机器标识和给新机器打标签操作 。
r tbnl
本文以扩容fuxiServiceLable为“N36.22”的ChunkServer机器为例。登录ads_ag容器,切换到admin用户,编辑/home/admin/label_n36
文件,内容如下所示。
{
"fuxiServiceLable":"N36.22",
"gallardoRM":"gallardoRM",
"localNode":"localNode"
}
说明:不同机型的机器,标签不同,需要分开执行,如有疑问请联系阿里云技术支持。
执行如下命令,给新机器打标签。
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]为编写的机器标识文件。
仅限扩容前端机时操作,扩容后端机时跳过该步骤,如有疑问请联系阿里云技术支持。执行以下操作步骤,可不让MR任务执行到这类机器上。
[ "前端机主机名1", "前端机主机名2", "前端机主机名3"]
/apsara/deploy/rpc_caller --Server=nuwa://localcluster/sys/fuxi/master/ForClient --Method=IsMachineInDirectMonopoly --ParameterFile=front_hostname.list
/apsara/deploy/rpc_caller --Server=nuwa://localcluster/sys/fuxi/master/ForClient --Method=SetMachineDirectMonopoly --ParameterFile=front_hostname.list
/apsara/deploy/rpc_caller --Server=nuwa://localcluster/sys/fuxi/master/ForClient --Method=IsMachineInDirectMonopoly --ParameterFile=front_hostname.list系统显示类似如下。
登录ADS集群AG服务器,切换到admin用户,执行如下命令,进行角色验证。
me -i [$IP]
说明:[$IP]为扩容的机器IP。
系统显示类似如下,应返回该IP的所有角色。
如扩容的是ChunkServer机器,依次执行如下命令,返回该扩容机器信息。
puadmin lscs |grep tcp
r ttrl
说明:如遇执行
r ttrl
命令没有返回扩容的机器信息,则登录ads_ag容器,执行如下命令,查看机器是否被Fuxi添加到黑名单。如果返回结果中存在扩容的机器主机名,则说明机器被Fuxi添加到黑名单。/apsara/deploy/rpc_wrapper/rpc.sh blacklist cluster get
如扩容的是前端机,则执行如下命令,返回该扩容机器信息 。
r ttrl
登录ads_ag容器,切换到admin用户,依次执行如下命令,确认每台机器上都存在NodeMoniTor进程 。
r ttrl |grep disk |awk '{print $1}'> /tmp/ttrl.list
pssh -h /tmp/ttrl.list -i "jps |grep NodeMoniTor"
如存在机器没有NodeMoniTor进程启动的情况,查看是否被Gallardo添加到黑名单。执行如下命令,返回一个机器主机名。
r wheream garuda/garudaAppMaster
登录到返回的这个机器,执行jps命令,检查是否有ResourceManagerServer进程。有则表示正常,并记录机器IP地址。
登录ads_ag容器,切换到admin用户,执行如下命令,检查机器是否在黑名单中。如果机器在黑名单中,则需要
从黑名单中删除。curl "http://[$Host]:8080/blackList?method=cancel&hostname=[$Machine]"
说明:
[$Host]为上一步记录的机器IP地址。
[$Machine]为异常的机器主机名。
以上都没有问题则表示扩容验证完成。
无需回滚。