一次性迁移较多数量的服务器时,使用单台全量迁移的方式较耗时。服务器数量为十台以上,建议您制作脚本进行批量迁移。

背景信息

对于大批量的服务器系统,一般都会配备自动化运维工具来统一管理,例如较常用的Ansible。使用Ansible可以方便地完成一些需要重复操作的工作,例如,向100台服务器拷贝同一个文件,或者同时在100台服务器上安装Apache服务并启动。

自动化运维工具可以批量下发并执行脚本。迁云工具是一个客户端工具程序,无需安装或复杂配置即可使用。

操作步骤

  1. 准备自动化批量运维工具。

  2. 使用迁云工具命令行进行调用。

    迁云工具提供一系列的命令行参数,适用于命令行调用的场景。例如:
    • --noenterkey:禁用交互
    • --nocheckversion:禁用提示版本更新
    • --progressfile:设置进度日志文件
  3. 编写批量迁移任务脚本。

    根据实际迁移任务的需要来编写自动化批量迁移任务脚本,脚本中主要包括以下几项:

    1. 批量下发迁云工具到待迁移服务器
    2. 批量配置迁云工具,如目标镜像名等信息
    3. 批量执行迁云工具,同时获取迁移任务结果

示例脚本

#首先向所有服务器发送迁云工具程序

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。