设为首页 收藏本站
查看: 1413|回复: 0

[经验分享] 实战 VMWare esx虚拟机动态迁移到linux KVM

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-5-26 15:37:44 | 显示全部楼层 |阅读模式
早前,我们公司的业务应用是windows+.net语言的开发平台,大部分业务都是在一个工程下进行开发,打包上线直接就是一个大的压缩包,业务部署在多台物理机器上。随着前两年.net开发平台迁移到linux+java开发平台,很多业务应用不再像.net那样是一个大的数据包上线,大多数业务都开始拆分出来,很多机器的资源出现利用率不高的情况,于是业务应用基本上迁移到虚拟机集群上,只有部分资源占用比较多的业务还在使用物理机器,比如搜索,离线数据处理,hadoop集群,数据库等。  由于前期基于稳定性和维护成本考虑,我们公司使用的是VMWare esx4虚拟化解决方案,后期在虚拟机上部署业务应用也就延续使用了。由于公司内部的一些调整以及相关部署成本的考虑,运维人员的技术素养也足矣让我们重新考虑对VMWare虚拟化方案进行迁移,我们对生产环境业务的虚拟机化方案重新进行评估测试和全站业务迁移,参考了xen,kvm等虚拟化方案,最后确定下使用kvm方案,而且前期我们也在部分机器集群上应用了kvm虚拟化方案,并在运维相关同事的帮助下对网络以及磁盘io进行了优化配置。
  整个VMWare esx迁移到linux KVM 过程系统运维张晋同学(目前已就职新公司)主要负责kvm虚拟化的测试和调整,作为偏向于业务方面的运维人员,我主要负责了解KVM虚拟化测试和调整过程以及实施整个迁移过程。

  一个月的时间,我们完全将线上的虚拟化方案从VMWare esx 迁移到了Linux KVM,迁移过程发现了Centos Linux 6.0 系统内核的问题,顺带着也将系统内核进行了升级。我们公司整个业务相关操作系统使用的是Cento OS Linux,目前使用的是 Centos Linux 6.3 版本,内核版本会根据系统需要进行升级。

   下面开始讲下整个迁移过程以及相关脚本,由于整个迁移过程主要时间耗费在数据的导出与备份,迁移过程还是蛮快的。

迁移分为两类,动态迁移(无需关机)和静态迁移(需要关机),我们整个迁移过程使用的是动态迁移方式。

整个迁移过程分为两个部分:我们迁移过程,关机是为了在保证IP不变的基础上重装系统进行迁移,如果直接迁移到新的宿主机器上只需要在迁移时修改IP相关信息,不需要关闭虚拟机和宿主机的。

1.针对符合运维规范的业务,(业务应用名称-----主机名-----业务部署方式------java容器使用的是jboss,目前已经替换为tomcat),迁移过程IP信息不会改变

  下线应用(从负载均衡摘除)----备份数据------删除相关证书信息-----虚拟机关机----当宿主机上所有物理机执行完以上步骤,开始重装物理机操作系统,安装定制好的Linux KVM 物理机操作系统镜像----创建KVM虚拟机(IP信息会改变),并配置相关主机信息----恢复数据----通过puppet推送应用相关数据-----自检---上线应用


2.针对一些特殊应用,无法通过备份业务应用数据恢复的方式,我们使用VMWare esx4的备份工具vcbMounter(esxi5,可直接用vsphere 图形操作 ) 导出磁盘镜像,然后通过qemu-img convert转换磁盘镜像格式,直接在Linux KVM机器上启动。迁移过程也是可以保证IP信息保持不变的。

要备份虚拟机磁盘镜像文件,需要在安装vmware tools并且保持虚拟机开机的情况下进行操作。

安装vmware-tools-distrib:
cd /media/VMware Tools  
cp VMwareTools.tar.gz  /data
  tar xzvf VMwareTools.tar.gz  
cd vmware-tools-distrib  
./vmware-install.pl  


