一种云平台升级方法、装置、设备及存储介质与流程

文档序号:28485973发布日期:2022-01-15 00:52阅读:215来源:国知局
一种云平台升级方法、装置、设备及存储介质与流程

1.本技术涉及云计算技术领域,涉及但不限于一种云平台升级方法、装置、设备及存储介质。


背景技术:

2.openstack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由美国国家航空航天局(nasa,national aeronautics and space administration)和rackspace公司合作研发并发起,以apache许可证授权的开源代码项目。openstack旨在为私有云和公有云的建设与管理提供软件的开源项目。
3.随着云计算技术的发展,openstack必然也需要不断地完善。openstack从2010年诞生以来,大约每半年发布一个新版本,以适应云计算用户的需求。目前openstack升级的方案主要有两种:一种是采用重新部署的方式,通过重新搭建高版本的资源池,将低版本的存量资源迁移到高版本的资源池中实现升级,该种升级方式,耗费人力成本巨大,且无法实现自动化升级。另一种是采用容器化的方式,通过控制节点替换升级、计算节点容器化升级的方式来实现存量资源的升级,该种方式中,需要增加额外的物理机,增加了升级成本,且会影响openstack的性能,无法实现自动化升级。


技术实现要素:

4.有鉴于此,本技术实施例为解决现有技术中存在的问题而提供一种云平台升级方法、装置、设备及存储介质。
5.本技术实施例提供一种云平台升级方法,包括:
6.根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定待升级组件;
7.基于所述当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台;
8.接收所述当前云平台发送的迁移完毕指令,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令;
9.对所述待升级组件进行升级,得到所述目标版本云平台。
10.本技术实施例提供一种云平台升级装置,包括:
11.确定模块,用于根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定待升级组件;
12.发送模块,用于基于所述当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台;
13.接收模块,用于接收所述当前云平台发送的迁移完毕指令,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令;
14.升级模块,用于对所述待升级组件进行升级,得到所述目标版本云平台。
15.本技术实施例提供一种云平台升级设备,包括:
16.存储器,用于存储可执行指令;
17.处理器,用于执行所述存储器中存储的可执行指令时,实现本技术实施例提供的云平台升级方法。
18.本技术实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现本技术实施例提供的云平台升级方法。
19.本技术实施例提供的云平台升级方法,根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定了待升级组件之后,基于所述当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台,接收所述当前云平台发送的迁移完毕指令,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令,最后对所述待升级组件进行升级,得到所述目标版本云平台,通过对计算节点原地升级,无需额外的物理资源,能够降低升级成本,实现云平台的自动化升级,而且不影响升级后云平台的性能。
附图说明
20.图1为本技术实施例提供的云平台升级方法的网络架构示意图。
21.图2是本技术实施例提供的云平台升级设备的组成结构示意图。
22.图3为本技术实施例提供的云平台升级方法的一种实现流程示意图。
23.图4为本技术实施例提供的云平台升级方法的另一种实现流程示意图。
24.图5为本技术实施例提供的云平台升级方法的又一种实现流程示意图。
具体实施方式
25.为了使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术作进一步地详细描述,所描述的实施例不应视为对本技术的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
26.在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
27.在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本技术实施例能够以除了在这里图示或描述的以外的顺序实施。
28.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本技术实施例的目的,不是旨在限制本技术。
29.对本技术实施例进行进一步详细说明之前,对本技术实施例中涉及的名词和术语进行说明,本技术实施例中涉及的名词和术语适用于如下的解释。
30.1)网络割接是对正在使用的线路、设备进行操作,将会直接影响到上面承载的业务,网络改造中最关键的一步就是网络割接。网络割接又叫网络迁移,是指运行网络物理或
者逻辑上的更改。
31.2)热迁移(live migration),又叫动态迁移、实时迁移,即虚拟机保存/恢复,通常是将整个虚拟机的运行状态完整保存下来,同时可以快速的恢复到原有硬件平台甚至是不同硬件平台上。恢复以后,虚拟机仍旧平滑运行,用户不会察觉到任何差异。
32.为了更好地理解本技术实施例,首先以openstack云平台为例,对相关技术中的云平台升级方法及存在的缺点进行说明。
33.在相关技术中,对openstack进行升级时,可采用重新部署方式,即重新搭建新的高版本的资源池,然后将低版本的待升级的存量资源(虚拟机,网络)等迁移到新的资源池,以此实现低版本openstack的升级。该种升级方式的优点是升级彻底,但存在耗费人力成本巨大、无法实现自动化升级的缺陷。
34.在相关技术中,对openstack进行升级时,也可采用容器化的方式来完成存量资源的升级,其核心的方法是,利用openstack控制节点和计算节点分离这一特性,在额外的物理机上部署高版本控制集群,将低版本数据库导入高版本的控制节点,并进行数据库升级;在计算节点关闭原有的低版本服务,通过容器启动高版本openstack服务,修改配置将计算节点指向部署的高版本控制集群,从而完成openstack升级。该种升级方式,可实现半自动化升级,但该种升级方式,需要额外的物理资源,不能实现全自动化升级,增加了硬件成本,且采用容器导致云平台性能下降。
35.基于以上问题,在本技术实施例中提供一种云平台升级方法,首先根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定待升级组件,然后基于所述当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台,接收所述当前云平台发送的迁移完毕指令,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令,最后对所述待升级组件进行升级,得到所述目标版本云平台,整个升级过程无需人工干预,能够实现云平台的自动化升级,通过对计算节点原地升级,无需额外的物理资源,能够降低升级成本,不影响升级后云平台的性能。
36.下面说明实现本技术实施例的装置的示例性应用,本技术实施例提供的装置可以实施为终端设备。下面,将说明装置实施为终端设备时涵盖终端设备的示例性应用。
37.参见图1,图1为本技术实施例提供的云平台升级方法的网络架构示意图,如图1所示,在该网络架构中至少包括云平台升级设备100、当前云平台200、网络300。为实现支撑一个示例性应用,云平台升级设备100通过网络300连接当前云平台200,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线链路实现数据传输。
38.在另一实施例中,云平台升级设备100和当前云平台200可部署在同一实体设备上,此时,云平台升级设备100和当前云平台200可以通过内部通信总线交互,实现数据传输。
39.用户通过云平台升级设备100获取当前云平台200中已部署的组件信息,结合目标版本云平台的组件信息,确定待升级组件;然后获取当前云平台200的计算节点上所承载的虚拟机信息,发送虚拟机迁移指令至当前云平台200,当前云平台200对计算节点上所承载的虚拟机进行迁移升级,并返回迁移完毕指令至云平台升级设备100,最后云平台升级设备100对待升级组件进行升级,得到目标版本云平台。
40.本技术实施例提供的装置可以实施为硬件或者软硬件结合的方式,下面说明本申
请实施例提供的装置的各种示例性实施。
41.根据图2示出的云平台升级设备100的示例性结构,可以预见云平台升级设备100的其他的示例性结构,因此这里所描述的结构不应视为限制,例如可以省略下文所描述的部分组件,或者,增设下文所未记载的组件以适应某些应用的特殊需求。
42.图2所示的云平台升级设备100包括:至少一个处理器110、存储器140、至少一个网络接口120和用户接口130。云平台升级设备100中的每个组件通过总线系统150耦合在一起。可理解,总线系统150用于实现这些组件之间的连接通信。总线系统150除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统150。
43.用户接口130可以包括显示器、键盘、鼠标、触感板和触摸屏等。
44.存储器140可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)。易失性存储器可以是随机存取存储器(ram,random access memory)。本技术实施例描述的存储器140旨在包括任意适合类型的存储器。
45.本技术实施例中的存储器140能够存储数据以支持云平台升级设备100的操作。这些数据的示例包括:用于在云平台升级设备100上操作的任何计算机程序,如操作系统和应用程序。其中,操作系统包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序可以包含各种应用程序。
46.作为本技术实施例提供的方法采用软件实施的示例,本技术实施例所提供的方法可以直接体现为由处理器110执行的软件模块组合,软件模块可以位于存储介质中,存储介质位于存储器140,处理器110读取存储器140中软件模块包括的可执行指令,结合必要的硬件(例如,包括处理器110以及连接到总线150的其他组件)完成本技术实施例提供的方法。
47.作为示例,处理器110可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(dsp,digital signal processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
48.将结合本技术实施例提供的终端的示例性应用和实施,说明本技术实施例提供的云平台升级方法。
49.参见图3,图3为本技术实施例提供的云平台升级方法的一种实现流程示意图,应用于图1所示的云平台升级设备,下面将结合图3示出的步骤进行说明。
50.步骤s301,根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定待升级组件。
51.这里,获取当前云平台中已部署的组件信息时,需要用户具备升级当前云平台的权限,不具备升级当前平台权限的用户可能无法进行升级操作。例如,具备管理员权限的用户不仅可以使用当前云平台,而且可以进行当前云平台的升级操作,而一般用户可以使用当前云平台,但不能进行升级操作。
52.当用户需要对云平台进行升级时,先通过其管理员权限获取到当前版本云平台中已部署的组件信息,并确定要升级到的高版本即目标版本云平台的组件信息,然后根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定需要进行升级的组件。
53.举例来说,当前云平台openstack中已部署的组件包括keystone、glance、nova、cinder、neutron和ceilometer这几个常用的组件,目标版本云平台的组件信息中无新增的组件,也无删除的组件,由此即可确定需要进行升级的组件包括keystone、glance、nova、cinder、neutron和ceilometer。或者,当确定某组件(如neutron)在高版本的云平台中不再继续使用时,升级时无需对其进行升级,此时,确定需要进行升级的组件包括keystone、glance、nova、cinder和ceilometer。
54.其中,keystone组件提供认证管理服务,管理、创建、修改其余组件的认证信息;glance组件提供镜像管理服务,对虚拟机部署的时候所能提供镜像的管理;nova提供计算管理服务,对计算节点的nova进行管理;cinder组件提供管理存储节点服务,同时提供cinder在horizon中的管理面板;neutron组件提供网络管理服务,对网络节点的网络拓扑进行管理,同时提供neutron在horizon的管理界面;ceilometer组件对物理资源以及虚拟资源的监控,并记录这些数据,对数据进行分析。
55.步骤s302,基于所述当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台。
56.云平台升级设备确定了需要进行升级的组件后,进一步确定当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至当前云平台,以使当前云平台对计算节点上所承载的虚拟机进行迁移升级。
57.这里,当前云平台可以迁移升级部分计算节点的虚拟机,也可以迁移升级所有计算节点的虚拟机。若当前云平台迁移升级所有计算节点的虚拟机时,确定当前云平台的各个计算节点上所承载的虚拟机,从而使得当前云平台对各个计算节点上所承载的虚拟机进行迁移升级。
58.步骤s303,接收所述当前云平台发送的迁移完毕指令,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令。
59.当前云平台通过自身的热迁移功能,将待迁移计算节点上的虚拟机迁移到别的宿主机,通过yum升级的方式实现了虚拟机的升级。本实施例通过采用云平台的热迁移功能,可以保证升级过程中对虚拟机业务没有影响。
60.当前云平台将待迁移的计算节点所承载的虚拟机迁移完成后,向云平台升级设备发送迁移完毕的指令。云平台升级设备接收到当前云平台发送的迁移完毕指令后,即可确定当前云平台的计算节点上所承载的虚拟机升级完成。
61.步骤s304,对所述待升级组件进行升级,得到目标版本云平台。
62.在步骤s303完成后,云平台升级设备已完成当前云平台的计算节点升级,继续对之前确定的待升级组件进行对应升级,从而得到目标版本的云平台。
63.这里,对所述待升级组件进行升级,包括对所述当前云平台的待升级组件进行软件包升级、配置文件升级和数据库升级,其中,进行软件包升级时采用yum方式进行升级。
64.本实施例提供的云平台升级方法,根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定了待升级组件之后,基于所述当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台,接收所述当前云平台发送的迁移完毕指令,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令,最后对所述待升级组件进行升级,得到所述目标版本云平台,通过对计算节点
原地升级,无需额外的物理资源,能够降低升级成本,实现云平台的自动化升级,而且不影响升级后云平台的性能。
65.可选地,在云平台正式升级之前,可以先进行割接预测试,以确保网络割接升级的成功率,基于此,在一些实施例中,步骤s301之后还可以执行以下步骤:
66.步骤s011,对所述当前云平台的数据库进行备份,得到备份数据库。
67.在进行当前云平台升级前,先进行割接预测试,在一种实现方式中,可以通过当前云平台的数据库能否成功升级来进行网络割接预测试。该种方式中,先对当前云平台的数据库进行备份,得到备份数据库,通过升级备份数据库来进行网络割接预测试。
68.步骤s012,将所述备份数据库加载至测试环境中,所述测试环境为预先搭建的目标版本云平台的测试环境。
69.在测试前,用户需要先搭建用于测试备份数据库的升级过程的测试环境。进行测试时,云平台升级设备将备份数据库拷贝到测试环境,并在测试环境中进行恢复,以将备份数据加载到测试环境中。
70.步骤s013,在所述测试环境中,对所述备份数据库进行升级测试。
71.将备份数据库加载到测试环境中后,云平台升级设备继续在测试环境中进行备份数据库的升级测试。若在测试环境中备份数据库升级成功,则网络割接测试通过,表明当前网络可以进行当前云平台升级,可进行后续的升级操作;若在测试环境中备份数据库升级失败,则网络割接测试不通过,表明当前网络不能进行当前云平台升级,需要进行网络修复才能进行升级。
72.仍以openstack为例,在进行备份数据库升级测试时,主要是对备份数据库的数据库字段进行升级,将存在于目标版本数据库的结构中、而不存在于备份数据库的结构中的字段,增加至备份数据库中,即主要升级在迭代开发过程中新增的数据库字段。
73.openstack备份数据库升级时,主要通过alembic和sqlalchemy migrate这两个工具进行升级管理,其中,keystone、glance、nova、cinder和heat组件使用sqlalchemy migrate进行升级,neutron和ironic使用alembic进行升级。
74.以keystone组件为例,keystone组件主要提供认证管理服务,为其余组件提供认证信息的管理、创建或修改等服务,该组件可使用mysql等数据库存储认证信息。
75.在升级keystone组件时,可以通过调用函数“keystone-manage db_sync”进行keystone数据库结构的升级。实现代码可以为:
76.su-s/bin/sh-c"keystone-manage db_sync"keystone。
77.当组件已不支持从当前版本云平台将数据库直接升级至目标版本云平台时,需要先升级至当前版本与目标版本之间的中间版本云平台,再由中间版本云平台升级至目标版本云平台。其中,这里的中间版本可以为一个,也可以为多个。
78.由于云平台涉及的组件众多并且组件的升级严重的依赖于网络情况,在正式网络割接之前,先通过上述步骤s011至步骤s013进行割接预测试,以保证当前云平台的数据库在当前网络环境下能够正常升级,确保网络割接升级成功,可避免由于数据库异常导致的升级失败,能够提高云平台升级的成功率。
79.可选地,在一些实施例中,图3中所示的步骤s013备份数据库升级成功之后、步骤s304之前,对当前云平台进行备份,以确保升级过程中或升级完成后可回退。备份当前云平
台包括的步骤s014如下:
80.步骤s014,当对所述备份数据库的升级测试成功时,对所述当前云平台进行备份,得到备份云平台。
81.为保证升级过程中或升级完成后可回退,可在升级前对当前云平台的数据进行备份。当上述步骤s013对备份数据库进行升级测试后,若升级测试成功,表明当前云平台可进行升级。此时,云平台升级设备对当前云平台进行备份,得到备份云平台,以保证在升级失败后,可以重新回退至当前云平台。
82.在一些实施例中,图3中所示的步骤s304“对所述待升级组件进行升级,得到目标版本云平台”可以通过下述的步骤s3041至步骤s3045实现,以下结合各个步骤进行相关说明。
83.步骤s3041,对所述待升级组件进行升级,得到待确定组件。
84.这里,对所述待升级组件进行升级,包括对所述当前云平台的待升级组件进行软件包升级、配置文件升级和数据库升级,其中,进行软件包升级时采用yum方式进行升级。
85.其中,对当前云平台的待升级组件进行软件包、配置文件和数据库升级时,先进行软件包升级,然后进行配置文件的升级,最后进行数据库升级。升级完成后,重新启动服务,得到待确定组件。
86.在一些实现方式中,在升级软件包时,可以通过传统的yum方式进行软件包的升级。在进行配置文件的升级时,可以将当前版本的配置项更新为目标版本的配置项来实现升级。在进行数据库升级时,主要是对数据库的数据库字段进行升级,将存在于目标版本数据库的结构中、而不存在于当前版本的云平台数据库的结构中的字段,增加至当前版本的云平台数据库中,即主要升级在迭代开发过程中新增的数据库字段。具体组件的升级参见上述对备份数据库的升级,此处不再赘述。
87.步骤s3042,对所述待确定组件的功能进行测试。
88.虽然已对待升级的组件进行了升级,但可能由于网络或其他原因,在升级过程中出现升级错误,导致得到的待确定组件并非目标版本的组件,因此,需要对待确定组件的功能进行测试,以确定功能是否均正常。
89.步骤s3043,当所述待确定组件的所有功能测试成功时,确定所述待升级组件升级成功,将所述待确定组件确定为目标组件,得到所述目标版本云平台。
90.若当前待确定组件的所有功能均正常,即当前待确定组件的所有功能测试成功,确定当前待升级组件升级成功,也就能够确定当前待确定组件即为当前目标组件。当由所有待升级组件得到的所有待确定组件,其所有功能均测试成功时,得到目标版本云平台。
91.步骤s3044,当所述待确定组件的一个功能测试失败时,确定所述待升级组件升级失败。
92.若所有待确定组件中任意一个待确定组件的其中一个功能测试失败时,即该待确定组件无法实现目标组件的部分或全部功能,此时,确定该待确定组件升级失败。
93.步骤s3045,利用所述备份云平台将所述待确定组件回退至所述待升级组件。
94.这里,根据备份的升级前的当前云平台进行待确定组件的回退操作,将其恢复至初始的待升级组件。
95.在一些实现方式中,当其中一个待确定组件的功能测试失败时,可根据该待确定
组件与其他组件之间的关联关系,确定是否对其他功能测试成功的组件存在影响,若存在影响,可同时回退受影响的组件至待升级组件。
96.若需要对云平台的所有待确定组件进行回退,根据备份云平台对待确定组件的软件包、配置文件和数据库进行回退时,软件包、配置文件和数据库的回退顺序不受限制。对应上述通过yum方式进行软件包的升级,这里可以通过yum history undo来进行软件包的回退,能够实现一键式全自动化升级、回退,无需人工干预,升级时间短,避免过多人工导致的升级失败。
97.在一些实施例中,上述的步骤s302“基于所述当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台”可以通过步骤s3021至步骤s3023实现,以下对各个步骤进行说明。
98.步骤s3021,获取所述当前云平台的计算节点上所承载的虚拟机的个数。
99.采用原地升级的方式进行计算节点的升级,从占用资源最少的计算节点开始进行原地升级,无需额外的物理资源,可大大节省升级成本。本实施例中,通过获取当前云平台的待迁移的计算节点上所承载的虚拟机的个数,根据虚拟机的个数确定每个待迁移的计算节点占用的资源。这里,所述待迁移的计算节点可以为当前云平台的所有计算节点,也可以为部分计算节点。
100.步骤s3022,基于所述计算节点上所承载的虚拟机的个数,确定所述计算节点的迁移顺序。
101.这里,根据占用资源从少到多的顺序,即待迁移的计算节点上所承载的虚拟机的个数从少到多的顺序确定待迁移的计算节点的迁移顺序。
102.步骤s3023,按照所述迁移顺序,依次向所述当前云平台发送迁移指令,以使所述当前云平台依次迁移所述计算节点上所承载的虚拟机。
103.按照所述迁移顺序,向所述当前云平台发送第i个迁移指令,以使所述当前云平台迁移所述第i个计算节点上所承载的虚拟机,其中,i为正整数,且小于或等于待迁移的计算节点的个数;
104.相应的,所述接收所述当前云平台发送的迁移完毕指令,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令,包括:
105.接收所述当前云平台发送的第i个迁移完毕指令,所述第i个迁移完毕指令是所述当前云平台对所述第i个计算节点上所承载的虚拟机迁移完毕后发送的指令。
106.云平台升级设备按照迁移顺序,向当前云平台发送一个迁移指令,当前云平台迁移该计算节点上所承载的虚拟机,迁移完成后向云平台升级设备返回一迁移完毕指令,以使云平台升级设备继续发送用于迁移下一个计算节点上所承载的虚拟机的迁移指令,直到所有待迁移的计算节点上的所有虚拟机迁移完毕为止。
107.本实施例通过获取并按照计算节点上所承载的虚拟机的个数,确定计算节点的迁移顺序,通过对计算节点原地升级,无需额外的资源,不依赖于容器,避免云平台性能下降。
108.图4为本技术实施例提供的云平台升级方法的另一种实现流程示意图,如图4所示,所述流程包括:
109.步骤s401,云平台升级设备根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定待升级组件。
110.这里,当用户需要对云平台进行升级时,先由其管理员权限获取到当前云平台中已部署的组件信息,并确定要升级到的高版本即目标版本的组件信息,然后根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定需要进行升级的组件。
111.步骤s402,云平台升级设备对所述当前云平台的数据库进行备份,得到备份数据库。
112.在云平台正式升级之前,需要先进行割接预测试,以确保网络割接升级的成功率。这里,可以通过当前云平台的数据库能否成功升级来进行网络割接预测试。
113.步骤s403,云平台升级设备将所述备份数据库加载至测试环境中。
114.这里,所述测试环境为预先搭建的所述目标版本云平台的测试环境,为用户在测试前预先搭建的用于测试备份数据库的升级过程的测试环境。
115.步骤s404,云平台升级设备在所述测试环境中,对所述备份数据库进行升级测试。
116.若在测试环境中备份数据库升级成功,则网络割接测试通过,表明当前网络可以进行当前云平台升级,此时进入步骤s405;若在测试环境中备份数据库升级失败,则网络割接测试不通过,表明当前网络不能进行当前云平台升级,此时,需要更新网络,再进行测试,直到网络割接测试通过。
117.步骤s405,当对所述备份数据库的升级测试成功时,云平台升级设备对所述当前云平台进行备份,得到备份云平台。
118.这里的步骤s405可在步骤s404之后,s411之前的任一顺序执行。
119.步骤s406,云平台升级设备获取所述当前云平台的计算节点上所承载的虚拟机的个数。
120.步骤s407,云平台升级设备基于所述计算节点上所承载的虚拟机的个数,确定所述计算节点的迁移顺序。
121.步骤s408,云平台升级设备按照所述迁移顺序,依次向所述当前云平台发送迁移指令。
122.步骤s409,当前云平台依次迁移所述计算节点上所承载的虚拟机。
123.通过计算节点上所承载的虚拟机的个数,确定计算节点的迁移顺序,按照迁移顺序对计算节点原地升级,无需额外的资源,不依赖于容器,避免了云平台性能下降。
124.步骤s410,云平台升级设备接收所述当前云平台发送的迁移完毕指令。
125.这里,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令。
126.本实施例通过采用云平台的热迁移功能,可以保证升级过程中对虚拟机业务没有影响。
127.步骤s411,云平台升级设备对所述待升级组件进行升级,得到待确定组件。
128.这里,对所述待升级组件进行升级,包括对所述当前云平台的待升级组件进行软件包升级、配置文件升级和数据库升级,其中,进行软件包升级时采用yum方式进行升级。
129.步骤s412,云平台升级设备对所述待确定组件的功能进行测试。
130.对待确定组件的功能进行测试,以确定其功能是否均正常。当所述待确定组件的所有功能测试成功时,表明待确定组件即为目标组件,确定所述待升级组件升级成功,进入步骤s413;当所述待确定组件的一个功能测试失败时,表明待确定组件没有实现目标组件
的所有功能,确定所述待升级组件升级失败,进入步骤s414。
131.步骤s413,云平台升级设备确定所述待升级组件升级成功,将所述待确定组件确定为目标组件,得到所述目标版本云平台。
132.步骤s414,云平台升级设备确定所述待升级组件升级失败。
133.步骤s415,云平台升级设备利用所述备份云平台将所述待确定组件回退至所述待升级组件。
134.这里,根据备份的升级前的当前云平台进行待确定组件的回退操作,将其恢复至初始的待升级组件。
135.本实施例提供的云平台升级方法,能够实现一键式全自动化升级、回退,无需人工干预,升级时间短,避免过多人工导致的升级失败;进行数据库预测试,能够避免由于数据库异常导致的升级失败,提高云平台升级的成功率;底层虚拟机升级原地升级,无需额外的资源,升级过程中对虚拟机业务没有影响,且不依赖于容器,避免云平台性能下降。
136.下面,将说明本技术实施例在一个实际的应用场景中的示例性应用。
137.在本技术实施例中以k版本的openstack升级到p版本的openstack进行示例性说明。本实施例提供的openstack升级方法中,主要包含以下核心逻辑步骤:收集平台信息、数据库预测试、数据备份、底层虚拟机升级、openstack升级、功能测试验证和升级回退。
138.图5为本技术实施例提供的云平台升级方法的又一种实现流程示意图,如图5所示,本实施例提供的云平台升级方法包括以下步骤:
139.步骤s501,收集平台信息。
140.本实施例中,云平台升级设备根据当前openstack信息和目标版本的openstack信息,确定待升级组件。
141.这里,云平台升级设备的平台信息收集模块根据用户输入当前openstack平台的管理员权限和需要升级到的目标版本的openstack的信息来决定openstack平台的哪些组件进行升级。
142.获取当前openstack版本信息及当前openstack已经部署的组件信息,来确定需要进行升级的组件。常用的openstack的组件包含keystone,glance,nova,cinder,neutron,ceilometer,可将常用openstack的组件作为待升级组件。
143.除openstack版本信息和openstack组件信息之外,平台信息收集模块还可以收集各个计算节点所承载的虚拟机个数,以根据各个计算节点所承载的虚拟机个数确定选取哪个计算节点首先进行虚拟机软件qemu,libvirt的升级。如可以根据各个计算节点承载虚拟机个数,确定占用资源大小,按照占用资源由少至多的顺序确定升级的qemu,libvirt的计算节点的顺序。平台信息收集模块还可以收集后端存储具体的型号,以验证目标版本的openstack是否可以对接,是否具备相关的目标版本的驱动。
144.步骤s502,数据库预测试。
145.云平台升级设备对当前云平台的数据库进行备份,得到备份数据库,将所述备份数据库加载至测试环境中,在所述测试环境中,对所述备份数据库进行升级测试。这里,所述测试环境为预先搭建的目标版本云平台的测试环境。
146.openstack涉及的组件众多并且各个组件的升级严重的依赖于当前网络的情况。在正式的网络割接之前,需要先进行割接预测试,才能保证网络割接升级的成功率。这一个
预测试步骤主要是用来保证网络的数据库能够正常的升级。
147.这一步会把网络的数据库备份下来,然后在一个p版的测试环境中进行测试数据库的升级过程。openstack使用mysql作为默认使用的数据库,由于openstack的数据库都小于50g,所以采用mysqldump做数据库的备份。mysql数据备份采用的是现有的公知技术,此实施例中不再赘述。
148.在获取到数据库的备份后,将此数据库备份拷贝到测试环境并恢复,进一步地在此测试环境中进行数据库的升级验证测试。
149.openstack数据库的结构升级主要是指在迭代开发过程中新增的数据库字段。openstack有两种数据库升级主要通过alembic和sqlalchemy migrate这两个工具进行管理。使用sqlalchemy migrate的项目:keystone,glance,nova,cinder,heat,使用alembic的项目:neutron,ironic。在升级过程中需要通过切换不同的openstack代码历史版本来进行升级。
150.对openstack数据库升级时,各个组件进行升级过程如下:
151.1)keystone升级
152.通过“keystone manage db_sync”进行数据库结构的升级,升级时替换代码如下:
153.su-s/bin/sh-c"keystone manage db_sync"keystone
154.2)glance升级
155.openstack glance组件已不支持从k版将数据库直接升级至p版,需要替换glance为l版本代码,先升级数据库版本至42,再替换回p版代码,同步数据库版本至pike01。升级时替换代码如下:
156.#git切换到代码为l版
157.su-s/bin/sh-c"glance manage db_sync"glance
158.#git切换到代码为p版
159.su-s/bin/sh-c"glance manage db_sync"glance
160.3)cinder升级
161.openstack cinder组件已不支持从k版将数据库直接升级至p版,从n版开始仅支持从跨一个版本的升级。由于cinder数据库采用顺序升级方式,数据库由db/sqlalchemy/migrate_repo/versions目录下依版本顺序排列的升级脚本进行升级,我们只需将缺失的升级脚本script补充至对应目录下即可成功升级。
162.升级时替换代码如下:
163.#更新db/sqlalchemy/migrate_repo/versions下数据库升级脚本
164.su-s/bin/sh-c"cinder manage db sync"cinder
165.4)neutron升级
166.neutron使用alembic进行数据库管理,采用链式升级方式,每个脚本的revision当前指针和down_revision后继指针,形成一个有序的单链表,这样db在升级的时候就能有序的进行。升级时替换代码如下:
167.neutron-db manage upgrade
--
expand
168.neutron-db manage upgrade
--
contract
169.5)nova升级
170.通过“nova manage db sync”、“nova manage api_db sync”和“nova manage db online_data_migrations”进行数据库升级。openstack nova组件已不支持从k版将数据库直接升级至p版,在p版升级脚本中要求必须先在n版执行db数据在线迁移,然而在n版升级脚本中也明确指出需要先在m版本执行db数据在线迁移。所有nova的升级顺序为k-》m-》n-》p。升级时替换代码如下:
171.create database if not exists nova_api;
172.create database if not exists nova_cell0;
173.#git切换到m版本nova代码
174.su-s/bin/sh-c"nova manage db sync"nova
175.su-s/bin/sh-c"nova manage api_db sync"nova
176.su-s/bin/sh-c"nova manage db online_data_migrations"nova
177.#git切换到n版本nova代码
178.su-s/bin/sh-c"nova manage db sync"nova
179.su-s/bin/sh-c"nova manage api_db sync"nova
180.su-s/bin/sh-c"nova manage db online_data_migrations"nova
181.#git切换到p版本nova代码
182.su-s/bin/sh-c"nova manage db sync"nova
183.su-s/bin/sh-c"nova manage cell_v2 simple_cell_setup"nova
184.su-s/bin/sh-c"nova manage api_db sync"nova
185.su-s/bin/sh-c"nova manage db online_data_migrations"nova
186.6)ceilometer数据库升级
187.采用ceilometer-upgrade进行数据库升级,不需要替换代码。
188.本实施例通过进行数据库升级的预测试,避免正式环境的变更过程由于数据库升级异常导致的升级失败,能够提高升级的成功率。
189.步骤s503,数据备份。
190.云平台升级装置当对所述备份数据库的升级测试成功时,对所述当前云平台进行备份,得到备份云平台。
191.为保证可回退,需要对现网中的持久化的数据进行备份,包含软件包,数据库和配置项。
192.软件包的备份应该包含两个部分:软件仓库的备份和各个节点上所安装的软件包的记录。软件仓库的备份,用于保证当前版本的yum源仓库在升级过程中不会被目标版本的rpm包所污染。在实际操作过程中,可以把目标版本的软件包,也就是p版的软件包的重新做成一个yum源的仓库。在yum的配置文件中增加指向新配置源的目录即可。不同版本的yum源仓库物理隔离,通过yum配置文件增减,就可以实现软件仓库的新增和回退。每个节点的软件包的记录进行备份,类似于数据库的多版本并发控制技术(mvcc,multiversion concurrency control)实现原理。用yum history的唯一编码(id,identity document)的来唯一标示每次的变更操作。在回退的时候只需要undo升级的id,即可实现软件包的回退。
193.数据库的备份采用mysql备份,采用的现有技术,本实施例中不再赘述。
194.配置项的备份,是对配置文件的备份。
195.步骤s504,底层虚拟机升级。
196.云平台升级设备基于所述当前云平台的各个计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台,并接收所述当前云平台发送的迁移完毕指令。
197.这里,所述迁移完毕指令是所述当前云平台对所述各个计算节点上所承载的虚拟机迁移完毕后发送的指令。
198.在平台信息模块中已经确定了计算节点的升级顺序。通过openstack热迁移功能将这个节点上的虚拟机迁移到别的宿主机。qemu、libvirt通过yum update的方式进行升级。一种实现步骤如下:
199.1)根据平台信息收集模块确定的升级计算节点的顺序,确定排序第一的计算节点的qemu、libvirt。
200.2)将存量虚拟机通过openstack层的接口迁移到新的节点,迁移到新节点的虚拟机自动使用新版本的qemu、libvirt,完成排序第一的计算节点qemu、libvirt的升级。
201.3)更新排序第一的计算节点。
202.更新完成后,返回重复执行第2)步,直到所有的计算节点的虚拟机迁移完成。
203.本实施例通过利用虚拟机热迁移功能,迭代的完成计算节点虚拟机化软件qemu,libvirt的升级,可确保升级过程中对虚拟机业务没有影响。
204.步骤s505,openstack升级。
205.主要是对当前版本openstack的数据库、配置文件和软件包进行升级。
206.数据库升级:openstack数据库的结构升级主要是指在迭代开发过程中新增的数据库字段。openstack有两种数据库升级主要通过alembic和sqlalchemy migrate这两个工具进行管理。使用sqlalchemy migrate的项目:keystone,glance,nova,cinder,heat,使用alembic的项目:neutron,ironic。在升级过程中需要通过切换不同的openstack代码历史版本来进行升级。数据库的升级参见步骤s502中相应记载内容,此处不再赘述。
207.配置文件的升级:通过低版本的配置项更新p版的配置项。
208.软件包的升级:通过传统的yum方式进行软件包的升级。
209.在升级过程中先进行软件包的升级,然后进行配置项的升级,最后做数据库的升级,最后重新启动服务。
210.步骤s506,功能验证测试。
211.在升级完成后,会调用tempest进行功能测试。这一步通过调用tempest的接口完成功能测试。如果功能测试正常,则升级完成。如果功能测试不正常,表明升级失败,进入升级回退步骤。
212.步骤s507,升级回退。
213.升级失败需要进行回退。回退主要包含三个方面:数据库恢复,配置项恢复和软件包恢复。数据库会利用之前的数据备份进行回退。软件包通过yum history undo进行回退。配置项通过将旧的配置项覆盖新的配置项进行回退。
214.本实施例在传统的软件包的基础上,实现了openstack升级和回退的全流程,不依赖于容器,避免云平台性能的下降。
215.本实施例提供的云平台升级方法,包括:平台信息收集、数据库预测试、当前云平台数据备份、底层虚拟机升级、云平台升级、升级后功能测试验证以及升级失败后进行升级
回退,能够实现一键式全自动化升级、回退,无需人工干预,升级时间短,避免过多人工导致的升级失败;进行数据库预测试,避免由于数据库异常导致的升级失败,能够提高云平台升级的成功率;底层虚拟机升级原地升级,无需额外的资源,升级过程中对虚拟机业务没有影响,且不依赖于容器,避免云平台性能下降。
216.下面继续说明本技术实施例提供的云平台升级装置的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器140的云平台升级装置60中的软件模块可以包括:
217.确定模块61,用于根据当前云平台中已部署的组件信息和目标版本云平台的组件信息,确定待升级组件;
218.发送模块62,用于基于所述当前云平台的计算节点上所承载的虚拟机,发送虚拟机迁移指令至所述当前云平台;
219.接收模块63,用于接收所述当前云平台发送的迁移完毕指令,所述迁移完毕指令是所述当前云平台对所述计算节点上所承载的虚拟机迁移完毕后发送的指令;
220.升级模块64,用于对所述待升级组件进行升级,得到所述目标版本云平台。
221.这里,所述对所述待升级组件进行升级,包括:对所述当前云平台的待升级组件进行软件包升级、配置文件升级和数据库升级,其中,进行软件包升级时采用yum方式进行升级。
222.在一些实施例中,所述云平台升级装置60还可以包括:
223.备份模块,用于对所述当前云平台的数据库进行备份,得到备份数据库;
224.加载模块,用于将所述备份数据库加载至测试环境中,所述测试环境为预先搭建的所述目标版本云平台的测试环境;
225.升级测试模块,用于在所述测试环境中,对所述备份数据库进行升级测试。
226.在一些实施例中,所述升级模块64,进一步可以包括:
227.升级单元,用于对所述待升级组件进行升级,得到待确定组件;
228.测试单元,用于对所述待确定组件的功能进行测试;
229.第一确定单元,用于当所述待确定组件的功能测试成功时,确定所述待升级组件升级成功,将所述待确定组件确定为目标组件,得到所述目标版本云平台。
230.在一些实施例中,所述升级模块64,进一步可以包括:
231.备份单元,当对所述备份数据库的升级测试成功时,对所述当前云平台进行备份,得到备份云平台;
232.第二确定单元,用于当所述待确定组件的一个功能测试失败时,确定所述待升级组件升级失败;
233.回退单元,用于利用所述备份云平台将所述待确定组件回退至所述待升级组件。
234.在一些实施例中,所述升级模块62,进一步可以包括:
235.获取单元,用于获取所述当前云平台的计算节点上所承载的虚拟机的个数;
236.第三确定单元,用于基于所述计算节点上所承载的虚拟机的个数,确定所述计算节点的迁移顺序;
237.发送单元,用于按照所述迁移顺序,依次向所述当前云平台发送迁移指令,以使所述当前云平台依次迁移所述计算节点上所承载的虚拟机。
238.在一些实施例中,所述发送单元,进一步可以包括:
239.发送子单元,用于按照所述迁移顺序,向所述当前云平台发送第i个迁移指令,以使所述当前云平台迁移所述第i个计算节点上所承载的虚拟机,其中,i为小于等于计算节点的个数的正整数;
240.相应的,所述接收模块63,包括:
241.接收单元,用于接收所述当前云平台发送的第i个迁移完毕指令,所述第i个迁移完毕指令是所述当前云平台对所述第i个计算节点上所承载的虚拟机迁移完毕后发送的指令。
242.需要说明的是,本技术实施例提供的云平台升级装置,与本技术实施例提供的云平台升级方法相对应,并能取得相同的技术效果,因此对装置描述的较为简单,相关之处请参考上文对云平台升级方法的说明,这里不再赘述。
243.本技术实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本技术实施例提供的方法,例如,如图3、图4和图5示出的方法。
244.在一些实施例中,存储介质可以是fram、rom、prom、eprom、eeprom、闪存、磁表面存储器、光盘、或cd-rom等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
245.在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
246.作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(html,hyper text markup language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
247.作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
248.以上所述,仅为本技术的实施例而已,并非用于限定本技术的保护范围。凡在本技术的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1