服务集群的升级方法、装置及存储介质与流程

文档序号:18301028发布日期:2019-07-31 10:07阅读:135来源:国知局
服务集群的升级方法、装置及存储介质与流程

本申请涉及互联网技术领域,特别涉及一种服务集群的升级方法、装置及存储介质。



背景技术:

服务集群是指将多个服务实例部署在一起组成的集群,其中,服务实例是处理业务请求的最小单元。当服务集群接收到大量的业务请求时,由该服务集群对应的负载均衡器(loadbalancer,lb)将接收到的业务请求分发到各个服务实例上,由各个服务实例处理各自接收到的业务请求。因此,对服务集群的升级,也即是对服务集群中包括的多个服务实例的升级。另外,当对服务集群进行升级时,若同时升级服务集群中包括的多个服务实例,风险较大,不利于服务集群的稳定运行,因此,实际应用中,通常采用灰度升级的方法升级服务集群,也即,分批次升级服务集群中包括的多个服务实例。

相关技术中,采用灰度升级的方法升级服务集群的实现方式可以为:该服务集群对应的运维系统在原有的服务集群的基础上部署另一个高版本服务集群,为了便于说明,将原有的服务集群称为低版本服务集群。假设低版本服务集群初始状态时包括m个未升级的服务实例,第一次升级时运维系统从低版本服务集群中选择n个未升级的服务实例,n为小于m的正整数,并删除低版本服务集群中的这n个未升级的服务实例,同时在高版本服务集群中部署该n个未升级的服务实例的升级版本,也即,在高版本服务集群中部署n个升级之后的服务实例。在运维系统重新部署完服务实例之后,高版本服务集群包括n个升级之后的服务实例,低版本服务集群包括(m-n)个未升级的服务实例,无论是对于高版本服务集群中的升级之后的服务实例,还是对于低版本服务集群中的未升级的服务实例,lb将接收到的业务请求的总量的1/m分发给每个服务实例,运维系统观察每个服务实例的运行状态,若确定每个服务实例运行平稳,则重复执行从低版本的服务集群中选择一定数量个未升级的服务实例的操作,直至将低版本服务集群中的m个未升级的服务实例全部转移到高版本服务集群,从而完成对服务集群的升级。其中,每次升级时从低版本的服务集群中选择的未升级的服务实例的数量可以相同,也可以不同。

由上述对服务集群的升级可知,由于运维系统是分批次将低版本服务集群中的m个未升级的服务实例升级到高版本服务集群中,因此,对于接收到的业务请求,每次升级时可以通过升级之后的服务实例来处理的业务请求的增加量为1/m的整数倍,导致每次升级时的升级进度比较单一,降低了对服务集群进行升级的灵活性。



技术实现要素:

为了解决相关技术中对服务集群进行升级时的灵活性较低的问题,本申请提供了一种服务集群的升级方法、装置及存储介质。所述技术方案如下:

第一方面,提供了一种服务集群的升级方法,应用于与所述服务集群对应的运维系统,所述方法包括:

接收携带升级进度的升级请求,所述升级进度是管理人员设置的,且所述升级进度是指通过升级之后的服务实例处理业务请求的数量与所有业务请求的数量之间的比值;

根据所述升级进度确定本次需要升级的服务实例的数量,得到目标数量,并将所述服务集群包括的未升级的所述目标数量个服务实例进行升级;

向所述服务集群对应的lb发送所述升级进度,以使所述lb根据所述升级进度和所述服务集群包括的升级之后的服务实例的数量分发接收到的业务请求;

在所述服务集群包括的升级之后的服务实例处理所述接收到的业务请求的过程中,若确定所述服务集群稳定运行,则确定本次升级完成。

在本申请中,当与服务集群对应的运维系统接收到携带升级进度的升级请求时,根据该升级进度确定本次需要升级的服务实例的数量,得到目标数量,并将服务集群包括的未升级的目标数量个服务实例进行升级,之后向服务集群对应的lb发送该升级进度,以使lb根据该升级进度和服务集群包括的升级之后的服务实例的数量分发接收到的业务请求,以完成对服务集群的一次升级。由于升级进度是管理人员设置的,因此,通过本申请提供的服务集群的升级方法,每次升级时的升级进度可以由管理人员任意设置,提高了对服务集群进行升级的灵活性。

可选地,所述根据所述升级进度确定本次需要升级的服务实例的数量,得到目标数量,包括:

确定所述服务集群当前包括的升级之后的服务实例的数量,以及所述服务集群在首次被升级之前包括的未升级的服务实例的数量,分别得到第一数量和第二数量;

根据所述第一数量、所述第二数量和所述升级进度确定所述目标数量。

具体地,运维系统可以通过服务集群包括的的升级之后的服务实例的分布情况确定目标数量。

可选地,所述根据所述第一数量、所述第二数量和所述升级进度确定所述目标数量,包括:

