批量迁移
一次性迁移较多数量的服务器时,使用单台全量迁移的方式较耗时。服务器数量为十台以上,建议您制作脚本进行批量迁移。
背景信息
对于大批量的服务器系统,一般都会配备自动化运维工具来统一管理,例如较常用的Ansible。使用Ansible可以方便地完成一些需要重复操作的工作,例如,向100台服务器拷贝同一个文件,或者同时在100台服务器上安装Apache服务并启动。
自动化运维工具可以批量下发并执行脚本。迁云工具是一个客户端工具程序,无需安装或复杂配置即可使用。
操作步骤
-
准备自动化批量运维工具。
-
使用迁云工具命令行进行调用。
迁云工具提供一系列的命令行参数,适用于命令行调用的场景。例如:- --noenterkey:禁用交互
- --nocheckversion:禁用提示版本更新
- --progressfile:设置进度日志文件
-
编写批量迁移任务脚本。
根据实际迁移任务的需要来编写自动化批量迁移任务脚本,脚本中主要包括以下几项:
- 批量下发迁云工具到待迁移服务器
- 批量配置迁云工具,如目标镜像名等信息
- 批量执行迁云工具,同时获取迁移任务结果
示例脚本
#首先向所有服务器发送迁云工具程序
ansible -f 6 -i host.file all -m copy -a
"src=go2aliyun_client1.2.9.1_linux_x86_64.zip dest=/temp"
#然后解压缩程序
ansible -f 6 -i host.file all -m shell -a "cd /temp &&
unzip \
go2aliyun_client1.2.9.1_linux_x86_64.zip"
#再执行修改配置文件脚本
ansible -f 6 -i host.file all -m shell -a "cd
/temp/go2aliyun_client1.2.9.1_linux_x86_64 && ./config.sh"
sleep 120
# 配置文件脚本./config.sh工作是配置目标镜像名,主要根据子网IP来配置。(其他配置如AK,区域、磁盘信息等都是一致已配置好的)
#!/bin/bash
image_name=`ip a | grep inet | grep eth0 | grep brd | awk '{print
$2}' | awk -F '/' '{print $1}'| awk -F '.' '{print
"move_"$1"_"$2"_"$3"_"$4}'`
sed -i "s/IMAGE_NANE/${image_ame}/" user_config.json
#最后执行迁移脚,同时运行并发量是6个
ansible -f 6 -i host.file all -m shell -a "cd
/temp/go2aliyun_client1.2.9.1_linux_x86_64 && chmod +x go2aliyun_client
&&./go2aliyun_client --nocheckversion --noenterkey"
#获取迁云结果,从client_data中获取生成的镜像Id以及完成状态
#判断client_data里的status自带,如果是Finished则表示迁云完成,同时image_id字段就是最终生成的镜像Id。
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论