不中断服务的升级方法、装置、设备及存储介质转让专利

申请号 : CN202111374503.1

文献号 : CN114327533B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 苏亚涛

申请人 : 北京志凌海纳科技有限公司

摘要 :

本发明公开了一种不中断服务的升级方法、装置、设备及存储介质,针对现有的升级方式将升级服务的软件升级动作与超融合系统的软件升级动作耦合在一起,升级服务无法按预期提供新的升级服务的问题,通过将升级服务的升级维护工作与超融合软件的升级维护工作进行解耦,在升级服务软件的升级并重载后,可以在不中断升级服务的前期下,完成对升级服务软件的升级工作,并且通过在升级控制节点配置本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;再配置超融合系统集群内各节点的Yum repo指向在线软件源所在的repo地址,避免了将ISO分发至各节点的情况,能够相对减少升级过程中的软件分发时间。

权利要求 :

1.一种不中断服务的升级方法,用于超融合系统的升级服务,其特征在于,包括:配置升级控制节点的本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;所述升级控制节点为挂载升级软件包ISO的节点;

配置升级控制节点的Yum repo,并配置超融合系统集群内各节点的Yum repo指向所述在线软件源所在的repo地址;对超融合系统集群内各节点进行升级服务的软件包升级,并进行不中断服务的热重载,完成超融合系统集群内各节点的升级服务的软件升级。

2.如权利要求1所述的不中断服务的升级方法,其特征在于,所述配置升级控制节点的Yum repo进一步包括:采用python提供的SimpleHTTPServer在升级软件包的挂载目录中启动HTTPServer,并配置监听端口,使Yum repo可用。

3.如权利要求1所述的不中断服务的升级方法,其特征在于,所述进行不中断服务的热重载进一步包括:基于master‑worker工作模式,采用python wsgi server发送HUP信号给master进程;

master进程接收HUP信号后,根据HUP信号类型查询初始化阶段注册的信号表,获取到对应HUP信号的处理函数;所述处理函数即为重载函数;

所述重载函数加载新的配置文件,并派生出新的worker进程,正常关闭旧的worker进程,实现不中断服务的热重载。

4.如权利要求3所述的不中断服务的升级方法,其特征在于,所述正常关闭旧的worker进程进一步包括:所述master进程发送TERM信号至旧的worker进程,使旧的worker进程处理完当前请求后退出。

5.如权利要求1所述的不中断服务的升级方法,其特征在于,所述完成超融合系统集群内各节点的升级服务的软件升级进一步包括:保存各节点的升级服务的软件升级的进度信息至数据库,通过升级进度进程获取相应接口提供给前端界面,使前端界面可通过轮询得到当前升级服务的软件升级的进度信息。

6.如权利要求1所述的不中断服务的升级方法,其特征在于,所述完成超融合系统集群内各节点的升级服务的软件升级之后还包括:通过软件升级后的升级服务实现超融合系统的软件升级。

7.一种不中断服务的升级装置,用于超融合系统的升级服务,其特征在于,包括:ISO挂载模块,用于配置升级控制节点的本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;所述升级控制节点为挂载升级软件包ISO的节点;

服务升级模块,用于配置升级控制节点的Yum repo,并配置超融合系统集群内各节点的Yum repo指向所述在线软件源所在的repo地址;对超融合系统集群内各节点进行升级服务的软件包升级,并进行不中断服务的热重载,完成超融合系统集群内各节点的升级服务的软件升级。

8.如权利要求7所述的不中断服务的升级装置,其特征在于,还包括:进度查询模块,用于保存各节点的升级服务的软件升级的进度信息至数据库,通过升级进度进程获取相应接口提供给前端界面,使前端界面可通过轮询得到当前升级服务的软件升级的进度信息;

系统升级模块,用于通过软件升级后的升级服务实现超融合系统的软件升级。

9.一种不中断服务的升级设备,其特征在于,包括:

存储器和处理器,所述存储器中存储有指令,所述存储器和所述处理器通过线路互连;

所述处理器调用所述存储器中的所述指令,实现如权利要求1‑6中任意一项所述的不中断服务的升级方法。

10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1‑6中任意一项所述的不中断服务的升级方法。

说明书 :

不中断服务的升级方法、装置、设备及存储介质

技术领域

[0001] 本发明属于软件升级的技术领域,尤其涉及不中断服务的升级方法、装置、设备及存储介质。

背景技术