根据所述第一数量和所述第二数量,确定所述服务集群包括的升级之后的服务实例的占比;

将所述升级进度与确定的占比相减,得到进度差值;

将所述进度差值与所述第二数量之间的乘积取整,得到所述目标数量。

由于升级进度是指通过升级之后的服务实例处理业务请求的数量与所有业务请求的数量之间的比值,因此此次需要升级的服务实例的数量需通过上述进度差值确定。

可选地,所述确定本次升级完成之后,还包括:

确定所述服务集群当前包括的升级之后的服务实例的数量;

若所述服务集群包括的升级之后的服务实例的数量小于所述服务集群在首次被升级之前包括的未升级的服务实例的数量,则显示升级进度提示信息,用于指示所述管理人员所述服务集群中仍存在未升级的服务实例。

由于本申请提供的服务集群的升级方法仍是采用灰度升级的方法,因此,在本次升级完成之后,运维系统还需确定服务集群在首次被升级之前包括的未升级的服务实例是否全部被升级,若没有,则可以通过上述方法进入下一次的升级。

可选地,所述确定所述服务集群当前包括的升级之后的服务实例的数量之后,还包括:

若所述服务集群包括的升级之后的服务实例的数量等于所述服务集群在首次被升级之前包括的未升级的服务实例的数量,则确定当前是否存在剩余的未升级的服务实例;

若存在,则释放所述剩余的未升级的服务实例。

进一步地,在本申请中,在初次升级服务集群之前,可能创建有冗余的服务实例,因此,在运维系统确定服务集群在首次被升级之前包括的未升级的服务实例全部被升级时,还需确定当前是否存在多余的服务实例,若存在,则需将多余的服务实例删除。

可选地,所述接收携带升级进度的升级请求之前,还包括:

当接收到升级准备请求时,确定所述服务集群的占用率,所述占用率是指所述服务集群中被业务请求占用的服务实例的比例,所述升级准备请求是在首次对所述服务集群进行升级之前接收到的;

将所述服务集群当前包括的未升级的服务实例的数量取倒数,得到流量精度;

若所述流量精度大于所述占用率,则创建预设个数个未升级的服务实例。

其中,在初次升级服务集群之前,运维系统可以根据当前服务集群的占用率确定是否需要创建冗余的服务实例。

第二方面,提供了一种服务集群的升级方法,应用于与所述服务集群对应的lb,所述方法包括:

接收所述服务集群对应的运维系统发送的升级进度,所述升级进度是管理人员设置的,且所述升级进度是所述运维系统在根据所述升级进度对所述服务集群中的未升级的服务实例进行升级之后发送的;

根据所述升级进度和所述服务集群包括的升级之后的服务实例的数量分发接收到的业务请求。

在本申请中,当lb接收到运维系统发送的升级进度时,可以根据该升级进度和服务集群包括的升级之后的服务实例的数量分发接收到的业务请求,已完成对服务集群的本次升级。由于升级进度是管理人员设置的,因此,通过本申请提供的服务集群的升级方法,每次升级时的升级进度可以由管理人员任意设置,提高了对服务集群进行升级的灵活性。

可选地,所述根据所述升级进度和所述服务集群包括的升级之后的服务实例的数量分发接收到的业务请求,包括:

确定所述服务集群包括的升级之后的服务实例的数量,得到第三数量;

确定所述服务集群在首次被升级之前包括的未升级的服务实例的数量,得到第四数量;

根据所述第三数量、所述第四数量和所述升级进度,确定业务请求分配比例,所述业务请求分配比例是指分发给所述服务集群包括的升级之后的服务实例的业务请求的比例;

按照所述业务请求分配比例,分发接收到的业务请求。

其中,lb可以根据该升级进度和服务集群包括的升级之后的服务实例的数量按照上述算法得到业务请求分配比例,以根据该业务请求分配比例分发接收到的业务请求。

可选地,所述根据所述第三数量、所述第四数量和所述升级进度,确定业务请求分配比例,包括:

若所述第三数量与所述第四数量之间的比值小于所述升级进度,则将所述第三数量与所述第四数量之间的比值确定为所述业务请求分配比例;

若所述第三数量与所述第四数量之间的比值大于或等于所述升级进度,则将所述升级进度确定为所述业务请求分配比例。

具体地,lb可以对管理人员设置的升级进度与当前服务集群包括的升级之后的服务实例的占比之间进行大小比较,并根据比较之后的结果确定上述业务请求分配比例。

第三方面,提供了一种服务集群的升级装置,应用于与所述服务集群对应的运维系统,所述服务集群的升级装置具有实现上述第一方面中服务集群的升级方法行为的功能。所述服务集群的升级装置包括至少一个模块,该至少一个模块用于实现上述第一方面所提供的服务集群的升级方法。

第四方面,提供了一种服务集群的升级装置,应用于与所述服务集群对应的lb,所述服务集群的升级装置具有实现上述第二方面中服务集群的升级方法行为的功能。所述服务集群的升级装置包括至少一个模块,该至少一个模块用于实现上述第二方面所提供的服务集群的升级方法。

