负载均衡应用虚拟IP切换方法、装置、计算机设备及存储介质与流程

文档序号:18632508发布日期:2019-09-11 21:47阅读:261来源:国知局
负载均衡应用虚拟IP切换方法、装置、计算机设备及存储介质与流程

本申请涉及云计算技术领域,尤其涉及一种负载均衡应用虚拟ip切换方法、装置、计算机设备及存储介质。



背景技术:

若一个应用在原版本的基础上添加了新功能或者改进了原版本的某些功能,那么会涉及到灰度发布。将灰度发布所对应的版本的应用称为灰度应用。灰度应用完成测试后,会形成一个稳定的新版本。目前上线新版本应用(灰度应用)时,需要关闭原应用,以从原应用切换到新版本应用(灰度应用)上,如此在版本切换时会导致服务的中断,影响了用户的体验。



技术实现要素:

本申请实施例提供一种负载均衡应用虚拟ip切换方法、装置、计算机设备及存储介质,可在原应用和灰度应用的版本切换时不会导致服务的中断,提高了版本切换的效率,提升了用户的体验。

第一方面,本申请实施例提供了一种负载均衡应用虚拟ip切换方法,该方法包括:

若灰度应用完成测试,根据第一预设规则从原应用的容器实例ip中确定第一预设数量的ip,其中,所述第一预设数量小于所述原应用的容器实例数量,所述灰度应用是在所述原应用的版本上添加新功能或者改进功能之后所形成的应用;停用所确定的第一预设数量的ip以及所述第一预设数量的ip所对应的容器实例,其中,所停用的所述第一预设数量的ip被回收到预设ip地址池;根据第二预设规则从预设ip地址池所停用的ip中确定第二预设数量的需启用的ip,其中,所述第二预设数量小于或者等于所停用的ip数量;将需启用的ip分配给所述灰度应用新增的容器实例;在所述灰度应用所对应的负载均衡应用的配置文件中添加所述灰度应用新增的容器实例所对应的配置代码;将所述原应用的访问域名与所述原应用所对应的负载均衡应用的虚拟ip的对应关系解除,并将所述原应用的访问域名与所述灰度应用所对应的负载均衡应用的虚拟ip进行绑定,以实现通过所述原应用的访问域名来访问所述灰度应用。

第二方面,本申请实施例提供了一种负载均衡应用虚拟ip切换装置,该负载均衡应用虚拟ip切换装置包括用于执行上述第一方面所述的方法对应的单元。

第三方面,本申请实施例提供了一种计算机设备,所述计算机设备包括存储器,以及与所述存储器相连的处理器;

所述存储器用于存储计算机程序,所述处理器用于运行所述存储器中存储的计算机程序,以执行上述第一方面所述的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,实现上述第一方面所述的方法。

本申请实施例通过停用原应用的第一预设数量的容器实例,以及该第一预设数量的容器实例ip,再新增灰度应用的容器实例,从所停用的ip中获取第二预设数量的ip,并将第二预设数量的ip分配给灰度应用新增的容器实例,在灰度应用的负载均衡应用的配置文件中添加灰度应用新增的容器实例,并设置原应用的访问域名与灰度应用所对应的负载均衡应用的虚拟ip的对应关系。从而实现了将原应用的虚拟ip切换到灰度应用,通过原应用的访问域名来访问灰度应用。本申请实施例快速地实现了原应用的下线,灰度应用的上线,在原应用和灰度应用的版本切换时不会导致服务的中断,实现了无痕切换,提高了版本切换的效率,提升了用户的体验。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的负载均衡应用虚拟ip切换方法的流程示意图;

图2是本申请实施例提供的负载均衡应用虚拟ip切换方法的子流程示意图;

图3是本申请实施例提供的负载均衡应用虚拟ip切换方法的子流程示意图;

图4是本申请实施例提供的负载均衡应用虚拟ip切换方法的子流程示意图;

图5是本申请实施例提供的负载均衡应用虚拟ip切换装置的示意性框图;

图6是本申请实施例提供的停用单元的示意性框图;

图7是本申请实施例提供的启用单元的示意性框图;

图8是本申请实施例提供的配置加入单元的示意性框图;

图9是本申请实施例提供的计算机设备的示意性框图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

图1是本申请实施例提供的负载均衡应用虚拟ip切换方法的流程示意图。如图1所示,该方法包括s101-s106。

s101,若灰度应用完成测试,根据第一预设规则从原应用的容器实例ip中确定第一预设数量的ip,其中,所述第一预设数量小于所述原应用的容器实例数量,所述灰度应用是在所述原应用的版本上添加新功能或者改进功能之后所形成的应用。

其中,灰度应用是在原应用的版本上添加新功能或者改进功能之后所形成的应用。灰度应用完成测试,理解为灰度应用可以成为一个全量升级的新版本。在本实施例中,灰度应用也可以简单理解为应用的一个新版本。

根据第一预设规则从原应用的容器实例ip中确定第一预设数量的ip,包括:获取所述原应用的容器实例ip和容器实例数量,根据第一预设规则从原应用的容器实例ip中确定第一预设数量的ip。

