OpenStack控制节点自适应切换为计算节点的方法及装置与流程

文档序号:19124011发布日期:2019-11-13 01:56阅读:475来源:国知局
OpenStack控制节点自适应切换为计算节点的方法及装置与流程

本发明涉及openstack云平台技术领域,尤其是涉及一种openstack计算节点自适应切换为控制节点的方法及装置。



背景技术:

openstack是一个开源的云计算的管理平台,可以实现对大量的分布式的计算资源、存储资源和网络资源的管理,同时提供统一的管理面板,openstack既是一个社区,又是一个项目和一个开源软件,它支持几乎所有类型的云环境,提供了一个部署云的解决方案或工具集。其宗旨在于:帮助组织运行为虚拟计算或存储服务的云,为公有云、私有云提供可扩展的、灵活的云计算,openstack经过多年的生产实践,已经发展的非常成熟。

在中小规模的云平台中,一般部署架构是多控制节点和多计算节点的模型,控制节点可以和网络节点复用,分布式的存储服务可以部署在控制节点上、计算节点上或其他独立的节点上。随着云平台上服务器的使用年限不断增加,服务器的故障率也不断增加,在实际生产环境中经常会遇到服务器故障的紧急情况,当计算节点发生特别是可复用存储服务功能故障时,会导致该节点上的虚拟机在短时间内无法对外提供服务;另外,当云平台计算节点组的负载过高,也会影响虚拟机的性能,进一步影响用户体验。为了能够提高虚拟化集群系统的运行连续性,当某个运行业务的虚拟机出现故障时,能够及时地恢复该业务的运行,让业务中断的时间最小,虚拟化集群通常会支持高可用技术,该技术可以定时监控虚拟机的业务状态,当发生虚拟机故障时,能够及时地恢复故障的虚拟机,保证虚拟机运行连续性。高可用技术的虚拟化集群中每一台服务器都配置一个代理,代理持续不断地检测其他服务器的状态,代理定时向其他服务器发送心跳信号,假设一台服务器连续三次无法响应心跳信号,代理认为该服务器发生故障而上报对应的故障,代理会将故障服务器上的所有虚拟机在虚拟化集群中其他服务器上重新启动来恢复虚拟机业务,从而保证业务的连续性,或者增加新的服务器或者替换原有的故障服务器,并通过rpm包的方式直接将云平台的各个计算服务、网络代理服务部署在新增服务器的操作系统上,但该方法由于服务器上下架流程繁琐、部署复杂,因此时效性低、恢复慢,很难满足生产环境中对高时效性的要求。

针对上述问题现有技术也提出了有效的解决方案,中国专利cn108089911a提出了一种openstack环境中的计算节点的控制方法和装置,该方法包括:控制节点中周期性地监测计算节点的状态数据,确定相应的计算节点是否可用,若不可用则将在相应的计算节点上运行的虚拟机疏散到在环境中根据监测到的状态数据而被确定为可用的计算节点,该方法通过确定计算节点是否可用,并且及时疏散在不可用的计算节点上运行的虚拟机,能够最大程度地缩短rto和rpo,在最短的时间恢复虚拟机业务,保持高可用性,但接收虚拟机的计算节点负载增大同样会导致该节点上的服务运行速度变慢,同时将不可用计算节点的虚拟机分散至其它可用计算节点,加重了其它计算节点的运行负担,该方法无法有效解决计算节点负载过高的问题,影响租户虚拟机的服务质量。



技术实现要素:

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种openstack计算节点自适应切换为控制节点的方法及装置。

本发明的目的可以通过以下技术方案来实现:

一种openstack控制节点自适应切换为计算节点的方法,所述openstack为控制节点组和计算节点组构成的拓扑结构,该方法包括:

s1:将控制节点组分为可切换控制节点组和不可切换控制节点组,通过选举算法从可切换控制节点组中选举产生待切换控制节点;

s2:按周期定时触发监控,若发现有计算节点组出现节点故障或总负载过高时,触发自适应升级流程,否则结束流程;

其中,所述自适应升级流程具体为:结合容器技术通过自动化管理工具将待切换控制节点切换为计算节点并加入步骤s2所述计算节点组。

进一步地,所述控制节点组提供高可用的云平台管理控制服务,所述可切换控制节点组作为控制节点组的补充,可提供管理服务和虚拟网络服务,提高云平台的管理性能,增加集中式虚拟网络的服务带宽,由于整个控制节点组的各个服务均实现了高可用,单个控制节点的切换不会造成云平台的服务中断。

