CN111324361A - 一种应用升级方法及设备 - Google Patents
一种应用升级方法及设备 Download PDFInfo
- Publication number
- CN111324361A CN111324361A CN201811531989.3A CN201811531989A CN111324361A CN 111324361 A CN111324361 A CN 111324361A CN 201811531989 A CN201811531989 A CN 201811531989A CN 111324361 A CN111324361 A CN 111324361A
- Authority
- CN
- China
- Prior art keywords
- application
- upgrading
- starting
- container instance
- upgrade
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 71
- 230000008569 process Effects 0.000 claims abstract description 36
- 230000015654 memory Effects 0.000 claims description 17
- 238000012545 processing Methods 0.000 claims description 8
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 238000004590 computer program Methods 0.000 claims description 4
- 238000005096 rolling process Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种应用升级方法及设备,用于保证业务能够在升级和更新过程中持续提供服务不中断。其中的应用升级方法包括:接收到针对第一应用进行的升级指令时,获取用于所述第一应用升级的镜像包;其中,所述镜像包包括所述第一应用的升级文件和/或配置文件;将所述镜像包分发给至少一个集群目标节点;从所述至少一个集群目标节点中选择第一集群目标节点,并基于所述第一集群目标节点根据所述镜像包创建并启动至少一个新容器实例,其中,所述至少一个新容器实例用于升级第一应用。
Description
技术领域
本发明涉及升级技术领域,特别涉及一种应用升级方法及设备。
背景技术
服务器集群大量使用到Docker容器运行应用,进而提供服务。应用调度服务器会将应用部署到服务器集群的各个集群节点。使用Docker容器的服务器集群在长时间运行应用后,在此期间应用可能会升级。
为了保证应用升级过程中,业务能够在升级和更新过程中持续提供服务不中断。现有技术将升级的文件存储在应用可以访问的路径,通过记载工具例如hotswap进行加载,以实现应用的升级。但是这种升级方式只能针对应用代码的升级,而如果是配置文件的升级或修改应用启动阶段的缓存,就需要重启应用实例,那么就会导致业务在升级和更新过程中无法持续提供服务而导致中断。
可见,目前的应用升级无法保证业务能够在升级和更新过程中持续提供服务不中断。
发明内容
本发明实施例提供一种应用升级方法及设备,用于保证业务能够在升级和更新过程中持续提供服务不中断。
第一方面,本发明实施例提供了一种应用升级方法,应用于集群节点,该应用升级方法包括:
接收到针对第一应用进行的升级指令时,获取用于所述第一应用升级的镜像包;其中,所述镜像包包括所述第一应用的升级文件和/或配置文件;
将所述镜像包分发给至少一个集群目标节点;
从所述至少一个集群目标节点中选择第一集群目标节点,并基于所述第一集群目标节点根据所述镜像包创建并启动至少一个新容器实例,其中,所述至少一个新容器实例用于升级第一应用。
本发明实施例中,镜像包除了包括升级文件之外还可以包括配置文件,从容根据该镜像包创建新容器实例,不需要中断业务就可以通过新容器实例实现对第一应用的升级。相较于现有技术中通过hotswap进行加载升级文件只能针对应用代码的升级,需要重启应用实例才能实现配置文件的升级而导致中断业务来说,既可以实现针对配置文件的升级又可以保证业务不中断。
可选的,接收到针对第一应用进行的升级指令时,获取用于所述第一应用升级的镜像包,包括:
接收到针对第一应用进行的升级指令时,向服务器发送请求消息,其中,所述请求消息用于请求获取所述第一应用的最新镜像包;
接收来自所述服务器的所述最新镜像包,或者,从所述服务器发送的多个镜像包中选取所述最新镜像包。
本发明实施例中,服务器可以存储针对第一应用的多个镜像包,向客户端反馈最新镜像包,也可以向客户端反馈多个镜像包供用户从中选取最新镜像包,较为灵活。
可选的,还包括:
接收删除指令;
根据所述删除指令,删除所述至少一个旧容器实例;其中,所删除的所述旧容器实例的数量与所述新容器实例的数量相同。
可选的,根据所述删除指令,删除所述至少一个旧容器实例,包括:
向当前容器实例运行的第一进程发送程序终止信号;
根据所述程序终止信号中携带的进程号注销所述至少一个旧容器实例,其中,一个进程号对应一个旧容器实例。
由于通过新镜像包创建了新容器实例,那么随着应用的升级创建的容器实例较多,这就占用了较多存储空间,所以本发明实施例创建了新容器实例之后,可以将旧容器实例注销,以节约存储空间。
可选的,还包括:
接收用于重新启动容器实例的重启指令,其中,所述重启指令携带的应用消息指示第二应用;
根据所述第二应用的类型,确定与所述第二应用对应的启动方式,以通过所述启动方式启动所述第二应用。
可选的,根据所述第二应用的类型,确定与所述第二应用对应的启动方式,以通过所述启动方式启动所述第二应用,包括:
若所述第二应用为远程调用类应用,则以第一启动方式启动所述第二应用;其中,所述第一启动方式通过连接池中的第一连接地址启动所述第二应用,且若所述第一连接地址不可用时,则通过第二连接地址启动所述第二应用;
若所述第二应用为WEB类应用,则以第二启动方式启动所述第二应用;其中,所述第二启动方式基于预先设置的应用启动规则确定的本地链路地址启动所述第二应用。本发明实施例中,针对不同类型的应用可以选择不同的启动方式,以尽量保证重启过程中,业务不中断。
第二方面,本发明实施例提供了一种应用升级设备,包括集群节点,所述应用升级设备包括:
接收单元,用于接收到针对第一应用进行的升级指令时,获取用于所述第一应用升级的镜像包;其中,所述镜像包包括所述第一应用的升级文件和/或配置文件;
分发单元,用于将所述镜像包分发给至少一个集群目标节点;
启动单元,用于从所述至少一个集群目标节点中选择第一集群目标节点,并基于所述第一集群目标节点根据所述镜像包创建并启动至少一个新容器实例,其中,所述至少一个新容器实例用于升级第一应用。
可选的,所述接收单元具体用于:
接收到针对第一应用进行的升级指令时,向服务器发送请求消息,其中,所述请求消息用于请求获取所述第一应用的最新镜像包;
接收来自所述服务器的所述最新镜像包,或者,从所述服务器发送的多个镜像包中选取所述最新镜像包。
可选的,还包括删除单元,用于:
接收删除指令;
根据所述删除指令,删除所述至少一个旧容器实例;其中,所删除的所述旧容器实例的数量与所述新容器实例的数量相同。
可选的,所述删除单元具体用于:
向当前容器实例运行的第一进程发送程序终止信号;
根据所述程序终止信号中携带的进程号注销所述至少一个旧容器实例,其中,一个进程号对应一个旧容器实例。
可选的,所述启动单元还用于:
接收用于重新启动容器实例的重启指令,其中,所述重启指令携带的应用消息指示第二应用;
根据所述第二应用的类型,确定与所述第二应用对应的启动方式,以通过所述启动方式启动所述第二应用。
可选的,所述启动单元具体用于:
若所述第二应用为远程调用类应用,则以第一启动方式启动所述第二应用;其中,所述第一启动方式通过连接池中的第一连接地址启动所述第二应用,且若所述第一连接地址不可用时,则通过第二连接地址启动所述第二应用;
若所述第二应用为WEB类应用,则以第二启动方式启动所述第二应用;其中,所述第二启动方式基于预先设置的应用启动规则确定的本地链路地址启动所述第二应用。
第三方面,本发明实施例提供一种应用升级设备,包括集群节点,所述应用升级设备包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如第一方面任一项所述的方法。
第四方面,提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一项所述的方法。
本发明实施例中,镜像包除了包括升级文件之外还可以包括配置文件,从容根据该镜像包创建新容器实例,不需要中断业务就可以通过新容器实例实现对第一应用的升级。相较于现有技术中通过hotswap进行加载升级文件只能针对应用代码的升级,需要重启应用实例才能实现配置文件的升级而导致中断业务来说,既可以实现针对配置文件的升级又可以保证业务不中断。
附图说明
图1是本发明实施例提供的应用升级的方法流程示意图;
图2为现有技术提供的应用升级的框架示意图;
图3为本发明实施例提供的应用升级设备的一种结构示意图;
图4为本发明实施例提供的应用升级设备的一种结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
现有技术将升级的文件存储在应用可以访问的路径,通过记载工具例如hotswap进行加载,以实现应用的升级。但是这种升级方式只能针对应用代码的升级,而如果是配置文件的升级或修改应用启动阶段的缓存,就需要重启应用实例,那么就会导致业务在升级和更新过程中无法持续提供服务而导致中断。
鉴于此,本发明实施例提供了一种应用升级方法,该方法中,镜像包除了包括升级文件之外还可以包括配置文件,从而根据该镜像包创建新容器实例,不需要中断业务就可以通过新容器实例实现对第一应用的升级。相较于现有技术中通过hotswap进行加载升级文件只能针对应用代码的升级,需要重启应用实例才能实现配置文件的升级而导致中断业务来说,既可以实现针对配置文件的升级又可以保证业务不中断。
下面结合说明书附图介绍本发明实施例提供的技术方案。
请参见图1,本发明实施例提供了一种应用升级方法,该应用升级方法可以应用于管理平台ACC,具体的流程描述如下:
S101、接收到针对第一应用进行的升级指令时,获取用于第一应用升级的镜像包,其中,镜像包包括第一应用的升级文件和/或配置文件。
本发明实施例旨在针对容器封装的应用进行升级,事先通过容器封装了多个应用及其各自的运行环境。如果要针对某个应用,例如第一应用进行升级,则用户可以向ACC输入针对第一应用的升级指令。当ACC接收到升级指令之后,则ACC可以通过与第一应用对应的容器向网络请求从镜像仓库中请求第一应用的新版本的镜像包,该镜像包可以是第一应用的代码重新编译生成的升级文件包,也可以是第一应用的新的配置文件,其中新的配置文件可以包括启动第一应用在初始化阶段进行的缓存等,或者,镜像包既可以包括升级文件,又可以包括配置文件,还可以包括第一应用升级依赖的其它文件。
目前采用容器升级第一应用,如图2所示为现有技术升级第一应用的框架示意图。在图2中,当需要对第一应用进行升级时,针对镜像A包会通过调度已经启动运行中的容器实例A,利用热加载工具hotswap从访问路径中加载新的代码编译形成的字节码文件。这种热部署方式仅限于修改代码,而不能添加新的集成的功能代码,也不能修改其他任何东西。且由于热部署方式是通过调度已经启动运行中的容器实例A加载的字节码文件,而没有替换掉第一应用的旧的镜像文件,所以如果容器实例A被重新调度,例如调度容器实例B时,那么容器实例B运行的代码还是第一应用未升级前的代码,此时第一应用的升级也会失效(图2中用×示意容器实例B不能加载变更后的字节码文件)。且现有技术中,热部署只是涉及到代码部分,而系统程序一般都会需要相关的配置文件,针对配置文件的修改就必须重启应用,而且针对系统在初始化阶段进行的缓存的修改也是必须重启应用,因此会导致中断业务。而本发明实施例中,镜像包除了包括升级文件之外还可以包括配置文件,从而根据该镜像包创建新容器实例,不需要中断业务就可以通过新容器实例实现对第一应用的升级。
本发明实施例中,ACC接收到针对第一应用进行的升级指令时,可以向服务器发送请求消息,以请求获取第一应用的最新镜像包。而服务器接收到请求消息之后,可以向ACC发送第一应用的最新镜像包。或者,服务器也可以向ACC发送第一应用的所有镜像包,以便用户可以从所有的镜像包选取最新镜像包,较为灵活。可能的实施方式中,ACC接收到针对第一应用进行的升级指令时,可以输出输入框,以供用户直接输入最新镜像包,例如镜像包的名称、版本号等信息,这样就不需要向服务器查询,能够更快地获取到最新镜像包。
S102、将镜像包分发给至少一个集群目标节点。
ACC获取了最新镜像包之后,可以将镜像包分发给至少一个集群目标节点,以通过至少一个集群目标节点创建或启动新的容器实例,实现第一应用的升级。具体地,S103、从至少一个集群目标节点中选择第一集群目标节点,并基于第一集群目标节点根据镜像包创建并启动至少一个新容器实例,其中,至少一个新容器实例用于升级第一应用。
ACC可以根据配置参数,例如ACC当前集群所包括的容器实例数量,从至少一个集群目标节点中选择一个集群目标节点,使用获取的最新镜像包创建并启动当前集群一定比例的新容器实例,用于第一应用的升级。新容器实例启动后等待ACC或者其他可能的测试组件对其的测试,例如是否能够升级第一应用,或者其注册的服务是不是满足第一应用的需求,如果测试结果指示新容器实例无障碍,可以用于第一应用的升级,且可以满足第一应用的需求,此时新容器实例和旧容器实例可以共存,同时提供第一应用的服务。而如果测试结果指示新容器实例不能够用于第一应用的升级,或者不满足第一应用的需求,此时向ACC输出提示信息,以提示新容器实例不可用,提醒用户重新对第一应用执行升级操作。
由于通过新镜像包创建了新容器实例,那么随着应用的升级创建的容器实例较多,这就占用了较多存储空间,所以本发明实施例中可以删除不需要的旧容器实例。具体地,ACC可以向旧容器实例发送删除指令,以删除至少一个旧容器实例。ACC可以向与新容器实例的数量相同的多个旧容器实例发送删除指令,例如TASK_KILLING指令,以删除与新容器实例数量相同的旧容器实例,尽量节约存储空间。
可能的实施方式中,旧容器实例接收到删除指令之后,可以向当前旧容器实例中运行的1号进程发送程序终止信号,例如SIGTERM信号,该SIGTERM信号携带有旧容器实例的进程ID。其中,一个进程号对应一个旧容器实例。1号进程可以捕获SIGTERM信号,并开始针对SIGTERM信号进行处理,通知当前应用将自身从负载/注册中心移除,以注销至少一个旧容器实例。在这个过程中,当前应用已经接受的请求继续保持处理,并且不再接收任何新的请求。
本发明实施例中,在需要对多个应用进行滚动升级时,可以向ACC触发滚动升级指令,针对每个应用的升级如上述对第一应用的升级过程,这里不再赘述。在滚动升级应用时,进程将继续执行已经接收的请求,直到当前应用所有的请求都完成处理,进程自行退出,或者系统等待taskKillGracePeriodSeconds设定的时间,当时间耗尽但是应用尚未自行退出时,会将应用直接终止,这样就可以完成了多个应用的滚动升级。具体地,ACC检查整个集群中是否所有的容器实例都更新到最新,如果存在还有未更新的容器实例,则持续上面的动作,直到所有的容器实例都运行新的版本,完成滚动升级。
滚动升级过程中,涉及到应用本身需要保持连接或者重发连接等情况,不同类型的应用可能出现的情况也不一样。例如,对于远程调用类应用,在注册机制下因为断开连接需要立刻移除,并且已经建立的连接会保持到业务处理结束。但是远程调用类应用如果已经移除,因为可能存在通知的延时,导致客户端并不知道,仍旧使用旧的地址进行连接,将无法实现远程调用类应用的重启。对于WEB类应用,启动新的容器实例会通知软负载层(HaProxy)进行重新载入,其中,Haproxy支持快速重载,当一个新的HAProxy实例启动时,则会尝试使用SO_REUSEPORT去绑定旧HAProxy监听的相同端口,并给旧HAProxy实例发送信号去关闭。这个过程会经历一个短暂的时隙,即当两个进程都绑定到端口时,在这个关键的时隙中,由于Linux内核自身(丢弃)处理多个接受进程的方式可能有流量会被丢掉,可能会导致从旧HAProxy过来的新连接有一个复位RST,这是由于SYN包在旧HAProxy实例被调用关闭前会被先放进其套接字队列中,从而导致了这些连接的RST。
而本发明实施例中,ACC接收用于重新启动容器实例的重启指令时,以重新启动第二应用,可以根据第二应用的类型,确定与第二应用对应的启动方式,以通过启动方式启动第二应用,尽量保证重启过程中业务不会中断。
可能的实施方式中,如果第二应用为远程调用类应用,则以第一启动方式启动第二应用,其中,第一启动方式通过连接池中的第一连接地址启动第二应用,且若第一连接地址不可用时,则通过第二连接地址启动第二应用。如果第二应用为WEB类应用,则以第二启动方式启动第二应用,其中,第二启动方式基于预先设置的应用启动规则确定的本地链路地址启动第二应用。
例如,针对远程调用类应用,采用连接重试的机制进行处理,即ACC发现连接池中的连接不可使用时,将该连接不可用计数器+1,并尝试使用下一个连接。如果连接池维护不可用计数器达到限额的,则移除连接池。
针对WEB类应用,本发明实施例重载HAProxy之前,可以使用tc和nl-qdisc-add设置队列规则,也就是容器实例的加载规则。所有的SYN包可以通过iptables被路由到通道,这样就可以使用一个本地链路地址,以便在重载时重定向想要的流量。重载前缓存SYN,然后在重载后释放所有SYN,这将导致任何尝试在重启过程中尝试建立的连接经历一个延迟,这个延迟等于HAProxy重启时间,从而WEB容器能够保证当前业务执行结束后停止。本发明实施例可以通过shutdown的方式来停止容器,这种方式会依次停止所有非守护线程,直到所有的非守护线程退出后才会真正的退出。容器进入TASK_KILL状态时,需要通知到软负载层,软负载层需要立即停止到该容器的流量转发。
综上,本发明实施例中,镜像包除了包括升级文件之外还可以包括配置文件,从而根据该镜像包创建新容器实例,不需要中断业务就可以通过新容器实例实现对第一应用的升级。相较于现有技术中通过hotswap进行加载升级文件只能针对应用代码的升级,需要重启应用实例才能实现配置文件的升级而导致中断业务来说,既可以实现针对配置文件的升级又可以保证业务不中断。
下面结合说明书介绍本发明实施例提供的设备。
请参见图3,基于同一发明构思,本发明一实施例提供一种应用升级设备,包括集群节点,该应用升级设备可以是客户端,该应用升级设备可以包括接收单元301、分发单元302和启动单元303,其中,接收单元301用于接收到针对第一应用进行的升级指令时,获取用于第一应用升级的镜像包;其中,镜像包包括第一应用的升级文件和/或配置文件;分发单元302用于将镜像包分发给至少一个集群目标节点;启动单元303,用于从至少一个集群目标节点中选择第一集群目标节点,并基于第一集群目标节点根据镜像包创建并启动至少一个新容器实例,其中,至少一个新容器实例用于升级第一应用。
可选的,接收单元301具体用于:
接收到针对第一应用进行的升级指令时,向服务器发送请求消息,其中,请求消息用于请求获取第一应用的最新镜像包;
接收来自服务器的最新镜像包,或者,从服务器发送的多个镜像包中选取最新镜像包。
可选的,还包括删除单元,用于:
接收删除指令;
根据删除指令,删除至少一个旧容器实例;其中,所删除的旧容器实例的数量与新容器实例的数量相同。
可选的,删除单元具体用于:
向当前容器实例运行的第一进程发送程序终止信号;
根据程序终止信号中携带的进程号注销至少一个旧容器实例,其中,一个进程号对应一个旧容器实例。
可选的,启动单元303还用于:
接收用于重新启动容器实例的重启指令,其中,重启指令携带的应用消息指示第二应用;
根据第二应用的类型,确定与第二应用对应的启动方式,以通过启动方式启动第二应用。
可选的,启动单元303具体用于:
若第二应用为远程调用类应用,则以第一启动方式启动第二应用;其中,第一启动方式通过连接池中的第一连接地址启动第二应用,且若第一连接地址不可用时,则通过第二连接地址启动第二应用;
若第二应用为WEB类应用,则以第二启动方式启动第二应用;其中,第二启动方式基于预先设置的应用启动规则确定的本地链路地址启动第二应用。
请参见图4,基于同一发明构思,本发明一实施例提供一种应用升级设备,包括集群节点,该应用升级设备可以是客户端,该应用升级设备可以包括:至少一个处理器401,处理器401用于执行存储器中存储的计算机程序时实现本发明实施例提供的如图1所示的应用升级方法的步骤。
可选的,处理器401具体可以是中央处理器、特定应用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC),可以是一个或多个用于控制程序执行的集成电路。
可选的,该应用升级设备还包括与至少一个处理器连接的存储器402,存储器402可以包括只读存储器(英文:Read Only Memory,简称:ROM)、随机存取存储器(英文:RandomAccess Memory,简称:RAM)和磁盘存储器。存储器402用于存储处理器401运行时所需的数据,即存储有可被至少一个处理器401执行的指令,至少一个处理器401通过执行存储器402存储的指令,执行如图1所示的方法。其中,存储器402的数量为一个或多个。其中,存储器402在图4中一并示出,但需要知道的是存储器402不是必选的功能模块,因此在图4中以虚线示出。
其中,接收单元301、分发单元302和启动单元303所对应的实体设备均可以是前述的处理器401。该密文检索设备可以用于执行图1所示的实施例所提供的方法。因此关于该设备中各功能模块所能够实现的功能,可参考图1所示的实施例中的相应描述,不多赘述。
本发明实施例还提供一种计算机存储介质,其中,计算机存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行如图1的方法。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(UniversalSerial Bus flash disk)、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种应用升级方法,应用于集群节点,其特征在于,所述应用升级包括:
接收到针对第一应用进行的升级指令时,获取用于所述第一应用升级的镜像包;其中,所述镜像包包括所述第一应用的升级文件和/或配置文件;
将所述镜像包分发给至少一个集群目标节点;
从所述至少一个集群目标节点中选择第一集群目标节点,并基于所述第一集群目标节点根据所述镜像包创建并启动至少一个新容器实例,其中,所述至少一个新容器实例用于升级第一应用。
2.如权利要求1所述的方法,其特征在于,接收到针对第一应用进行的升级指令时,获取用于所述第一应用升级的镜像包,包括:
接收到针对第一应用进行的升级指令时,向服务器发送请求消息,其中,所述请求消息用于请求获取所述第一应用的最新镜像包;
接收来自所述服务器的所述最新镜像包,或者,从所述服务器发送的多个镜像包中选取所述最新镜像包。
3.如权利要求2所述的方法,其特征在于,还包括:
接收删除指令;
根据所述删除指令,删除所述至少一个旧容器实例;其中,所删除的所述旧容器实例的数量与所述新容器实例的数量相同。
4.如权利要求3所述的方法,其特征在于,根据所述删除指令,删除所述至少一个旧容器实例,包括:
向当前容器实例运行的第一进程发送程序终止信号;
根据所述程序终止信号中携带的进程号注销所述至少一个旧容器实例,其中,一个进程号对应一个旧容器实例。
5.如权利要求1-4任一所述的方法,其特征在于,还包括:
接收用于重新启动容器实例的重启指令,其中,所述重启指令携带的应用消息指示第二应用;
根据所述第二应用的类型,确定与所述第二应用对应的启动方式,以通过所述启动方式启动所述第二应用。
6.如权利要求5所述的方法,其特征在于,根据所述第二应用的类型,确定与所述第二应用对应的启动方式,以通过所述启动方式启动所述第二应用,包括:
若所述第二应用为远程调用类应用,则以第一启动方式启动所述第二应用;其中,所述第一启动方式通过连接池中的第一连接地址启动所述第二应用,且若所述第一连接地址不可用时,则通过第二连接地址启动所述第二应用;
若所述第二应用为WEB类应用,则以第二启动方式启动所述第二应用;其中,所述第二启动方式基于预先设置的应用启动规则确定的本地链路地址启动所述第二应用。
7.一种应用升级设备,包括集群节点,其特征在于,所述应用升级设备包括:
接收单元,用于接收到针对第一应用进行的升级指令时,获取用于所述第一应用升级的镜像包;其中,所述镜像包包括所述第一应用的升级文件和/或配置文件;
分发单元,用于将所述镜像包分发给至少一个集群目标节点;
启动单元,用于从所述至少一个集群目标节点中选择第一集群目标节点,并基于所述第一集群目标节点根据所述镜像包创建并启动至少一个新容器实例,其中,所述至少一个新容器实例用于升级第一应用。
8.如权利要求7所述的设备,其特征在于,所述接收单元具体用于:
接收到针对第一应用进行的升级指令时,向服务器发送请求消息,其中,所述请求消息用于请求获取所述第一应用的最新镜像包;
接收来自所述服务器的所述最新镜像包,或者,从所述服务器发送的多个镜像包中选取所述最新镜像包。
9.一种应用升级设备,其特征在于,包括:
至少一个处理器,以及
与所述至少一个处理器连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令实现如权利要求1-6任一项所述的方法。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811531989.3A CN111324361A (zh) | 2018-12-14 | 2018-12-14 | 一种应用升级方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811531989.3A CN111324361A (zh) | 2018-12-14 | 2018-12-14 | 一种应用升级方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111324361A true CN111324361A (zh) | 2020-06-23 |
Family
ID=71172331
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811531989.3A Pending CN111324361A (zh) | 2018-12-14 | 2018-12-14 | 一种应用升级方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111324361A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111880816A (zh) * | 2020-07-24 | 2020-11-03 | 北京浪潮数据技术有限公司 | Kubernetes工作负载升级方法、装置及设备 |
CN112379973A (zh) * | 2020-12-01 | 2021-02-19 | 腾讯科技(深圳)有限公司 | 重载方法和装置 |
CN112732290A (zh) * | 2020-12-28 | 2021-04-30 | 青岛海尔科技有限公司 | 设备升级方法、装置、存储介质及电子装置 |
CN112860282A (zh) * | 2021-03-31 | 2021-05-28 | 中国工商银行股份有限公司 | 集群插件的升级方法、装置和服务器 |
CN113590146A (zh) * | 2021-06-04 | 2021-11-02 | 聚好看科技股份有限公司 | 服务器及容器升级方法 |
CN113676564A (zh) * | 2021-09-28 | 2021-11-19 | 深信服科技股份有限公司 | 数据传输方法、装置及存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100162226A1 (en) * | 2008-12-18 | 2010-06-24 | Lazar Borissov | Zero downtime mechanism for software upgrade of a distributed computer system |
CN101799751A (zh) * | 2009-12-02 | 2010-08-11 | 山东浪潮齐鲁软件产业股份有限公司 | 一种构建主机监控代理软件的方法 |
CN106789250A (zh) * | 2016-12-22 | 2017-05-31 | 焦点科技股份有限公司 | 一种基于容器的服务多版本共存实现方法 |
CN107066296A (zh) * | 2017-03-31 | 2017-08-18 | 北京奇艺世纪科技有限公司 | 一种集群节点中镜像的清理方法及装置 |
CN107248986A (zh) * | 2017-06-08 | 2017-10-13 | 医惠科技有限公司 | 一种服务托管方法 |
CN107247648A (zh) * | 2016-09-30 | 2017-10-13 | 北京赢点科技有限公司 | 基于Docker实现远程项目系统监管的方法、装置及系统 |
CN107515776A (zh) * | 2017-07-18 | 2017-12-26 | 深信服科技股份有限公司 | 业务不间断升级方法、待升级节点和可读存储介质 |
CN107688322A (zh) * | 2017-08-31 | 2018-02-13 | 天津中新智冠信息技术有限公司 | 一种容器化管理系统 |
CN107797767A (zh) * | 2017-09-30 | 2018-03-13 | 南京卓盛云信息科技有限公司 | 一种基于容器技术部署分布式存储系统及其存储方法 |
-
2018
- 2018-12-14 CN CN201811531989.3A patent/CN111324361A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100162226A1 (en) * | 2008-12-18 | 2010-06-24 | Lazar Borissov | Zero downtime mechanism for software upgrade of a distributed computer system |
CN101799751A (zh) * | 2009-12-02 | 2010-08-11 | 山东浪潮齐鲁软件产业股份有限公司 | 一种构建主机监控代理软件的方法 |
CN107247648A (zh) * | 2016-09-30 | 2017-10-13 | 北京赢点科技有限公司 | 基于Docker实现远程项目系统监管的方法、装置及系统 |
CN106789250A (zh) * | 2016-12-22 | 2017-05-31 | 焦点科技股份有限公司 | 一种基于容器的服务多版本共存实现方法 |
CN107066296A (zh) * | 2017-03-31 | 2017-08-18 | 北京奇艺世纪科技有限公司 | 一种集群节点中镜像的清理方法及装置 |
CN107248986A (zh) * | 2017-06-08 | 2017-10-13 | 医惠科技有限公司 | 一种服务托管方法 |
CN107515776A (zh) * | 2017-07-18 | 2017-12-26 | 深信服科技股份有限公司 | 业务不间断升级方法、待升级节点和可读存储介质 |
CN107688322A (zh) * | 2017-08-31 | 2018-02-13 | 天津中新智冠信息技术有限公司 | 一种容器化管理系统 |
CN107797767A (zh) * | 2017-09-30 | 2018-03-13 | 南京卓盛云信息科技有限公司 | 一种基于容器技术部署分布式存储系统及其存储方法 |
Non-Patent Citations (1)
Title |
---|
OSCHINA: "真正零停机 HAProxy重载", 《OSCHINA》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111880816A (zh) * | 2020-07-24 | 2020-11-03 | 北京浪潮数据技术有限公司 | Kubernetes工作负载升级方法、装置及设备 |
CN112379973A (zh) * | 2020-12-01 | 2021-02-19 | 腾讯科技(深圳)有限公司 | 重载方法和装置 |
CN112379973B (zh) * | 2020-12-01 | 2023-10-24 | 腾讯科技(深圳)有限公司 | 重载方法和装置 |
CN112732290A (zh) * | 2020-12-28 | 2021-04-30 | 青岛海尔科技有限公司 | 设备升级方法、装置、存储介质及电子装置 |
CN112732290B (zh) * | 2020-12-28 | 2023-06-16 | 青岛海尔科技有限公司 | 设备升级方法、装置、存储介质及电子装置 |
CN112860282A (zh) * | 2021-03-31 | 2021-05-28 | 中国工商银行股份有限公司 | 集群插件的升级方法、装置和服务器 |
CN112860282B (zh) * | 2021-03-31 | 2024-02-09 | 中国工商银行股份有限公司 | 集群插件的升级方法、装置和服务器 |
CN113590146A (zh) * | 2021-06-04 | 2021-11-02 | 聚好看科技股份有限公司 | 服务器及容器升级方法 |
CN113590146B (zh) * | 2021-06-04 | 2023-10-27 | 聚好看科技股份有限公司 | 服务器及容器升级方法 |
CN113676564A (zh) * | 2021-09-28 | 2021-11-19 | 深信服科技股份有限公司 | 数据传输方法、装置及存储介质 |
CN113676564B (zh) * | 2021-09-28 | 2022-11-22 | 深信服科技股份有限公司 | 数据传输方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111324361A (zh) | 一种应用升级方法及设备 | |
CN109547570B (zh) | 服务注册方法、装置、注册中心管理设备及存储介质 | |
CN112506617B (zh) | Kubernetes集群中边车容器的镜像更新方法及装置 | |
JP6363796B2 (ja) | 動的コードデプロイメント及びバージョニング | |
US10541869B2 (en) | Upgrading of controller cluster | |
KR101255382B1 (ko) | 운영체제에 친숙한 부트로더 | |
JP6228177B2 (ja) | コンピュータシステムにおけるオペレーティングシステムの通信ネットワーク経由でのロードおよびブートを最適化するための方法、コンピュータプログラム、および装置 | |
CN112860382A (zh) | 线程化作为服务 | |
CN107688502B (zh) | 进程间通信方法及装置 | |
CN110209342B (zh) | 云硬盘的扩容方法、装置、设备及系统 | |
CN110196722A (zh) | 云主机批量管理方法、系统、设备及存储介质 | |
JPH086796A (ja) | ダウンロード方法、そのネットワークシステム、及びデータファイル更新方法 | |
CN109788068A (zh) | 心跳状态信息上报方法、装置和设备及计算机存储介质 | |
CN111159233A (zh) | 分布式缓存方法、系统、计算机设备以及存储介质 | |
CN111459611A (zh) | 针对Kubernetes系统的镜像拉取方法及装置 | |
CN111399890B (zh) | 游戏的热更新方法、装置、系统及电子设备 | |
CN111240760B (zh) | 基于注册中心的应用发布方法、系统、存储介质及设备 | |
US9727381B2 (en) | Image forming apparatus and resource management method | |
CN109375946B (zh) | 一种管理节点包管理器的组件包的方法及系统 | |
CN114662102A (zh) | 一种文件处理方法、装置及存储介质 | |
CN114422358B (zh) | Api网关配置更新方法及设备 | |
CN107783837B (zh) | 一种进行存储扩展的方法、装置及电子设备 | |
CN114662103A (zh) | 一种文件处理方法、装置及存储介质 | |
JPH11232233A (ja) | ネットワークコンピュータ管理方法及びネットワークコンピュータシステム | |
CN113542319A (zh) | 用于Dubbo框架中的服务提供实体变更通知方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200623 |