用于处理网络服务器故障的方法和健康监控器的制作方法

文档序号:7967370阅读:158来源:国知局
专利名称:用于处理网络服务器故障的方法和健康监控器的制作方法
技术领域
本发明涉及网络服务器故障。
背景技术
如果网络浏览器的用户选择一个网页链接,而提供那个网页的服务器发生故障,则用户可接收到错误消息(例如,404错误)。从用户的角度来说,这种消息通常不提供信息,而且没有用处。加载该网页(或者由相同故障服务器所提供的其它网页)的连续失败可引起用户将其业务放在别处。
对于这个问题存在多种已知的解决方案,其通常涉及在网络浏览器和网络服务器之间放置附加的节点。这些节点包括了解网络服务器状态的并且保证将网络请求路由至工作服务器的代理服务器以及载荷平衡器。美国专利申请2002/0056053公开一种中间服务器,用于监控网络请求以及用于在发生故障时重新定向客户端的请求。
其它解决方案包括集群解决方案,其使故障服务器主机的ip地址和主机名称由另一个主机接管。
所有的现有解决方案或者需要附加的节点或者需要复杂的集群管理代码,这增加了任何解决方案的成本和复杂性。通常与可用预算和硬件限制相关的问题意味着,在某些情况下这不是可行的选择。

发明内容
依照第一方面,本发明提供一种可在客户端上运行的用于处理网络服务器故障的健康监控器方法,该客户端是对于来自网络服务器的网页的请求的来源方,该方法包括接收对于网络服务器的状态信息;响应于确定网络服务器已经发生故障,将对于网络服务器所提供网页的客户端请求重新定向到另一个工作的网络服务器。
在一个实施方式中,健康监控器周期性地请求状态信息。在一个优选的实施方式中,这种信息是由监控网络服务器的健康服务“推送”至健康监控器的。在另一个实施方式中,网络协议本身可用于检测故障。例如,如果TCPIP链接失败或者存在对其的TCPIP连接的机器(机器上的服务)发生故障,则协议向连接的客户端通知这个事实。
在健康监控器实际上请求状态信息的实施方式中,可响应于客户端对网络服务器所提供网页的链接的请求,请求这种信息。
在一个具体的实施方式中,下载网络服务器所提供的网页,并且客户端请求来源于这个网页(例如,通过点击URL链接)。
网页优选地包括多个链接。在一个实施方式中,重新定向客户端请求的步骤包括取回到故障网络服务器的所有网页链接,以及重写所取回的网页链接,以便该网页链接指向其它网络服务器。注意到,可能有多个其它网络服务器。选择其中一个,但是其它服务器中的一个可在所选网络服务器发生故障时使用。这种网页也可以链接到还未发生故障的网络服务器上的页面。这些链接不需要进行重写。
在另一个实施方式中,用户对链接的激活使得链接函数确定将要链接到哪个服务器。响应于确定该提供所请求网页的网络服务器已经发生故障,使用该链接函数访问其它网络服务器。
在另一个实施方式中,接收到对于特定网页的请求。响应于确定了提供该网页的网络服务器发生故障,该健康监控器修改所请求的链接,以指向其它工作的网络服务器。
在一个实施方式中,利用初始的网页下载健康监控器。网页包括用于显示可见内容的内容窗体以及包含健康监控器的控制窗体。
在另一个实施方式中,健康监控器可以是通用插件,其可以被配置为对适当的网络服务器起作用。
在一个实施方式中,健康监控器接收一个或多个可以在发生服务器故障的情况下使用的预备服务器的列表。在另一个实施方式中,健康监控器被配置有一个或多个在发生故障的情况下使用的可供选择的服务器。
关于多个可能的可供选择的网络服务器中的每个所经历的工作量的状态信息可由健康监控器接收。然后,该信息可以用于在发生网络服务器故障的情况下选择适当的网络服务器。
依照另一方面,提供一种可在客户端上运行并且用于处理网络服务器故障的健康监控器,该客户端是对于来自网络服务器的网页的请求的来源方,该健康监控器包括用于接收对于网络服务器的状态信息的装置;以及用于响应于确定网络服务器已发生故障,将对于网络服务器所提供网页的客户端请求重新定向到另一个工作的网络服务器的装置。


