一种云平台升级方法、装置、终端及存储介质
技术领域
本申请涉及数据处理技术领域,具体涉及一种云平台升级方法、装置、终端及存储介质。
背景技术
随着互联网技术的发展,各种云计算管理平台被开发出来。
由于云平台更新换代频率高,通常半年更新一次,而每次更新换代时都会完善原先的功能和增加新的特性。因此,在应用云平台时,对云平台的版本升级成为不可避免的事情。
目前对于云平台的升级,通常是将旧版本的数据直接迁移至新版本中。一方面,由于云平台存在巨大的数据量和业务量,直接将旧版本的数据直接迁移至新版本中需要大量的迁移工作和时间。另一方面,在进行数据迁移的过程中,需要停止虚拟机和业务层的运行,暂停云平台的服务。因此,现有的云平台升级方式存在不能平滑升级、工作量大、升级时间长和升级效率低等问题。
发明内容
有鉴于此,本申请实施例提供一种云平台升级方法、装置、终端及存储介质,以解决现有的云平台升级方式存在不能平滑升级、工作量大、升级时间长和升级效率低的问题。
为实现上述目的,本申请提供了一种云平台升级方法,适用于云平台,所述云平台包括计算节点和控制节点,所述方法包括:
基于所述控制节点的软件升级包和配置升级信息生成待升级云平台的初始版本控制节点,所述初始版本控制节点由N个物理机承载;
将所述待升级云平台中的旧版本数据库中的数据导入所述初始版本控制节点的数据库中并升级,得到新版本控制节点;
基于预先创建的底层虚拟化服务升级包对旧版本底层虚拟化服务进行升级;
利用预先建立的容器镜像重新启动所述待升级云平台用于提供计算和虚拟化网络接口的相关服务,得到新版本计算节点。
在一种可能的实现方式中,所述基于所述控制节点的软件升级包和配置升级信息生成待升级云平台的初始版本控制节点,包括:
在N个物理机上分布建立控制节点中的各类型组件;
基于所述控制节点的软件升级包和配置升级信息建立分布于所述N个物理机上的各类型组件对应的新版本组件数据库,得到待升级云平台的初始版本控制节点。
在一种可能的实现方式中,所述将所述待升级云平台中的旧版本数据库中的数据导入所述初始版本控制节点的数据库中并升级,得到新版本控制节点,包括:
删除各个新版本组件数据库中的组件数据;
将所述待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库并进行升级,得到包含升级版本组件数据库的新版本控制节点。
在一种可能的实现方式中,所述将所述待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库并进行升级,包括:
将所述待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库;
确定导入各个新版本组件数据库中的组件数据的升级版本;
利用预设建立的组件升级脚本和确定的升级版本,依次对导入各个新版本组件数据库中的组件数据的组件数据结构进行升级。
在一种可能的实现方式中,所述基于预先创建的底层虚拟化服务升级包对旧版本底层虚拟化服务进行升级,包括:
停止所述待升级云平台的计算节点中用于提供计算和虚拟化网络接口的相关服务;
在保留所述计算节点中的旧版本底层虚拟化服务的动态加载库的情况下,卸载所述底层虚拟化服务;
基于预先创建的底层虚拟化服务升级包编译新安装包目录,并在所述新安装包目录下存储所述旧版本底层虚拟化服务的动态加载库;
在所述新安装包目录下,基于预先创建的底层虚拟化服务升级包,对所述旧版本底层虚拟化服务进行升级。
在一种可能的实现方式中,所述通过容器镜像启动所述待升级云平台用于提供计算和虚拟化网络接口的相关服务之后,所述方法还包括:
启动自检程序,检测包含升级版本组件数据库的新版本控制节点和新版本计算节点各自所对应的服务是否成功运行;
若是,确定所述待升级云平台成功升级;
若否,回退至旧版本云平台。
在一种可能的实现方式中,所述回退至旧版本云平台,包括:
启动所述待升级云平台的旧版本控制节点;
停止所述待升级云平台当前运行的计算节点;
卸载所述待升级云平台中的新版本底层虚拟化服务;
安装所述旧版本底层虚拟化服务;
启动所述旧版本底层虚拟化服务,确定所述待升级云平台回退至所述旧版本云平台。
又一方面,本申请还提供了一种云平台升级装置,适用于云平台,所述云平台包括计算节点和控制节点,所述装置包括:
生成单元,用于基于所述控制节点的软件升级包和配置升级信息生成待升级云平台的初始版本控制节点,所述初始版本控制节点由N个物理机承载;
导入单元,用于将所述待升级云平台中的旧版本数据库中的数据导入所述初始版本控制节点的数据库中并升级,得到新版本控制节点;
升级单元,用于基于预先创建的底层虚拟化服务升级包对旧版本底层虚拟化服务进行升级;
启动单元,用于利用预先建立的容器镜像重新启动所述待升级云平台用于提供计算和虚拟化网络接口的相关服务,得到新版本计算节点。
又一方面,本申请还提供了一种终端,包括:
处理器和存储器;
其中,所述处理器用于执行所述存储器中存储的程序;
所述存储器用于存储程序,所述程序至少用于:
基于所述控制节点的软件升级包和配置升级信息生成待升级云平台的初始版本控制节点,所述初始版本控制节点由N个物理机承载;
将所述待升级云平台中的旧版本数据库中的数据导入所述初始版本控制节点的数据库中并升级,得到新版本控制节点;
基于预先创建的底层虚拟化服务升级包对旧版本底层虚拟化服务进行升级;
利用预先建立的容器镜像重新启动所述待升级云平台用于提供计算和虚拟化网络接口的相关服务,得到新版本计算节点。
又一方面,本申请还提供了一种存储介质,所述存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现本申请任一实施例所述的云平台升级方法。
可见,本申请实施例中,通过分别升级待升级云平台的控制节点和计算节点,完成待升级云平台的升级。针对控制节点,利用控制节点的软件升级包和配置升级信息生成待升级云平台的新版本控制节点;将待升级云平台的数据库中的数据迁移至新版本组件数据库,升级新版本组件数据库,完成控制节点的升级。更新待升级云平台的底层虚拟化服务;针对计算节点,停止待升级云平台的旧版本的提供计算和虚拟化网络接口的相关服务;镜像启动新版本提供计算和虚拟化网络接口的相关服务,完成计算节点的升级。基于本申请公开的方式升级,仅涉及迁移控制节点中的数据量,所需迁移的数据量少,实现降低升级工作量、缩短升级时间和提高升级效率的目的,在升级时也不需要停止计算节点的服务,实现平滑升级的目的。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种云平台的组成架构示意图;
图2为本申请实施例提供的一种云平台升级方法流程图;
图3为本申请实施例提供的一种Openstack云平台升级方法流程图;
图4为本申请实施例提供的升级待升级云平台的数据库的流程图;
图5为本申请实施例提供的升级底层虚拟化服务的流程图;
图6为本申请实施例提供的回退至旧版本云平台的流程图;
图7为本申请实施例提供的一种Openstack云平台升级方法的流程示意图;
图8为本申请实施例提供的升级架构图;
图9为本申请实施例提供的一种云平台升级装置的结构框图;
图10为本申请实施例提供的一种云平台升级装置的结构框图;
图11为本申请实施例提供的一种云平台升级装置的结构框图;
图12为本申请实施例提供的一种云平台升级装置的结构框图;
图13为本申请实施例提供的一种云平台升级装置的结构框图;
图14为本申请实施例提供的一种终端的结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本申请的发明人经研究发现:目前对于云平台的升级,通常是将旧版本的所有数据直接迁移至新版本中。一方面,需要大量的迁移工作和时间,工作量大、升级时间长和升级效率低。另一方面,在进行数据迁移的过程中,需要停止虚拟机和业务层的运行,暂停云平台的服务,无法实现云平台平滑升级。
而发明人进一步研究发现,为了实现云平台平滑升级、降低升级工作量、升级时间和提高云平台的升级效率的目的,可以通过分别升级待升级云平台的控制节点和计算节点,完成待升级云平台的升级。
为了便于理解,先对本申请的方案所适用的云平台的组成架构进行介绍。参见图1,其示出了本申请一种云平台的组成架构示意图。
该云平台100包括:控制节点101和计算节点102。
该控制节点101中包括云平台各类组件的组件数据量1011。
该计算节点102中承载有虚拟机运行所需的各类服务1021。
该控制节点101和计算节点102之间具有分离的特性。
基于上述本申请实施例公开的云平台的组成架构,参见图2,示出了本申请实施例提供的一种云平台升级方法流程图,所述云平台升级方法包括以下步骤:
步骤S201:基于所述控制节点的软件升级包和配置升级信息生成待升级云平台的初始版本控制节点。
在步骤S201中需要说明的是,预先在N台物理机中部署所述新版本控制节点。采用N台物理机中部署新版本控制节点,可确保后续进行控制节点的升级时的高可用。例如,在三台物理机中部署所述新版本控制节点,即可实现后续控制节点的高可用。
在具体实现步骤S201的过程中,在N个物理机上分布建立控制节点中的各类型组件,基于所述控制节点的软件升级包和配置升级信息建立分布于所述N个物理机上的各类型组件对应的新版本组件数据库,得到待升级云平台的初始版本控制节点。
进一步的,需要说明的是,在N台物理机中部署所述新版本控制节点时,前述涉及到的各个新版本组件都有各自对应的配置文件目录。
例如:若本申请实施例涉及的云平台为Openstack云平台,该OpenStack云平台包括控制节点和计算节点。在OpenStack云平台中控制节点和计算节点具有分离的特性。
该Openstack云平台所部署的新版本控制节点中包括:新版本keystone组件、glance组件、cinder组件、neutron组件和nova组件,以及包含前述各个新版本组件各自对应的新版本组件数据库。基于所述软件升级包和配置升级信息,获取新版本keystone组件、glance组件、cinder组件、neutron组件和nova组件对应的配置文件,并分别将配置文件导入各个新版本组件对应的配置文件目录中,完成所述新版本控制节点的软件包升级和代码升级。
步骤S202:将所述待升级云平台中的旧版本数据库中的数据导入所述初始版本控制节点的数据库中并升级,得到新版本控制节点。
在具体实现步骤S202的过程中,删除各个新版本组件数据库中的组件数据。将所述待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库并进行升级,得到包含升级版本组件数据库的新版本控制节点。
例如:若本申请实施例的云平台为Openstack云平台,对于keystone组件,删除新版本keystone组件数据库中的组件数据,将待升级OpenStack云平台中的旧版本keystone组件数据库中的组件数据导入新版本keystone组件数据库中。待升级OpenStack云平台中其它组件的组件数据迁移过程,与前述keystone组件的组件数据迁移过程类似,在此不再一一举例说明。
需要说明的是,将所述待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库之后,此时新版本组件数据库的组件数据的组件数据结构为旧版本组件数据的组件数据结构。而旧版本组件数据的组件数据结构无法在新版本组件数据库中应用。
因此,需要对新版本组件数据库中的组件数据结构进行升级,得到包含升级版本组件数据库的新版本控制节点。
进一步需要说明的是,经由上述步骤S201在N台物理机中部署新版本控制节点即完成新版本控制节点的软件包升级、代码升级和配置升级。
以及,经由步骤S202完成对新版本组件数据库中的组件数据结构进行升级之后,即完成所述待升级云平台的控制节点升级。
步骤S203:基于预先创建的底层虚拟化服务升级包,对旧版本底层虚拟化服务进行升级。
在具体实现步骤S103的过程中,在保留旧版本底层虚拟化服务的动态加载库的基础上,卸载所述待升级云平台的旧版本底层虚拟化服务。然后利用预先创建的底层虚拟化服务升级包,安装新版本底层虚拟化服务。
例如,若本申请实施例涉及的云平台为Openstack云平台,所述底层虚拟化服务包括:libvirt服务和qemu服务。
需要说明的是,保留旧版本底层虚拟化服务的动态加载库可确保不停止计算节点的服务,从而完成后续对计算节点的升级。
也就是说,在升级计算节点的过程中,使现有的计算节点仍然能够正常运行。
步骤S204:利用预先建立的容器镜像重新启动所述待升级云平台用于提供计算和虚拟化网络接口的相关服务,得到新版本计算节点。
需要说明的是,预先基于计算节点的软件升级包和配置升级信息,创建所述新版本云平台的用于提供计算和虚拟化网络接口的相关服务的容器镜像,例如通过kollabuild创建该容器镜像。
更进一步需要说明的是,若后续用于提供计算和虚拟化网络接口的相关服务需要升级到更高的版本时,只需要替换容器即可,或者只需要重新创建容器镜像即可。
在具体实现步骤S204的过程中,目前所述待升级云平台的用于提供计算和虚拟化网络接口的相关服务的版本为旧版本,需更新待升级云平台的用于提供计算和虚拟化网络接口的相关服务。
因此,先停止所述待升级云平台的用于提供计算和虚拟化网络接口的相关服务。再通过容器镜像重新启动所述待升级云平台用于提供计算和虚拟化网络接口的相关服务,得到新版本计算节点。
例如,若本申请实施例中涉及的云平台为Openstack云平台,用于提供计算和虚拟化网络接口的相关服务为nova-compute和neutron-openvswitch-agent服务。
具体执行上述步骤S204的过程为:
停止所述待升级OpenStack云平台的nova-compute和neutron-openvswitch-agent服务。
利用镜像启动的方式,启动新版本OpenStack云平台的nova-compute和neutron-openvswitch-agent服务,得到新版本计算节点。
可选的,可以通过docker-compose启动所述容器镜像,在启动容器镜像时,分别挂载所述新版本OpenStack云平台的nova-compute和neutron-openvswitch-agent服务对应的配置文件,完成所述待升级OpenStack云平台的计算节点升级。
其中,nova-compute服务的配置文件包括但不仅限于:nova.conf,neutron-openvswitch-agent服务的配置文件包括但不仅限于:neutron.conf。
需要说明的是,在运行所述待升级云平台的计算节点的设备上,执行上述步骤S203至步骤S204。即在升级所述待升级云平台的计算节点时,不需要重新更换运行所述待升级云平台的计算节点的设备。
进一步的,需要说明的是,完成所述待升级云平台的控制节点和计算节点的升级后,即完成所述待升级云平台的升级。
可选的,在得到新版本计算节点之后,启动自检程序,检测包含升级版本组件数据库的新版本控制节点和新版本计算节点各自所对应的服务是否成功运行。若是,确定所述待升级云平台成功升级。若否,回退至旧版本云平台。
在具体实现检测包含升级版本组件数据库的新版本控制节点和新版本计算节点各自所对应的服务是否成功运行的过程中,检测内容包括但不仅限于以下内容:
检测包含升级版本组件数据库的新版本控制节点和新版本计算节点各自所对应的服务的版本。
确定包含升级版本组件数据库的新版本控制节点和新版本计算节点对应的服务版本是否为新版本,若是,确定所述待升级云平台升级成功,若否,则确定所述待升级云平台升级失败。
例如,需要将K版本(低版本)的控制节点和计算节点都升级至P版本(高版本),在执行上述步骤S201至步骤S204后,确定包含升级版本组件数据库的新版本控制节点和新版本计算节点对应的服务版本是否为P版本,若是,确定所述待升级云平台升级成功,若否,所述待升级云平台升级失败。
检测包含升级版本组件数据库的新版本控制节点和新版本计算节点各自所对应的服务是否正常运行,若是,确定所述待升级云平台升级成功,若否,所述待升级云平台升级失败。
检测上述步骤S202中涉及的各个新版本组件数据库的版本是否为新版本,若是,确定所述待升级云平台升级成功,若否,所述待升级云平台升级失败。
进一步的,需要说明的是,用于检测所述待升级云平台是否升级成功的内容包括但不仅限于上述涉及到的内容,在本申请实施例中不再一一举例说明。
本申请实施例中,通过分别升级待升级云平台的控制节点和计算节点,完成待升级云平台的升级。在升级时,仅涉及迁移控制节点中的数据量,所需迁移的数据量少,实现降低升级工作量、缩短升级时间和提高升级效率的目的,在升级时也不需要停止计算节点的服务,实现平滑升级的目的。
为更好解释上述本申请实施例图2中示出的各个步骤的内容,若所述云平台为Openstack云平台,通过图3中示出的内容进行举例说明。
参考图3,示出了本申请实施例提供的一种Openstack云平台升级方法流程图,包括以下步骤:
步骤S301:基于所述控制节点的软件升级包和配置升级信息生成待升级OpenStack云平台的新版本控制节点。
在步骤S301中需要说明的是,预先在N台物理机中部署所述新版本控制节点。采用N台物理机中部署新版本控制节点,可确保后续进行控制节点的升级时的高可用。具体,所部署的新版本控制节点中包括新版本keystone组件、glance组件、cinder组件、neutron组件和nova组件,以及包含前述各个新版本组件各自对应的新版本组件数据库。
步骤S302:删除各个新版本组件数据库中组件数据,将所述待升级OpenStack云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库并进行升级,得到包含升级版本组件数据库的新版本控制节点。
在具体实现步骤S302的过程中,删除各个新版本组件数据库中的组件数据,将所述待升级OpenStack云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库。
例如:对于keystone组件,删除新版本keystone组件数据库中的组件数据,将待升级OpenStack云平台中的旧版本keystone组件数据库中的组件数据导入新版本keystone组件数据库中。待升级OpenStack云平台中其它组件的组件数据迁移过程,与前述keystone组件的组件数据迁移过程类似,在此不再一一举例说明。
需要说明的是,将所述待升级OpenStack云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库之后,此时新版本组件数据库的组件数据的组件数据结构为旧版本组件数据的组件数据结构。而旧版本组件数据的组件数据结构无法在新版本组件数据库中应用。因此,需要对新版本组件数据库中的组件数据结构进行升级,得到包含升级版本组件数据库的新版本控制节点。
进一步需要说明的是,经由上述步骤S301在N台物理机中部署新版本控制节点即完成新版本控制节点的软件包升级、代码升级和配置升级。以及,经由步骤S302完成对新版本组件数据库中的组件数据结构进行升级之后,即完成所述待升级OpenStack云平台的控制节点升级。
步骤S303:停止所述待升级OpenStack云平台的nova-compute和neutron-openvswitch-agent服务。
步骤S304:基于预先创建的libvirt服务和qemu服务升级包对所述旧版本libvirt服务和qemu服务升级。
在具体实现步骤S304的过程中,在保留旧版本libvirt服务和qemu服务的动态加载库的基础上,卸载所述待升级OpenStack云平台的旧版本libvirt服务和qemu服务。然后利用预先创建的libvirt服务和qemu服务升级包,安装新版本的libvirt服务和qemu服务。
需要说明的是,保留旧版本libvirt服务和qemu服务的动态加载库可确保不停止计算节点的服务,从而完成后续对计算节点的升级。也就是说,在升级计算节点的过程中,使现有的计算节点仍然能够正常运行。
步骤S305:通过容器镜像启动新版本OpenStack云平台的nova-compute和neutron-openvswitch-agent服务,得到新版本计算节点。
需要说明的是,预先基于计算节点的软件升级包和配置升级信息,创建所述新版本云平台的nova-compute和neutron-openvswitch-agent服务的容器镜像,例如通过kollabuild创建该容器镜像。
进一步需要说明的是,若后续nova-compute和neutron-openvswitch-agent服务需要升级到更高的版本时,只需要替换容器即可,或者只需要重新创建容器镜像即可。
需要说明的是,步骤S301至步骤S305的执行原理具体与本申请实施例图2中公开的执行原理相同,可参见。
在本申请实施例中,通过分别升级待升级OpenStack云平台的控制节点和计算节点,不需要直接将所有数据迁移至新版本OpenStack云平台中,仅涉及迁移控制节点中的数据量,所需迁移的数据量少,实现降低升级工作量、缩短升级时间和提高升级效率的目的。同时,在升级时也不需要停止计算节点的服务,实现平滑升级的目的。
上述本申请实施例图2公开的步骤S202中涉及到的升级待升级云平台的数据库的过程,参考图4,示出了本申请实施例提供的升级待升级云平台的数据库的流程图,包括以下步骤:
步骤S401:将所述待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库。
需要说明的是,在具体实现步骤S401的过程中,预先删除各个新版本组件数据库中的组件数据。
步骤S402:确定导入各个新版本组件数据库中的组件数据的升级版本。
在具体实现步骤S402的过程中,由上述本申请实施例图2公开的步骤S202中的内容可知,旧版本组件数据的组件数据结构无法在新版本组件数据库中应用,需要对新版本组件数据库中的组件数据结构进行升级。先确定导入各个新版本组件数据库中的组件数据的升级版本,再获取预先建立的组件升级脚本,对各个新版本组件数据库对应的组件数据结构进行升级。
步骤S403:利用预设建立的组件升级脚本和确定的升级版本,依次对导入各个新版本组件数据库中的组件数据的组件数据结构进行升级。
需要说明的是,利用组件升级脚本进行组件数据结构升级的过程中,组件数据结构升级包括:跨版本升级或不跨版本升级。
例如:组件数据结构版本由低到高分分别为K版本、L版本、M版本、N版本、O版本和P版本,若将组件数据结构版本由O版本升级至P版本,组件数据结构升级为不跨版本升级。若将组件数据结构版本由K版本升级至P版本,组件数据结构升级为跨版本升级。
进一步的,需要说明的是,预先设计升级脚本,可以利用所述升级脚本使组件数据结构跨版本升级。
在具体实现步骤S403的过程中,利用升级指令和组件升级脚本分别对各个新版本组件数据库进行升级。
例如:若所述云平台为Openstack云平台,对于所述待升级Openstack云平台的keystone组件数据库,利用升级指令,结合所述keystone组件数据库对应的组件升级脚本,完成keystone组件数据库的升级。其余组件数据库的升级过程与前述keystone组件数据库的升级过程类似,在此不一一举例说明。
在本申请实施例中,先将待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库中,再利用预设的组件升级脚本依次对各个新版本组件数据库中的组件数据的组件数据结构进行升级,实现控制节点的升级。结合升级完成的计算节点,从而实现待升级云平台的升级,不需要直接将所有数据迁移至新版本云平台中,仅涉及迁移控制节点中的数据量,所需迁移的数据量少,实现降低升级工作量、缩短升级时间和提高升级效率的目的。同时,在升级时也不需要停止计算节点的服务,实现平滑升级的目的。
上述本申请实施例图2公开的步骤S204中涉及到的升级旧版本底层虚拟化服务的过程,参考图5,示出了本申请实施例提供的升级底层虚拟化服务的流程图,包括以下步骤:
步骤S501:在保留所述计算节点中的旧版本底层虚拟化服务的动态加载库的情况下,卸载所述旧版本底层虚拟化服务。
在具体实现步骤S501的过程中,需要说明的是,计算节点上运行虚拟机进程。为保证在卸载所述旧版本的底层虚拟化服务后,所述计算节点上的虚拟机进程正常运行,在卸载旧版本的底层虚拟化服务时,需保留所述旧版本的底层虚拟化服务的动态加载库。
步骤S502:基于预先创建的底层虚拟化服务升级包编译新安装包目录,并在所述新安装包目录下存储所述旧版本底层虚拟化服务的动态加载库。
步骤S503:在所述新安装包目录下,基于预先创建的底层虚拟化服务升级包,对所述旧版本的底层虚拟化服务升级。
在具体实现步骤S503的过程中,在所述新安装包目录下,利用所述底层虚拟化服务升级包,安装新版本的底层虚拟化服务,实现对对所述旧版本的底层虚拟化服务的升级。
在本申请实施例中,在升级计算节点中的旧版本的底层虚拟化服务时,保留旧版本的底层虚拟化服务的动态加载库,保证计算节点中的虚拟机正常运行,实现在线升级计算节点,提高待升级云平台的升级效率和缩短升级时间。
上述本申请实施例图2公开的步骤S204中涉及到的回退至旧版本云平台的过程,参考图6,示出了本申请实施例提供的回退至旧版本云平台的流程图,包括以下步骤:
步骤S601:启动所述待升级云平台的旧版本控制节点。
在具体实现步骤S601的过程中,当所述待升级云平台升级失败后,启动所述待升级云平台原先使用的旧版本控制节点对应的服务。
步骤S602:停止所述待升级云平台当前运行的计算节点。
在具体实现步骤S602的过程中,由上述本申请实施例图2步骤S204中示出的内容可知,所述待升级云平台当前运行的计算节点通过容器镜像启动新版本云平台的用于提供计算和虚拟化网络接口的相关服务。因此当所述待升级云平台升级失败后,需停止所述新版本云平台的用于提供计算和虚拟化网络接口的相关服务。
步骤S603:卸载所述待升级云平台中的新版本的底层虚拟化服务。
步骤S604:安装所述旧版本的底层虚拟化服务。
步骤S605:启动所述旧版本的底层虚拟化服务,确定所述待升级云平台回退至所述旧版本云平台。
在本申请实施例中,当待升级云平台升级失败后,将待升级云平台回退至旧版本云平台,保证待升级云平台的业务能正常运行。
为更好解释说明上述图2至图6中示出的内容,结合图2至图6的内容,通过图7进行举例说明。若所述云平台为Openstack云平台,参考图7,示出了本申请实施例提供的一种Openstack云平台升级方法的流程示意图。在所述图7中,K版本指的是上述本申请实施例涉及到的旧版本。
步骤S701:停止所有平台层服务。
在具体实现步骤S701的过程中,在升级所述待升级OpenStack云平台时,需停止所有平台层服务。
步骤S702:备份K版本数据库及配置文件。
在具体实现步骤S702的过程中,在升级所述待升级OpenStack云平台时,需备份所述待升级OpenStack云平台的数据,防止因升级失败造成数据丢失。
步骤S703:部署新版本OpenStack控制节点。
步骤S704:导入新版本配置文件。
步骤S705:删除新版本数据库。
步骤S706:导入老版本数据库。
步骤S707:升级数据库。
步骤S708:启动控制节点服务。
步骤S709:升级计算节点的libvirt服务。
步骤S710:升级计算节点的qemu服务。
步骤S711:从容器镜像库拉取nova-compute和neutron-openvswitch-agent服务容器镜像。
在具体实现步骤S711的过程中,需要说明的是,预先通过kolla build制作新版本OpenStack云平台的nova-compute和neutron-openvswitch-agent服务容器镜像,并将该容器镜像上传至容器镜像库。
步骤S712:通过docker-compose启动容器,启动时挂载新版本配置文件。
步骤S713:检验所述待升级OpenStack云平台是否升级成功,若否,执行步骤S714。
步骤S714:启动老版本控制节点集群服务。
步骤S715:停止计算节点容器服务。
步骤S716:卸载高版本libvirt服务和qemu服务。
步骤S717:安装老版本libvirt服务,并指向老版本qemu服务。
步骤S718:启动计算节点老版本服务。
需要说明的是,上述步骤703至步骤S718的执行原理可参见本申请实施例图2至图6公开的各个步骤对应的内容,在此不再一一赘述。
为更好解释说明待升级云平台的升级过程,结合图2至图7中示出的内容,若所述云平台为Openstack云平台,参考图8,示出了本申请实施例提供的升级架构图。在所述图8中,K版本控制节点指旧版本控制节点,P版本控制节点指新版本控制节点。
需要说明的是,上述图7和图8中示出的内容仅适用于举例说明。
在本申请实施例中,通过分别升级待升级OpenStack云平台的控制节点和计算节点,不需要直接将所有数据迁移至新版本OpenStack云平台中,仅涉及迁移控制节点中的数据量,所需迁移的数据量少,实现降低升级工作量、缩短升级时间和提高升级效率的目的。同时,在升级时也不需要停止计算节点的服务,实现平滑升级的目的。
与上述本申请实施例提供的一种云平台升级方法相对应,参考图9,本申请实施例还提供了一种云平台升级装置的结构框图,所述云平台升级装置包括:生成单元901、导入单元902、升级单元903和启动单元904。
生成单元901,用于基于所述控制节点的软件升级包和配置升级信息生成待升级云平台的初始版本控制节点,所述初始版本控制节点由N个物理机承载。生成新版本控制节点的具体过程参见上述本申请实施例图2中步骤S201相对应的内容。
导入单元902,用于将所述待升级云平台中的旧版本数据库中的数据导入所述初始版本控制节点的数据库中并升级,得到新版本控制节点.得到新版本控制节点的过程,参见上述本申请实施例图2中步骤S202相对应的内容。
升级单元903,用于基于预先创建的底层虚拟化服务升级包对旧版本底层虚拟化服务进行升级。
启动单元904,用于利用预先建立的容器镜像重新启动所述待升级云平台用于提供计算和虚拟化网络接口的相关服务,得到新版本计算节点。得到新版本计算节点的过程参见上述本申请实施例图2中步骤S204相对应的内容。
在本申请实施例中,通过分别升级待升级云平台的控制节点和计算节点,完成待升级云平台的升级。在升级时,仅涉及迁移控制节点中的数据量,所需迁移的数据量少,实现降低升级工作量、缩短升级时间和提高升级效率的目的,在升级时也不需要停止计算节点的服务,实现平滑升级的目的。
优选的,结合图9,参考图10,示出了本申请实施例提供的一种云平台升级装置的结构框图,所述导入单元902包括:导入模块9021、确定模块9022和升级模块9023。
导入模块9021,用于将所述待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库。
在具体实现中,预先删除各个新版本组件数据库中的组件数据。
确定模块9022,用于确定导入各个新版本组件数据库中的组件数据的升级版本。
升级模块9023,用于利用预设建立的组件升级脚本和确定的升级版本,依次对导入各个新版本组件数据库中的组件数据的组件数据结构进行升级。组件数据结构进行升级的过程参见上述本申请实施例图4中步骤S403相对应的内容。
在本申请实施例中,先将待升级云平台中的各个旧版本组件数据库中的组件数据导入对应的新版本组件数据库中,再利用预设的组件升级脚本依次对各个新版本组件数据库中的组件数据的组件数据结构进行升级,实现控制节点的升级。结合升级完成的计算节点,从而实现待升级云平台的升级,不需要直接将所有数据迁移至新版本云平台中,仅涉及迁移控制节点中的数据量,所需迁移的数据量少,实现降低升级工作量、缩短升级时间和提高升级效率的目的。同时,在升级时也不需要停止计算节点的服务,实现平滑升级的目的。
优选的,结合图9,参考图11,示出了本申请实施例提供的一种云平台升级装置的结构框图,所述升级单元903包括:卸载模块9031、安装模块9032和升级模块9033。
卸载模块9031,用于在保留所述计算节点中的旧版本的底层虚拟化服务的动态加载库的情况下,卸载所述旧版本的底层虚拟化服务。卸载所述旧版本的底层虚拟化服务的具体过程参见上述本申请实施例图5中步骤S501相对应的内容。
安装模块9032,用于基于预先创建的底层虚拟化服务升级包编译新安装包目录,并在所述新安装包目录下存储所述旧版本的底层虚拟化服务的动态加载库。
升级模块9033,用于在所述新安装包目录下,基于预先创建的底层虚拟化服务升级包,对所述旧版本的底层虚拟化服务升级。
在本申请实施例中,在升级计算节点中的旧版本的底层虚拟化服务时,保留旧版本的底层虚拟化服务的动态加载库,保证计算节点中的虚拟机正常运行,实现在线升级计算节点,提高待升级云平台的升级效率和缩短升级时间。
优选的,结合图9,参考图12,示出了本申请实施例提供的一种云平台升级装置的结构框图,所述云平台升级装置还包括:检验单元905和回退单元906。
检验单元905,用于启动自检程序,检测包含升级版本组件数据库的新版本控制节点和新版本计算节点各自所对应的服务是否成功运行。若是,确定所述待升级云平台成功升级。若否,执行回退单元906。检验的过程参见上述本申请实施例图2中步骤S204相对应的内容。
所述回退单元906,用于将所述待升级云平台回退至旧版本云平台。
优选的,结合图12,参考图13,示出了本申请实施例提供的一种云平台升级装置的结构框图,所述回退单元906包括:第一启动模块9061、停止模块9062、卸载模块9063、安装模块9064和第二启动模块9065。
第一启动模块9061,用于启动所述待升级云平台的旧版本控制节点。
停止模块9062,用于停止所述待升级云平台当前运行的计算节点。
卸载模块9063,用于卸载所述待升级云平台中的新版本的底层虚拟化服务。
安装模块9064,用于安装所述旧版本的底层虚拟化服务。
第二启动模块9065,用于启动所述旧版本的底层虚拟化服务,确定所述待升级云平台回退至所述旧版本云平台。
在本申请实施例中,当待升级云平台升级失败后,将待升级云平台回退至旧版本云平台,保证待升级云平台的业务能正常运行。
优选的,本申请实施例还提供了一种终端,参考图14,示出了本申请实施例提供的一种终端的结构框图,本申请实施例的终端1400包括:处理器1401和存储器1402。
可选的,该终端1400还可以包括通信接口1403、输入单元1404和显示器1405和通信总线1406。
处理器1401、存储器1402、通信接口1403、输入单元1404、显示器1405、均通过通信总线1406完成相互间的通信。
在本申请实施例中,该处理器1401,可以为中央处理器(Central ProcessingUnit,CPU),特定应用集成电路,数字信号处理器、现成可编程门阵列或者其他可编程逻辑器件等。
该处理器可以调用存储器1402中存储的程序。具体的,处理器可以执行上述本申请实施例涉及到的云平台升级方法。
存储器1402中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以下功能的程序:
基于所述控制节点的软件升级包和配置升级信息生成待升级云平台的初始版本控制节点,所述初始版本控制节点由N个物理机承载;
将所述待升级云平台中的旧版本数据库中的数据导入所述初始版本控制节点的数据库中并升级,得到新版本控制节点;
基于预先创建的底层虚拟化服务升级包对旧版本底层虚拟化服务进行升级;
利用预先建立的容器镜像重新启动所述待升级云平台用于提供计算和虚拟化网络接口的相关服务,得到新版本计算节点。
另一方面,本申请实施例还提供一种存储介质,该存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,用于实现如上任意一个实施例中所描述的云平台升级方法。
综上所述,本申请实施例提供一种云平台升级方法、装置、终端及存储介质,该方法为:通过分别升级待升级云平台的控制节点和计算节点,完成待升级云平台的升级。在升级时,仅涉及迁移控制节点中的数据量,所需迁移的数据量少,实现降低升级工作量、缩短升级时间和提高升级效率的目的,在升级时也不需要停止计算节点的服务,实现平滑升级的目的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。