OpenStack中虚拟机的在线迁移

栏目: 服务器 · 发布时间: 5年前

内容简介:虚拟机迁移主要有三种方式:P2V、V2V和V2P。P2V指迁移物理服务器上的操作系统及其上的应用软件和数据到VMM(Virtual Machine Monitor)管理的虚拟服务器中。V2V迁移是在虚拟机之间移动操作系统和数据。V2P 指把一个操作系统、应用程序和数据从一个虚拟机中迁移到物理机的主硬盘上,是 P2V 的逆操作。V2V迁移又分为离线迁移和在线迁移。离线迁移也叫做常规迁移、静态迁移,在迁移之前需要将虚拟机关闭。在线迁移又称为实时迁移,是指保持虚拟机正常运行的同时进行迁移。本文要研究的,就是虚拟

虚拟机迁移主要有三种方式:P2V、V2V和V2P。P2V指迁移物理服务器上的操作系统及其上的应用软件和数据到VMM(Virtual Machine Monitor)管理的虚拟服务器中。V2V迁移是在虚拟机之间移动操作系统和数据。V2P 指把一个操作系统、应用程序和数据从一个虚拟机中迁移到物理机的主硬盘上,是 P2V 的逆操作。

V2V迁移又分为离线迁移和在线迁移。离线迁移也叫做常规迁移、静态迁移,在迁移之前需要将虚拟机关闭。在线迁移又称为实时迁移,是指保持虚拟机正常运行的同时进行迁移。本文要研究的,就是虚拟机的在线迁移。更多详细内容,请参考 虚拟机迁移技术漫谈,第 1 部分

迁移相关命令

本文研究的是OpenStack集群中的虚拟机迁移,那么先研究一下OpenStack的虚拟机迁移命令。主要参考 Live-migrate instancesBlock Live Migration in OpenStack environment

1、查看实例ID

openstack server list

PS: openstack server 可以换成 nova

2、查看实例详情

openstack server show 180617ec-1348-4144-a496-8751d12e84bf
OpenStack中虚拟机的在线迁移

PS:实例ID可以换成demo1。

3、查看可以迁移的节点

openstack compute service list
OpenStack中虚拟机的在线迁移

4、查看其它节点资源使用情况

openstack host list

openstack host show compute2
OpenStack中虚拟机的在线迁移

5、迁移

nova live-migration 180617ec-1348-4144-a496-8751d12e84bf compute2
OpenStack中虚拟机的在线迁移

啊嘞,没有反应是闹哪样?查看实例详情,依然位于compute节点。

6、调试迁移

nova live-migration 180617ec-1348-4144-a496-8751d12e84bf compute2 --debug

信息很多,找不到重点。在 openstack热迁移和冷迁移 一文中发现,在线迁移又可以分为两种:live migration和block migration。live migration需要实例保存在NFS共享存储中,这种迁移主要是实例的内存状态的迁移,速度应该会很快。block migration除了实例内存状态要迁移外,还得迁移磁盘文件,速度会慢些,但是它不要求实例存储在共享文件系统中。

而我们的这个集群,没有共享存储,所以应该用block migration?

7、再次迁移

nova live-migration --block-migrate 180617ec-1348-4144-a496-8751d12e84bf compute2
OpenStack中虚拟机的在线迁移

修改后的命令,在 shell 中同样没有更多提示,但是查看horizon,发现了惊喜,正在迁移。等到迁移完成,查看实例详情,却发现,实例所在主机依然没有发生变化!

是因为nova没有配置好吗?很有可能,那么修改一下nova的配置试试。

nova配置

因为是使用kolla部署的OpenStack,所以修改配置重启服务的方法,和传统方法有所不同。参考 kolla(Ocata)部署nova组件关键配置和volume映射Openstack 之 调整nova相关参数 。可以知道,主机中的/etc/kolla/nova-compute/nova.conf,对应容器中的/etc/nova/nova.conf。修改后重启容器,nova-compute服务配置就会发生改变。

