CN103532870A - 一种更新Web应用集群的方法和装置 - Google Patents

一种更新Web应用集群的方法和装置 Download PDF

Info

Publication number
CN103532870A
CN103532870A CN201310520650.4A CN201310520650A CN103532870A CN 103532870 A CN103532870 A CN 103532870A CN 201310520650 A CN201310520650 A CN 201310520650A CN 103532870 A CN103532870 A CN 103532870A
Authority
CN
China
Prior art keywords
web application
application example
load balancing
started
clients
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
Application number
CN201310520650.4A
Other languages
English (en)
Inventor
胡奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Original Assignee
Beijing Jingdong Century Trading Co Ltd
Beijing Jingdong Shangke Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Century Trading Co Ltd, Beijing Jingdong Shangke Information Technology Co Ltd filed Critical Beijing Jingdong Century Trading Co Ltd
Priority to CN201310520650.4A priority Critical patent/CN103532870A/zh
Publication of CN103532870A publication Critical patent/CN103532870A/zh
Pending legal-status Critical Current

Links

Images

Abstract

本发明提出一种更新Web应用集群的方法和装置,其中方法包括:依次针对各个Web应用实例执行以下步骤:从所述负载均衡器的负载均衡配置中摘除Web应用实例,当负载均衡器接收到来自客户端的请求时,将所述请求根据负载均衡策略分发至除所述被摘除的Web应用实例以外的其他Web应用实例;等待所述被摘除的Web应用实例的所有客户连接处理完成时,更新该Web应用实例,并在更新成功并启动完成之后将该Web应用实例加入到所述负载均衡配置中。本发明能够避免人工更新Web应用集群容易出现的操作失误,并避免更新过程中对正在进行的业务造成影响。

Description

