需求:
目前有两台服务器
192.168.139.117
192.168.139.83
把117上的一台vm动态迁移到83上,中间不断网,不影响用户使用
假设vm的网络也是一个网段的192.168.139.66,使用相同的dhcp服务
服务器上配置网络:
两台机器都要
systemctl stop NetworkManager systemctl disable NetworkManager
网络配置为
192.168.139.117:
[root@jslinux network-scripts]# cat ifcfg-br0 DEVICE=br0 TYPE=Bridge ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.139.117 NETMASK=255.255.240.0 GATEWAY=192.168.128.1 DNS1=114.114.114.114 [root@jslinux network-scripts]# cat ifcfg-eth0 NAME="eth0" DEVICE="eth0" ONBOOT="yes" NM_CONTROLLED=yes BOOTPROTO=none BRIDGE=br0 [root@jslinux network-scripts]#
##################
192.168.139.83:
[root@mcontroller network-scripts]# cat ifcfg-br0 DEVICE=br0 TYPE=Bridge ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=none IPADDR=192.168.139.83 NETMASK=255.255.240.0 GATEWAY=192.168.128.1 DNS1=114.114.114.114 [root@mcontroller network-scripts]# cat ifcfg-eth0 NAME="eth0" DEVICE="eth0" ONBOOT="yes" NM_CONTROLLED=yes BOOTPROTO=none BRIDGE=br0 [root@mcontroller network-scripts]#
准备
kernel文件 :bzImage
系统镜像:hda.qcow2 迁移的必须是qcow2等格式,raw不行
如果是raw的hda.img需要转一下:
qemu-img convert -f raw -O qcow2 hda.img hda.qcow2
qemu的启动的网络脚本:
if-up:
#!/bin/sh ip link set tap1 up brctl addif br0 tap1
关闭的脚本:
if-down:
#!/bin/sh ip link set tap1 down brctl delif br0 tap1
在117上qemu启动vm:
/usr/libexec/qemu-kvm -kernel bzImage -drive file=hda.qcow2,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1" -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,ifname=tap1,script=./if-up,downscript=./if-down -vnc 0.0.0.0:1
脚本和hda.qcow,bzImage都复制到83上
#####################
进入刚起的vm,执行dhclient获取ip为192.168.139.66
设置一些变量(为了观察内存迁移后是否同步)
export haohao=ning
修改一个文件(为了观察硬盘迁移后是否同步)
echo 117 > /hello.txt
####################################
在83上启动
/usr/libexec/qemu-kvm -kernel bzImage -drive file=hda.qcow2,if=ide,cache=none -append "console=ttyS0 root=/dev/sda rw rdinit=/sbin/init notsc=1" -boot order=dc,menu=on -net nic,vlan=0,macaddr=52:54:00:12:34:22,model=e1000,addr=08 -net tap,ifname=tap1,script=./if-up,downscript=./if-down -vnc 0.0.0.0:1 -incoming tcp:0:6666
注意多了一个 -incoming tcp:0:6666,其他都一样,准备接受,执行后,vm并没有开始运行
######################################
切换到117上起的vm,ip为192.168.139.66的vm上
ctl+alt 2 切换到monitor模式
(qemu)migrate tcp:192.168.139.83:6666
这个过程观察一直观察网络ping的状况
#############################
发现ping没有明显变化
83上启动的vm
ctl+alt 3 或ctl+alt 1切换到运行的vm上
内存硬盘网络已经为66了
117上的vm已经不可用
达到不影响用户使用的情况把
vm从117迁移到了83上,
好了,117服务器可以下架了
如图:
####################################
需要的基础知识:
vm的网络桥接参考:
http://haoningabc.iteye.com/blog/2306736
基本的动态迁移参考
http://haoningabc.iteye.com/blog/2307304
用qemu建立vm参考:
http://haoningabc.iteye.com/blog/2306941