OpenStack中共享存储的虚拟机在线迁移

文章目录
  1. 1. 前言
  2. 2. 原理
  3. 3. 主机准备
  4. 4. NFS
    1. 4.1. NFS服务器
    2. 4.2. 控制节点
    3. 4.3. 计算节点
  5. 5. 迁移
    1. 5.1. 创建实例
    2. 5.2. 迁移实验
  6. 6. 书签

前言

《OpenStack中虚拟机的在线迁移》一文中,虚拟机迁移时,把block一起进行了迁移。生产环境中,这些虚拟机往往是共享存储设备,不需要对block进行迁移。所以,本文就来重新配置一下环境,实现共享存储的虚拟机在线迁移。

原理

正常安装的OpenStack中,实例存放在/var/lib/nova/instances/目录;使用kolla安装的OpenStack中,实例存放在/var/lib/docker/volumes/nova_compute/_data/instances/目录。

共享存储,需要两个步骤:
1、有一台NFS(Network File System)服务器,共享某个目录,比如/nfs/share/instances。
2、所有计算节点的instances目录,都挂载上NFS服务器的/nfs/share/instances目录。

主机准备

使用virtualbox创建一个新的ubuntu16虚拟机,或者clone其他节点并且通过快照恢复初始状态,作为nfs存储节点。这里通过clone的方法得到一个新的主机,设置IP为192.168.56.130。参考《VirtualBox中Ubuntu扩容》,对虚拟机进行扩容。

NFS

NFS服务器

首先,我们要搭建一个NFS服务器,参考Ubuntu 16.04系统上NFS的安装与使用使用NFS实现Ubuntu的文件共享

1、安装nfs软件包
apt install nfs-kernel-server

2、编写配置文件
vim /etc/exports
添加如下内容:

1
2
# openstack instances
/nfs/share/instances *(rw,sync,no_root_squash)

3、创建共享目录并修改权限

1
2
mkdir -p /nfs/share/instances
chmod o+x /nfs/share/instances

4、重启nfs服务
service nfs-kernel-server restart

5、查看共享信息
exportfs

控制节点

在控制节点删除demo1实例,或者在horizon控制台删除demo1的实例。

计算节点

1、安装nfs客户端
apt-get install nfs-common

2、查看共享信息
showmount -e 192.168.56.130

3、挂载nfs目录

1
mount -t nfs 192.168.56.130:/nfs/share/instances /var/lib/docker/volumes/nova_compute/_data/instances/

instances目录中还有文件和文件夹,直接挂载覆盖确定没有影响吗?没有。

两个计算节点都执行同样的操作,此时它们的instances目录是同一个目录。

4、修改instances目录权限
chmod -R 777 /var/lib/docker/volumes/nova_compute/_data/instances/
一定要修改,否则创建实例时会报错。

5、自动挂载
vim /etc/fstab,添加:

1
192.168.56.130:/nfs/share/instances /var/lib/docker/volumes/nova_compute/_data/instances nfs default 0 0

6、重启compute服务

1
2
docker stop nova_compute
docker start nova_compute

如果不重启,那么创建的实例会存放在计算节点本地磁盘上,卸载instances目录后可以看到。

迁移

创建实例

参考《Kolla安装OpenStack多节点》的初始化配置部分,使用cirros镜像创建demo2实例。

1、使管理员环境生效
source /etc/kolla/admin-openrc.sh

2、创建实例

1
2
3
4
5
6
openstack server create \
--image cirros \
--flavor m1.tiny \
--key-name mykey \
--nic net-id=25e6c0ef-6a0a-481c-a08a-46f7ef67ad3e \
demo2

3、分配浮动IP

1
2
3
4
openstack network list
openstack floating list
openstack floating ip create public1
openstack server add floating ip demo2 10.0.2.156

3、查看实例
计算节点上,在/var/lib/docker/volumes/nova_compute/_data/instances目录中,可以看到新创建的实例。

迁移实验

1、查看实例列表
nova list

2、查看实例信息
nova show demo2

可以看到demo2位于compute节点。

3、实例迁移
nova live-migration demo2 compute2

4、再次查看实例信息
nova show demo2

可以看到demo2迁移到了compute2节点,迁移成功,nice。

书签

DAS、NAS、SAN三种存储架构比较及应用分析