一种更新Web应用集群的方法和装置
技术领域
本发明涉及Web应用技术领域,尤其涉及一种更新Web应用集群的方法和装置。
背景技术
随着互联网技术的发展,Web应用程序作为动态网站的实现基础越来越广泛应用,Web应用程序可以由Java、PHP、Python等诸多语言实现,为基于浏览器的客户端用户提供网页浏览等Web服务。
而随着拥有海量用户的大型网站出现,Web服务的不间断性、可用性要求越来越高,作为互联网服务需要24小时全天候对用户可用。如果网站一旦无法访问,哪怕只有几分钟,对于大型网站来说都是比较大的损失,这不仅会损伤用户体验、流失商业机会,而且会严重影响网站的声誉,使人们对网站的可靠性和权威性产生怀疑。
如果一个大型动态Web应用需要服务于千万级甚至亿级的用户,则一般会采用应用服务集群技术。一个Web应用集群包括多个Web应用实例。
目前对于Web应用集群的更新方法主要以避开访问高峰时段的“暴力更新”为主。即选择一个网站访问量最少的时段,一般为凌晨时间,依次从负载均衡器上选择一个需要更新的Web应用实例进行更新,直至Web应用集群中所有的Web应用实例更新完毕。
由于多数Web应用集群的规模庞大,人工进行上述更新操作,不仅极为繁琐、需要消耗大量人力成本,而且十分容易出现操作错误而导致服务不可访问等严重后果。并且,在终止需更新的Web应用实例时,如果仍然有客户端正在与该Web应用实例连接通信,则连接会被强行中断,这有可能会造成关键业务无法完成,甚至产生脏数据,导致后续的追查、修复十分麻烦。
发明内容
本发明提供了一种更新Web应用集群的方法和装置,能够避免人工更新Web应用集群容易出现的操作失误,并避免更新过程中对正在进行的业务造成影响。
本发明的技术方案是这样实现的:
一种更新Web应用集群的方法,应用于包括负载均衡器和2个以上Web应用实例的系统,包括:
依次针对各个Web应用实例执行以下步骤:
从所述负载均衡器的负载均衡配置中摘除Web应用实例,当负载均衡器接收到来自客户端的请求时,将所述请求根据负载均衡策略分发至除所述被摘除的Web应用实例以外的其他Web应用实例;
等待所述被摘除的Web应用实例的所有客户连接处理完成时,更新该Web应用实例,并在更新成功并启动完成之后将该Web应用实例加入到所述负载均衡配置中。
上述方法中,判断所述被摘除的Web应用实例的所有客户连接处理完成的方式为:轮询连接到该Web应用实例的TCP连接数量是否不大于固定TCP连接数量,如果是,则判定该Web应用实例的所有客户连接处理完成。
判断Web应用实例更新成功并启动完成的方式为:循环访问所述Web应用实例的检测页面,当所述检测页面返回的HTTP状态码为200时,判定该Web应用实例更新成功并启动完成。
循环访问Web应用实例的检测页面之后进一步包括:如果循环访问的时间或次数超过预先设定的阈值时检测页面返回的HTTP状态码仍不是200,则判定所述Web应用实例更新或启动失败。
判定Web应用实例更新或启动失败之后进一步包括:进行相应回滚或发送报警信息。
一种更新Web应用集群的装置,应用于包括负载均衡器和2个以上Web应用实例的系统,包括:
负载均衡配置维护模块,用于针对所述各个Web应用实例,依次将Web应用实例从负载均衡器的负载均衡配置中摘除,并通知更新模块;并在该Web应用实例更新成功并启动完成之后,将该Web应用实例重新加入到所述负载均衡配置中;其中,所述摘除Web应用实例即该Web应用实例不再接收来自客户端的请求;
更新模块,用于在接收到负载均衡配置维护模块的通知时,等待所述被摘除的Web应用实例的所有客户连接处理完成后,更新该Web应用实例,并在更新成功并启动完成之后通知所述负载均衡配置维护模块。
上述装置中,更新模块判断被摘除的Web应用实例的所有客户连接处理完成的方式为:轮询连接到该Web应用实例的TCP连接数量是否不大于固定TCP连接数量,如果是,则判定该Web应用实例的所有客户连接处理完成。
更新模块判断Web应用实例更新成功并启动完成的方式为:循环访问所述Web应用实例的检测页面,当所述检测页面返回的HTTP状态码为200时,判定该Web应用实例更新成功并启动完成。
更新模块还用于,如果所述循环访问的时间或次数超过预先设定的阈值时检测页面返回的HTTP状态码仍不是200,则判定所述Web应用实例更新或启动失败。
更新模块还用于,当判定Web应用实例更新或启动失败时,进行相应回滚或发送报警信息。
可见,本发明提出的更新Web应用集群的方法和装置,能够自动化完成更新Web应用集群的任务,避免人工操作的失误;并在更新时保证客户端与Web应用实例的连接都被处理完成,避免对正在进行的业务造成影响。
附图说明
图1为本发明方法中针对单个Web应用实例的执行方式流程图;
图2为实施例一应用的系统结构示意图;
图3为实施例一的实现流程图;
图4为实施例一中摘除Web应用实例1后的连接关系示意图;
图5为本发明提出的更新Web应用集群的装置结构示意图。
具体实施方式
本发明提出一种更新Web应用集群的方法,应用于包括负载均衡器和2个以上Web应用实例的系统,该方法包括:
依次针对各个Web应用实例执行如图1所示的步骤:
步骤101:从所述负载均衡器的负载均衡配置中摘除Web应用实例,当负载均衡器接收到来自客户端的请求时,将所述请求根据负载均衡策略分发至除所述被摘除的Web应用实例以外的其他Web应用实例;
步骤102:等待所述被摘除的Web应用实例的所有客户连接处理完成时,更新该Web应用实例,并在更新成功并启动完成之后将该Web应用实例加入到所述负载均衡配置中。
上述方法中,判断被摘除的Web应用实例的所有客户连接处理完成的方式可以为:
轮询连接到该Web应用实例的TCP连接数量是否不大于固定TCP连接数量(所谓固定TCP连接一般可能是数据库服务、缓存服务等长连接,而非来自于客户端的HTTP请求的短连接),如果是,则判定该Web应用实例的所有客户连接处理完成。
判断Web应用实例更新成功并启动完成的方式可以为:
循环访问所述Web应用实例的检测页面,当所述检测页面返回的HTTP状态码为200时,判定该Web应用实例更新成功并启动完成。
如果循环访问的时间或次数超过预先设定的阈值时检测页面返回的HTTP状态码仍不是200,则判定所述Web应用实例更新或启动失败,可以进行相应回滚或发送报警信息,然后终止退出。
以下结合附图,举具体的实施例详细介绍。
实施例一:
如图2为实施例一应用的系统结构示意图。在该系统中,Web应用集群包括N个Web应用实例,即Web应用实例1、Web应用实例2、……、Web应用实例N。负载均衡器为这些Web应用实例提供代理和负载均衡服务,即客户端(一般为Web浏览器)通过负载均衡器的代理访问Web应用实例提供的服务,负载均衡器将客户端的访问请求根据负载均衡策略分发给Web应用集群中的一个Web应用实例进行处理;处理完成后,该Web应用实例需要返回一个应答到客户端,返回应答的过程不需要通过负载均衡器的代理。
当需要更新Web应用集群,即Web应用实例1、Web应用实例2、……、Web应用实例N时,可以按照如图3所示的步骤编写基于操作系统的自动化脚本,执行该脚本可以全自动的方式完成更新过程。下面以基于Linux操作系统下的bashshell脚本为例说明该技术方案。
在执行更新之前,需要首先设定基础配置信息,这些信息应包括:
a)Web应用集群中的Web应用实例描述。一般的,每个Web应用实例的部署路径应为相同的默认值,则该描述为每个Web应用实例的服务器IP地址和端口号。在本实施例中,Web应用集群中的Web应用实例数量为N,则需要N个不同的描述。
b)定义用于检测的Web页面,即在每一个Web应用实例中安装一个访问路径固定的检测页面。在这个检测页面内可以调用一些验证程序,自动化脚本会在Web应用实例开始更新后循环访问该Web应用实例的检测页面,以判断该Web应用实例是否更新并成功启动。
如图3所示,本实施例包括以下步骤:
步骤301:从基础配置信息中获取一个Web应用实例的描述。
步骤302:在负载均衡器的负载均衡配置中摘除该Web应用实例,并使该负载均衡配置生效。
假设当前获取的是Web应用实例1。此时不会有新的客户端连接向Web应用实例1发送请求了,但是已经连接到Web应用实例1的客户端(在本实施例中为客户端1)则不受影响,可以继续等待应答完成,然后关闭连接。如图4为实施例一中摘除Web应用实例1后的连接关系示意图。
步骤303:设置循环——等待所有用户连接处理完成。即轮询连接到该Web应用实例的TCP连接数量,一旦轮询到该Web应用实例的TCP连接数量不大于固定TCP连接数量,则可判定连接到该Web应用实例的客户端已经都得到应答,所有的客户端请求处理完成,可以继续执行步骤304。
此操作如果在Linux操作系统中,可以通过此脚本实现“netstat-anp|grep'${A_host}:${A_port}'|wc–l”,其中${A_host}代表该Web应用实例的服务地址,${A_port}代表该Web应用实例的服务端口。
假设连接到Web应用实例1的固定TCP连接数量是9(所谓固定TCP连接一般可能是数据库服务、缓存服务等长连接,而非来自于客户端的HTTP请求的短连接),则一旦轮询到Web应用实例1的TCP连接数量小于10时,即可判定连接到Web应用实例1的客户端已经都得到应答,所有的客户端请求处理完成,可以进入下一个步骤。
步骤304:经过上一个步骤可判定已经没有客户端连接到该Web应用实例了。则可以终止该Web应用实例,执行更新操作。更新完成后,启动该Web应用实例。
步骤305:设置循环——等待该Web应用实例更新完成。
具体方式可以为:循环访问该Web应用实例的检测页面(之前已定义)。一般的,当该检测页面返回HTTP状态码为200时,即证明该Web应用实例更新成功并启动完成,可以继续执行步骤206。
在Linux操作系统中,可以通过wget命令实现访问检测页面并获取状态码的自动化操作。同时,在这个循环中可以设定访问超时时间或超时次数的阀值,即当阀值到达后,如果访问检测页面返回的HTTP状态码仍然不为200时,则可判定该Web应用实例更新或启动失败,脚本可以做相应的回滚或发送报警信息等操作,然后终止退出。
步骤306:经过上一个步骤判定该Web应用实例更新并启动成功后,可以重新为用户提供服务。则可将该Web应用实例恢复到负载均衡器的负载均衡配置中,或者更简单的直接重置负载均衡配置,并使之生效。使该Web应用实例重新承担负载。
步骤307:判断是否所有Web应用实例均更新完毕,如果否,则针对尚未执行更新的Web应用实例重新执行步骤301;如果是,则自动更新结束。
本发明还提出一种更新Web应用集群的装置,应用于包括负载均衡器和2个以上Web应用实例的系统,如图5为该装置的结构示意图,包括:
负载均衡配置维护模块501,用于针对所述各个Web应用实例,依次将Web应用实例从负载均衡器的负载均衡配置中摘除,并通知更新模块402;并在该Web应用实例更新成功并启动完成之后,将该Web应用实例重新加入到所述负载均衡配置中;其中,所述摘除Web应用实例即该Web应用实例不再接收来自客户端的请求;
更新模块502,用于在接收到负载均衡配置维护模块501的通知时,等待所述被摘除的Web应用实例的所有客户连接处理完成后,更新该Web应用实例,并在更新成功并启动完成之后通知所述负载均衡配置维护模块501。
上述装置中,更新模块502判断被摘除的Web应用实例的所有客户连接处理完成的方式为:
轮询连接到该Web应用实例的TCP连接数量是否不大于固定TCP连接数量,如果是,则判定该Web应用实例的所有客户连接处理完成。
更新模块502判断Web应用实例更新成功并启动完成的方式为:
循环访问所述Web应用实例的检测页面,当所述检测页面返回的HTTP状态码为200时,判定该Web应用实例更新成功并启动完成。
更新模块502还用于,如果所述循环访问的时间或次数超过预先设定的阈值时检测页面返回的HTTP状态码仍不是200,则判定所述Web应用实例更新或启动失败。
当判定Web应用实例更新或启动失败时,进行相应回滚或发送报警信息。
综上可见,本发明提出的更新Web应用集群的方法和装置能够实现全自动无人值守更新大型Web应用集群,达到高效率、高可用、高保障的效果。避免在更新Web应用实例时的服务中断可能对系统和用户造成的影响。确保只有更新并启动成功的Web应用实例才能被客户端访问到,避免因为各种原因造成的更新或启动失败对系统和用户带来的影响。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