第五方面,提供了一种服务集群的升级装置,应用于与所述服务集群对应的运维系统,所述服务集群的升级装置的结构中包括处理器和存储器,所述存储器用于存储支持服务集群的升级装置执行上述第一方面所提供的服务集群的升级方法的程序,以及存储用于实现上述第一方面所提供的服务集群的升级方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。

第六方面,提供了另一种服务集群的升级装置,应用于与所述服务集群对应的负载均衡器lb,所述服务集群的升级装置的结构中包括处理器和存储器,所述存储器用于存储支持服务集群的升级装置执行上述第二方面所提供的服务集群的升级方法的程序,以及存储用于实现上述第二方面所提供的服务集群的升级方法所涉及的数据。所述处理器被配置为用于执行所述存储器中存储的程序。所述存储设备的操作装置还可以包括通信总线,该通信总线用于该处理器与存储器之间建立连接。

第七方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的服务集群的升级方法。

第八方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第二方面所述的服务集群的升级方法。

第九方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的服务集群的升级方法。

第十方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面所述的服务集群的升级方法。

上述第三方面、第五方面、第七方面和第九方面所获得的技术效果与第一方面中对应的技术手段获得的技术效果近似,在这里不再赘述。

上述第四方面、第六方面、第八方面和第十方面所获得的技术效果与第二方面中对应的技术手段获得的技术效果近似,在这里不再赘述。

本申请提供的技术方案带来的有益效果是:

在本申请中,当与服务集群对应的运维系统接收到携带升级进度的升级请求时,根据该升级进度确定本次需要升级的服务实例的数量,得到目标数量,并将服务集群包括的未升级的目标数量个服务实例进行升级,之后向服务集群对应的lb发送该升级进度,以使lb根据该升级进度和服务集群包括的升级之后的服务实例的数量分发接收到的业务请求,以完成对服务集群的一次升级。由于升级进度是管理人员设置的,因此,通过本申请提供的服务集群的升级方法,每次升级时的升级进度可以由管理人员任意设置,提高了对服务集群进行升级的灵活性。

附图说明

图1是本申请实施例提供的一种服务集群的升级系统示意图;

图2是本申请实施例提供的一种服务集群的升级装置的结构示意图;

图3是本申请实施例提供的一种服务集群的升级方法流程图;

图4是本申请实施例提供的另一种服务集群的升级方法流程图;

图5a是本申请实施例提供的一种服务集群的升级装置框图;

图5b是本申请实施例提供的另一种服务集群的升级装置框图;

图6是本申请实施例提供的另一种服务集群的升级装置框图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

图1是本申请实施例提供的一种服务集群的升级系统示意图,如图1所示,该系统100包括服务集群101、lb102和运维系统103,lb102与服务集群101之间通过无线或有线方式连接以进行通信,运维系统103和服务集群101之间通过无线或有线方式连接已进行通信,运维系统103和lb102之间通过无线或有线方式连接已进行通信。

其中,服务集群101包括多个服务实例,在图1中一个圆圈代表1个服务实例,该多个服务实例用于处理一种类型的业务请求。运维系统103用于对服务集群101内的服务实例进行管理,比如对服务集群101中的服务实例进行升级等。lb102用于按照预设算法将接收到的业务请求分发给服务集群101中的服务实例,以使服务集群101中的服务实例处理各自接收到的业务请求。

具体地,如图1所示,运维系统103包括升级引擎1031和资源调度器1032。其中,升级引擎1031用于提供人机交互界面,以接收管理人员设置的升级进度,并根据管理人员设置的升级进度触发资源调度器1032对服务集群中的服务实例进行升级。资源调度器1032还用于获取服务集群内的服务实例的分布信息。比如,获取服务集群中哪些服务实例为升级之后的服务实例,哪些服务实例为未升级的服务实例。

另外需要说明的是,lb102是通过域名系统(domainnamesystem,dns)接收业务请求的。也即,当外部设备发起业务请求时,先向dns发送该业务请求对应的域名,dns根据预先存储的域名和网络协议(internetprotocol,ip)地址之间的映射关系,确定该业务请求的ip地址,并向该外部设备发送该业务请求的ip地址,该外部设备根据该业务请求的ip地址向lb发送业务请求。

图2是本申请实施例提供的一种服务集群的升级装置的结构示意图,图1中的运维系统可以通过图2所示的服务集群的升级装置来实现。参见图2,该服务集群的升级装置包括至少一个处理器201,通信总线202,存储器203以及至少一个通信接口204。

处理器201可以是一个通用中央处理器(centralprocessingunit,cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制本申请方案程序执行的集成电路。

通信总线202可包括一通路,在上述组件之间传送信息。

存储器203可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其它类型的静态存储设备,随机存取存储器(randomaccessmemory,ram))或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器203可以是独立存在,通过通信总线202与处理器201相连接。存储器203也可以和处理器201集成在一起。