进一步地,所述计算节点提供计算资源虚拟化服务、计算资源管理服务和虚拟二层网络代理等服务,为虚拟机提供cpu、内存等计算资源。

进一步地,openstack云平台采用容器化部署方式,所有服务都封装到相应的docker镜像中,通过启动容器的方式启动该服务,避免不同服务之间的依赖冲突问题,同时方便各个服务的升级回滚,有效解决云平台部署难、升级难的问题;

每个服务的容器镜像都保存在本地docker私有仓库中,结合容器镜像的分层特性,云平台的所有定制化镜像采用镜像分层的方式实现,通过四层实现镜像分层,由上到下依次为:操作系统基础镜像、云平台基础镜像、各个功能模块基础镜像和模块内各个服务的镜像,通过镜像分层可以避免依赖包的重复安装,降低镜像的总存储大小,提高部署效率。

进一步地,通过标记自定义标签进行控制节点组的分组,所述不可切换控制节点组至少为3个,保证云平台高可用的最小个数要求。

进一步地,部署所述可切换控制节点组中的控制节点时,预安装计算节点所需的容器镜像,云平台服务升级时保持该控制节点的容器镜像同步更新,通过该容器镜像可以启动云平台计算服务,同时避免大文件的网络传输造成性能下降;

进一步地,所述选举算法选择参考指标值最小的一个节点,所述选举算法选择参考指标值最小的一个节点,所述参考指标为cpu负载或网络流量或cost值,所述cost值通过加权求和算法求得,计算公式如下:

其中wi为权重值,xi为包括cpu使用量、内存使用量和网络流量的输入参数中任意参数的组合,n为输入参数的个数。

进一步地,所述结合容器技术通过自动化管理工具快速将待切换控制节点切换为计算节点具体为:

利用自动化部署工具清理待切换控制节点上的所有容器,所述自动化部署工具包括ansible,保留和计算节点一致的操作系统层和docker服务层,并快速启动切换得到的计算节点的服务,该服务包括nova-libvirtd、nova-compute和neutron-openvswitch-agent。

进一步地,计算节点组出现节点故障的判断方法具体为:

所述监控系统发送心跳包给计算节点组中各个计算节点,若有计算节点无法收到心跳包,则该计算节点组发生节点故障。

进一步地,计算节点组负载过高的判断方法包括总负载计算和总负载预测。

进一步地,所述总负载计算方法具体为:

通过计算节点组中各个计算节点上的监控代理收集当前计算节点的负载,该负载包括cpu、内存和网络流量,当计算节点组的总负载超过预先设置的阈值时,则该计算节点组总负载过高;

进一步地,所述总负载预测方法具体为:

基于计算节点的历史监控数据,通过多输入单输出的神经网络线性回归模型进行预测,所述神经网络线性回归模型为:

z=wx+b

其中z为计算节点负载预测值,x={x1,x2,…,xn}为输入样本,该样本包括时间、虚拟机数量和租户数量,w={w1,w2,…,wn}为权重矩阵,b={b1}为偏移矩阵,使用均方差函数作为代价函数,通过前向计算和后向传导计算出w和b,根据获得的负载预测值z求得计算节点组总负载,若总负载超过预先设置的阈值,则该计算节点组总负载过高。

一种openstack控制节点自适应切换为计算节点的装置,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器调用所述计算机程序执行如所述方法的步骤。

与现有技术相比,本发明具有以如下有益效果:

(1)本发明通过周期性监控计算节点组的状态,包括是否发生节点故障和总负载过高,自动触发控制节点切换为计算节点的流程,实现计算节点组的自愈或扩容,维持云平台的高可用性,其中计算节点组的总负载的计算方式包括实时计算和预测计算,预测计算基于历史数据通过神经网络线性回归模型进行预测,实现计算节点组总负载达到设定阈值前就进行节点切换,避免对云平台产生影响;

(2)本发明对云平台的各个服务采用容器化部署方式,在进行节点切换流程时仅需对控制节点上原有的容器服务,即可实现环境的快速清理;