现在将参考下列附图,仅以示例的方式描述本发明的一个优选实施方式图1依照一个优选实施方式说明本发明的组件;图2依照本发明的一个优选实施方式说明本发明的处理;图3a更加详细地表示优选实施方式中的健康服务;以及图3b更加详细地表示优选实施方式中的健康监控器。
具体实施例方式
依照一个优选的实施方式,本发明提供被加载到客户端的网络浏览器中的功能。这种功能可以检测网络服务器的故障,并且在发生这种故障的情况下自动地将新网页请求重新定向到一个可供选择的服务器。
图1、图3a和图3b依照一个优选的实施方式说明本发明的组件,同时,图2表示本发明一个优选实施方式的处理。附图应当彼此结合起来阅读。
如图1所示,客户端5运行网络浏览器10。客户端通过网络浏览器与提供网络服务器50的主要主机40相连,并且从网络服务器下载网页,以由网络浏览器进行显示(图2的步骤100)。网页优选地包括两个窗体内容窗体20;以及不可见的“控制”窗体21。网络浏览器在窗体20中显示页面(以及随后的网页)的可见内容(步骤110)。控制窗体包括健康监控器(HM)30,其是由网络浏览器加载到该窗体的(步骤120)。例如,健康监控器可以是JavaTM小应用程序,参考图3b详细描述其组件。(Java以及所有基于Java的商标和标识是SUN微型系统有限公司在美国、其它国家或者同时在两地的商标)。在独立的窗体中运行健康监控器的优势是,这允许甚至在将新页面加载到内容窗体中时,健康监控器也可继续运行。
健康监控器从运行于主要主机40上的健康服务60接收状态信息(如参考图3a详细描述的)。健康服务60跟踪网络服务器的状态,并且将这种状态信息推送至健康监控器。
因此,一旦已经将健康监控器加载到不可见的控制窗体中并进行初始化,健康监控器就打开与健康服务60的连接(通过连接请求器230)(步骤130)。这可能通过基本套接字连接来实现。
在步骤140中,健康监控器向健康服务60请求(并且接收)可以在主要主机的网络服务器50发生故障的情况下使用的一个或多个辅助主机的地址(通过地址接收器240)。对于健康监控器的一个可选方案是将其预先配置有一个服务器列表。对于健康服务的另一个选择是响应于对于故障服务器上网页的特定请求返回可供选择的网络服务器的地址。
在步骤150中,状态监控器260被动地确定何时从状态发送器220接收到状态信息。对于健康监控器的一个可供选择的方案是周期性地主动请求网络服务器状态。但是,由于其增加了网络拥塞,这是一个不太优选的实施方式。
图3a更加详细地说明了健康服务。状态检查器组件210试图与网络服务器50通信以确定网络服务器是否正在运行,并且通过状态发送器220将状态信息推送至健康监控器30。
如果接收到这种状态信息,则健康监控器使用这个信息以确定网络服务器是否正在运行(步骤160)。如果网络服务器正在运行,则图2的处理进行循环。
但是,状态检查器210可能确定网络服务器50已经发生故障。如果确实如此,则将向状态监控器通知这个事实。
如果在预先确定的时间段中还没有接收到状态信息,则状态监控器也可认为网络服务器发生故障(步骤155)。在另一个实施方式中,用于连接健康服务的网络协议(例如,TCPIP)可以确定那里已经发生故障。
无论使用何种方式来确定该故障,现在健康监控器30应当选择新的主机,以便为网络浏览器后续对于网页的请求进行服务。辅助主机选择器250选择新主机。组件250从地址接收器240所返回的列表中进行选择,并且开始监控所选择的辅助主机70(步骤170)。如果有多于一个的地址返回到组件250,则可能选择任意一个,或者以某种其它的方式进行选择。例如,可能使用轮转循环(round robin)算法。对于健康服务的另一个选择是向健康监控器提供服务器载荷的信息,以及对于健康监控器的另一个选择是使其基于这个信息进行选择。优选地,在确定发生故障时收集这种载荷信息,以便其是当前的状态信息。
所选的辅助主机优选地包括另一个网络服务器90,其提供与主要主机40上网络服务器50所提供的那些网页相同的网页。另一方面,网络服务器90可以仅提供具有相似内容等的网页。
为了监控所选辅助服务器70上的网络服务器,健康监控器现在与健康服务80通信。优选地,当先停止与主要主机的通信。
现在由网络服务器90为对于网页的未来请求提供服务(步骤180)。可以多种方式实现这个步骤。将在下面描述两种方式1)每个网页通常由域对象模型(DOM)定义。DOM指定网页元素(文本、图像等等)的显示方式(www.pcwebopaedia.com/TERM/D/DOM.html)。所访问的每个网页在客户端5进行缓存,所以DOM也位于客户端上。在发生故障的情况下,健康监控器更新内容页面的DOM,将任何html链接(对于主要服务器)变为指向辅助网络服务器。这是通过重写器组件25实现的(参考图3b)。
优选地,使用JavaTM脚本实现这个目的,以返回初始网页所有链接元素的阵列(链接阵列)。html链接的形式通常是<ahref=″www.hostname.com″></A>。
因此,JavaScript可用于返回页面上所有URL链接的一种方式如下所述var linksArray=document.all.tags(‘A’);或者可选地,可以使用var linksArray=document.links一旦已获得链接阵列,就可能循环通过阵列,以修改目标网络服务器名称for(var i=0;i<linksArray.length;i++){linkArray[i].hostname=′server2.com′;}.hostname是JavaScript中链接对象的有效属性,而且在这个示例中用于表示网络服务器。
然后,必须将所修改的链接插回到DOM中。注意到,如果网页包含某些链接到故障服务器的网页而某些没有包含,则需要进行检查,以确定改变哪些链接。
2)一种可供选择的机制是在不可见的控制窗体中提供JavaScript链接函数,使得内容窗体中的所有链接使用相对URL调用这个函数,该URL在变量中保持有当前可运行的服务器名称。这样,为了改变链接值,就不需要解析内容DOM。在某些方面,这是一个更加优选的解决方案,因为用户可能不希望访问网页上的所有链接而且第一解决方案解析了全部DOM而没有将此考虑在内。
为了实现第二解决方案,包含链接的这种网页中HTML的每个分段可表示如下<!—由于goLink函数将获得健康服务器名称,将不必改变下面的链接-->
<A HREF=″javascripttop.invisible.goLink(′/content/html/pagel.html′);″>Page 1</A>
″invisible″是不可见控制窗体的给定名称。这段代码调用goLink函数,并且将部分或者相对URL传递给这个函数(这个部分的URL省略了网络服务器的网络地址)。
不可见窗体中的goLink函数可能如下所示funnction goLink(relativeURL){var absoluteURL=′http://′+healthyServer+relatiVeURL;//healthyServer is maintained by the health monitoring componentrydescribed above(healthyServer由上述健康监控组件维护)top.content.location.href=absoluteURL;}从而,goLink函数接收相对URL,并且使用这个URL来通过将健康服务器的名称添加到相对URL中生成绝对URL。当然,这假设了两个服务器上的页面遵守相同的命名格式,只有服务器名称不同。
第二解决方案的问题是,初始网页不再遵守标准格式。必须对到网络服务器上其它网页的所有链接进行修改,如上所述。
注意到,实际从辅助主机下载的页面将已经指向那个辅助主机上的其它网页,或者指向完全独立的主机。
无论使用何种解决方案,在用户选择任何链接时,现在都从辅助主机加载网页。
一旦辅助主机已经发生变化,其就在逻辑上变成主要主机,并且将发生故障的那个主机表示为辅助主机。
该示例假设两个网络服务器上可用的内容是相同的。并非必须如此。在服务器发生故障的情况下,可以将用户重新定向到具有不同内容的网络服务器,这个内容可能是故障的说明或者报告故障的页面或者联系人页面。
优选实施方式的要求如下-必须对小应用程序进行签名,使得其可以与加载其的服务器之外的服务器进行通信。默认地,小应用程序只可以与加载其的网络服务器进行通信。但是,在对小应用程序进行签名中,可能将其配置为与其它服务器进行通信。
-所有网络服务器必须位于同一个“域”中,例如,ibm.com,以便两个窗体可以彼此共同合作。尤其是在使用安全网页时。
虽然以接收所推送的关于网络服务器状态数据的健康监控器的形式描述了本发明,但是,其不是必需如此。相反地,健康监控器可能特别地请求状态信息。健康监控器可能只在用户请求新链接时才请求该状态。其优势是,只有在需要链接时才进行状态请求,从而节省了处理功率。缺点是,在检查状态时,可能对用户引起明显的延时。
此外,虽然优选实施方式描述了每个主机上的健康服务,但是其不是必须如此。例如,主要主机上的健康服务可以检查辅助主机上网络服务器的状态。这个解决方案的缺点是,如果主要主机本身发生故障(而不仅是主要网络服务器),则其不可能再验证辅助主机及其网络服务器的状态。当然,另一个选则是,在监控多个网络服务器的完全独立机器上具有健康服务。
另外,虽然以下载包括小应用程序的初始网页的形式描述了本发明,但是,其不是必须如此。健康监控器可以作为通用插件下载,然后可以将其配置为与多个网络服务器的其中一个共同合作。
注意到,本发明描述了由健康服务监控网络服务器。但是,网络服务器可与多个后端资源(服务器、数据库等等)进行交互。健康服务也可跟踪这种资源的状态,并且提供考虑到这些资源的状态信息。从而,例如,如果资源没有正常运行,则可报告故障。
最后,健康监控器不必与健康服务进行通信。在一个可供选择的实施方式中,健康监控器直接与其监控的网络服务器进行通信。在这个实施方式中,网络服务器向健康监控器提供可供选择的服务器,以在发生故障的情况下使用。
本发明具有多个优势1)简便性。这是因为不需要具有中间节点、集群管理软件等形式的附加硬件和软件。
2)因此,这种解决方案价格较低廉。
3)这种解决方案可以实现并运行在具有有限功能的网络服务器以及具有有限存储器和处理能力的硬件上。
权利要求
1.一种可在客户端上运行的用于处理网络服务器故障的健康监控器方法,该客户端是对于来自该网络服务器的网页的请求的来源方,该方法包括接收对于该网络服务器的状态信息,响应于确定该网络服务器已经发生故障,将对于该网络服务器所提供网页的客户端请求重新定向到另一个工作的网络服务器。
2.根据权利要求1所述的方法,包括该健康监控器周期性地请求该状态信息。
3.根据权利要求2所述的方法,其中该周期性地请求该网络服务器状态信息的步骤包括响应于该客户端对到该网络服务器所提供网页的链接的请求,请求该状态。
4.根据权利要求1、2或3所述的方法,包括下载客户端请求所来源的网页,该网页由该网络服务器提供。
5.根据权利要求4所述的方法,其中该网页包括到该网络服务器所提供网页的多个链接,该重新定向客户端请求的步骤包括取回到该网络服务器的所有网页链接;以及重写所取回的网页链接,以便该网页链接指向该其它网络服务器。
6.根据权利要求4所述的方法,其中该所下载的网页包括到网页的多个链接,其中用户对链接的激活导致执行链接函数,该链接函数用于确定将要链接到哪个服务器,该方法包括响应于确定该提供所请求网页的网络服务器已经发生故障,使用该链接函数访问该其它服务器。
7.根据权利要求4所述的方法,包括接收对于链接到该网络服务器的特定网页的请求;以及响应于确定该提供该网页的网络服务器已经发生故障,该健康监控器修改所请求的链接以指向该其它工作的网络服务器。
8.根据权利要求1至7中任何一个权利要求所述的方法,包括利用网页下载该健康监控器,该网页包括用于显示可见内容的内容窗体以及用于包含该健康监控器的控制窗体。
9.根据前述任何一个权利要求所述的方法,包括接收一个或多个将在发生故障的情况下使用的可供选择的服务器的列表。
10.根据权利要求1至8中任何一个权利要求所述的方法,其中该健康监控器被配置有一个或多个将在发生故障的情况下使用的可供选择的服务器。
11.根据前述任何一个权利要求所述的方法,包括接收关于多个可能的可供选择网络服务器中的每个所经历的工作量的状态信息;以及使用这种工作量信息选择网络服务器。
12.一种可在客户端上运行并且用于处理网络服务器故障的健康监控器,该客户端是对于来自该网络服务器的网页的请求的来源方,该健康监控器包括用于接收对于该网络服务器的状态信息的装置;以及用于响应于确定该网络服务器已经发生故障,将对于该网络服务器所提供网页的客户端请求重新定向到另一个工作的网络服务器的装置。
13.根据权利要求12所述的健康监控器,包括用于该健康监控器的装置,以周期性地请求该状态信息。
14.根据权利要求13所述的健康监控器,其中该用于周期性地请求该网络服务器状态的装置包括响应于该客户端对到该网络服务器所提供网页的链接的请求,请求该状态。
15.根据权利要求12、13或者14所述的健康监控器,包括用于下载客户端请求所来源的网页的装置,该网页由该网络服务器提供。
16.根据权利要求15所述的健康监控器,其中该网页包括到该网络服务器所提供网页的多个链接,该用于重新定向客户端请求的装置包括用于取回到该网络服务器的所有网页链接的装置;以及用于重写所取回的网页链接以便该网页链接指向该其它网络服务器的装置。
17.根据权利要求15所述的健康监控器,其中该所下载的网页包括到网页的多个链接,其中用户对链接的激活导致执行链接函数,该链接函数用于确定将要链接到哪个服务器,该方法包括响应于确定该提供所请求网页的网络服务器已经发生故障,使用该链接函数访问该其它服务器。
18.根据权利要求15所述的健康监控器,包括用于接收对于链接到该网络服务器的特定网页的请求的装置;以及响应于确定该提供该网页的网络服务器已经发生故障,用于使该健康监控器修改所请求的链接以指向该其它的工作的网络服务器的装置。
19.根据权利要求12至18中任何一个权利要求所述的健康监控器,包括用于利用网页下载该健康监控器的装置,该网页包括用于显示可见内容的内容窗体以及包含该健康监控器的控制窗体。
20.根据权利要求12至19中任何一个权利要求所述的健康监控器,包括用于接收一个或多个将在发生故障的情况下使用的可供选择服务器的列表的装置。
21.根据权利要求12至19中任何一个权利要求所述的健康监控器,包括用于将该健康监控器配置有一个或多个将在发生故障的情况下使用的可供选择的服务器的装置。
22.根据权利要求12至21中任何一个权利要求所述的健康监控器,包括用于接收关于多个可能的可供选择网络服务器中的每个所经历的工作量的状态信息的装置;以及用于使用这种工作量信息选择网络服务器的装置。
23.一种计算机程序,包括程序代码装置,该程序代码装置适用于在所述程序运行于计算机上时执行权利要求1至11中任何一个权利要求的方法。
全文摘要
一种客户端处理网络服务器故障的方法、装置和计算机程序。客户端包括用于监控网络服务器的状态的健康监控器。客户端是对于来自网络服务器的网页请求的来源方。健康监控器接收网络服务器的状态信息,以及如果健康监控器确定网络服务器已经发生故障,则健康监控器将对于由网络服务器所提供网页的请求重新定向到另一个工作的网络服务器。
文档编号H04L12/26GK1937532SQ20061011594
公开日2007年3月28日 申请日期2006年8月21日 优先权日2005年9月21日
发明者戴维·洛克, 马丁·J·盖尔 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1