通信接口204,使用任何收发器一类的装置,用于与其它设备或通信网络通信,如以太网,无线接入网(ran),无线局域网(wirelesslocalareanetworks,wlan)等。

在具体实现中,作为一种实施例,处理器201可以包括一个或多个cpu,例如图2中所示的cpu0和cpu1。

在具体实现中,作为一种实施例,服务集群的升级装置可以包括多个处理器,例如图2中所示的处理器201和处理器205。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

在具体实现中,作为一种实施例,服务集群的升级装置还可以包括输出设备206和输入设备207。输出设备206和处理器201通信,可以以多种方式来显示信息。例如,输出设备206可以是液晶显示器(liquidcrystaldisplay,lcd),发光二级管(lightemittingdiode,led)显示设备,阴极射线管(cathoderaytube,crt)显示设备,或投影仪(projector)等。输入设备207和处理器201通信,可以以多种方式接收用户的输入。例如,输入设备207可以是鼠标、键盘、触摸屏设备或传感设备等。

在具体实现中,服务集群的升级装置可以是台式机、便携式电脑、网络服务器、掌上电脑(personaldigitalassistant,pda)、移动手机、平板电脑、无线终端设备、通信设备或者嵌入式设备。本申请实施例不限定服务集群的升级装置的类型。

其中,存储器203用于存储执行本申请方案的程序代码,并由处理器201来控制执行。处理器201用于执行存储器203中存储的程序代码208。程序代码208中可以包括一个或多个软件模块。

本申请实施例还提供了另一种服务集群的升级装置的结构,图1中的lb可以通过该服务集群的升级装置来实现。其中,该服务集群的升级装置包括至少一个处理器,通信总线,存储器以及至少一个通信接口。其中,该服务集群的升级装置包括的处理器、通信总线、存储器和通信接口和图2中的处理器、通信总线、存储器和通信接口的功能基本相同,在此不再详细阐述。

接下来对本申请实施例提供的服务集群的升级方法进行详细解释说明。

图3是本申请实施例提供的一种服务集群的升级方法流程图,应用于图1所示的系统100中,如图3所示,该方法包括如下步骤:

步骤301:运维系统接收携带升级进度的升级请求,该升级进度是管理人员设置的,且该升级进度是指通过升级之后的服务实例处理业务请求的数量与所有业务请求的数量之间的比值。

在本申请实施例中,当运维系统得到管理人员设置的升级进度时,可以通过下述步骤302至步骤304完成对服务集群的一次升级。

步骤302:运维系统根据该升级进度确定本次需要升级的服务实例的数量,得到目标数量,并将该服务集群包括的未升级的目标数量个服务实例进行升级。

具体地,运维系统可以根据管理人员设置的升级进度确定本次需要升级的服务实例的数量,以实现根据管理人员的需求灵活对服务集群包括的服务实例进行升级。

步骤303:运维系统向该服务集群对应的lb发送该升级进度,以使lb根据该升级进度和该服务集群包括的升级之后的服务实例的数量分发接收到的业务请求。

在运维系统对服务集群包括的部分服务实例进行升级之后,lb可以根据升级之后的服务实例的部署情况和该升级进度分发接收到的业务请求。

步骤304:在该服务集群包括的升级之后的服务实例处理接收到的业务请求的过程中,若运维系统确定该服务集群稳定运行,则确定本次升级完成。

通过步骤304,运维系统可以确定本次升级完成的时机。

在本申请实施例中,当与服务集群对应的运维系统接收到携带升级进度的升级请求时,根据该升级进度确定本次需要升级的服务实例的数量,得到目标数量,并将服务集群包括的未升级的目标数量个服务实例进行升级,之后向服务集群对应的lb发送该升级进度,以使lb根据该升级进度和服务集群包括的升级之后的服务实例的数量分发接收到的业务请求,以完成对服务集群的一次升级。由于升级进度是管理人员设置的,因此,通过本申请提供的服务集群的升级方法,每次升级时的升级进度可以由管理人员任意设置,提高了对服务集群进行升级的灵活性。

图4是本申请实施例提供的一种服务集群的升级方法流程图,应用于图1所示的系统100中,图4所示的实施例用于对图3所示的实施例的进一步解释说明。如图4所示,该方法包括如下步骤:

步骤401:运维系统接收携带升级进度的升级请求,该升级进度是管理人员设置的,且该升级进度是指通过升级之后的服务实例处理业务请求的数量与所有业务请求的数量之间的比值。

由于运维系统的升级引擎提供有人机交互界面,因此,步骤401具体可以为:升级引擎接收携带升级进度的升级请求,该升级进度是由管理人员通过预设操作设置的。