(3)本发明将云平台的服务采用镜像分层的方式保存在docker私有仓库中,其中镜像分层由上到下依次为操作系统基础镜像、云平台基础镜像、各个功能模块基础镜像和模块内各个服务的镜像,降低镜像的总存储大小,经过环境清理的待切换控制节点只需预先在docker私有仓库中下载关于计算节点服务的所有镜像,而非启动相应容器,可快速启动相应容器服务,部署效率高;

(4)本发明将控制节点组分为可切换控制节点组和不可切换控制节点组,其中不可切换控制节点组保证了云平台的高可用性,使得单个节点的切换不会影响云平台服务的连续性。

附图说明

图1为自适应切换节点的流程图;

图2为自适应切换节点的框架图;

图3为实施例一切换节点的流程图;

图4为三种类别节点的docker容器部署图。

具体实施方式

下面结合附图和具体实施例对本发明进行详细说明。本实施例以本发明技术方案为前提进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。

实施例一

一种openstack控制节点自适应切换为计算节点的方法,openstack为控制节点组和计算节点组构成的拓扑结构,如图1,该方法包括:

s1:将控制节点组分为可切换控制节点组和不可切换控制节点组,通过选举算法从可切换控制节点组中选举产生待切换控制节点;

s2:按周期定时触发监控,若发现有计算节点组出现节点故障或总负载过高时,触发自适应升级流程,否则结束流程;

其中,所述自适应升级流程具体为:结合容器技术通过自动化管理工具将待切换控制节点切换为计算节点并加入步骤s2所述计算节点组。

选举算法选择参考指标值最小的一个节点,所述选举算法选择参考指标值最小的一个节点,所述参考指标为cpu负载或网络流量或cost值,所述cost值通过加权求和算法求得,计算公式如下:

其中wi为权重值,xi为包括cpu使用量、内存使用量和网络流量的输入参数中任意参数的组合,n为输入参数的个数。

结合容器技术通过自动化管理工具快速将待切换控制节点切换为计算节点具体为:

利用自动化部署工具清理待切换控制节点上的所有容器,所述自动化部署工具包括ansible,保留和计算节点一致的操作系统层和docker服务层,并快速启动切换得到的计算节点的服务,该服务包括nova-libvirtd、nova-compute和neutron-openvswitch-agent。

计算节点组出现节点故障的判断方法具体为:

监控系统发送心跳包给计算节点组中各个计算节点,若有计算节点无法收到心跳包,则该计算节点组发生节点故障。

计算节点组负载过高的判断方法具体为:

通过计算节点组中各个计算节点上的监控代理收集当前计算节点的负载,该负载包括cpu、内存和网络流量,当计算节点组的总负载超过预先设置的阈值时,则该计算节点组总负载过高;

具体地,本实施例中步骤s2具体如图3所示,包括:

101)定时器每五分钟定时触发监控系统对云平台的各个计算节点的负载信息进行收集,并向计算节点发送心跳包;

102)判断计算节点组是否出现节点故障或总负载过高,若是则执行步骤103),否则流程结束;

103)若监控系统配置为静默方式则直接执行步骤104),否则通过邮件或短信通知管理员,管理员若同意则执行步骤104),否则结束流程;

104)通过选举算法从可切换控制节点组中选举出待切换控制节点;

105)通过ansible自动清理该待切换控制节点上的容器,保留操作系统层;

106)通过ansible自动启动该待切换控制节点与计算节点相关的容器服务,切换为计算节点,并将该计算节点加入到计算节点组,结束流程。

实施例二

本实施中计算节点组总负载通过预测算法计算获得,其它与实施例一相同,预测算法具体为:

基于计算节点的历史监控数据,通过多输入单输出的神经网络线性回归模型进行预测,所述神经网络线性回归模型为:

z=wx+b

其中z为计算节点负载预测值,x={x1,x2,…,xn}为输入样本,该样本包括时间、虚拟机数量和租户数量,w={w1,w2,…,wn}为权重矩阵,b={b1}为偏移矩阵,使用均方差函数作为代价函数,通过前向计算和后向传导计算出w和b,根据获得组内每个计算节点的负载预测值z求得计算节点组总负载,若总负载超过预先设置的阈值,则该计算节点组总负载过高。

实施例三

与实施例一对应的一种openstack控制节点自适应切换为计算节点的装置,openstack包括控制节点组和计算节点组,该装置包括:

故障监测模块,用于通过发送心跳包检测给计算节点组中各个计算节点,判断该计算节点组是否发生节点故障;