其中,获取原应用的容器实例ip和容器实例数量可通过多种方式。一般情况下,在该paas平台的服务器中保存有所有应用所创建的容器实例ip和容器实例数量,如此可从保存应用所创建的容器实例ip和容器实例数量的数据库或者文件中直接获取原应用的容器实例ip和容器实例数量。

其中,根据第一预设规则从原应用的容器实例ip中确定第一预设数量的ip,如可以从原应用的容器实例ip中随机确定第一预设数量的容器实例ip,也可以从原应用的容器实例ip中按照容器实例ip分配的先后顺序确定第一预设数量的容器实例ip,还可以从原应用的容器实例ip中优先确定不属于同一个网段中的容器实例ip(如某一个网段中的容器实例ip较多,那么优先从其他网段中获取第一预设数量的ip)、再按照随机或者容器实例ip分配的选后顺序确定第一预设数量的ip,还按照其他的规则选择第一预设数量的ip。其中,第一预设数量小于原应用的容器实例数量,如原应用的容器实例数量为8个,第一预设数量可以为4个等。其中,第一预设数量小于原应用的容器实例数量的目的是,在对原应用的第一预设数量的容器实例进行处理时,原应用仍然有容器实例(除了第一预设数量之外的其他容器实例)是正常运行的,正常运行的容器实例可以提供服务,如此,不会导致服务的中断。

在一实施例中,可开发一个对应的管理面板,以在管理面板上显示应用与应用的容器实例ip的对应关系。如此,通过调用管理面板,获取在管理面板上显示的原应用以及原应用的容器实例ip。从显示的原应用的容器实例ip中按照第一预设规则选择第一预设数量的容器实例ip,并接收按照第一预设规则选择的第一预设数量的容器实例ip作为所确定的第一预设数量的ip。

s102,停用所确定的第一预设数量的ip以及所述第一预设数量的ip所对应的容器实例,其中,所停用的所述第一预设数量的ip被回收到预设ip地址池。

其中,将所述原应用的容器实例ip和灰度应用的容器实例ip作为预设ip地址池。在一实施例中,在步骤s102之前,预先将原应用的容器实例ip和灰度应用的容器实例ip作为预设ip地址池,并设置原应用的容器实例和灰度应用的容器实例共享该预设ip地址池。如此,一旦一个ip被分配给原应用的容器实例和原应用的灰度应用的容器实例,那么该ip加入到共享的预设ip地址池中,同时该ip不能被其他应用占用,只可供原应用的容器实例和灰度应用的容器实例使用。设置原应用的容器实例ip和灰度应用的容器实例ip共享预设ip地址池是因为,一般情况下,一个应用的容器实例ip被停用之后,会被回收到空闲ip地址池,而空闲ip地址池的ip可以分配给任意一个容器应用使用。如此,若停用原应用的容器实例ip或者灰度应用的容器实例ip之后,停用的ip被回收到空闲ip地址池,不再属于原应用或者灰度应用了。而将原应用的容器实例ip和灰度应用的容器实例ip作为预设ip地址池,并设置原应用的容器实例ip和灰度应用的容器实例ip共享该预设ip地址池,那么预设ip地址池中的ip只属于原应用的容器实例和灰度应用的容器实例,不会被其他应用占用。

在确定了第一预设数量的容器实例ip后,停用所确定的容器实例ip以及容器实例ip所对应的容器实例。

在一实施例中,如图2所示,步骤s102包括以下步骤s1021-s1024。

s1021,设置所确定的第一预设数量的ip的使用状态标识为停用状态。

需要注意的是,将第一预设数量的ip设置的使用状态设置为停用状态,理解为该ip仍然属于该应用,不可以被其他应用使用。

s1022,销毁所述第一预设数量的ip所对应的容器实例。

如通过编排工具下发销毁指令到容器实例所对应的宿主机,销毁指令如dockerstop指令,在所对应的宿主机上将对应的容器实例进行销毁。其中,销毁容器实例也可理解为缩容容器实例,销毁容器实例将会释放该容器实例所占用的所有资源,如包括容器实例所对应的环境信息、关闭文件输入输出流、关闭与数据库的连接、修改其他数据库中保存的该容器实例的相关信息等。其中,编排工具如marathon等。

需要注意的是,首先停用容器实例的ip再销毁容器实例,而不是先销毁容器实例再停用容器实例的ip,是为了以防容器实例的ip有效,而容器实例无效,原应用的负载均衡应用将接收到的用户访问请求分配到该容器实例,而实际上该容器实例已经无效了,那么会导致用户访问请求的请求失败。

s1023,回收使用状态标识为停用状态的ip到预设ip地址池。

需要注意的是,该预设ip地址池中的ip是原应用与灰度应用可共享的ip。在该预设ip地址池中,使用状态标识为停用的ip不能被其他应用占用。

s1024,根据所述第一预设数量修改所述原应用的容器实例数量。

其中,修改后的容器实例数量为原应用的原容器实例数量减去第一预设数量。

需要注意的是,步骤s1023与步骤s1024的执行顺序并不严格限制,也可以先执行步骤s1024再执行步骤s1023。