1、在两个计算节点,修改nova.conf

vim /etc/kolla/nova-compute/nova.conf ,添加:

live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE

2、重启nova-compute

docker stop nova_compute
docker start nova_compute

3、进入容器

docker exec -it nova_compute /bin/bash

4、查看配置是否生效

vi /etc/nova/nova.conf

再次迁移

1、在控制节点执行迁移命令

nova live-migration --block-migrate 180617ec-1348-4144-a496-8751d12e84bf compute2

满怀期望,但是依然失败。

2、在计算节点查看日志

tail -n 20 /var/lib/docker/volumes/kolla_logs/_data/nova/nova-compute.log

日志报错部分如下:

2018-11-13 19:12:04.614 6 ERROR nova.virt.libvirt.driver [req-e6654355-fcec-4b93-a662-c758a03766fa b2edc935f89d4d2684ec4039c02a21cc ab7e3eb8c00d4299afd8572e1ec437bf - default default] [instance: 180617ec-1348-4144-a496-8751d12e84bf] Live Migration failure: operation failed: Failed to connect to remote libvirt URI qemu+tcp://compute2/system: Unable to resolve address 'compute2' service '16509': Name or service not known: libvirtError: operation failed: Failed to connect to remote libvirt URI qemu+tcp://compute2/system: Unable to resolve address 'compute2' service '16509': Name or service not known

由日志可以看出,问题出现在libvirt上,那么修改一下libvirt的配置。

libvirt配置

参考 OpenStack虚拟机冷迁移与热迁移虚拟机在 OpenStack 里没有共享存储条件下的在线迁移虚拟化之KVM virsh常用命令篇 ,对libvirt的配置进行修改。

1、查看libvirtd.conf

vim /etc/kolla/nova-libvirt/libvirtd.conf

修改配置如下:

listen_tcp = 1
listen_tls = 0
auth_tcp = "none"
ca_file = ""
log_level = 3
log_outputs = "3:file:/var/log/kolla/libvirt/libvirtd.log"
listen_addr = "0.0.0.0"

2、重启libvirt服务

docker stop nova_libvirt
docker start nova_libvirt

3、查看libvirt服务

netstat -anpt | grep libvirt

看到libvirtd监听在0.0.0.0:16509端口即为正常。

PS:可以在其他节点使用virsh命令测试连通性

virsh -c qemu+tcp://compute2/system

第三次迁移

1、在控制节点执行迁移命令

nova live-migration --block-migrate 180617ec-1348-4144-a496-8751d12e84bf compute2

2、查看实例详情

openstack server show demo1
OpenStack中虚拟机的在线迁移

迁移成功了,nice。

其他命令

1、查看迁移任务

nova server-migration-list 180617ec-1348-4144-a496-8751d12e84bf

该命令查看到迁移任务的ID,然后根据这个ID就可以看到更详细的迁移过程。

2、查看迁移过程

nova server-migration-show 180617ec-1348-4144-a496-8751d12e84bf 2

3、查看警告或者出错日志

grep WARNING.*180617ec-1348-4144-a496-8751d12e84bf /var/lib/docker/volumes/kolla_logs/_data/nova/nova-compute.log

4、取消迁移

nova live-migration-abort 180617ec-1348-4144-a496-8751d12e84bf 2


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深度学习轻松学

深度学习轻松学

冯超 / 电子工业出版社 / 2017-7 / 79.00

《深度学习轻松学:核心算法与视觉实践》介绍了深度学习基本算法和视觉领域的应用实例。书中以轻松直白的语言,生动详细地介绍了深层模型相关的基础知识,并深入剖析了算法的原理与本质。同时,书中还配有大量案例与源码,帮助读者切实体会深度学习的核心思想和精妙之处。除此之外,书中还介绍了深度学习在视觉领域的应用,从原理层面揭示其思路思想,帮助读者在此领域中夯实技术基础。 《深度学习轻松学:核心算法与视觉实......一起来看看 《深度学习轻松学》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具