云迁移部署
环境
- Centos7.2(transport/conductor)
- transport/conductor需关闭防火墙、selinux
- transport/conductor部署在cu以及华云公有云等有默认防火墙控制的云平台上时,
需要放开上行和下行的端口限制,默认端口是8080/9088/9099/9900/9901/9902。
- 源主机需关闭防火墙,若为linux需关闭selinux。
- 源主机若部署在cu以及华云公有云等有默认防火墙控制的云平台上时,
需要放开上行和下行的端口限制,默认端口是9902。
配置要求
| cpu |
memory |
带宽 |
| 2core |
4G |
10M |
- transport(非中转,task为并行任务数, CPU、宽带为推荐配置,内存为要求配置)
| cpu |
memory |
nic |
| 0.5core*task |
2G*task + 0.5G |
10MB*task |
备注:该类transport是作为接受端的transport,要在目标迁移的项目中。
- transport(纯中转,task为并行任务数,CPU、宽带为推荐配置,内存为要求配置)
| cpu |
memory |
nic |
| 0.5core*task |
0.2G*task + 0.5G |
10MB*task |
- 在线迁移packer-linux(CPU、宽带为推荐配置,内存为要求配置)
| cpu |
memory |
nic |
| 0.5core |
512MB |
10MB |
- 在线迁移packer-windows(CPU、宽带为推荐配置,内存为要求配置)
| cpu |
memory |
nic |
| 0.5core |
512MB |
10MB |
- 离线迁移packer-linux(CPU、宽带为推荐配置,内存为要求配置)
| cpu |
memory |
nic |
| 1core |
1GB |
10MB |
- 离线迁移packer-windows(CPU、宽带为推荐配置,内存为要求配置)
| cpu |
memory |
nic |
| 2core |
3GB |
10MB |
Conductor & Web
安装方式一 Docker安装方式
-
安装docker
- yum -y install docker
- 禁用 docker bridge
向 /etc/docker/daemon.json 添加 {"bridge": "none"} 。
cat /etc/docker/daemon.json 结果如下:
{"bridge": "none"}
- systemctl enable docker
- systemctl start docker
-
下载并启动docker image
- wget http://117.48.207.245/cmigrate/v1.3.1/docker_conductor_v1.3.1.image
安超版本:wget http://117.48.207.245/cmigrate/v1.3.1/docker_conductor_archeros_v1.3.1.image
- docker load -i docker_conductor_v1.3.1.image
安超版本:docker load -i docker_conductor_archeros_v1.3.1.image
- docker run --privileged -d --net=host --restart=always cmigrate/conductor:v1.3.1
安超版本:docker run --privileged -d --net=host --restart=always cmigrate/conductor_archeros2020:v1.3.1
-
进入docker终端(查看日志时使用)
- docker ps 获取container id
- docker exec -it e8659d31a313 bash #e8659d31a313 是 container id
-
备注:
- web 已经部署在了 conductor docker 镜像中,不需要额外部署。
- 删除已有docker镜像的方法:
a. docker ps 获取container id
b. docker container rm -f e8659d31a313
c. docker image rm cmigrate/conductor:v1.3.1
安装方式二 直接安装方式
Transport
安装方式一 Docker安装方式
-
安装docker
- yum -y install docker
- 禁用 docker bridge
向 /etc/docker/daemon.json 添加 {"bridge": "none"} 。
cat /etc/docker/daemon.json 结果如下:
{"bridge": "none"}
- systemctl enable docker
- systemctl start docker
-
下载并启动docker image
- 如果需要使用无代理模式迁移5.1以及更老版本vsphere上的虚拟机,wget http://117.48.207.245/cmigrate/v1.3.1/docker_transport_vsphere_v51_v1.3.1.image,
否则wget http://117.48.207.245/cmigrate/v1.3.1/docker_transport_v1.3.1.image
- docker load -i docker_transport_vsphere_v51_v1.3.1.image ,
或者 docker load -i docker_transport_v1.3.1.image
- docker run --privileged -d --net=host -v /dev:/dev --restart=always cmigrate/transport_vsphere_v51:v1.3.1
或者 docker run --privileged -d --net=host -v /dev:/dev --restart=always cmigrate/transport:v1.3.1
-
进入docker终端(查看日志时使用)
- docker ps 获取container id
- docker exec -it e8659d31a313 bash #e8659d31a313 是 container id
安装方式二 直接安装方式
-
安装virt-v2v
- yum install epel-release -y
- yum install libguestfs-winsupport virt-v2v ntfs-3g ntfsprogs jansson jansson-devel -y
- systemctl enable libvirtd
- systemctl start libvirtd
- yum install http://117.48.207.245/cmigrate/virtio-win-0.1.141-1.noarch.rpm -y
-
安装grub-install
- wget http://117.48.207.245/cmigrate/grub-0.97-99.el6.x86_64.rpm
- rpm -ivh grub-0.97-99.el6.x86_64.rpm --nodeps
-
安装Vmware-vix-disklib
- 如果需要使用无代理模式迁移5.1以及更老版本vsphere上的虚拟机, wget http://117.48.207.245/cmigrate/VMware-vix-disklib-5.1.0-774844.x86_64.tar.gz, 否则wget http://117.48.207.245/cmigrate/VMware-vix-disklib-6.5.0-4604867.x86_64.tar.gz
- tar -pzxvf VMware-vix-disklib-5.1.0-774844.x86_64.tar.gz -C /opt/ 或者 tar -pzxvf VMware-vix-disklib-6.5.0-4604867.x86_64.tar.gz -C /opt/
-
安装supervisor
- yum install supervisor -y
- systemctl enable supervisord
- systemctl start supervisord
-
安装transport
- 如果需要使用无代理模式迁移5.1以及更老版本vsphere上的虚拟机, wget http://117.48.207.245/cmigrate/v1.3.1/transport-vsphere-v51-1.3.1.tgz, 否则wget http://117.48.207.245/cmigrate/v1.3.1/transport-1.3.1.tgz
- tar -pzxvf transport-vsphere-v51-1.3.1.tgz -C / 或者 tar -pzxvf transport-1.3.1.tgz -C /
- systemctl restart supervisord
-
备注:
- 删除已有docker镜像的方法:
a. docker ps 获取container id
b. docker container rm -f e8659d31a313
c. docker image rm cmigrate/transport_vsphere_v51:v1.3.1 或者 docker image rm cmigrate/transport:v1.3.1
- transport配置文件里的transport-ip项
a. 非中专模式下transport接受端和packer之间使用vpn协议通信场景下需要配置
b. 非中专模式下transport接受端ping工具ping packer地址, 同时packer上tcpdump -i <网卡> host <接受端Ip>,如果检测不到信息也需要配置
Packer 离线迁移
关闭源主机后,接入光盘或者usb启动盘,设置bios从光盘或usb启动,开机进入离线迁移系统。
Windows 光盘或者usb启动盘刻录
- 下载windows离线镜像, http://117.48.207.245/cmigrate/v1.3.1/packer-offline-windows-1.3.1.iso
- 下载 UltraISO 镜像刻录工具,http://117.48.207.245/cmigrate/tools/UltraISOPortable_9.7.1.3519.rar
- 在windows上使用 UltraISO 进行刻录光盘或者usb启动盘。
- 此步骤开始,仅为U盘刻录使用。
- 制作usb启动盘时,写入方式选择 USB-HDD+ 。
Linux 光盘或者usb启动盘刻录
- 下载linux离线镜像, http://117.48.207.245/cmigrate/v1.3.1/packer-offline-linux-1.3.1.iso
- 下载 UltraISO 镜像刻录工具,http://117.48.207.245/cmigrate/tools/UltraISOPortable_9.7.1.3519.rar
- 在windows上使用 UltraISO 进行刻录光盘或者usb启动盘。
- 此步骤开始,仅为U盘刻录使用。
- 制作usb启动盘时,写入方式选择 RAW 模式 (这个选择很重要!!!) 。
Packer 在线迁移
Windows
x64
-
安装packer
- wget http://117.48.207.245/cmigrate/v1.3.1/packer-1.3.1-windows-x64.zip
- 关闭防火墙,卸载杀毒软件
- 解压packer-1.3.1-windows-x64.zip, 以管理员身份运行cmd工具,使用cmd命令行执行install.bat脚本完成安装
- cmd命令行里使用"netstat -ano" 查看9902端口是否被监听
x86
-
安装packer
- wget http://117.48.207.245/cmigrate/v1.3.1/packer-1.3.1-windows-x86.zip
- 关闭防火墙,卸载杀毒软件
- 解压packer-1.3.1-windows-x86.zip, 以管理员身份运行cmd工具,使用cmd命令行执行install.bat脚本完成安装
- cmd命令行里使用"netstat -ano" 查看9902端口是否被监听
Linux
安装方式一 脚本安装方式
-
安装packer
- wget http://117.48.207.245/cmigrate/v1.3.1/PackerInstallerForLinux.sh
- chmod +x PackerInstallerForLinux.sh 添加执行权限
- ./PackerInstallerForLinux.sh
-
备注:
- 脚本搜索的本地路径默认是/opt/packer
- 脚本安装日志的默认路径是/var/log/install.log
- 用户现场如果能连外网,只要把kernel-devel包拷贝到/opt/packer目录后,直接执行安装脚本
- 用户现场如果不能连外网,需要把kernel-devel和datto相关包都拷贝到/opt/packer目录,配置本地源后再使用脚本
- 本地源配置方法
https://blog.csdn.net/wanghaitao95/article/details/10187339
https://blog.csdn.net/u011436548/article/details/21544297
- kernel-devel和datto包在
http://117.48.207.245/cmigrate/kernel-devel以及http://117.48.207.245/cmigrate/datto获取
安装方式二 直接安装方式
Centos 7
-
安装kernel-devel
- 使用“uname -r”命令获取内核版本KERNEL_VERSION,推荐http://mirror.centos.org/centos/ 或者https://www.rpmfind.net/linux/rpm2html/search.php?query=kernel-devel
- 搜索kernel-devel-KERNEL_VERSION.rpm
- 使用rpm -ivh kernel-devel-KERNEL_VERSION.rpm 进行安装
-
安装datto
- yum localinstall https://cpkg.datto.com/datto-rpm/repoconfig/datto-el-rpm-release-$(rpm -E %rhel)-latest.noarch.rpm
- yum install dkms-dattobd dattobd-utils
- modprobe dattobd 加载内核模块
- 使用"lsmod | grep datto"查看datto模块是否被加载上
-
安装dmidecode
- yum install dmidecode
-
安装packer
- wget http://117.48.207.245/cmigrate/v1.3.1/packer-1.3.1-linux-generic.tgz
- tar -pzxvf packer-1.3.1-linux-generic.tgz -C /
- packer_service start
- packer_service status
Centos 6
-
安装kernel-devel
- 使用“uname -r”命令获取内核版本KERNEL_VERSION,推荐http://mirror.centos.org/centos/ 或者https://www.rpmfind.net/linux/rpm2html/search.php?query=kernel-devel
- 搜索kernel-devel-KERNEL_VERSION.rpm
- 使用rpm -ivh kernel-devel-KERNEL_VERSION.rpm 进行安装
-
安装datto
- yum localinstall https://cpkg.datto.com/datto-rpm/repoconfig/datto-el-rpm-release-$(rpm -E %rhel)-latest.noarch.rpm
- yum install dkms-dattobd dattobd-utils
- modprobe dattobd 加载内核模块
- 使用"lsmod | grep datto"查看datto模块是否被加载上
-
安装dmidecode
- yum install dmidecode
-
安装packer
- wget http://117.48.207.245/cmigrate/v1.3.1/packer-1.3.1-linux-centos6.tgz
- tar -pzxvf packer-1.3.1-linux-centos6.tgz -C /
- packer_service start
- packer_service status
Redhat 6.6
-
安装kernel-devel
- 使用“uname -r”命令获取内核版本KERNEL_VERSION,推荐http://mirror.centos.org/centos/ 或者https://www.rpmfind.net/linux/rpm2html/search.php?query=kernel-devel
- 搜索kernel-devel-KERNEL_VERSION.rpm
- 使用rpm -ivh kernel-devel-KERNEL_VERSION.rpm 进行安装
-
安装datto
-
源主机yum可用
- yum install dkms 安装依赖
- yum localinstall
https://cpkg.datto.com/datto-rpm/EnterpriseLinux/6.6/x86_64/libdattobd-0.10.9-23.1.el6.x86_64.rpm
- yum localinstall
https://cpkg.datto.com/datto-rpm/EnterpriseLinux/6.6/x86_64/dkms-dattobd-0.10.9-23.1.el6.noarch.rpm
- yum localinstall
https://cpkg.datto.com/datto-rpm/EnterpriseLinux/6.6/x86_64/dattobd-utils-0.10.9-23.1.el6.x86_64.rpm
- modprobe dattobd 加载内核模块
- 使用"lsmod | grep datto"查看datto模块是否被加载上
-
源主机yum不可用
-
方法1:wget方式下载所有需要的包,本地安装
- 依赖包,dkms, elfutils-default-yama-scope, elfutils-libelf-devel, elfutils-libs,推荐
https://www.rpmfind.net
- 驱动包,libdattobd-0.10.9-23.1.el6.x86_64.rpm,dattobd-0.10.9-23.1.el6.noarch.rpm,dattobd-utils-0.10.9-23.1.el6.x8664.rpm, 推荐
https://cpkg.datto.com/datto-rpm/EnterpriseLinux/6.6/x86_64/
- modprobe dattobd 加载内核模块
- 使用"lsmod | grep datto"查看datto模块是否被加载上
-
方法2:重装用户的yum软件(可能会同时安装一个内核升级包, 重启时注意选择原内核)
- 重装yum,推荐
https://segmentfault.com/a/1190000013590285
- 修改/etc/yum.conf配置,将
distroverpkg=centos-release替换为distroverpkg=redhat-release-server
- yum localinstall https://cpkg.datto.com/datto-rpm/repoconfig/datto-el-rpm-release-$(rpm -E %rhel)-latest.noarch.rpm
- yum install dkms-dattobd dattobd-utils
- modprobe dattobd 加载内核模块
- 使用"lsmod | grep datto"查看datto模块是否被加载上
-
安装dmidecode
-
源主机yum可用
- yum install dmidecode
-
源主机yum不可用
- 参考datto安装步骤
-
安装packer
- wget http://117.48.207.245/cmigrate/v1.3.1/packer-1.3.1-linux-centos6.tgz
- tar -pzxvf packer-1.3.1-linux-centos6.tgz -C /
- packer_service start
- packer_service status
Ubuntu 14.04/16.04
-
安装datto
- apt-key adv --recv-keys --keyserver keys.fedoraproject.org 370C85D709D26407
- echo "
deb [arch=amd64] https://cpkg.datto.com/datto-deb/public/$(lsb_release -sc) $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/datto-linux-agent.list
- apt-get update
- apt-get install dattobd-dkms dattobd-utils
- modprobe dattobd 加载内核模块
- 使用"lsmod | grep datto"查看datto模块是否被加载上
-
安装dmidecode
- apt-get install dmidecode
-
安装packer
- wget http://117.48.207.245/cmigrate/v1.3.1/packer-1.3.1-linux-generic.tgz
- tar -pzxvf packer-1.3.1-linux-generic.tgz -C /
- packer_service start
- packer_service status
windows boot数据一致性问题解决方案
针对当前的现状,windows迁移过程中,该问题相关的场景有两种。
* 第一种情景:
迁移到云平台的windows 2008/7 及更高版本的windows系统,如果启动时报错,错误代码是 0xc0000428,并且错误内容是windows无法验证\windows\system32\winload.exe的数字签名,这种场景由于windows操作系统一直在更新,无法做到持续更新迁移工具的windows boot分区数据以及mbr信息,所以需要手动处理,处理过程如下,
-
到packer-offline-windows-2.0.0.iso 镜像,该镜像核心是win10 pe,下载地址http://10.192.13.183/cmigrate/v2.0.0/packer-offline-windows-2.0.0.iso 。
-
上传到云平台,并且制作成 iso 镜像。
-
对迁移云平台上的目标云主机挂载 该iso镜像,开机进入win10pe。
-
打开cmd命令行,执行 bcdboot.exe C:\windows /s D:\ 进行boot的修复。(备注,该命令中C:\是指云主机的windows系统分区,D:\是指云主机的windows启动分区,两个盘符都可能会发生变化)
-
关闭云主机,卸载iso镜像,然后开机,此时系统如果没有其他问题可以正常启动。
-
第二种情景:
迁移到云平台的windows 2008/7 及更高版本的windows系统,能够正常启动,也可能会因为boot分区中的数据无法匹配当前操作系统中的boot数据,导致在后续的系统更新中,boot分区中的数据无法得到同步更新,从而出现0xc0000428启动错误。所以在使用1.3.2及之前迁移工具迁移windows 2008/7及更高版本的windows时,需要手动执行一下操作:
-
进入到windows云主机,打开cmd命令行,
-
执行 bcdboot.exe C:\windows 命令(更新boot分区中的数据,使其和系统分区中的数据一致)
-
重启系统(或等待用户自己重启)。
对于这种场景,后续迁移版本中会加入自动化处理。