s103,根据第二预设规则从预设ip地址池所停用的ip中确定第二预设数量的需启用的ip,其中,所述第二预设数量小于或者等于所停用的ip数量。

如可以从预设ip地址池中的使用状态标识为停用的ip中随机确定第二预设数量的容器实例ip,也可以从使用状态标识为停用的ip中按照ip使用状态标识改变为停用状态的先后顺序确定第二预设数量的容器实例ip等,还可以根据其他的规则确定第二预设数量的容器实例ip。其中,若第二预设数量小于所停用的ip数量,意味着将所停用的一部分ip用来分配给灰度应用新增的容器实例,意味着灰度应用需要新增容器实例的数量小于原应用销毁的容器实例的数量。若第二预设数量等于所停用的ip数量,意味着将所停用的所有ip用来分配给灰度应用新增的容器实例。那么意味着原应用有多少个容器实例销毁,那么灰度应用就需要新增多少个容器实例。

在一实施例中,预设ip地址池中所停用的ip可能大于本次所停用的第一预设数量的ip。那么可以理解为,在本次停用原应用的容器实例ip之前,还停用过原应用的容器实例ip或者还停用过灰度应用的容器实例ip,如此,导致预设ip地址池中所停用的ip大于本次所停用的第一预设数量的ip。

在一实施例中,若已开发对应的管理面板,在管理面板上可显示应用与应用的容器实例ip的对应关系、以及ip的使用状态标识。如此,获取并在管理面板上显示原应用和灰度应用所对应的容器ip以及容器ip的使用状态标识;从使用状态标识为停用的ip中选择第二预设数量的需启用的ip,接收所选择的需启用的ip作为所确定的需启用的ip。并从应用信息中选择灰度应用,如根据灰度应用所对应的应用名选择灰度应用,接收所选择的灰度应用,以进一步将需启用的ip分配给灰度应用。

s104,将需启用的ip分配给所述灰度应用新增的容器实例。

确定了需启用的ip后,将需启用的ip分配给新增的灰度应用的容器实例。

在一实施例中,如图3所示,所述s104包括以下步骤s1041-s1043。

s1041,根据所述灰度应用以及需启用的ip数量确定所述灰度应用需新增的容器实例所在的宿主机。

具体地,根据灰度应用确定灰度应用需新增的容器实例所在的区域,根据需启用的ip数量从所述区域中确定相同数量的需新增的灰度应用的容器实例的宿主机(宿主机ip)。其中,宿主机的数量与新增的容器实例的数量相同,新增的容器实例的数量与需启用的ip数量相同。

可以理解地,先确定灰度应用需启用的ip的数量,再根据需启用的ip的数量来确定灰度应用新增的容器实例数量,是因为启用ip是从预设ip地址池中的所停用的ip中获得的,所停用的ip的数量是有限的,不是无限的。因此,需要先根据第二预设数量的启用ip来确定新增的容器实例的数量。

s1042,在所确定的宿主机上创建所述灰度应用的容器实例。

具体地,发送新建命令到编排工具,以通过编排工具推送新建命令到对应的宿主机,并通过新建命令在对应的宿主机上新建灰度应用所对应的容器实例。其中,新建命令中包括有灰度应用的应用镜像等信息。

需要注意的是,不同区域的编排工具是不同的,根据灰度所在的区域确定所需要使用的编排工具。如此,编排工具与灰度应用所在的区域相同,也与新增灰度应用的容器实例的宿主机所在的区域相同,提高了新增容器实例的速度。将新建命令发送到所需要使用的编排工具上,以通过编排工具推送新建命令到对应的宿主机,并在对应的宿主机上创建灰度应用所对应的容器实例,将所创建的灰度应用的容器实例作为灰度应用新增的容器实例。

s1043,将需启用的ip分配给所述灰度应用新创建的容器实例。

具体地,通过运维工具如ansible工具去连接容器实例,将所创建的容器实例与需启用的ip进行绑定。

s105,在所述灰度应用所对应的负载均衡应用的配置文件中添加所述灰度应用新增的容器实例所对应的配置代码。

其中,灰度应用的负载均衡应用的类型包括f5、lvs、haproxy、nginx等。灰度应用的负载均衡应用的类型可以在paas平台数据库中获取。

在一实施例中,步骤s105包括:检测所述灰度应用所对应的负载均衡应用的类型;根据所述灰度应用所对应的负载均衡应用的类型,通过与所述类型相匹配的方式获取所述负载均衡应用的配置文件并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码。

其中,f5负载均衡应用是硬负载均衡应用,是在具体的f5设备上创建的,而lvs、haproxy、nginx负载均衡应用是软负载均衡应用,因此f5负载均衡应用和lvs、haproxy、nginx负载均衡应用获取配置文件的方式、对配置文件修改的方式、使配置文件生效的方式以及添加的配置代码等都存在不同。

在一实施例中,如图4所示,根据所述灰度应用所对应的负载均衡应用的类型,通过与所述类型相匹配的方式获取所述负载均衡应用的配置文件并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码的步骤,包括以下步骤s1051-s1058。

s1051,判断所述负载均衡应用的类型是否为f5。

