内容简介:虚拟机迁移主要有三种方式: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 instances 、 Block Live Migration in OpenStack environment 。
1、查看实例ID
openstack server list
PS: openstack server 可以换成 nova 。
2、查看实例详情
openstack server show 180617ec-1348-4144-a496-8751d12e84bf
PS:实例ID可以换成demo1。
3、查看可以迁移的节点
openstack compute service list
4、查看其它节点资源使用情况
openstack host list
openstack host show compute2
5、迁移
nova live-migration 180617ec-1348-4144-a496-8751d12e84bf compute2
啊嘞,没有反应是闹哪样?查看实例详情,依然位于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
修改后的命令,在 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
迁移成功了,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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Big Java Late Objects
Horstmann, Cay S. / 2012-2 / 896.00元
The introductory programming course is difficult. Many students fail to succeed or have trouble in the course because they don't understand the material and do not practice programming sufficiently. ......一起来看看 《Big Java Late Objects》 这本书的介绍吧!