参考文章http://blog.csdn.net/zoushidexing/article/details/7814181
一、迁移条件准备:
vncserver_proxyclient_address=127.0.0.1
vncserver_listen=0.0.0.0
2、修改libvirt配置:
(1)修改/etc/libvirt/libvirtd.conf
修改前 : #listen_tls = 0
修改后 : listen_tls = 0
修改前 : #listen_tcp = 1
修改后 : listen_tcp = 1
添加: auth_tcp="none"
(2)修改/etc/init/libvirt-bin.conf
修改前:env libvirtd_opts="-d "
修改后 : env libvirtd_opts="-d -l"
(3)修改/etc/default/libvirt-bin
修改前:libvirtd_opts=" -d"
修改后:libvirtd_opts=" -d -l"
(4)修改/etc/libvirt/qemu.conf
去掉下三行注释:
vnc_listen = “0.0.0.0″
user = “root”
group = “root”
三、重启服务:
1、重启libvirt服务:
service libvirt-bin restart
2、重启nova-compute服务:
service nova-compute restart
四、迁移命令
nova-manage service describe_resource computeNodeName 查看节点资源情况
nova live-migration instanceUUID computeNodeName 将虚拟机迁移到目的节点
(这个命令需要在虚拟机的原节点之心)
五、迁移结果
1、迁移成功:执行完命令后终端没有任何输出,
在迁移的原节点查看日志:
2012-12-03 15:23:50 INFO nova.compute.manager [-] post_live_migration() is started..
2012-12-03 15:23:51 INFO nova.compute.manager [-] [instance: 7cd92fad-353a-4087-8692-6142d2bd45f7] No floating_ip found
2012-12-03 15:23:54 INFO nova.compute.manager [-] [instance: 7cd92fad-353a-4087-8692-6142d2bd45f7] Migrating instance to ubuntuPC finished successfully.
在迁移的目的节点日志中可以看到迁移信息:Post operation of migraton started表明迁移成功。
2、迁移失败情况:
(1)执行完命令,终端报错:ERROR: Live migration of instance 7a90a250-7457-49be-8dfc-8482b6c2cadb to host compute-135 failed (HTTP 400)
(2)ERROR: n/a (HTTP 400)
没有在实例的原节点执行迁移命令。
以上配置文件写成脚本
liv-migration.sh
内容如下:
sed -i '/vncserver_proxyclient_address/d' /etc/nova/nova.conf
sed -i '/vncserver_listen/d' /etc/nova/nova.conf
sed -i '$a\vncserver_proxyclient_address=127.0.0.1' /etc/nova/nova.conf
sed -i '$a\vncserver_listen=0.0.0.0' /etc/nova/nova.conf
sed -i 's/#listen_tls = 0/listen_tls = 0/g' /etc/libvirt/libvirtd.conf
sed -i 's/#listen_tcp = 1/listen_tcp = 1/g' /etc/libvirt/libvirtd.conf
sed -i '$a\auth_tcp="none"' /etc/libvirt/libvirtd.conf
sed -i 's/env libvirtd_opts="-d "/env libvirtd_opts="-d -l"/g' /etc/init/libvirt-bin.conf
sed -i 's/libvirtd_opts=" -d"/libvirtd_opts=" -d -l"/g' /etc/default/libvirt-bin
sed -i 's/#vnc_listen = “0.0.0.0″/vnc_listen = “0.0.0.0″/g' /etc/libvirt/qemu.conf
sed -i 's/#user = "root"/user = "root"/g' /etc/libvirt/qemu.conf
sed -i 's/#group = "root"/group = "root"/g' /etc/libvirt/qemu.conf
service libvirt-bin restart
service nova-compute restart
迁移过程修改的地方
1.数据库nova,表instances,只修改了host字段,没有修改launched_on字段没有修改,还是原节点的hostname。
2.文件拷贝:
/etc/libvirt/qemu/instance-00000017.xml(有没有共享存储这个文件都拷贝)
3。拷贝目录
/var/lib/nova/instances/instance-00000017 没有共享存储的话,拷贝这个目录。
有共享存储,而且两个节点没有同时挂在到一个存储的时候也拷贝。
如果两个节点的/var/lib/nova/instances挂在到同一个存储卷,这个文件不用拷贝。