Claims (10)

1.一种更新Web应用集群的方法,应用于包括负载均衡器和2个以上Web应用实例的系统,其特征在于,所述方法包括:
依次针对各个Web应用实例执行以下步骤:
从所述负载均衡器的负载均衡配置中摘除Web应用实例,当负载均衡器接收到来自客户端的请求时,将所述请求根据负载均衡策略分发至除所述被摘除的Web应用实例以外的其他Web应用实例;
等待所述被摘除的Web应用实例的所有客户连接处理完成时,更新该Web应用实例,并在更新成功并启动完成之后将该Web应用实例加入到所述负载均衡配置中。
2.根据权利要求1所述的方法,其特征在于,判断所述被摘除的Web应用实例的所有客户连接处理完成的方式为:
轮询连接到该Web应用实例的TCP连接数量是否不大于固定TCP连接数量,如果是,则判定该Web应用实例的所有客户连接处理完成。
3.根据权利要求1所述的方法,其特征在于,判断Web应用实例更新成功并启动完成的方式为:
循环访问所述Web应用实例的检测页面,当所述检测页面返回的HTTP状态码为200时,判定该Web应用实例更新成功并启动完成。
4.根据权利要求3所述的方法,其特征在于,所述循环访问Web应用实例的检测页面之后进一步包括:
如果循环访问的时间或次数超过预先设定的阈值时检测页面返回的HTTP状态码仍不是200,则判定所述Web应用实例更新或启动失败。
5.根据权利要求4所述的方法,其特征在于,所述判定Web应用实例更新或启动失败之后进一步包括:
进行相应回滚或发送报警信息。
6.一种更新Web应用集群的装置,应用于包括负载均衡器和2个以上Web应用实例的系统,其特征在于,所述装置包括:
负载均衡配置维护模块,用于针对所述各个Web应用实例,依次将Web应用实例从负载均衡器的负载均衡配置中摘除,并通知更新模块;并在该Web应用实例更新成功并启动完成之后,将该Web应用实例重新加入到所述负载均衡配置中;其中,所述摘除Web应用实例即该Web应用实例不再接收来自客户端的请求;
更新模块,用于在接收到负载均衡配置维护模块的通知时,等待所述被摘除的Web应用实例的所有客户连接处理完成后,更新该Web应用实例,并在更新成功并启动完成之后通知所述负载均衡配置维护模块。
7.根据权利要求6所述的装置,其特征在于,更新模块判断被摘除的Web应用实例的所有客户连接处理完成的方式为:
轮询连接到该Web应用实例的TCP连接数量是否不大于固定TCP连接数量,如果是,则判定该Web应用实例的所有客户连接处理完成。
8.根据权利要求6所述的装置,其特征在于,所述更新模块判断Web应用实例更新成功并启动完成的方式为:
循环访问所述Web应用实例的检测页面,当所述检测页面返回的HTTP状态码为200时,判定该Web应用实例更新成功并启动完成。
9.根据权利要求8所述的装置,其特征在于,所述更新模块还用于,如果所述循环访问的时间或次数超过预先设定的阈值时检测页面返回的HTTP状态码仍不是200,则判定所述Web应用实例更新或启动失败。
10.根据权利要求9所述的装置,其特征在于,所述更新模块还用于,当判定Web应用实例更新或启动失败时,进行相应回滚或发送报警信息。
CN201310520650.4A 2013-10-29 2013-10-29 一种更新Web应用集群的方法和装置 Pending CN103532870A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310520650.4A CN103532870A (zh) 2013-10-29 2013-10-29 一种更新Web应用集群的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310520650.4A CN103532870A (zh) 2013-10-29 2013-10-29 一种更新Web应用集群的方法和装置

