前言:在已经搭建好的openstack上进行虚拟机迁移,在此之前需要先创建一个虚拟机实例,具体创建过程自行百度(随便创建一下就好了,作为demo也不需要这个实例能联网啥的),参考博客openstack迁移。最后,本篇的openstack节点是基于fuel搭建好的,很多配置可能fuel已经自动配置好了,我可以直接拿来用,因此如果是自己从0搭建的openstack,那很可能要配置一些内容,这就请读者自行谷歌了
一、准备
- 搭建好的3个openstack结点(1controller+2computer),如果尚未搭建请参考我这篇fuel搭建openstack(搭建demo中只创建了一个computer,请读者自行多搭建一个computer2,也就是说,fuel搭建的时候开了4个虚拟机,内存分别为demo_master(2GB) demo_controller(5GB) demo_computer1(2GB) demo_computer2(2GB),除了内存分配不一样,其余部分和搭建教程中一样)
- 网卡说明:由于我是使用fuel搭建的openstack,按照我的搭建过程中的说明可以看到主要有3块网卡(10.20.0.2、172.16.0.2、192.168.20.1),而且三块网卡的作用依次如下图,因此可知当我们进行传输等操作时,应该使用(192.168)字段下的网络,具体操作请看后面详细步骤
二、冷迁移(静态迁移)
如果你有做过相关了解,就会知道,冷迁移本质就是把整个虚拟机从服务器A直接整个传输到服务器B,这种情况下需要把虚拟机关闭才能运行,因此很难接受。这里只是做个demo
1.查看虚拟机
1)加载环境变量(controller运行)
/*
在controller节点下运行,如果你是命令行自己搭建的openstack相信不会陌生,
如果你是看我的fuel搭建的openstack,那么先在controller节点下进入/root目录,
'ls'就能看到该文件夹,你可以'vi openrc'看看内容,就会发现就是一堆环境变量
它能让你通过keystone,从而有权限运行nova相关命令行
*/
. openrc //点号后面有个空格,运行后无任何提示
2)查看虚拟机实例(controller运行)
nova list //在controller节点运行该命令行
3)关闭该实例(controller)
nova stop XXXXXX//该实例的id号
4)查看该虚拟机运行在哪个结点上(controller)
//从图中可以看到,我的这台虚拟机运行在命名为node-3.domain.tld的服务器上
//且我这台虚拟机叫`good`
nova show XXX(ID号) | grep 'OS-EXT-SRV-ATTR:host'
5)查看hostname,确定迁移位置(controller)
/*
先前已经说了,我建立了3个结点,分别是controller,computer1,computer2
从图可知,
node1-domain.tld对应controller,
computer1对应node2-domain.tld
computer2对应node3-domain.tld
此时我的虚拟机在node3-domain.tld上,现在需要转移到computer1上,
因此要用到192.168.0.4
*/
vi /etc/hostnames //查看hostname
6)开始静态迁移(computer2)
cd /var/lib/nova/instances //进入该目录,查看有没有文件(文件名就是虚拟机实例id号)
rsync -e "ssh -p22" -avpgolr xxx(id) 192.168.0.4:/var/lib/nova/instances/
如果由于ssh的原因报错,请看我这篇ssh连接,将节点们的ssh都打开就好
7)查看迁移成果(computer1)
cd /var/lib/nova/instances
ls
8)修改相关设置
这一块我没弄,有需要的话可以详细看看我开头给的参考博客中的内容,毕竟冷迁移基本没啥用
三、热迁移
热迁移也叫动态迁移,可以不用关闭虚拟机就进行迁移
看热迁移前请看看冷迁移部分,有些重复的备注我写在冷迁移里了
1)加载环境变量
. openrc
2)查看虚拟机实例
nova list //此时虚拟机实例应该是开机状态(nova stop XXXXXX(id号)开启)
3)查看可用的计算节点
nova-manage service list //类似下图
4)查看目标计算节点node-3.domain.tld的可用资源
nova-manage service describe_resource node-3.domain.tld
5)虚拟机迁移
nova live-migration XXX(虚拟机id号) node-3.domain.tld
6)查看虚拟机是否已经迁移
//可看到,本来是在node2上,迁移后再看就变成了在node3上
nova show XXX(实例id号) | grep 'OS-EXT-SRV-ATTR:host'
实际操作暂时这样,具体原理晚些天补坑