s1052,若所述负载均衡应用的类型为f5,根据所述灰度应用确定f5负载均衡应用所在的f5设备。

s1053,在所述f5设备上获取所述f5负载均衡应用的配置文件,并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码。

在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码,包括:在配置文件中添加poolmember(新增的灰度应用的容器实例)的信息;修改pool信息中的member数量。其中,添加poolmember(新增的灰度应用的容器实例)的信息,包括新增的灰度应用的容器实例的ip地址、端口信息;将该容器实例启动,并修改容器实例的监听状态为运行(running)状态。其中,端口默认与之前存在的容器实例的端口相同,如80端口。其中,修改后的member数量为修改前的member数量与新增的灰度应用的容器实例的数量。

s1054,若所述负载均衡应用的类型为非f5,根据所述灰度应用确定所对应的所述负载均衡应用的容器,其中非f5负载均衡应用包括lvs负载均衡应用、haproxy负载均衡应用、nginx负载均衡应用。

根据所述灰度应用确定所述负载均衡应用的容器,可以理解为,根据灰度应用确定灰度应用所对应的负载均衡应用的负载均衡应用的容器的虚拟ip。

s1055,从对应的负载均衡应用的容器中获取配置文件,将所获取的配置文件下载到本地。

根据虚拟ip从对应容器中获取对应负载均衡应用的配置文件;将所获取的配置文件下载到本地的一个预设目录。需要注意的是,将所获取的配置文件下载到本地,以对配置文件进行修改,而不是直接远程在对应负载均衡应用容器上进行修改,是考虑到若在对配置文件进行修改的过程中,网络出现中断,那么改写的过程也会出现中断,即排除远程改写的过程中出现的意外情况对改写造成的影响,另一方面,在本地改写配置文件比在远程改写配置文件的速度要快。即在本地写文件的速度要比远程写文件的速度快,如至少不用通过网络进行传输。

s1056,在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码。

具体地,步骤s1056包括:获取对应的容器实例配置代码模板;在对应的容器实例配置代码模板中添加新增的灰度应用的容器实例的ip和端口信息(其中,端口默认与之前存在的容器实例的端口相同,如80端口)以形成新增的容器实例的配置代码;将新增的容器实例的配置代码追加到配置文件中最后一个容器实例的配置代码之后。

其中,lvs负载均衡应用、haproxy负载均衡应用、nginx应用应用所对应的容器实例配置代码模板不同。如lvs负载均衡应用中容器实例配置代码模板中包括容器实例ip信息、容器实例的端口信息(用于提供服务的端口信息)、该容器实例(即负载均衡应用的服务器)所对应的权重信息、该容器实例所对应的健康检查方式信息(包括连接超时时间、重连次数、重连间隔时间等)信息等,将配置代码模板中的容器实例ip参数、容器实例的端口参数以新增的灰度应用的容器实例的ip和端口进行替换,以形成新增的容器实例的配置代码,将新增的容器实例的配置代码追加到配置文件(该处的配置文件包括keepalived.conf)中最后一个容器实例的配置代码之后。如haproxy负载均衡应用中,配置代码模板可以是以server节点开头的一段代码,如server容器实例ip:容器实例的端口checkinter30000rise1fall2,将配置代码模板中的容器实例ip参数、容器实例的端口参数以新增的灰度应用的容器实例的ip和端口进行替换,以形成新增的容器实例的配置代码,将新增的容器实例的配置代码追加到配置文件(该处的配置文件包括haproxy.conf)中最后一个server代码段的后面,其中,可通过定位haproxy负载均衡应用的optionforwardfor节点中的server节点来定位最后一个server代码段。如在nginx负载均衡应用中,配置代码模板也是以server节点开头的一段代码,在配置代码模板中加入了新增的容器实例的ip和容器实例的端口后,加入到配置文件中最后一个容器实例的配置代码。其中,可以通过定位upstream节点中的server内容来定位配置文件中最后一个容器实例的配置代码。

s1057,将加入了所述配置代码的配置文件推送至对应的负载均衡应用的容器中。

s1058,重启对应的负载均衡应用的容器的负载均衡服务,以使得加入了所述配置代码的配置文件生效。

如可以用restart命令重启所对应的负载均衡应用的负载均衡服务。

该实施例进一步限定根据不同负载均衡应用的类型来确定不同的方式来实现在灰度应用的配置文件中加入灰度应用新增的容器实例所对应的配置代码。该实施例的过程自动完成,无需人工干预,提高了速度。

s106,将所述原应用的访问域名与所述原应用所对应的负载均衡应用的虚拟ip的对应关系解除,并将所述原应用的访问域名与所述灰度应用所对应的负载均衡应用的虚拟ip进行绑定,以实现通过所述原应用的访问域名来访问所述灰度应用。

具体地,在该paas平台的服务器中保存有原应用的访问域名与负载均衡应用的虚拟ip的对应关系。所述原应用的访问域名与所述原应用所对应的负载均衡应用的虚拟ip的对应关系解除,可以理解为删除所保存的原应用的访问域名与原应用所对应的负载均衡应用的虚拟ip的对应关系。将所述原应用的访问域名与所述灰度应用所对应的负载均衡应用的虚拟ip进行绑定,可以理解为在数据库中添加原应用的访问域名与所述灰度应用所对应的负载均衡应用的虚拟ip的对应关系。