负载检测模块,用于收集计算节点组中各个计算节点负载信息元,根据收集的负载信息计算该计算节点组总负载,或根据历史负载信息预测该计算节点组总负载,并根据设定负载阈值判断该计算节点组是否过载;

节点处理模块,用于将控制节点组分为可切换控制节点组和不可切换控制节点组,通过选举算法从可切换控制节点组中选举产生待切换控制节点,结合容器技术通过自动化管理工具将待切换控制节点切换为计算节点,并将该计算节点加入到发生节点故障或总负载过高的计算节点组;

定时触发模块,用于设定监测周期,并根据该周期定时触发故障监测模块和负载检测模块运行。

本实施例的装置作为云平台的外围装置,监控计算节点的负载信息和故障状态,负载信息包括cpu、内存和关键网络流量,同时管理节点切换流程。

云平台的基础架构采用m+n节点的拓扑,包含m个控制节点和n个计算节点的模型,其中控制节点可复用网络节点,m个控制节点分为组成若干控制节点组,若干控制节点组通过标记自定义标签分分为可切换控制节点组和不可切换控制节点组,不可切换控制节点组至少为3个,保证云平台高可用的最小个数要求。

控制节点组提供一个高可用的云平台管理控制服务:提供包括计算模块、云硬盘管理模块和镜像管理模块的应用程序接口api服务和包括控制器组件与调度组件的内部工作组件,这些服务是无状态的,通过haproxy+keepalived实现负载均衡高可用;同时提供共享数据库和消息队列服务,这两个服务是有状态的,数据库服务通过mysqlgelera实现多主高可用集群,rabbitmq集群通过镜像模式实现消息队列高可用;

同时控制节点组可以通过l3agent提供高可用的云平台管理控制服务,包含租户网络的网关、外网访问、浮动ip、虚拟防火墙等服务,所述可切换控制节点组作为控制节点组的补充,可提供管理服务和虚拟网络服务,提高云平台的管理性能,增加集中式虚拟网络的服务带宽,并通过keepalived实现虚拟路由的主备高可用。

计算节点组提供计算资源虚拟化服务、计算资源管理服务和虚拟二层网络代理等服务,为虚拟机提供cpu、内存等计算资源。

openstack云平台采用容器化部署方式,所有服务都封装到相应的docker镜像中,通过启动容器的方式启动该服务,所有节点保持操作系统版本和docker服务版本的一致性避免不同服务之间的依赖冲突问题,同时方便各个服务的升级回滚,有效解决云平台部署难、升级难的问题。

如图2,每个服务的容器镜像都保存在本地docker私有仓库中,结合容器镜像的分层特性,云平台的所有定制化镜像采用镜像分层的方式实现,通过四层实现镜像分层,由上到下依次为:操作系统基础镜像、云平台基础镜像、各个功能模块基础镜像和模块内各个服务的镜像,通过镜像分层可以避免依赖包的重复安装,降低镜像的总存储大小,提高部署效率。

云平台所有服务以docker容器的方式启动,所有节点保持操作系统版本和docker服务版本的一致性,保障节点切换的平滑性、稳定性。

如图4,控制节点的docker容器包括云平台各个模块的api服务和内部组件,共享的数据库、消息队列和负载均衡服务全部实现高可用方案,由于整个控制节点组的各个服务均实现了高可用,满足在节点切换时云平台服务的连续性,单个控制节点的切换不会造成云平台的服务中断。

计算节点的docker容器包括nova-compute计算服务、neutron-openvswitch-agent虚拟二层网络服务等,其中可切换控制节点组中的节点预下载计算节点服务的所有镜像,而非启动相应容器,因此当该节点升级为计算节点时可快速启动相应容器服务。

部署可切换控制节点组中的控制节点时,预安装计算节点所需的容器镜像,云平台服务升级时保持该控制节点的容器镜像同步更新,通过该容器镜像可以启动云平台计算服务,同时避免大文件的网络传输造成性能下降。

实施例一、实施例二和实施例三通过基于当前状态,包括计算节点组发生节点故障或负载过高、或通过多输入单输出的神经网络线性回归模型基于历史数据进行预测,触发控制节点切换为计算节点的流程,通过采用容器化部署平台服务,节点切换时仅需简单删除旧的容器服务,再通过预下载的docker镜像快速启动服务,快速的流程保证了保障云平台切换的时效性和高可用性。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1