OpenStack icehouse虚拟机的Live Migration和调整大小
一、云机的动态迁移
OpenStack云平台基本部署完成后,为了实现系统的高可用和负载均衡等,接下来就可以开始部署虚拟机的动态迁移工作,OpenStack虚拟机的动态迁移方式有三种,分别为:
-Blocklive migration without shared storage(基于块的动态迁移)
-Sharedstorage based live migration(基于共享存储的动态迁移)
-Volumebacked VM live migration(基于卷后端的动态迁移)
前一种块迁移,不需要共享存储区,迁移时不仅要迁移虚拟机的内存状态,同时还要迁移虚拟机的镜像文件,所以迁移时间比较长;后俩种迁移方式都是基于共享存储块的迁移方式,只是基于卷后端动态迁移的虚拟机是从逻辑卷引导的,俩者的迁移操作几乎差不多,迁移时只需要迁移虚拟的内存状态即可,所以迁移速度会比基于块的迁移方式快的多,一般在几秒内就能完成迁移工作,可靠性很高。下面要讲的就是基于共享块的动态迁移方式的部署:
配置方案:
既然是基于共享存储区的迁移方式,当然,迁移前提是有共享存储区,虚拟机的启动镜像应该存放在共享存储区且可以正常启动,我们使用的是Glustefs作为计算节点虚拟机的共享存储区,glusterfs的配置方式请参考相应的glusterfs配置安装文档,安装完成后,挂载共享区,再编辑计算节点的配置文件。
1、修改nova.conf文件,Icehouse版本已经不需要做这一步了:
添加:
live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE,VIR_MIGRATE_UNSAFE
修改:
vncserver_listen=0.0.0.0
2、修改计算节点的hosts解析文件,参与的计算节点hostname都能ping通,同时注意:auth_tcp=none 是个漏洞,迁移完成后应该注释掉该行,解析文件格式如下:
10.9.32.8 R420-3.kedard.com R420-3 (Havana版本)
10.9.32.8 R420-3 (Icehouse版本)
3、修改计算节点上/etc/libvirt/libvirtd.conf:
before : #listen_tls = 0
after : listen_tls = 0
before : #listen_tcp = 1
after : listen_tcp = 1
add: auth_tcp = "none"
4、调整 /etc/default/libvirt-bin配置文件:
before :libvirtd_opts="-d"
after :libvirtd_opts="-l"
5、重启libvirt-bin服务:
service libvirt-bin restart
6、查看libvirt-bin是否按要求启动:
ps -ef | grep libvirt
root 1145 1 0 Nov27 ? 00:00:03/usr/sbin/libvirtd -d –l
7、对于Icehouse版本,还需要修改CPU模式,默认模式下不允许迁移,方法如下:
修改:/usr/share/libvirt/cpu_map.xml文件,注释掉以下几行:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<!-- <feature name='invtsc' migratable='no'>
<cpuid function='0x80000007'edx='0x00000100'/>
</feature> -->
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8、重启计算节点上nova服务;
service nova-compute restart
备注:
1、由于云机之前没有配置在线迁移,在迁移虚机之前,需要重启虚机。
2、如果云机已经挂载了volume磁盘卷,迁移前应该先行卸载,卷迁移除外。
二、调整云机大小
调整云机大小本质上也是虚拟机迁移,不过要实现云机大小可调整的话,还需要在迁移的基础上再修改如下俩点:
1、 计算节点的root用户之间能免密码登录;
2、 计算节点的nova用户之间能免密码登录;