在原应用的访问域名与原应用所对应的负载均衡应用的虚拟ip的对应关系解除之前,用户仍可以通过原应用的访问域名来访问原应用,即访问原应用的部分容器实例(除了第一预设数量的容器实例),如此,原应用所提供的服务不会中断。

在原应用的访问域名与所述灰度应用所对应的负载均衡应用的虚拟ip进行绑定之后,用户即可以通过原应用的访问域名来访问灰度应用所对应的容器实例,如此,灰度应用的容器实例即开始提供服务。

以下举例对本实施例的方案进行简单的说明。如原应用的容器实例数量为8个,灰度应用的容器实例数量为1个(假设默认创建的灰度应用的容器实例数量为1)。将原应用的容器实例ip和灰度应用的容器实例ip作为预设ip地址池,原应用的容器实例和灰度应用的容器实例共享该预设ip地址池,预设ip地址池中的ip数量为9个。若第一预设数量为5个,那么从原应用的容器实例ip中确定5个ip地址,销毁该5个ip地址所对应的容器实例,并将该5个ip地址回收到预设ip地址池,设置该5个ip地址的使用状态为停用状态。原应用还剩3个容器实例,在没有修改用户访问域名与原应用所对应的负载均衡应用的虚拟ip的对应关系之前,用户仍可以通过剩下的3个容器实例访问原应用。确定第二预设数量(小于或者等于第一预设数量),第二预设数量可以为1、或者2或者3或者4或者5。若第二预设数量为5个,那么可理解为所有回收的ip将被重新利用。新增5个灰度应用的容器实例,将5个停用状态的ip分配给灰度应用新增的5个容器实例。在灰度应用所对应的负载均衡应用的配置文件中添加新增的容器实例信息,如此灰度应用所对应的负载均衡应用的配置文件中就会存在6个灰度应用的容器实例(默认创建的1个容器实例和新增的5个容器实例)。将用户访问域名与原应用的负载均衡应用的vip的对应关系解除,在解除之前,用户通过访问域名仍可以访问原应用的另外3个容器实例,如此在切换的过程中,服务不会间断,因为还有另外3个容器实例存在,这3个容器实例可以继续提供服务。在解除之后,将用户访问域名与灰度应用所对应的负载均衡应用的vip绑定。如此,用户访问时不发生任何改变,通过原应用的访问域名即可访问灰度应用的6个容器实例。

上述方法实施例通过停用原应用的第一预设数量的容器实例,以及该第一预设数量的容器实例ip,再新增灰度应用的容器实例,从所停用的ip中获取第二预设数量的ip,并将第二预设数量的ip分配给灰度应用新增的容器实例,在灰度应用的负载均衡应用的配置文件中添加灰度应用新增的容器实例,并设置原应用的访问域名与灰度应用所对应的负载均衡应用的虚拟ip的对应关系。从而实现了将原应用的虚拟ip切换到灰度应用,通过原应用的访问域名来访问灰度应用。上述方法实施例快速地实现了原应用的下线,灰度应用的上线,在原应用和灰度应用的版本切换时不会导致服务的中断,实现了无痕切换,提高了版本切换的效率,提升了用户的体验。同时上述实施例无需修改访问域名,通过同一个访问域名(原应用的访问域名)就可以访问灰度应用。

在一实施例中,在步骤s101之前,所述负载均衡应用虚拟ip切换方法包括以下步骤:克隆原应用,并在克隆的原应用版本的基础上,添加新功能或者改进功能所对应的代码,以形成灰度应用镜像;根据所述原应用的容器实例的创建区域以及所述灰度应用镜像,在测试环境下所述区域中创建灰度应用的容器实例以及灰度应用所对应的负载均衡应用。

其中,克隆原应用,包括克隆原应用的代码,原应用所对应的配置文件、系统文件、分配的内存和cpu个数等等。克隆原版本的应用,以得到一个与原应用完全相同的应用。在该克隆的原应用版本的基础上,添加新功能或者改进功能所对应的代码,以形成灰度应用镜像。

另外,需要注意的是,原应用是可以对外提供服务的,因此原应用已经创建了对应的容器实例以及原应用所对应的负载均衡应用。如此,可获取原应用容器实例的创建区域,其中,创建区域指的是所创建的容器实例的机房位置等。在灰度应用通过简单测试(如开发人员的简单测试)后,将灰度应用推送到测试环境下与原应用容器实例创建区域相同区域下的灰度应用所对应的镜像仓库中。需要注意的是,每个不同的机房中会对应有不同应用环境的镜像仓库,如开发环境(该应用的容器实例创建成功后供内部开发使用)、生产环境(意味着该应用的容器实例创建成功后对接外部环境,或者供外部用户进行访问)、测试环境(意味着该应用的容器实例创建成功后供测试使用)。在创建灰度应用的容器实例时,可根据设置灰度应用容器实例数量(如果不进行设置,那么会使用默认的值,默认的值为1,即默认的灰度应用容器实例数量为1)并从对应镜像仓库中选择的灰度应用镜像,在所述区域创建对应数量的容器实例,并为所创建的容器实例分配相同数量的容器实例ip。