[0002] 超融合基础架构是一种将计算、网络和存储等资源作为基础设施进行整合,可以根据具体业务系统需求进行选择组合和自定义,方便快捷地进行数据中心搭建和业务系统部署的一种技术架构。SmartX的超融合软件平台产品名称为SMTX OS,SMTX OS是目前业界领先的超融合软件平台。SMTX OS超融合软件的更新迭代采用在线不停机的方式进行升级迭代,这部分的主要工作由升级服务负责处理。
[0003] 升级服务在超融合集群中主要负责超融合软件的升级工作,比如集群升级、集群升级进度查看、集群升级历史查看、集群可升级版本列表等。升级服务不仅仅是做为超融合软件升级的入口,并且也会负责超融合软件升级流程的编排、为可视化在线升级提供相关接口的任务。考虑到超融合软件迭代的过程中,会出现超融合软件升级过程的编排顺序出现变动的情况,而由于超融合软件的升级编排配置是由升级服务进行管控的,这种情况下需要先对升级服务进行升级迭代;由于升级服务不仅仅是提供超融合软件升级流程编排工作,同时也作为一个提供可视化界面接口的后台服务,那么由于升级可视化展示需求的变更,升级服务的相关接口也会进行对应的调整。此时也需要先对升级服务进行升级。
[0004] 考虑到升级服务需要持续性的提供服务,所以在升级服务软件自身进行升级时,需要避免升级服务在升级过程中出现中断的情况,例如服务重启导致中断等。
[0005] 现有的升级方式将升级服务的软件升级动作与超融合系统的软件升级动作耦合在一起,且因在升级服务软件包升级后使用的重载方式未能达到实际的重载预期,导致无法完成重载新版本的升级服务代码,升级服务无法按预期提供新的升级服务(比如针对超融合软件升级动作编排动作的调整、升级服务新增的部分接口用于可视化展示需求等),严重的话将导致超融合系统软件升级后存在重大安全隐患(比如关键组件升级后状态的非预期等)。

发明内容

[0006] 本发明的目的是提供一种不中断服务的升级方法、装置、设备及存储介质,将升级服务的升级维护工作与超融合软件的升级维护工作进行解耦,能够降低升级过程中的复杂度,且独立控制避免互相影响。
[0007] 为解决上述问题,本发明的技术方案为:
[0008] 一种不中断服务的升级方法,用于超融合系统的升级服务,包括:
[0009] 配置升级控制节点的本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;所述升级控制节点为挂载升级软件包ISO的节点;
[0010] 配置升级控制节点的Yum repo,并配置超融合系统集群内各节点的Yum repo指向所述在线软件源所在的repo地址;对超融合系统集群内各节点进行升级服务的软件包升级,并进行不中断服务的热重载,完成超融合系统集群内各节点的升级服务的软件升级。
[0011] 根据本发明一实施例,所述配置升级控制节点的Yum repo进一步包括:
[0012] 采用python提供的SimpleHTTPServer在升级软件包的挂载目录中启动HTTPServer,并配置监听端口,使Yum repo可用。
[0013] 根据本发明一实施例,所述进行不中断服务的热重载进一步包括:
[0014] 基于master‑worker工作模式,采用python wsgi server发送HUP信号给master进程;
[0015] master进程接收HUP信号后,根据HUP信号类型查询初始化阶段注册的信号表,获取到对应HUP信号的处理函数;所述处理函数即为重载函数;
[0016] 所述重载函数加载新的配置文件,并派生出新的worker进程,正常关闭旧的worker进程,实现不中断服务的热重载。
[0017] 根据本发明一实施例,所述正常关闭旧的worker进程进一步包括:
[0018] 所述master进程发送TERM信号至旧的worker进程,使旧的worker进程处理完当前请求后退出。
[0019] 根据本发明一实施例,所述完成超融合系统集群内各节点的升级服务的软件升级进一步包括:
[0020] 保存各节点的升级服务的软件升级的进度信息至数据库,通过升级进度进程获取相应接口提供给前端界面,使前端界面可通过轮询得到当前升级服务的软件升级的进度信息。
[0021] 根据本发明一实施例,所述完成超融合系统集群内各节点的升级服务的软件升级之后还包括:
[0022] 通过软件升级后的升级服务实现超融合系统的软件升级。
[0023] 一种不中断服务的升级装置,用于超融合系统的升级服务,包括:
[0024] ISO挂载模块,用于配置升级控制节点的本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;所述升级控制节点为挂载升级软件包ISO的节点;
[0025] 服务升级模块,用于配置升级控制节点的Yum repo,并配置超融合系统集群内各节点的Yum repo指向所述在线软件源所在的repo地址;对超融合系统集群内各节点进行升级服务的软件包升级,并进行不中断服务的热重载,完成超融合系统集群内各节点的升级服务的软件升级。
[0026] 根据本发明一实施例,不中断服务的升级装置还包括:
[0027] 进度查询模块,用于保存各节点的升级服务的软件升级的进度信息至数据库,通过升级进度进程获取相应接口提供给前端界面,使前端界面可通过轮询得到当前升级服务的软件升级的进度信息;
[0028] 系统升级模块,用于通过软件升级后的升级服务实现超融合系统的软件升级。
[0029] 一种不中断服务的升级设备,包括:
[0030] 存储器和处理器,所述存储器中存储有指令,所述存储器和所述处理器通过线路互连;
[0031] 所述处理器调用所述存储器中的所述指令,实现本发明一实施例中的不中断服务的升级方法。
[0032] 一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明一实施例中的不中断服务的升级方法。
[0033] 本发明由于采用以上技术方案,使其与现有技术相比具有以下的优点和积极效果:
[0034] 1)本发明一实施例中的不中断服务的升级方法,针对现有的升级方式将升级服务的软件升级动作与超融合系统的软件升级动作耦合在一起,因在升级服务软件包升级后使用的重载方式未能达到实际的重载预期,导致无法完成重载新版本的升级服务代码,升级服务无法按预期提供新的升级服务的问题,通过将升级服务的升级维护工作与超融合软件的升级维护工作进行解耦,在升级服务软件的升级并重载后,可以在不中断升级服务的前期下,完成对升级服务软件的升级工作,后续即可利用更新后的升级服务控制超融合系统软件的升级工作,比如调整了超融合系统软件升级过程中的编排顺序、新增了升级服务相关接口等,都可以在升级服务软件升级后通过热重载而不用通过重启服务的形式来使之生效,以达到不中断升级服务的升级效果。
[0035] 2)本发明一实施例中的不中断服务的升级方法,通过在升级控制节点配置本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;再配置超融合系统集群内各节点的Yum repo指向在线软件源所在的repo地址,避免了将ISO(软件源)分发至各节点的情况,能够相对减少升级过程中的软件分发时间。

