1.概述
虚拟机动态迁移,实现虚拟机在两台物理服务器之间转移并且不影响虚拟机的使用。
调用openstack提供的块迁移:
nova live-migration instance_id Destanation
在虚拟机所在计算节点上执行该命令,instance是要被迁移的虚拟机,Destanation是目的主机的主机名。
迁移前需要做共享存储,虚拟机安装在共享存储,迁移时只需要迁移虚拟机的内存即可。可以参考:
http://docs.openstack.org/cactus/openstack-compute/admin/content/configuring-live-migrations.html
迁移将虚拟机从源主机迁移到目的主机,迁移过程虚拟机提供的服务不会中断。
2.涉及技术
nfs共享存储:在以太网上实现共享存储的文件系统。
Openstack提供的动态迁移。
3.案例
3.1环境情况
NFS共享存储服务器:192.168.1.1 HostA
源虚拟机所在节点S :192.168.1.2 HostB
目的主机节点 D :192.168.1.3 HostC
将NFS共享存储服务器的/var/lib/nova/instances目录做为共享目录,分别挂载到节点S和节点D的/var/lib/nova/instances目录。
3.2操作步骤
3.2.1步骤一
配置nfs共享存储:
1. 安装nfs:
在HostA上执行
apt-get install nfs-kernel-server
2. 创建共享文件夹
mkdir /var/lib/nova/
mkdir /var/lib/nova/instances
chmod 777 /var/lib/nova/instances/
3. 配置 /etc/exports
添加
/var/lib/nova/instances192.168.1.2/24(rw,sync,fsid=0,no_root_squash)192.168.1.3/24(rw,sync,fsid=0,no_root_squash)
4. 重启nfs服务
/etc/init.d/nfs-kernel-server restart
5. 配置客户端
在HostB、HostC上执行
apt-getinstall nfs-common
mount -t nfs192.168.1.1:/var/lib/nova/instances /var/lib/nova/instances
如果要想让系统开机就挂载共享目录,则可以在/etc/fstab中加入开机挂载命令192.168.1.1:/var/lib/nova/instances/var/lib/nova/instances nfs defaults,soft,intr 0 0
在/etc/rc.local下输入(如果挂载失败执行)
mount -t nfs -o nolock 192.168.1.1:/var/lib/nova/instances /var/lib/nova/instances
6. 修改客户端文件
1)/etc/libvirt/libvirtd.conf
#listen_tls = 0 修改为listen_tls = 0
#listen_tcp = 1 修改为listen_tcp = 1
修改为: auth_tcp ="none"
2)重启libvirt
service libvirt-bin restart
live_migration_bandwidth=0
live_migration_retry_count=30
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE
4)修改/etc/hosts
确保每个节点都能用名称解析,即hosts文件中要有对应的IP与服务器名
3.2.2步骤二
执行迁移:
novalive-migration bee83dd3-5cc9-47bc-a1bd-6d11186692d0 HostC
注意:
如果该虚拟机分配了外网IP,应在迁移前将IP释放,并在迁移后重新将IP分配回去即可。