另外,若在创建灰度应用的容器实例的过程中,选择了创建负载均衡应用,那么会在创建灰度应用的容器实例的同时创建灰度应用所对应的负载均衡应用,并设置所创建的灰度应用和所创建的负载均衡应用的关联关系,同时会自动生成所创建的负载均衡应用的配置文件以及负载均衡应用所对应的域名。若在创建灰度应用的容器实例的过程中,没有选择创建负载均衡应用,那么在灰度应用的容器实例创建完成后,会为该灰度应用创建负载均衡应用。创建该灰度应用的负载均衡应用时会自动生成所创建的负载均衡应用的配置文件以及负载均衡应用所对应的域名。

该实施例进一步限定如何创建灰度应用的容器实例。

图5是本申请实施例提供的负载均衡应用虚拟ip切换装置的示意性框图。该装置包括用于执行上述负载均衡应用虚拟ip切换方法所对应的单元。具体地,如图5所示,该装置100包括停用ip确定单元101、停用单元102、启用ip确定单元103、启用单元104、添加单元105以及绑定单元106。

停用ip确定单元101,用于若灰度应用完成测试,根据第一预设规则从原应用的容器实例ip中确定第一预设数量的ip,其中,所述第一预设数量小于所述原应用的容器实例数量,所述灰度应用是在所述原应用的版本上添加新功能或者改进功能之后所形成的应用。

停用单元102,用于停用所确定的第一预设数量的ip以及所述第一预设数量的ip所对应的容器实例,其中,所停用的所述第一预设数量的ip被回收到预设ip地址池。

在一实施例中,如图6所示,停用单元102包括:ip状态设置单元1021、销毁单元1022、回收单元1023、数量修改单元1024。其中,ip状态设置单元1021,用于设置所确定的第一预设数量的ip的使用状态标识为停用状态。销毁单元1022,用于销毁所述第一预设数量的ip所对应的容器实例。回收单元1023,用于回收使用状态标识为停用状态的ip到预设ip地址池。数量修改单元1024,用于根据所述第一预设数量修改所述原应用的容器实例数量。

启用ip确定单元103,用于根据第二预设规则从预设ip地址池所停用的ip中确定第二预设数量的需启用的ip,其中,所述第二预设数量小于或者等于所停用的ip数量。

启用单元104,用于将需启用的ip分配给所述灰度应用新增的容器实例。

在一实施例中,如图7所示,启用单元104包括宿主机确定单元1041、创建单元1042、分配启用单元1043。其中,宿主机确定单元1041,用于根据所述灰度应用以及需启用的ip数量确定所述灰度应用需新增的容器实例所在的宿主机。创建单元1042,用于在所确定的宿主机上创建所述灰度应用的容器实例。分配启用单元1043,用于将需启用的ip分配给所述灰度应用新创建的容器实例。

添加单元105,用于在所述灰度应用所对应的负载均衡应用的配置文件中添加所述灰度应用新增的容器实例所对应的配置代码。

在一实施例中,所述添加单元105包括类型检测单元、配置加入单元。其中,类型检测单元,用于检测所述灰度应用所对应的负载均衡应用的类型。配置加入单元,用于根据所述灰度应用所对应的负载均衡应用的类型,通过与所述类型相匹配的方式获取所述负载均衡应用的配置文件并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码。

在一实施例中,如图8所示,配置加入单元1050包括类型判断单元1051、设备确定单元1052、配置代码加入单元1053、容器确定单元1054、配置下载单元1055、推送单元1056以及重启单元1057。其中,类型判断单元1051,用于判断所述负载均衡应用的类型是否为f5。设备确定单元1052,用于若所述负载均衡应用的类型为f5,根据所述灰度应用确定f5负载均衡应用所在的f5设备。配置代码加入单元1053,用于在所述f5设备上获取所述f5负载均衡应用的配置文件,并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码。容器确定单元1054,用于若所述负载均衡应用的类型为非f5,根据所述灰度应用确定所述负载均衡应用的容器,其中非f5负载均衡应用包括lvs负载均衡应用、haproxy负载均衡应用、nginx负载均衡应用。配置下载单元1055,用于从对应的负载均衡应用的容器中获取配置文件,将所获取的配置文件下载到本地。配置代码加入单元1053,还用于在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码。推送单元1056,用于将加入了所述配置代码的配置文件推送至对应的负载均衡应用的容器中。重启单元1057,用于重启对应的负载均衡应用的容器的负载均衡服务,以使得加入了所述配置代码的配置文件生效。

绑定单元106,用于将所述原应用的访问域名与所述原应用所对应的负载均衡应用的虚拟ip的对应关系解除,并将所述原应用的访问域名与所述灰度应用所对应的负载均衡应用的虚拟ip进行绑定,以实现通过所述原应用的访问域名来访问所述灰度应用。