在一种可能的实现方式中,该人机交互界面中包括“设置升级进度选项”,当管理人员通过预设操作选择该“设置升级进度选项”时,升级引擎在该人机交互界面中显示升级进度输入框,并显示针对该升级进度输入框的两个选项:“确认”选项和“取消选项”。当升级引擎检测到针对该“确认”选项的选择操作时,确定接收到携带升级进度的升级请求,其中,升级进度即为管理人员在该升级进度输入框中设置的升级进度。

其中,该预设操作可以为点击、滑动、语音等操作。

另外,升级进度是指通过升级之后的服务实例处理业务请求的数量与所有业务请求的数量之间的比值,且该升级进度是管理人员设置的期望值。比如,lb接收到的所有业务请求为2000条,当管理人员设置的升级进度为30%,则表明管理人员期望此次升级过程中通过升级之后的服务实例处理业务请求的数量为600条。

需要说明的是,在本申请实施例中,对服务集群包括的多个服务实例进行升级仍然是通过灰度升级的方式,也即,在本申请实施例中,服务集群包括的多个服务实例进行升级仍然是采用分批次升级的方式。

进一步地,为了避免升级过程中增加服务实例处理业务请求的压力,在对服务集群进行首次升级之前,需先确定是否需要在服务集群中部署冗余的服务实例。具体地,在对服务集群进行首次升级之前,当运维系统接收到升级准备请求时,确定该服务集群的占用率,该占用率是指该服务集群中被业务请求占用的服务实例的比例,将该服务集群当前包括的未升级的服务实例的数量取倒数,得到流量精度;,若该流量精度大于该占用率,则创建预设个数个未升级的服务实例。

当该流量精度大于该占用率时,表明当前服务集群中处理的业务请求的压力较大,此时,为了保证能够顺利升级服务实例,可以部署冗余的服务实例,也即创建预设个数个未升级的服务实例。

其中,升级准备请求也是由管理人员通过预设操作触发的,在一种可能的实现方式中,升级引擎的人机交互界面还包括“准备升级”选项,当管理人员通过预设操作选择该“准备升级”选项时,升级引擎确定接收到升级准备请求。

当升级引擎接收到该升级准备请求时,升级引擎需从资源调度器处获取服务集群的占用率。也即,升级引擎向资源调度器发送查询请求,当资源调度器接收到该查询请求时,查询当前服务集群的负载及部署信息,以确定当前服务集群的占用率,并将升级引擎发送该查询结果,该查询结果携带该服务集群的占用率。

当升级引擎接收到资源调度器发送的查询结果时,根据该查询结果判断是否需要部署冗余的服务实例,,当确定需要部署冗余服务实例时,向资源调度器发送扩容请求,该扩容请求携带需要扩容的服务实例的数量。当资源调度器接收到该扩容请求时,根据该扩容请求携带的需要扩容的服务实例的数量,在服务集群中创建一定数量的服务实例。由于,创建冗余服务实例是在首次对服务集群进行升级之前进行的,因此,创建的冗余的服务实例为未升级的服务实例。

其中,预设个数为预先设置的个数,该预设个数可以为1、2或3等。

比如,预设个数为1,在首次升级之前,服务集群包括5个服务实例,若升级引擎确定需要部署冗余的服务实例,则向资源调度器发送扩容请求,该扩容请求携带的需要扩容的服务实例的数量为1。当资源调度器接收到该扩容请求时,在服务集群中创建一个未升级的服务实例。

步骤402:运维系统根据该升级进度确定本次需要升级的服务实例的数量,得到目标数量,并将该服务集群包括的未升级的目标数量个服务实例进行升级。

具体地,运维系统确定该服务集群当前包括的升级之后的服务实例的数量,以及该服务集群在首次被升级之前包括的未升级的服务实例的数量,分别得到第一数量和第二数量;根据该第一数量、该第二数量和该升级进度确定该目标数量。

其中,运维系统确定第一数量和第二数量的实现方式为:当升级引擎通过步骤401得到管理人员设置的升级进度时,升级引擎从资源调度器处获取该服务集群中的服务实例的分布情况。也即,升级引擎向资源调度器发送服务实例部署信息查询请求,当资源调度器接收到该服务实例部署信息查询请求时,获取该服务集群中的服务实例的部署信息,该服务实例的部署信息包括服务集群当前包括的升级之后的服务实例的数量,以及该服务集群在首次被升级之前包括的未升级的服务实例的数量,也即,获取第一数量和第二数量。资源调度器在确定出第一数量和第二数量之后,将获取到第一数量和第二数量发送给升级引擎。

需要说明的是,资源调度器获取到的该服务集群中的服务实例的部署信息还可以包括当前服务集群包括的未升级的服务实例的数量,以及在首次升级之前扩容的服务实例的数量。

比如,当资源调度器接收到升级引擎发送的服务实例部署信息查询请求时,获取服务实例的部署信息为:升级之后的服务实例的数量为0、未升级的服务实例的数量为6、首次升级前包括的服务实例的数量为5、首次升级之前扩容的服务实例的数量为1。

