默认情况下,openstack的虚拟机磁盘文件存储在计算节点的/var/lib/nova/instances/目录下,当该节点宕机的时候,虚拟机便会随之宕掉,无法恢复。

使用共享存储,将虚机的磁盘文件放置在其他的节点上将不仅可以避免出现该情况,还可以在不停机的状态下实时地将虚机从一个计算节点转移到另外一个计算节点上。实际应用场景一个是当有计算节点需要维护的时候,另一个是发现负载不均衡的时候,可以进行调节。

简便起见,这里将控制节点上的空闲硬盘作为共享存储(采用nfs文件系统),再在计算节点上进行连接。

参考脚本化自动部署openstack一文来搭建1个控制节点(os-controller)和2个计算节点

(os-compute0,os-compute1),并下载如下脚本文件,与其放置到一起。

spacer.gifwKioL1UeKwjSo-P4AABDyEolltA574.jpg

链接: http://pan.baidu.com/s/1gdD10dH 密码: bcib 解压密码为博客名

1.控制节点操作

先使用脚本partiton.sh对空闲硬盘进行分区。

再执行setupNFSServerOnControllerNode.sh脚本来安装nfs服务和创建共享存储。

spacer.gifwKioL1UeLSrwBKxuAABVXMYzHdk742.jpg

2.计算节点操作

在2个计算节点上都执行脚本setupNFSClientOnComputeNode.sh

spacer.gifwKioL1UeKwihbMpdAAAx7cKYTEE662.jpg

spacer.gifwKiom1UeKcfA_ybPAAAxMPnAwjg016.jpg

为使计算节点之间能互相ping通主机名,需修改/etc/hosts文件,加入主机名和ip的对应关系。

os-compute0

spacer.gifwKiom1UeKcfw4hlZAABmEuLCVD0237.jpg

os-compute1

spacer.gifwKioL1UeKwihbHLuAABmXg4c6so330.jpg

3.热迁移操作

创建实例,并绑定浮动IP

spacer.gifwKiom1UeKceQ64pCAAEA84MFj9Q324.jpg

可以看到实例test在os-compute1上。

下面点击更多,点击热迁移操作,我们将其迁移到os-compute0上,并同时ping 192.168.196.3。

spacer.gifwKioL1UeKwjwPOJ0AAEtAUBUlGY800.jpg

大概只有5-6秒的时候无法ping通

spacer.gifwKiom1UeKciz9sXPAAL3v6JcYY0019.jpg

成功迁移到os-compute0上

spacer.gifwKioL1UeKwmg0T5xAAEBQf9S0kA383.jpg

同样的,我们也可以将实例再迁回os-compute1上。

spacer.gifwKiom1UeKcnTFQZAAALYJgnxT2I995.jpg

成功迁回os-compute1上。

spacer.gifwKiom1UeKcnQuGZGAAD_FbEV1r0758.jpg