相关脚本:删除路由信息是考虑到迁移过程有些机器IP会
1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash
scp /data/vmware.tar.gz $1:/root
ssh $1 "tar -zxvpf /root/vmware.tar.gz -C /root"
ssh $1 "/usr/bin/yes | /usr/bin/tr '\y' '\n' | /usr/bin/perl /root/vmware-tools-distrib/vmware-install.pl"
ssh $1 "rm -rf /etc/udev/rules.d/70-persistent-net.rules" (mac地址更新后需要删除,否则会找不到网卡)
ssh $1 "sed -i -e '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0"
ssh $1 "sed -i -e '/route/d' /etc/rc.d/rc.local"
ssh $1 "sed -i -e '/route/d' /etc/rc.local"
ssh $1 "echo 'qunying.liu@dianping' | passwd --stdin root"
ssh $1 "wget -P /root http://dataserver/cblr/ks_mirror/CentOS60-x86_64/ipsetup(ip设置脚本)"
ssh $1 "echo '/etc/init.d/network restart 1>/dev/null && sh /etc/rc.d/rc.local' >> /root/ipsetup"





ssh 10.1.x.x(vmware宿主机)

挂载远程备份目录:
mkdir /vmfs/volumes/datastore1/vmbak(创建备份目录)
/etc/init.d/iptables stop (关闭系统iptables,否则会挂载远程目录失败)
mount -t cifs -o username=qunying.liu,password='hehe' //fileserver/vmdisk /vmfs/volumes/datastore1/vmbak

借助vmware tools工具导出vmware虚拟机磁盘镜像文件:
vcbMounter -h 10.1.x.x(宿主机)  -u root -p ‘宿主机密码qunying.liu’' -a ipaddr:虚拟机IP  -M 1 -r /vmfs/volumes/datastore1/vmbak/虚拟机目录


在Linux文件服务器下

cd /data/vmdisk/虚拟机目录
qemu-img convert -O qcow2 export-out.vmdk  kvm-qunying.liu.img (转换vmware磁盘文件vmdk到 qcow2 格式,以便kvm可以识别)
scp kvm-qunying.liu.img 宿主机IP:/data

宿主机操作系统重装完毕后,恢复虚拟机
virsh destroy 新虚拟机名称  ;rm -f  /data/vmdisk/新虚拟机.img ;mv 转换的虚拟机文件   /data/vmdisk/;virsh start 转换后的虚拟机

相比较而言,第一部分由于迁移的数据主要是业务数据与应用以及系统相关的配置文件,数据量不多备份恢复速度是很快的,时间主要消耗在系统重装过程。第二部分迁移过程属于完全备份和转换虚拟机磁盘镜像,如果不需要保证IP信息不变,操作系统可以提前安装好,我们这里要求保证IP信息不变,那就需要转换备份完磁盘镜像文件(VMDK格式到RAW格式)后就可以重装系统,重装完系统后再恢复磁盘镜像文件。

静态迁移方式:需要关闭待迁移的虚拟机,当然宿主机是不能关机的,不支持快照迁移,只支持RHEL和windows虚拟机迁移。
从 RHEL6(RedHat Enterprise Linux 6)开始,RHEL 发行版中包含了Red Hat 公司开发的 virt-v2v工具。它是由 perl语言编写的脚本,可以自动化的将创建在 Xen,KVM 和VMware ESX 上的虚拟机拷贝到 virt-v2v的主机,并且自动的更改配置,使之能够被 libvirt进行管理。目前,virt-v2v 支持静态迁移下列虚拟机:RHEL4、RHEL5, RHEL6,WindowsXP,WindowsVista, Windows 7, Windows Server 2003 和Windows Server 2008。

  virt-v2v -ic esx://宿主机ip/?no_verify=1  -os migration -of qcow2 --bridge br0  RHEL5.5
    -os migration: 迁移虚拟机的镜像文件到主机上的存储池
    -of  qcow2: 转换迁移后虚拟机的文件格式
   --bridge br0: 设置迁移后虚拟机的网络映射到网桥 br0
   RHEL5.5:VmwareESXi上虚拟机的名字,迁移后保持名字一致


之前在网上也看到过有关静态迁移的一些实践文章,感兴趣的小伙伴可以查看:
http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm3/
http://koumm.blog./703525/1304461

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-19631-1-1.html 上篇帖子: VMware vSphere 关键概念理解与速查手册 下篇帖子: 定制图形化Vmware CentOS 云平台
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表