另外,运维系统根据该第一数量、第二数量和该升级进度确定目标数量,也即,升级引擎根据该第一数量、第二数量和升级进度确定目标数量。

具体地,升级引擎根据该第一数量和该第二数量,确定该服务集群包括的升级之后的服务实例的占比;将该升级进度与确定的占比相减,得到进度差值;将该进度差值与该第二数量之间的乘积取整,得到该目标数量。

比如,第一数量为0,第二数量为5,则该服务集群包括的升级之后的服务实例的占比为0。若管理人员设置的升级进度为30%,则进度差值为30%,此时将该进度差值与该第二数量之间的乘积取整,也即,将5×30%的计算结果取整数,得到目标数量为2。

另外,运维系统将该服务集群包括的未升级的目标数量个服务实例进行升级,也即,当升级引擎确定出目标数量之后,升级引擎向资源调度器发送服务实例升级请求,该服务实例升级请求携带该目标数量。当资源调度器接收到服务实例升级请求时,从服务集群当前包括的未升级的服务实例中选择该目标数量个服务实例,并将选择的服务实例替换为升级之后的版本。并在完成该目标数量个服务实例的升级操作之后,资源调度器向升级引擎发送确认信息,当升级引擎接收到该确认信息时,确定已经对该服务集群中的目标数量个未升级的服务实例进行了升级。

当运维系统对服务集群中的部分服务实例进行升级之后,还需确定当前服务集群的运行状态是否稳定,以便于确定本次升级是否完成。其中,运维系统可以通过下述步骤403至步骤406来实现确定本次升级是否完成。

步骤403:运维系统向该服务集群对应的lb发送该升级进度。

具体地,当运维系统包括的升级引擎确定已经对该服务集群中的目标数量个未升级的服务实例进行了升级之后,升级引擎向lb发送管理人员设置的升级进度。

步骤404:lb接收该服务集群对应的运维系统发送的升级进度。

在运维系统中的升级引擎向lb发送该升级进度之后,lb接收该升级引擎发送的升级进度,以根据下述步骤405对接收到的业务请求进行分发。

步骤405:lb根据该升级进度和该服务集群包括的升级之后的服务实例的数量分发接收到的业务请求。

若升级进度大于当前服务集群中的升级之后的服务实例的占比,此时如果直接按照升级进度对业务请求进行分发,可能导致服务集群中升级之后的服务实例的压力较大,因此,在本申请实施例中,lb将根据升级进度和该服务集群包括的升级之后的服务实例的数量两个因素对接收到的业务请求进行分发。

具体地,当lb接收到升级引擎发送的升级进度之后,确定该服务集群包括的升级之后的服务实例的数量,得到第三数量,并确定该服务集群在首次被升级之前包括的未升级的服务实例的数量,得到第四数量,根据该第三数量、该第四数量和该升级进度,确定业务请求分配比例,该业务请求分配比例是指分发给该服务集群包括的升级之后的服务实例的业务请求的比例,按照该业务请求分配比例,分发接收到的业务请求。

其中,lb根据该第三数量、该第四数量和该升级进度,确定业务请求分配比例的实现方式具体为:若该第三数量与该第四数量之间的比值小于该升级进度,表明当前服务集群中包括的升级之后的服务的数量无法满足该升级进度的要求,此时可以将该第三数量与该第四数量之间的比值确定为该业务请求分配比例。若该第三数量与该第四数量之间的比值大于或等于该升级进度,表明当前服务集群中包括的升级之后的服务的数量可以满足该升级进度的要求,此时可以将将该升级进度确定为该业务请求分配比例。

比如,当前为首次对服务集群进行升级,通过步骤402确定的目标数量为2,服务集群首次被升级之前包括的未升级的服务实例为5,也即,第四数量为4,第三数量为2,此时得到的第三数量与第四数量之间的比值为40%。若管理人员设置的升级进度为30%,由于30%小于该40%,因此可以将该升级进度确定为该业务请求分配比例。

在lb确定出业务请求分配比例之后,lb可以按照该业务请求分配比例,分发接收到的业务请求。比如,lb确定出的业务请求分配比例为30%,lb将接收到的业务请求的30%分发给服务集群包括的升级之后的服务实例,剩下70%的业务请求分发给服务集群包括的未升级的服务实例。

步骤406:在该服务集群包括的升级之后的服务实例处理该接收到的业务请求的过程中,若运维系统确定该服务集群稳定运行,则确定本次升级完成。

在lb根据业务请求分配比例分发接收到的业务请求之后,各个服务实例处理各自接收到的业务请求,此时,运维系统确定该服务集群是否稳定运行,若稳定运行,则确定本次升级完成。

其中,运维系统确定服务集群是否稳定运行可以为:在该服务集群包括的升级之后的服务实例处理该接收到的业务请求的过程中,采集各个升级之后的服务实例处理业务请求过程中的状态信息,根据采集的状态信息确定该服务集群是否稳定运行。该采集的状态信息可以为服务实例处理业务请求的处理速度等信息。