在一实施例中,所述负载均衡应用虚拟ip切换装置还包括:灰度镜像形成单元、灰度应用创建单元。其中,灰度镜像形成单元,用于克隆原应用,并在克隆的原应用版本的基础上,添加新功能或者改进功能所对应的代码,以形成灰度应用镜像。灰度应用创建单元,用于根据所述原应用的容器实例的创建区域以及所述灰度应用镜像,在测试环境下所述区域中创建灰度应用的容器实例以及灰度应用所对应的负载均衡应用。

需要说明的是,所属领域的技术人员可以清楚地了解到,上述装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

上述装置可以实现为一种计算机程序的形式,计算机程序可以在如图9所示的计算机设备上运行。

图9为本申请实施例提供的一种计算机设备的示意性框图。该设备为终端等设备,如paas平台中的服务器等。该设备200包括通过系统总线201连接的处理器202、存储器和网络接口203,其中,存储器可以包括非易失性存储介质204和内存储器205。

该非易失性存储介质204可存储操作系统2041和计算机程序2042。该非易失性存储介质中所存储的计算机程序2042被处理器202执行时,可实现上述所述的负载均衡应用虚拟ip切换方法。该处理器202用于提供计算和控制能力,支撑整个设备200的运行。该内存储器205为非易失性存储介质中的计算机程序的运行提供环境,该计算机程序被处理器202执行时,可使得处理器202执行上述所述的负载均衡应用虚拟ip切换方法。该网络接口203用于进行网络通信。本领域技术人员可以理解,图中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的设备的限定,具体的设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器202用于运行存储在存储器中的计算机程序,以实现如下步骤:

若灰度应用完成测试,根据第一预设规则从原应用的容器实例ip中确定第一预设数量的ip,其中,所述第一预设数量小于所述原应用的容器实例数量,所述灰度应用是在所述原应用的版本上添加新功能或者改进功能之后所形成的应用;停用所确定的第一预设数量的ip以及所述第一预设数量的ip所对应的容器实例,其中,所停用的所述第一预设数量的ip被回收到预设ip地址池;根据第二预设规则从预设ip地址池所停用的ip中确定第二预设数量的需启用的ip,其中,所述第二预设数量小于或者等于所停用的ip数量;将需启用的ip分配给所述灰度应用新增的容器实例;在所述灰度应用所对应的负载均衡应用的配置文件中添加所述灰度应用新增的容器实例所对应的配置代码;将所述原应用的访问域名与所述原应用所对应的负载均衡应用的虚拟ip的对应关系解除,并将所述原应用的访问域名与所述灰度应用所对应的负载均衡应用的虚拟ip进行绑定,以实现通过所述原应用的访问域名来访问所述灰度应用。

在一实施例中,所述处理器202在执行所述停用所确定的第一预设数量的ip以及所述第一预设数量的ip所对应的容器实例的步骤时,具体实现如下步骤:

设置所确定的第一预设数量的ip的使用状态标识为停用状态;销毁所述第一预设数量的ip所对应的容器实例;回收使用状态标识为停用状态的ip到预设ip地址池;根据所述第一预设数量修改所述原应用的容器实例数量。

在一实施例中,所述处理器202在执行所述将需启用的ip分配给所述灰度应用新增的容器实例的步骤时,具体实现如下步骤:

根据所述灰度应用以及需启用的ip数量确定所述灰度应用需新增的容器实例所在的宿主机;在所确定的宿主机上创建所述灰度应用的容器实例;将需启用的ip分配给所述灰度应用新创建的容器实例。

在一实施例中,所述处理器202在执行所述在所确定的宿主机上创建所述灰度应用的容器实例的步骤时,具体实现如下步骤:

发送新建命令到编排工具,以通过所述编排工具推送所述新建命令到所确定的宿主机,并通过所述新建命令在对应的宿主机上创建所述灰度应用所对应的容器实例,其中,所述新建命令中包括灰度应用的镜像信息。

在一实施例中,所述处理器202在执行所述若灰度应用完成测试的步骤之前,还实现如下步骤:

克隆原应用,并在克隆的原应用版本的基础上,添加新功能或者改进功能所对应的代码,以形成灰度应用镜像;根据所述原应用的容器实例的创建区域以及所述灰度应用镜像,在测试环境下所述区域中创建灰度应用的容器实例以及灰度应用所对应的负载均衡应用。

在一实施例中,所述处理器202在执行所述在所述灰度应用所对应的负载均衡应用的配置文件中添加所述灰度应用新增的容器实例的配置代码的步骤时,具体实现如下步骤:

检测所述灰度应用所对应的负载均衡应用的类型;根据所述灰度应用所对应的负载均衡应用的类型,通过与所述类型相匹配的方式获取所述负载均衡应用的配置文件并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码。

在一实施例中,所述处理器202在执行所述根据所述灰度应用所对应的负载均衡应用的类型,通过与所述类型相匹配的方式获取所述负载均衡应用的配置文件并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码的步骤时,具体实现如下步骤:

若所述负载均衡应用的类型为f5,根据所述灰度应用确定f5负载均衡应用所在的f5设备;在所述f5设备上获取所述f5负载均衡应用的配置文件,并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码;若所述负载均衡应用的类型为非f5,根据所述灰度应用确定所述负载均衡应用的容器,其中非f5负载均衡应用包括lvs负载均衡应用、haproxy负载均衡应用、nginx负载均衡应用;从对应的负载均衡应用的容器中获取配置文件,将所获取的配置文件下载到本地;在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码;将加入了所述配置代码的配置文件推送至对应的负载均衡应用的容器中;重启对应的负载均衡应用的容器的负载均衡服务,以使得加入了所述配置代码的配置文件生效。

应当理解,在本申请实施例中,所称处理器202可以是中央处理单元(centralprocessingunit,cpu),该处理器还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(应用程序licationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序可存储于一存储介质中,该存储介质可以为计算机可读存储介质。该计算机程序被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。

因此,本申请还提供了一种存储介质。该存储介质可以为计算机可读存储介质,该计算机可读存储介质包括非易失性计算机可读存储介质。该存储介质存储有计算机程序,该计算机程序当被处理器执行时实现以下步骤:

若灰度应用完成测试,根据第一预设规则从原应用的容器实例ip中确定第一预设数量的ip,其中,所述第一预设数量小于所述原应用的容器实例数量,所述灰度应用是在所述原应用的版本上添加新功能或者改进功能之后所形成的应用;停用所确定的第一预设数量的ip以及所述第一预设数量的ip所对应的容器实例,其中,所停用的所述第一预设数量的ip被回收到预设ip地址池;根据第二预设规则从预设ip地址池所停用的ip中确定第二预设数量的需启用的ip,其中,所述第二预设数量小于或者等于所停用的ip数量;将需启用的ip分配给所述灰度应用新增的容器实例;在所述灰度应用所对应的负载均衡应用的配置文件中添加所述灰度应用新增的容器实例所对应的配置代码;将所述原应用的访问域名与所述原应用所对应的负载均衡应用的虚拟ip的对应关系解除,并将所述原应用的访问域名与所述灰度应用所对应的负载均衡应用的虚拟ip进行绑定,以实现通过所述原应用的访问域名来访问所述灰度应用。

在一实施例中,所述处理器在执行所述停用所确定的第一预设数量的ip以及所述第一预设数量的ip所对应的容器实例的步骤时,具体实现如下步骤:

设置所确定的第一预设数量的ip的使用状态标识为停用状态;销毁所述第一预设数量的ip所对应的容器实例;回收使用状态标识为停用状态的ip到预设ip地址池;根据所述第一预设数量修改所述原应用的容器实例数量。

在一实施例中,所述处理器在执行所述将需启用的ip分配给所述灰度应用新增的容器实例的步骤时,具体实现如下步骤:

根据所述灰度应用以及需启用的ip数量确定所述灰度应用需新增的容器实例所在的宿主机;在所确定的宿主机上创建所述灰度应用的容器实例;将需启用的ip分配给所述灰度应用新创建的容器实例。

在一实施例中,所述处理器在执行所述在所确定的宿主机上创建所述灰度应用的容器实例的步骤时,具体实现如下步骤:

发送新建命令到编排工具,以通过所述编排工具推送所述新建命令到所确定的宿主机,并通过所述新建命令在对应的宿主机上创建所述灰度应用所对应的容器实例,其中,所述新建命令中包括灰度应用的镜像信息。

在一实施例中,所述处理器在执行所述若灰度应用完成测试的步骤之前,还实现如下步骤:

克隆原应用,并在克隆的原应用版本的基础上,添加新功能或者改进功能所对应的代码,以形成灰度应用镜像;根据所述原应用的容器实例的创建区域以及所述灰度应用镜像,在测试环境下所述区域中创建灰度应用的容器实例以及灰度应用所对应的负载均衡应用。

在一实施例中,所述处理器在执行所述在所述灰度应用所对应的负载均衡应用的配置文件中添加所述灰度应用新增的容器实例的配置代码的步骤时,具体实现如下步骤:

检测所述灰度应用所对应的负载均衡应用的类型;根据所述灰度应用所对应的负载均衡应用的类型,通过与所述类型相匹配的方式获取所述负载均衡应用的配置文件并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码。

在一实施例中,所述处理器所述根据所述根据所述灰度应用所对应的负载均衡应用的类型,通过与所述类型相匹配的方式获取所述负载均衡应用的配置文件并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码的步骤时,具体实现如下步骤:

若所述负载均衡应用的类型为f5,根据所述灰度应用确定f5负载均衡应用所在的f5设备;在所述f5设备上获取所述f5负载均衡应用的配置文件,并在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码;若所述负载均衡应用的类型为非f5,根据所述灰度应用确定所述负载均衡应用的容器,其中非f5负载均衡应用包括lvs负载均衡应用、haproxy负载均衡应用、nginx负载均衡应用;从对应的负载均衡应用的容器中获取配置文件,将所获取的配置文件下载到本地;在所述配置文件中加入所述灰度应用新增的容器实例所对应的配置代码;将加入了所述配置代码的配置文件推送至对应的负载均衡应用的容器中;重启对应的负载均衡应用的容器的负载均衡服务,以使得加入了所述配置代码的配置文件生效。

所述存储介质可以是u盘、移动硬盘、只读存储器(read-onlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置、设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

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