Publications (1)

Publication Number Publication Date
CN103532870A true CN103532870A (zh) 2014-01-22

Family

ID=49934558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310520650.4A Pending CN103532870A (zh) 2013-10-29 2013-10-29 一种更新Web应用集群的方法和装置

Country Status (1)

Country Link
CN (1) CN103532870A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104811503A (zh) * 2015-05-21 2015-07-29 龙信数据(北京)有限公司 一种r统计建模系统
CN105791147A (zh) * 2014-12-26 2016-07-20 华为技术有限公司 负载均衡器的连接方法、业务的实例化部署方法及装置
CN108282517A (zh) * 2017-12-21 2018-07-13 福建天泉教育科技有限公司 一种web服务升级的方法及终端
CN109213507A (zh) * 2018-08-27 2019-01-15 郑州云海信息技术有限公司 一种升级方法及服务器
CN110752953A (zh) * 2019-10-25 2020-02-04 苏州浪潮智能科技有限公司 一种基于负载均衡的连接数更新方法、设备以及存储介质
CN111221552A (zh) * 2019-11-14 2020-06-02 首约科技(北京)有限公司 一种基于分布式资源管理组件drm的实例更新方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1979418A (zh) * 2005-12-07 2007-06-13 英业达股份有限公司 动态升级程序的方法
CN103167041A (zh) * 2013-03-28 2013-06-19 广州中国科学院软件应用技术研究所 一种支持云环境应用集群自动化部署的系统及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1979418A (zh) * 2005-12-07 2007-06-13 英业达股份有限公司 动态升级程序的方法
CN103167041A (zh) * 2013-03-28 2013-06-19 广州中国科学院软件应用技术研究所 一种支持云环境应用集群自动化部署的系统及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
黎明,申阳,胡兵,樊国柱: "一种多节点环境下集群快速部署更新机制", 《信息技术与标准化》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105791147A (zh) * 2014-12-26 2016-07-20 华为技术有限公司 负载均衡器的连接方法、业务的实例化部署方法及装置
CN105791147B (zh) * 2014-12-26 2019-07-23 华为技术有限公司 负载均衡器的连接方法、业务的实例化部署方法及装置
CN104811503A (zh) * 2015-05-21 2015-07-29 龙信数据(北京)有限公司 一种r统计建模系统
CN108282517A (zh) * 2017-12-21 2018-07-13 福建天泉教育科技有限公司 一种web服务升级的方法及终端
CN109213507A (zh) * 2018-08-27 2019-01-15 郑州云海信息技术有限公司 一种升级方法及服务器
CN110752953A (zh) * 2019-10-25 2020-02-04 苏州浪潮智能科技有限公司 一种基于负载均衡的连接数更新方法、设备以及存储介质
CN111221552A (zh) * 2019-11-14 2020-06-02 首约科技(北京)有限公司 一种基于分布式资源管理组件drm的实例更新方法