由于本申请实施例提供的服务集群的升级方法采用的灰度升级的方式,因此,在运维系统确定本地升级完成之后,运维系统还需确定是否进入下一次的升级操作,具体地,运维系统可以通过下述步骤407确定是否进入下一次的升级操作。

步骤407:运维系统确定该服务集群当前包括的升级之后的服务实例的数量,若该服务集群包括的升级之后的服务实例的数量小于该服务集群在首次被升级之前包括的未升级的服务实例的数量,则显示升级进度提示信息,用于指示该管理人员该服务集群中仍存在未升级的服务实例。

在本次升级完成之后,升级引擎可以从资源调度器出获取该服务集群当前包括的升级之后的服务实例的数量。其中,升级引擎从资源调度器出获取该服务集群当前包括的升级之后的服务实例的数量的实现方式可以参考步骤402,在此不再详细阐述。

当升级引擎确定出该服务集群当前包括的升级之后的服务实例的数量时,若该服务集群包括的升级之后的服务实例的数量小于该服务集群在首次被升级之前包括的未升级的服务实例的数量,则表明当前没有完成对服务集群的全部升级,因此,升级引擎可以显示升级进度提示信息。

该升级进度提示信息用于指示该管理人员该服务集群中仍存在未升级的服务实例,因此,当管理人员查看到该升级进度提示信息时,管理人员可以设置下一次升级的升级进度,此时升级引擎将接收到携带下一次升级的升级进度的升级请求,也即返回步骤401继续对服务集群进行升级,直至确定出服务集群包括的升级之后的服务实例的数量等该服务集群在首次被升级之前包括的未升级的服务实例的数量,则确定当前完成对服务集群的全部升级。

进一步地,由步骤401可知,在首次对目标集群进行升级之前,运维系统可能创建有冗余的服务实例,因此,运维系统在确定该服务集群包括的升级之后的服务实例的数量等于该服务集群在首次被升级之前包括的未升级的服务实例的数量之后,也即在完成对服务集群的全部升级之后,还需确定当前是否存在剩余的未升级的服务实例,若存在,则释放该剩余的未升级的服务实例,至此完成对该服务集群的升级过程。

其中,释放该剩余的未升级的服务实例,也即删除该剩余的未升级的服务实例所占用的资源。

下面举例说明本申请实施例中的灰度升级的完整过程。假设在首次升级之前服务集群包括5个服务实例。

(1)升级准备过程

当升级引擎根据步骤401确定需要部署冗余服务实例时,创建1冗余服务实例,此时,服务集群包括6个服务实例。

(2)第一次升级过程

假设管理人员第一次设置的升级进度为30%,则运维系统和lb通过上述步骤401至步骤406实现对服务集群的第一次升级,其中,目标数量为2,也即,升级之后,服务集群包括2个升级之后的服务实例和4个未升级的服务实例。

(3)第二次升级过程

假设管理人员第一次设置的升级进度为70%,此时运维系统通过步骤402确定的目标数量为:(70%-2/5)×5的计算结果取整数,得到目标数量为2。运维系统和lb通过步骤402至步骤406实现对服务集群的第二次升级。在第二次升级之后,服务集群包括4个升级之后的服务实例和2个未升级的服务实例。

(4)第三次升级过程

假设管理人员第三次设置的升级进度为100%,此时运维系统通过步骤402确定的目标数量为:(100%-4/5)×5的计算结果取整数,得到目标数量为1。运维系统和lb通过步骤402至步骤406实现对服务集群的第三次升级。在第三次升级之后,服务集群包括5个升级之后的服务实例和1个未升级的服务实例。

(5)冗余实例释放过程

在第三次升级之后,服务集群包括的升级之后的服务实例的数量和首次被升级之前包括的未升级的服务实例的数量相同,表明当前完成对服务集群包括的服务实例的全部升级,此时,服务集群中还存在剩余的1个未升级的服务实例,因此,需要释放该剩余的1个未升级的服务实例,在释放该剩余的1个未升级的服务实例之后,服务集群包括5个服务实例,且该5个服务实例均为升级之后的服务实例。

在本申请实施例中,当与服务集群对应的运维系统接收到携带升级进度的升级请求时,根据该升级进度确定本次需要升级的服务实例的数量,得到目标数量,并将服务集群包括的未升级的目标数量个服务实例进行升级,之后向服务集群对应的lb发送该升级进度,以使lb根据该升级进度和服务集群包括的升级之后的服务实例的数量分发接收到的业务请求,以完成对服务集群的一次升级。由于升级进度是管理人员设置的,因此,通过本申请提供的服务集群的升级方法,每次升级时的升级进度可以由管理人员任意设置,提高了对服务集群进行升级的灵活性。