附图说明

[0036] 图1为本发明一实施例中的不中断服务的升级方法流图;
[0037] 图2为本发明一实施例中的升级服务的软件升级流程图;
[0038] 图3为本发明一实施例中的不中断服务的升级装置框图;
[0039] 图4为本发明一实施例中的不中断服务的升级设备的示意图。

具体实施方式

[0040] 以下结合附图和具体实施例对本发明提出的一种不中断服务的升级方法、装置、设备及存储介质作进一步详细说明。根据下面说明和权利要求书,本发明的优点和特征将更清楚。
[0041] 实施例一
[0042] 本实施例针对现有的升级方式将升级服务的软件升级动作与超融合系统的软件升级动作耦合在一起,且因在升级服务软件包升级后使用的重载方式未能达到实际的重载预期,导致无法完成重载新版本的升级服务代码,升级服务无法按预期提供新的升级服务(比如针对超融合软件升级动作编排动作的调整、升级服务新增的部分接口用于可视化展示需求等),严重的话将导致超融合系统软件升级后存在重大安全隐患(比如关键组件升级后状态的非预期等)的问题,提供了一种用于超融合系统升级服务的不中断服务的升级方法,先对升级服务进行软件升级,将下发升级服务升级请求的节点作为控制节点进行升级服务升级的控制,其升级流程如下:
[0043] 上传升级用ISO‑>配置升级服务升级软件源‑>下发升级服务升级请求‑>对各节点升级服务软件进行升级‑>对各节点升级服务进行热重载‑>升级服务升级完成。
[0044] 通过上述过程完成升级服务的软件升级以及热重载之后,即可在后续开始实时对超融合软件的升级动作。此方法将升级服务的升级维护工作与超融合软件的升级维护工作进行解耦,能够降低升级过程中的复杂度,且独立控制避免互相影响。
[0045] 具体的,请参看图1,该不中断服务的升级方法,包括以下步骤:
[0046] S1:配置升级控制节点的本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;所述升级控制节点为挂载升级软件包ISO的节点;
[0047] S2:配置升级控制节点的Yum repo,并配置超融合系统集群内各节点的Yum repo指向所述在线软件源所在的repo地址;对超融合系统集群内各节点进行升级服务的软件包升级,并进行不中断服务的热重载,完成超融合系统集群内各节点的升级服务的软件升级。
[0048] 在步骤S1中,上传待升级软件包ISO。ISO的作用用来配置升级软件源,通过在升级控制节点(ISO所在节点)配置本地Yum仓库,并提供基于HTTP协议的Yum repo。
[0049] 现有的升级方式未采用通过HTTP协议的Yum repo,而是通过将ISO从控制节点分发到集群其他所有节点的形式,然后通过将ISO配置为本地Yum repo来作为软件源提供升级使用。考虑到升级用ISO一般占用空间较大,在通过这种方式进行集群各节点间分发时耗时较多。
[0050] 请参看图2,本实施例采用新的升级方式:仅在控制节点挂载ISO并配置HTTP协议的Yum repo来作为集群内在线软件源,能够减少较多的耗时。这里的控制节点指的是超融合系统的某个节点,比如超融合系统是5节点的,那么这个控制节点是其中之一。当从某个节点的IP进入管理控制台并上传ISO后,后续的升级就是以这个节点作为控制节点来进行后续的升级动作。
[0051] 在步骤S2中,对升级服务进行软件升级,主要包括以下步骤:
[0052] 1.升级控制节点的Yum repo的配置;
[0053] 2.超融合系统集群各节点增加Yum repo指向第一步中升级控制节点配置的升级软件源配置的repo地址;
[0054] 3.对集群各节点升级服务软件包进行升级;
[0055] 4.对集群各节点升级服务软件下发热重载指令;
[0056] 5.完成升级服务软件的升级工作。
[0057] 其中,Yum repo的配置基于下述方式进行:
[0058] A.挂载ISO到控制节点的某个目录;
[0059] B.采用python提供的SimpleHTTPServer在挂载目录中启动HTTPServer并配置监听某个可用端口,比如8090(所用端口需保证无其他服务正在使用,避免端口冲突问题);HTTPServer启动后,即该Yum repo已处于可用状态。
[0060] C.在需要使用此repo的节点上(升级场景下需要为集群所有节点进行配置此repo)配置对应Yum repo,配置示例如下:
[0061] [smartxos]
[0062] name=smartxos
[0063] baserul=http://10.10.64.100:8080/
[0064] gpgcheck=0
[0065] enabled=1
[0066] D.各节点Yum即可使用ISO作为软件源的Yum repo进行软件更新与安装。
[0067] 关于升级服务的热重载机制如下:
[0068] 现有的升级是基于python内置的重载方式,reload(重载函数)无法有效对更新后升级服务软件进行重载,对此本实施例进行了调整。本实施例通过使用一个新的python wsgi server(基于master‑worker工作模式,子进程负责处理server请求),考虑到此wsgi server基于master‑worker的形态工作,且支持通过发送信号给master进程来达到重载工作进程的目的。本实施例即通过此wsgi server的这种特性来支持升级服务软件包升级后的不中断服务的热重载。
[0069] 具体的,该wsgi server是python中较为流行的一个开源组件‑‑Gunicorn。Gunicorn采用pre_fork的工作模型,即存在一个master进程以及多个用来处理客户端请求的worker进程。其中,master进程不进行请求的处理,只有worker进程会处理请求。master进程负责worker进程的管理,比如基于配置文件在启动阶段fork(派生)对应数量的worker进程用来处理请求,以及在初始化阶段注册master进程需要处理的信号,其中包括本实施例使用的HUP信号,HUP信号可重新加载配置,使用新配置启动新工作进程,并正常关闭旧工作进程。
[0070] 当对master进程发送HUP信号时,执行流程如下所示:
[0071] 1.wsgi server发送HUP信号给master进程;
[0072] 2.master进程接收到HUP信号,然后根据信号类型查询初始化阶段注册的信号表,获取到对应HUP信号的处理函数;该处理函数即为reload(重载)函数,此函数内部将会加载新的配置文件并fork对应配置中相应数量的新的worker进程;而针对旧的worker进程,master进程将会发送TERM信号到旧的worker进程,使其处理完当前请求后退出。
[0073] 上述流程的具体事例如下:
[0074] 1.当前运行master进程与worker进程如下所示:
[0075]
[0076] 可以看到master进程即为1706,而worker进程为9412。
[0077] 2.此时通过下述命令对master进程发送命令以重载worker进程:kill‑s HUP 1706
[0078] 3.在发送HUP信号后可以查看对应进程如下:
[0079]
[0080] 可以发现worker进程号已变为85247,而原有的9412进程则已经退出了。
[0081] 通过下述日志可以更清晰地看出接收到HUP信号后所经历的过程:
[0082] 2021‑11‑03 16:10:03[1706][INFO]Handling signal:hup
[0083] 2021‑11‑03 16:10:03[1706][INFO]Hang up:Master
[0084] 2021‑11‑03 16:10:03[9412][INFO]Worker exiting(pid:9412)
[0085] 2021‑11‑03 16:10:03[85247][INFO]Booting worker with pid:85247[0086] 在升级服务软件进行升级的过程中,升级的相关进度信息保存在数据库中,由升级进度获取接口提供给前端,前端轮询进行查询并展示在界面上以供使用者可显式感知当前升级服务软件升级的状态。
[0087] 完成超融合系统集群内各节点的升级服务的软件升级之后,就可通过软件升级后的升级服务实现超融合系统的软件升级。比如调整了超融合软件升级过程中的编排顺序、新增了升级服务相关接口等,都可以在升级服务软件升级后通过热重载而不用通过重启服务的形式来使之生效,以达到不中断升级服务的升级效果。
[0088] 本实施例中的不中断服务的升级方法,将升级服务的升级维护工作与超融合系统软件的升级维护工作进行解耦,能够降低升级过程中的复杂度,且独立控制避免互相影响。其中,在升级控制节点配置本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;再配置超融合系统集群内各节点的Yum repo指向在线软件源所在的repo地址,对现有的软件分发方式做了调整,则避免了将ISO分发至各节点的情况,能够相对减少升级过程中的软件分发时间。
[0089] 实施例二
[0090] 本实施例提供一种不中断服务的升级装置,用于超融合系统的升级服务,请参看图3,该装置包括:
[0091] ISO挂载模块1,用于配置升级控制节点的本地Yum仓库,并提供基于HTTP协议的Yum repo,作为超融合系统集群内的在线软件源;所述升级控制节点为挂载升级软件包ISO的节点;
[0092] 服务升级模块2,用于配置升级控制节点的Yum repo,并配置超融合系统集群内各节点的Yum repo指向所述在线软件源所在的repo地址;对超融合系统集群内各节点进行升级服务的软件包升级,并进行不中断服务的热重载,完成超融合系统集群内各节点的升级服务的软件升级;
[0093] 进度查询模块3,用于保存各节点的升级服务的软件升级的进度信息至数据库,通过升级进度进程获取相应接口提供给前端界面,使前端界面可通过轮询得到当前升级服务的软件升级的进度信息;
[0094] 系统升级模块4,用于通过软件升级后的升级服务实现超融合系统的软件升级。
[0095] 本实施例中的不中断服务的升级装置是与实施例一中的不中断服务的升级方法对应的产品,该不中断服务的升级装置中的ISO挂载模块1、服务升级模块2、进度查询模块3和系统升级模块4的功能及实现方法均如上述实施例一所述,在此不再赘述。
[0096] 实施例三
[0097] 本实施例提供了一种不中断服务的升级设备。请参看图4,该不中断服务的升级设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)510(例如,一个或一个以上处理器)和存储器520,一个或一个以上存储应用程序533或数据532的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器520和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对不中断服务的升级设备500中的一系列指令操作。
[0098] 进一步地,处理器510可以设置为与存储介质530通信,在不中断服务的升级设备500上执行存储介质530中的一系列指令操作。
[0099] 不中断服务的升级设备500还可以包括一个或一个以上电源540,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口560,和/或,一个或一个以上操作系统531,例如Windows Serve、Vista等等。
[0100] 本领域技术人员可以理解,图4示出的不中断服务的升级设备结构并不构成对不中断服务的升级设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
[0101] 本发明还提供一种计算机可读存储介质,该计算机可读存储介质可以为非易失性计算机可读存储介质,该计算机可读存储介质也可以为易失性计算机可读存储介质。该计算机可读存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行实施例一中的不中断服务的升级方法的步骤。
[0102] 实施例二中的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件的形式体现出来,该计算机软件存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read‑only memory,ROM)、随机存取存储器(Random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
[0103] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置及设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0104] 上面结合附图对本发明的实施方式作了详细说明,但是本发明并不限于上述实施方式。即使对本发明作出各种变化,倘若这些变化属于本发明权利要求及其等同技术的范围之内,则仍落入在本发明的保护范围之中。