Similar Documents

Publication Publication Date Title
CN103532870A (zh) 一种更新Web应用集群的方法和装置
CN103201724B (zh) 在高可用性虚拟机环境中提供高可用性应用程序
CN109587331B (zh) 云手机故障自动修复的方法与系统
CN108170612B (zh) 一种自动化测试方法、装置及服务器
US20140007076A1 (en) Separate upgrade/modification of remote software in machine to machine communication
US20120174112A1 (en) Application resource switchover systems and methods
US9535754B1 (en) Dynamic provisioning of computing resources
CN103995715A (zh) 应用程序的修复方法、装置及服务器
CN103856569A (zh) 一种同步域名系统资源信息的方法及设备
CN107666493B (zh) 一种数据库配置方法及其设备
US10534655B1 (en) Job scheduling based on job execution history
CN106484321A (zh) 一种数据存储方法及数据中心
CN106941420B (zh) 一种集群应用环境升级方法及装置
US10425475B2 (en) Distributed data management
CN103607424A (zh) 一种服务器连接方法及服务器系统
US7882232B2 (en) Rapid resource provisioning with automated throttling
CN109361542A (zh) 客户端的故障处理方法、装置、系统、终端和服务器
CN105847231A (zh) 服务发布方法、装置及系统
CN104899116A (zh) 数据备份的方法、源服务器、目标服务器及系统
CN111930396B (zh) 一种基于notify机制的4G路由器中通讯模组的升级方法
CN110673933A (zh) 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质
CN108563472B (zh) 基于多开应用的服务插件加载方法及装置
CN111342986A (zh) 分布式节点管理方法及装置、分布式系统、存储介质
CN104104701A (zh) 在线服务的配置更新的方法和系统
KR20130038734A (ko) 단말의 응용프로그램을 관리하는 방법 및 장치, 단말에서 응용프로그램을 관리하는 방법 및 장치

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20140122

RJ01 Rejection of invention patent application after publication