参见图5a,本申请实施例提供了一种服务集群的升级装置500,应用于与该服务集群对应的运维系统,该装置500包括接收模块501、升级模块502、发送模块503和第一确定模块504:

接收模块501,用于执行图4实施例中的步骤401;

升级模块502,用于执行图4实施例中的步骤402;

发送模块503,用于执行图4实施例中的步骤403;

第一确定模块504,用于执行图4实施例中的步骤406。

可选地,该升级模块502,包括:

第一确定单元,用于确定该服务集群当前包括的升级之后的服务实例的数量,以及该服务集群在首次被升级之前包括的未升级的服务实例的数量,分别得到第一数量和第二数量;

第二确定单元,用于根据该第一数量、该第二数量和该升级进度确定该目标数量。

可选地,该第二确定单元,具体用于:

根据该第一数量和该第二数量,确定该服务集群包括的升级之后的服务实例的占比;

将该升级进度与确定的占比相减,得到进度差值;

将该进度差值与该第二数量之间的乘积取整,得到该目标数量。

可选地,参见图5b,该装置500还包括第二确定模块505和显示模块506:

第二确定模块505,用于执行图4实施例中步骤407中的确定该服务集群当前包括的升级之后的服务实例的数量;

显示模块506,用于执行图4实施例中步骤407中的若该服务集群包括的升级之后的服务实例的数量小于该服务集群在首次被升级之前包括的未升级的服务实例的数量,则显示升级进度提示信息。

可选地,该装置500还包括:

第三确定模块,用于若该服务集群包括的升级之后的服务实例的数量等于该服务集群在首次被升级之前包括的未升级的服务实例的数量,则确定当前是否存在剩余的未升级的服务实例;

释放模块,用于若存在,则释放该剩余的未升级的服务实例。

可选地,该装置500还包括:

第四确定模块,用于当接收到升级准备请求时,确定该服务集群的占用率,该占用率是指该服务集群中被业务请求占用的服务实例的比例,该升级准备请求是在首次对该服务集群进行升级之前接收到的;

第五确定模块,用于将该服务集群当前包括的未升级的服务实例的数量取倒数,得到流量精度;

创建模块,用于若该流量精度大于该占用率,则创建预设个数个未升级的服务实例。

在本申请实施例中,当与服务集群对应的运维系统接收到携带升级进度的升级请求时,根据该升级进度确定本次需要升级的服务实例的数量,得到目标数量,并将服务集群包括的未升级的目标数量个服务实例进行升级,之后向服务集群对应的lb发送该升级进度,以使lb根据该升级进度和服务集群包括的升级之后的服务实例的数量分发接收到的业务请求,以完成对服务集群的一次升级。由于升级进度是管理人员设置的,因此,通过本申请提供的服务集群的升级方法,每次升级时的升级进度可以由管理人员任意设置,提高了对服务集群进行升级的灵活性。

参见图6,本申请实施例提供了一种服务集群的升级装置600,应用于与该服务集群对应的lb,该装置600包括接收模块601和分发模块602:

接收模块601,用于执行图4实施例中的步骤404;

分发模块602,用于执行图4实施例中的步骤405。

可选地,该分发模块602,包括:

第一确定单元,用于确定该服务集群包括的升级之后的服务实例的数量,得到第三数量;

第二确定单元,用于确定该服务集群在首次被升级之前包括的未升级的服务实例的数量,得到第四数量;

第三确定单元,用于根据该第三数量、该第四数量和该升级进度,确定业务请求分配比例,该业务请求分配比例是指分发给该服务集群包括的升级之后的服务实例的业务请求的比例;

分发单元,用于按照该业务请求分配比例,分发接收到的业务请求。

可选地,该第三确定单元,具体用于:

若该第三数量与该第四数量之间的比值小于该升级进度,则将该第三数量与该第四数量之间的比值确定为该业务请求分配比例;

若该第三数量与该第四数量之间的比值大于或等于该升级进度,则将该升级进度确定为该业务请求分配比例。

在本申请实施例中,当lb接收到运维系统发送的升级进度时,可以根据该升级进度和服务集群包括的升级之后的服务实例的数量分发接收到的业务请求,已完成对服务集群的本次升级。由于升级进度是管理人员设置的,因此,通过本申请提供的服务集群的升级方法,每次升级时的升级进度可以由管理人员任意设置,提高了对服务集群进行升级的灵活性。

需要说明的是:上述实施例提供的服务集群的升级装置在进行服务集群的升级时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的服务集群的升级装置与服务集群的升级方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意结合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机指令时,全部或部分地产生按照本申请实施例该的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如:同轴电缆、光纤、数据用户线(digitalsubscriberline,dsl))或无线(例如:红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如:软盘、硬盘、磁带)、光介质(例如:数字通用光盘(digitalversatiledisc,dvd))、或者半导体介质(例如:固态硬盘(solidstatedisk,ssd))等。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上该为本申请提供的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

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