一种Openstack云平台中虚拟机的动态迁移方法与流程

文档序号:11864475阅读:458来源:国知局
本发明属于Openstack网络
技术领域
:,尤其涉及一种Openstack云平台中虚拟机的动态迁移方法。
背景技术
::在云计算中,能否对虚拟机进行合理的调度关系到整个云计算平台的性能和稳定性;在SDN网络中,整个网络就是一个大二层的网络,并且整个网络可控制、可编程。对于Openstack的网络搭建过程而言,在现阶段的研究中也存在很多传统物理网络搭建过程中存在的弊病,比如说在传统的物理网络中要对每个不同局域网的不同主机进行单独的配置;同样,随着各种实时业务如视频语音、云数据中心和移动业务的迅速发展,传统网络已经无法满足当前的需要。传统的网络环境越来越多的问题限制着它的发展。传统的虚拟机迁移技术由于受到IP网络技术的限制,特别是IP地址二义性的限制,使得传统的虚拟机迁移技术仅支持二层网络内部的迁移,或者目前流行的大二层网络,大大限制了云计算系统中各种资源配置的灵活性。传统的网络环境越来越多的问题限制着它的发展。技术实现要素:本发明的目的在于提供一种Openstack云平台中虚拟机的动态迁移方法,旨在解决传统的虚拟机迁移技术由于受到IP网络技术的限制,仅支持二层网络内部的迁移,限制了云计算系统中各种资源配置的灵活性,网络环境越来越多的问题限制着它的发展的问题。本发明是这样实现的,一种Openstack云平台中虚拟机的动态迁移方法,所述Openstack云平台中虚拟机的动态迁移方法包括以下步骤:动态迁移进行权限检查和参数检查;迁移前在目的物理主机上获得和准备虚拟机挂载的块设备,在目的物理主机上设置虚拟机的网络,目的物理主机上设置虚拟机的防火墙;调用libvirtpython接口migrateToURI,来把源主机迁移到目的主机;dom.migrateToURI(CONF.live_migration_uri%dest,logical_sum,None,CONF.live_migration_bandwidth)以时间间隔0.5循环调用wait_for_live_migration方法,来检测虚拟机迁移的状态,直到虚拟机成功迁移为止;迁移后在源物理主机上detachvolume,在源物理主机上释放securitygroupingressrule,在目的物理主机上更新数据库里虚拟机的状态,在源物理主机上删除虚拟机。进一步,所述权限检查包括执行迁移的用户是否有足够的权限执行动态迁移。进一步,所述参数检查包括:检查目标物理主机是否存在;检查被迁移的虚拟机是否是running状态;检查源和目的物理主机上的nova-computeservice是否正常运行;检查目的物理主机和源物理主机是否是同一台机器;检查目的物理主机是否有足够的内存;检查目的和源物理主机器hypervisor和hypervisor的版本是否相同。进一步,所述Openstack基于SDN的全物理交换机部署方法包括以下步骤:步骤一,启动OpenStack,通常的模式是OpenStack控制节点、网络节点和计算节点分布在不同的服务器上,不同的节点之间用管理网段相互通讯;步骤二,SDN控制器以OpenStackNeutron插件的方式实现启动,在ml2_conf中配置本项目的控制器,然后启动SDN控制器后台;步骤三,接入OpenFlow物理交换机,物理交换机之间使用网线互连,物理交换机和OpenStack的网络节点服务器使用网线互连,在OpenStack网络节点服务器相应增加通往物理交换机的port;步骤四,SDN控制器识别完整个网络拓扑,包括所有的物理交换机,OpenStack虚拟交换机以及实例,连接到物理交换机的主机信息,开始计算路径,下发流表;根据相应的安全策略生成相应的流表并下发;步骤五,SDN控制器启动一个监控线程监控拓扑的变化,当新增、删除交换机或者新增、删除改变交换机的某个端口时,线程会重新通知控制器计算受影响的节点的路径,重新下发流表,网络拓扑的变化仅会影响通过路该交换机端口的路径,所以只是流表局部下发,并不会影响拓扑中通过其余正常交换机进行通信的主机;步骤六,至此OpenStack网络已经完成对整个物理交换机层的管控,在各网段配置实例、网络,通过SDN控制器前台配置的三层网关也可以跨网段通信,也可以通过网络节点的对外接口实现外网通信需求。本发明的另一目的在于提供一种所述Openstack云平台中虚拟机的动态迁移方法的动态迁移系统,所述动态迁移系统包括:迁移前条件检查模块,用于动态迁移进行权限检查和参数检查;迁移预处理模块,用于迁移前在目的物理主机上获得和准备虚拟机挂载的块设备,在目的物理主机上设置虚拟机的网络,目的物理主机上设置虚拟机的防火墙;迁移模块,用于调用libvirtpython接口migrateToURI,来把源主机迁移到目的主机;dom.migrateToURI(CONF.live_migration_uri%dest,logical_sum,None,CONF.live_migration_bandwidth)以时间间隔0.5循环调用wait_for_live_migration方法,来检测虚拟机迁移的状态,直到虚拟机成功迁移为止;迁移后处理模块,用于迁移后在源物理主机上detachvolume,在源物理主机上释放securitygroupingressrule,在目的物理主机上更新数据库里虚拟机的状态,在源物理主机上删除虚拟机。所述迁移前条件检查模块进一步包括:权限检查单元,用于执行迁移的用户是否有足够的权限执行动态迁移;参数检查单元,用于对目标物理主机是否存在、被迁移的虚拟机是否是running状态、源和目的物理主机上的nova-computeservice是否正常运行、目的物理主机和源物理主机是否是同一台机器、目的物理主机是否有足够的内存、目的和源物理主机器hypervisor和hypervisor的版本是否相同检查。本发明的另一目的在于提供一种应用所述Openstack云平台中虚拟机的动态迁移方法的虚拟机。本发明的另一目的在于提供一种应用所述虚拟机的云计算平台。本发明提供的Openstack云平台中虚拟机的动态迁移方法,使用SDN网络环境便可解决传统网络为Openstack云平台带来的问题——由于IP地址的限制,使得在集群搭建中,可能会出现IP地址二义性的问题。利用SDN提供一个网络最大限度适应业务的架构,从而构建优质高效的网络;SDN架构分设备、控制和管理协同3个层次:设备层包含了物理设备以及运行到Hypervisor上的虚拟设备;控制层为Controller;管理协同层控制整个网络,实现端到端的业务部署。因此SDN网络与云平台的虚拟机动态迁移具有互补的作用,使用SDN可以解决在传统网络下虚拟机动态迁移的网络问题和资源调度问题——不需要在路由器和交换机上再进行大量的配置,且迁移处于二层而不是在传统的三层上,使得调度可以依据Mac地址进行,因此使得调度更加的灵活。本发明在一个纯SDN的网络环境下,搭建云平台,将云平台的内部物理网络(控制网络,存储网络等)和云平台的虚拟网络统一整合管理,这样的统筹管理不仅会解决虚拟网络的问题,更会在物理网络层面加强管理,有利于提高整个集群的可控性和在二层网络上动态迁移时的灵活性。传统的物理网络中要对每个不同局域网的不同主机进行单独的配置,而在SDN网络环境中搭建Openstack就不存在这种复杂而又枯燥的配置问题,通过SDN的控制器,实现对整个网络的控制,通过流表进行转发,控制器进行控制,不需要再对整个网络的每台设备进行一一配置,大大减轻了工作量以及避免了配置过程中地址重用的问题的出现,使得网络环境更加灵活、安全、可控可操作。使用SDN网络环境便可解决传统Openstack网络环境中存在的问题,利用SDN提供一个网络最大限度适应业务的架构,从而构建优质高效的网络。SDN架构分设备、控制和管理协同3个层次:设备层包含了物理设备以及运行到Hypervisor上的虚拟设备;控制层为Controller;管理协同层控制整个网络,实现端到端的业务部署。每个层次都提供独立开放的API,分别提供设备能力抽象、网络能力抽象和业务能力抽象,以满足各种不同层次用户的编程需要。相比现行OpenStack网络模块实现本发明提出的方法具有以下优势:OpenStack平台管理的网络为全OpenFlow物理交换机。区别于现在通常的实现方式为全虚拟交换机,虚拟网关的模式。重新定义了OpenStack平台内各交换机之间的连接方式。交换机之间不再使用二层网络通信的方式,而是通过流表控制的方式通信。物理交换机和OpenStack虚拟交换机之间通过点对点方式进行连接。OpenStack平台管理方式保持不变,本发明提出的网络管理模块对于OpenStack平台保持透明,OpenStack完全可以不关心后台网络;控制器以插件的方式运行,负责整个交换机网络的路径计算,流表下发,使整个网络实现互通。使得OpenStack平台的网络管理更加方便,可以更加便捷的配置网络的高级管理功能比如QoS、流量管理功能等。附图说明图1是本发明实施例提供的Openstack云平台中虚拟机的动态迁移方法流程图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。本发明在SDN的集中式控制、开放API和网络功能虚拟化的基础上,加入全可编程、业务友好架构和SDNReady/平滑演进3个新机制,不仅实现网络对云业务和移动业务的及时部署响应、对所有新业务的快速编程支持,而且可以及时感知所有影响业务体验的网络因素并即时精确定位,从根本上提升网络质量和故障定位效率;基于SDN全物理交换机部署OpenStakc网络实现方法,使OpenStack可以利用SDN强大的网络管理优势,实现了对网络资源的统一高效的管理;OpenStack不再对网络资源进行虚拟化管理,而是把网络管理工作交付SDN控制器来完成,OpenStack直接接入物理交换机,实现了OpenStack与SDN的整合。下面结合附图对本发明的应用原理作详细的描述。如图1所示,本发明实施例的Openstack云平台中虚拟机的动态迁移方法包括以下步骤:S101:动态迁移进行权限检查和参数检查;S102:迁移前在目的物理主机上获得和准备虚拟机挂载的块设备,在目的物理主机上设置虚拟机的网络,目的物理主机上设置虚拟机的防火墙;S103:调用libvirtpython接口migrateToURI,来把源主机迁移到目的主机;dom.migrateToURI(CONF.live_migration_uri%dest,logical_sum,None,CONF.live_migration_bandwidth)以一定的时间间隔(0.5)循环调用wait_for_live_migration方法,来检测虚拟机迁移的状态,一直到虚拟机成功迁移为止;S104:迁移后在源物理主机上detachvolume,在源物理主机上释放securitygroupingressrule,在目的物理主机上更新数据库里虚拟机的状态,在源物理主机上删除虚拟机。在步骤S101中:权限检查,执行迁移的用户是否有足够的权限执行动态迁移。参数检查,传递给API的参数是否足够和正确,如是否指定了block-migrate参数。检查目标物理主机是否存在。检查被迁移的虚拟机是否是running状态。检查源和目的物理主机上的nova-computeservice是否正常运行。检查目的物理主机和源物理主机是否是同一台机器。检查目的物理主机是否有足够的内存(memory)。检查目的和源物理主机器hypervisor和hypervisor的版本是否相同。本发明实施例的基于SDN的全物理交换机部署OpenStack包括以下步骤:步骤1:启动OpenStack,通常的模式是OpenStack控制节点、网络节点和计算节点分布在不同的服务器上,不同的节点之间用管理网段相互通讯。步骤2:SDN控制器以OpenStackNeutron插件的方式实现启动,在ml2_conf中配置本项目的控制器,然后启动SDN控制器后台。步骤3:接入OpenFlow物理交换机,物理交换机之间使用网线互连,物理交换机和OpenStack的网络节点服务器使用网线互连,在OpenStack网络节点服务器相应增加通往物理交换机的port。步骤4:SDN控制器识别完整个网络拓扑,包括所有的物理交换机,OpenStack虚拟交换机以及实例,连接到物理交换机的主机信息,开始计算路径,下发流表;根据相应的安全策略生成相应的流表并下发。步骤5:SDN控制器启动一个监控线程监控拓扑的变化,当新增、删除交换机或者新增、删除改变交换机的某个端口时,线程会重新通知控制器计算受影响的节点的路径,重新下发流表。网络拓扑的变化仅会影响通过路该交换机端口的路径,所以只是流表局部下发,并不会影响拓扑中通过其余正常交换机进行通信的主机。步骤6:至此OpenStack网络已经完成对整个物理交换机层的管控,可以轻松地在各网段配置实例、网络,通过SDN控制器前台配置的三层网关也可以跨网段通信,也可以通过网络节点的对外接口实现外网通信需求。实现了OpenStack网络模块现有的所有功能。本发明实施例的动态迁移的配置:Libvirtlibvirt默认情况下支持远程连接的TLS协议,不支持TCP协议,因此将listen_tls=0listen_tcp=1使libvirt能够支持TCP协议。修改/etc/sysconfig/libvirtd文件。LIBVIRTD_ARGS="--listen"在/etc/libvirt/libvirtd.conf文件中做如下配置。listen_tls=0listen_tcp=1auth_tcp="none"重启libvirtd服务物理主机上DNS配置每个物理主机上的/etc/host,加入每个物理主机的hostname和IP,如下例:192.168.0.1compute-1compute-1.ibm.com192.168.0.2compute-2compute-2.ibm.com防火墙配置/etc/sysconfig/iptables,打开TCP端口16509。-AINPUT-ptcp-mmultiport--ports16509-mcomment--comment"libvirt"-jACCEPTOpenStackNova在/etc/nova/nova.conf文件里配置live_migration标记。live_migration_flag=VIR_MIGRATE_UNDEFINE_SOURCE,VIR_MIGRATE_PEER2PEER,VIR_MIGRATE_LIVE。下面结合具体实施例对本发明的应用原理作进一步的描述。动态迁移的实现,分别从基本概念、传输协议和迁移的步骤三个方面介绍动态迁移是如何实现的。基本概念,在了解动态迁移之前,必须了解镜像文件的格式QCOW2。Qcow2是QEMU目前推荐的镜像格式,它支持稀疏文件以节省存储空间,支持加密以提高镜像文件的安全性,支持基于zlib的压缩。Qcow2镜像可以用来保存另一个镜像文件的变化,它并不去修改原始镜像文件,原始镜像文件也叫后端镜像(backing_file)。只记录与原始镜像文件的不同部分的镜像文件,这种镜像文件就叫做copy-on-write镜像,它虽然是一个单独的镜像文件,但它的大部分数据都来自原始镜像,只有基于原始镜像文件的增量部分才会被记录下来。本发明提及的虚拟机都是OpenStack用Qcow2格式的镜像文件建立的,后端镜像(libvirtbase)虚拟机单独的增量镜像文件(libvirtinstancedisks),copy-on-write镜像在物理机的磁盘上,当建了一个虚拟机后,就会生成如图列的这些文件。其中_base下面的文件,就是后端镜像(libvirtbase),目录6e783272-31b5-4fdc-8828-2b8892daab39下面是虚拟机单独的增量镜像文件(libvirtinstancedisks),它只记录和base文件不同的内容。用qemu-img查看虚拟机单独的增量镜像文件的信息,可以看到他的backingfile是_base目录下的镜像文件。虚拟机单独的增量镜像文件(libvirtinstancedisks),它们就是要被迁移的数据。动态迁移的最终目标就是把它们完整地从源物理主机迁移到目标物理主机。除了他们两个之外,还有一个需要迁移的对象就是内存里运行的虚拟机的数据。虚拟机的迁移,其实就是数据的转移,因为计算节点之间没有共享存储,所以要转移的数据包括两部分:静态数据:存储在本地的虚拟机的镜像文件,包括后端镜像(libvirtBase)和虚拟机单独的增量镜像文件(libvirtinstancedisks)。动态数据:内存里虚拟机的运行时数据,内存里的数据是动态变化的数据,虚拟机里运行的负载的大小直接影响迁移的时间长短。迁移通道和传输协议OpenStack调用底层的libvirt来完成动态迁移。虚拟机的迁移,其实就是数据的转移。libvirt提供了隧道化的数据传输(libvirttunnelledtransport)方式来完成数据转移。数据的转移就涉及数据的传输,数据的传输需要通过网络,Libvirt默认情况下不支持TCP协议,需要对libvirt的配置做修改,使libvirt能够支持TCP协议,后面的章节会详细的介绍如何配置。在迁移的过程中,运行在目的物理主机(DestHost)中的libvirtd进程要根据address和port创建一个URI,URI是目的物理主机用来接收数据和发回数据到源物理主机(SourceHost)的libvirtd进程的。在目的物理主机和源物理主机,只要下面的命令能够执行,就说明能够传输数据了。在compute01上执行:[root@compute01]#virsh-cqemu+tcp://nova@compute02/system在compute02上执行:[root@compute01]#virsh-cqemu+tcp://nova@compute02/system以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1