首页> 中国专利> 利用网络介质链接状态功能来提高计算机集群系统可用性的方法

利用网络介质链接状态功能来提高计算机集群系统可用性的方法

摘要

本发明用于计算机集群系统,本发明是一种当系统中一台服务器(220)运行失败时,用于增强另一台服务器(210)的可用性的方法。在集群系统中,每台服务器(210,220)都有一个附属的大容量存储设备(214,224),并且每台服务器(210,220)都可以处理来自集群系统中任何网络设备(230,240,250)的请求。在服务器(210,220)的大容量存储设备(214,224)中的数据互为镜像,这样每台服务器的大容量存储设备中都保存有整个集群系统数据的一个完整备份。建立数据镜像的过程通过服务器间的一个专用链路(202)实现,这样可以减少集群系统中其他部分发生拥塞的情况。当第一台服务器(210)检测到发生来自第二台服务器(220)的通讯数据丢失的情况时,第一台服务器(210)判断是否是由于专用链路(202)的故障导致了通讯数据丢失。如果专用链路(202)运行失败,第一台服务器停止运行,以避免将数据写入其相连的大容量存储设备(214),因为这些数据由于通讯的丢失将不能被建立镜像。如果专用链路(202)可以正常运行,第一台服务器(210)继续运行。在上述两种情况下,因为每台服务器(210,220)都可以处理来自任何网络设备(230,240,250)的请求,并且每台服务器都有整个网络数据的完整拷贝,因此,即使一台服务器被关闭,整个集群系统仍然可以正常使用。

著录项

  • 公开/公告号CN1483163A

    专利类型发明专利

  • 公开/公告日2004-03-17

    原文格式PDF

  • 申请/专利权人 雷卡托系统公司;

    申请/专利号CN01821130.5

  • 发明设计人 丹尼尔·M·普里塞;

    申请日2001-12-19

  • 分类号G06F11/00;G06F11/20;G06F11/30;G06F11/14;G06F11/16;

  • 代理机构11219 中原信达知识产权代理有限责任公司;

  • 代理人顾红霞;钟强

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 15:13:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2006-07-12

    授权

    授权

  • 2004-07-07

    专利申请权、专利权的转移专利申请权的转移 变更前: 变更后: 登记生效日:20040604 申请日:20011219

    专利申请权、专利权的转移专利申请权的转移

  • 2004-05-26

    实质审查的生效

    实质审查的生效

  • 2004-03-17

    公开

    公开

说明书

技术领域

本发明涉及计算机集群系统,特别涉及一种在集群系统内的服务器发生通讯丢失的情况下,提高计算机集群系统资源和数据的可用性和可靠性的方法。

背景技术

一个典型的计算机集群包含两个或更多服务器以及一个或更多的网络设备,它们通过计算机网络互相之间进行通讯。计算机集群正常运行时,服务器为网络设备提供计算机资源以及存储和检索数据的场所。在现有的计算机集群配置中,计算机集群数据存储在共享的计算机磁盘上,并可被任何网络设备访问。

一个典型的计算机集群如图1所示,其中两台网络服务器110和120通过计算机网络101与网络设备130,140和150通讯。网络服务器110和网络服务器120各自通过通讯线路105和106与共享磁盘104通讯。

在使用计算机集群时,通常希望它能够提供计算机集群资源的持续可用性,特别是当计算机集群支持许多用户工作站,个人电脑,或其他网络客户端设备时。通常还希望它能够维持在计算机集群系统中各个不同文件服务器之间的数据一致性,以及维持这些数据对客户端设备的持续可用性。若想达到计算机集群资源和数据的可靠可用性,必须保证计算机集群可以承受软硬件问题或故障。采用冗余的计算机和大容量存储设备通常可以做到这些,这样在发生故障时,一个备份计算机或磁盘驱动器就可以马上接管系统工作。

如图1所示,使用共享磁盘配置来实现计算机集群资源和数据的可靠可用性的现有技术,包含法定数额的概念,它指的是一种状态,在这种状态下,一台网络服务器将控制网络设备的指定最小数目;这样在其他任何网络服务器提供的服务发生中断时,持有法定数额的网络服务器拥有控制计算机集群资源和数据可用性的权利。一台特定的网络服务器获取法定数额的方法可以被描述成每台服务器和其他网络设备进行“投票表决”的过程。例如:在如图1所示的有两台服务器的集群配置下,网络服务器110和网络服务器120各投一票以决定哪一台网络服务器可拥有法定数额。如果没有一台网络服务器可以获得大多数票,那么共享磁盘104将投一票,使得两台网络服务器110和120其中的一台可以获得大多数票,其结果是两服务器之一以一种可被了解和接受的方式取得法定数额。在任何时间,只能有一台服务器持有法定数额,这样保证在网络服务器110和120之间的通讯丢失的情况下,只有一台网络服务器可以获取对整个网络的完全控制。

在发生中断事件时,试图使用法定数额以恢复网络服务器可用性的过程描述如下:服务器110可以检测到与服务器120的通讯丢失,通常有两个原因。第一个原因是基于一种事件,例如服务器120的一次系统崩溃,这样服务器120将不能为网络客户提供网络资源。第二个原因是由于两台服务器间网络通讯基础结构101中断,此时服务器120仍然可以在网络中正常运行。如果服务器110不能与服务器120进行通讯,它的第一步操作就是判断自己是否持有法定数额。如果服务器110判断自己没有法定数额,那么它将向共享磁盘104发送一个命令请求其投票,以获得法定数额。如果共享磁盘104不投票给服务器110,那么服务器110将自行关闭以避免脱离服务器120的单独操作。在这种情况下,服务器110假定服务器120持有法定数额,并且服务器120继续控制整个计算机集群。然而,如果共享磁盘104投票给网络服务器110,该服务器将持有法定数额并取得对整个计算机集群的控制权,并继续工作,此时假定网络服务器120已经发生故障。

在网络中发生故障时,使用法定数额以确保多个服务器中的一个可以继续提供网络资源的方法通常是令人满意的,但是共享磁盘的使用却让整个网络和磁盘上的数据面临丢失的危险。例如,如果不是网络服务器110和120其中之一,而是共享磁盘104发生故障,所有服务器都将不能工作,并且数据有可能永久丢失。此外,在使用共享磁盘配置的计算机集群中,服务器通常都放置在彼此很近的距离。这样,一旦发生自然灾害或电源故障,整个计算机集群都有崩溃的可能。

发明内容

本发明涉及一种在计算机集群系统中,可提高计算机集群资源和数据的可用性和可靠性的方法。两台服务器各自有一个与之相连的磁盘,并通过计算机网络进行通讯。每台服务器都可以为计算机网络中的所有网络设备提供计算机集群资源,并可访问整个计算机集群中的数据。在发生通讯丢失的情况下,每台服务器都具有判断通讯丢失原因和决定自己是否继续运行的能力。

当一台网络服务器检测到与另一台网络服务器的通讯发生中断的情况时,通讯丢失的原因可以归结为通讯链路的故障或是另一台网络服务器的故障。由于每台网络服务器都拥有整个网络数据的完整镜像备份,在发生通讯丢失后,每台网络服务器上都会执行一系列动作,以确保网络服务器不会发生脱离另一台服务器而单独运行的情况。如果不执行这一系列动作,多台网络服务器会脱离其他服务器而各自单独运行,从而造成所不希望的“大脑分裂(split brain)”状况,网络服务器之间数据镜像的建立将不能正常执行,并因此导致潜在的数据损坏危险。

当计算机集群开始工作时,一台服务器被指派可以控制集群的资源和数据,并被赋予“生存权”,使其在通讯链路发生故障并导致网络服务器之间的通讯丢失时可以继续对集群系统实施控制。为便于表达,在正常运行的情况下持有“生存权”的服务器,于此被指定为“主”服务器;在通常运转的情况下不持有“生存权”的服务器被指定为“从”服务器。要指出,此处的“主”和“从”不意味服务器之间彼此相对的重要性,同样也不是表明哪一个服务器主要负责为网络设备提供网络资源。在正常运行情况下,从提供网络资源的角度,主服务器和从服务器可以互换。在网络服务器之间的通讯发生丢失时,“生存权”作为一种缺省的协议,以确保“大脑分裂”的情况不会发生。

当主服务器检测到通讯丢失时,它可以继续工作,因为它能够假定另外的从服务器发生了故障,不能正常运转。当从服务器检测到通讯丢失时,它所采取的一系列动作就比较复杂。它并不是简单地中止运行,而是进行推断通讯丢失是主服务器故障的结果,还是由于通讯链路的故障所导致的。如果通讯链路可以正常运转,从服务器就断定主服务器发生了故障。此种情况下,从服务器继续正常工作,并且不会造成发生“大脑分裂”问题的风险。然而,如果从服务器判断通讯链路出现故障,它就假定主服务器仍然能够正常运行。针对此种假设,从服务器停止工作以避免造成“大脑分裂”的情况。

本发明的一个重要优点就是:最初不持有“生存权”的从服务器,在能断定与主服务器之间的通讯丢失不是由于通讯链路故障造成的情况下,仍然可以继续工作。由于缺乏对通讯链路的分析,如果发生与主服务器通讯丢失的情况,要求从服务器能够自动关闭,以避免发生“大脑分裂”的问题。需要指明的是,在一个每台网络服务器都拥有专用磁盘镜像或大容量存储设备的计算机集群中,针对服务器间发生的通讯丢失情况,使用本发明中上述的方法可以增强计算机集群系统的可靠性和可用性;其原因在于:当主服务器出现故障时,发生“大脑分裂”问题的可能性并不强制性要求从服务器必须离线。

在每台网络服务器都拥有专用磁盘镜像的计算机集群中,常规的“法定数额”规则的应用通常并不理想。例如,如果拥有“法定数额”的网络服务器发生故障,就将不会有共享磁盘可以投票,以将“法定数额”重新分配给另一个网络服务器。其结果是,针对此类计算机集群,如果拥有“法定数额”的网络服务器发生故障,直接使用常规的“法定数额”规则将导致不持有“法定数额”的网络服务器不必要的关闭。

在分离的磁盘镜像中保存数据的方式显著减少了丢失网络数据的可能,但这也造成了一个经常面临的问题:在计算机集群中需要有一个单独的磁盘在各网络服务器之间共享。由此,依照本发明,服务器不需要共享一个单独的磁盘,服务器的分布就不会受到磁盘驱动器之间连线长度的限制。因此,各网络服务器及与其相连的磁盘镜像互相之间就可以远距离分布。这样就减少了突然发生的自然灾害或电源故障有可能造成整个计算机集群瘫痪的可能。

本发明其他特性和优点将在下文中阐述,根据叙述其中部分内容将会十分明显,或通过对本发明的实践,也可掌握部分内容。采用所附权利要求中的工具和手段,可了解掌握本发明的特性和优势。通过下面的叙述和所附权利要求,本发明的特性将充分表露出来,或可通过如下文所述的对本发明的实践,从而为人所知。

附图简述

为了解本发明上述以及其他优点特性,附图中举例说明了一些明确的实施例。需要说明,这些附图仅展示了本发明的一些典型的实施例,不能因此认为本发明仅限于这些范围,本发明其他特征与细节也将描述在下列附图中:

图1为常规的计算机集群结构图,其中服务器共享一个磁盘。

图2为根据本发明提供合适的运行环境的计算机集群的示意图。

图3是在一台服务器上不同软件模块之间的通讯过程,使得服务器可以决定是否采取“生存权”。

图4是服务器在检测到与其他服务器发生通讯丢失的情况下,如何决定是否采取“生存权”的方法流程图

图5是在计算机集群中,针对其他服务器的故障,服务器如何持有“生存权”的方法流程图。

发明详述

本发明涉及一种提高计算机集群系统中资源和数据的可用性和可靠性的方法。计算机集群至少包含两个服务器,每台服务器都有一个专用的大容量存储设备。服务器互相之间以及与其他网络设备之间通过计算机网络进行通讯。数据在每台服务器的磁盘之间建立镜像,如果一台服务器发生故障,网络设备仍然可以访问可信赖的数据。在服务器之间发生通讯丢失时,通讯模块在每台服务器上运作以决定本服务器是否应当自行关闭。

短语“生存权”是指,在服务器间的通讯链路发生故障从而导致服务器间的通讯丢失的情况下,一台服务器是否具有继续运行的权利。例如:如果检测到两个服务器间发生通讯丢失,且其原因是由于通讯链路的物理中断,持有“生存权”的服务器可以继续运行,而不持有“生存权”的服务器将自行关闭。如前所述,“主”服务器就是在服务器间发生通讯丢失时持有“生存权”的服务器;相反,“次”服务器就是不持有“生存权”的服务器。

短语“大脑分裂”是指,在计算机集群中,具有专用大容量存储设备的每台网络服务器出现互相之间没有建立数据镜像,独立工作这种不被希望出现的情况。本发明技术之前,当网络服务器之间发生通讯丢失时,每台服务器都假定其他服务器出现故障,并维持自己的正常运行,这时就会发生“大脑分裂”的问题。当发生“大脑分裂”的问题时,每台服务器上的镜像数据不再互相匹配并因此被破坏。考虑上例,由于通讯链路的物理中断而导致服务器间通讯丢失,如果服务器不能判断原因是由于物理损坏,每台服务器都将继续工作,并将其自己的数据写入到与其相连的大容量存储设备中。然而,由于通讯链路发生损坏,数据将不能建立镜像从而导致大容量存储设备上的数据不能维持其一致性。当通讯丢失是由于主服务器的故障造成时,通过令从服务器继续工作,本发明便可防止计算机集群工作在“大脑分裂”的模式下。

在本发明范围内的实施例同样包括已保存有计算机可执行的指令或数据结构的计算机可读介质。这些计算机可读介质可以是任何能够被常用的计算机,或是有任何特殊用途的计算机访问的介质。作为示例,但不限于这些示例,这些计算机可读介质可以包括RAM,ROM,EEPROM,CD-ROM等,或其他光学磁盘存储设备,磁盘存储器备或其他磁存储设备,或是其他任何介质,这些介质可以携带或存储由计算机可执行指令或由数据结构组成的程序代码,并且这些代码可被常用的或者是有特殊用途的计算机所访问。当信息通过网络或另一种通讯连接方式(可以是有线方式,无线方式,或是有线与无线结合的方式)被传递或提供给计算机时,计算机可能将通讯连接视为计算机可读介质。上述连接方式的组合也包括在计算机可读介质的范围内。计算机可执行指令包括,例如,一些指令和数据,它们可让常用计算机或是具有特殊用途的计算机,或具有特殊用途的处理设备执行一个或一组特定的功能。

图2和下面的论述将提供关于本发明实现的合适的计算机环境的简要描述。尽管不是必需的,本发明将以计算机可执行指令的常用形式进行叙述,例如可由网络环境中的计算机执行的程序模块形式。通常,程序模块包括子程序、程序、对象、组件、数据结构等等,它们可以组合完成特定的工作或是实现对特定抽象数据类型的操作。计算机可执行指令、相关数据结构和程序模块表示了用于执行此处说明的方法的步骤的程序代码实例。这些可执行指令或相关数据结构的特定序列表示了用于实现这些步骤中描述的功能的对应动作的实例。

本领域一般技术人员将发现本发明可以实际用在多种计算机系统配置的网络计算环境中,包括个人电脑,手持设备,多处理器系统,基于微处理器或可编程的消费电子产品,网络PC,小型机,大型机,以及类似环境。本发明同样可以用在分布式计算环境中,在这种环境下,任务由通过通讯网络连接(可以是有线方式,无线方式,或是有线与无线联合的方式)在一起的本地和远程处理设备完成。在分布式计算环境中,程序模块可以同时驻留在本地和远程的内存存储设备中。

图2描述了采用本发明方法的一种具有代表性的计算机集群配置。计算机集群包括两台服务器,分别标为服务器A 210和服务器B220。虽然在图2中只描述了两台服务器,此处说明的基本原则同样适用于具有多于两台服务器的计算机集群。服务器A 210和服务器B220都运行一个文件操作系统,可以是Microsoft Windows NT,其他多种操作系统同样可被本发明使用。服务器A 210包含通过网络接口211与网络201相连的计算机212,和通过大容量存储控制器213与之相连的大容量存储设备214。同样,服务器B 220包含通过网络接口221与网络201相连的计算机222,和通过大容量存储控制器223与之相连的大容量存储设备224。网络201可以是以太网,令牌网,增强资源计算机网络(ARCNET),或其他网络,利用它使得服务器A 210和服务器B 220可以与网络设备230,240和250进行通讯。

然而服务器A 210和服务器B 220的组成不必完全相同,在许多实际情况中也是如此。其他场合中,服务器A 210和服务器B 220可能有不同的处理器类型,不同的处理器运行速度,不同的大容量存储设备容量或者任何其他类型的硬件差异。必须具备的条件就是服务器A 210和服务器B 220必须能够运行文件操作系统,并且一台服务器上的驱动器不能过大到以至在另一台服务器上将不能建立其镜像。

如图2所示的实施例中,专用链路202建立起了服务器A 210和服务器B 220之间的通讯联系。计算机212通过通讯附加装置215与专用链路202相连,计算机222通过通讯附加装置225与专用链路202相连。专用链路202可以通过本领域一般技术人员所熟知的多种技术实现。举一种实施例,专用链路202可以是使用以太网协议的一条链路。其他方法包括使用计算机212和222的串行通讯端口进行高速连接,亦可使用计算机212和222的并行接口。依照另外的实现方式,可以不使用专用链路202和通讯附加装置215和225,服务器A 210和服务器B 220之间的通讯由一个虚拟回路或由网络201搭载的信道所建立。用于实现专用链路202的特定硬件类型并不重要,提供的数据传输速率与大容量存储设备214和224的数据传输速率具有可比性,因此系统运行效率不受限制。

网络设备230,240和250分别通过网络接口231,241和251与网络201相连接。它们就是使用计算机系统210与220的资源来访问存储在大容量存储设备214和224上面的数据的客户端设备。网络设备230,240和250可以是能够通过网络201进行通讯的任何设备。

在计算机集群运行过程中,服务器A 210和服务器B 220可为任何网络设备230,240和250提供资源。此外,服务器A 210和服务器B 220都可以感知到专用链路202完整性上的错误。当一个网络设备与服务器A 210进行通讯,对大容量存储设备214上的数据进行添加,修改或删除,所做的更新通过专用链路202在大容量存储设备224上建立镜像。同样地,一个网络设备与服务器B 220进行通讯,对大容量存储设备224上的数据进行添加,修改或删除,所做的更新也通过专用链路202在大容量存储设备214上建立镜像。由于在图2所示的实施例中,数据通过专用链路202建立镜像,它不会对网络201产生拥塞。

建立镜像的结果就是在大容量存储设备214和224中都包含有所有计算机集群数据完全一致的拷贝。因此,如果一个大容量存储设备发生故障,计算机集群仍然可以继续可靠运行。如果大容量存储设备214发生故障,导致网络设备230,240和250不能访问其上的数据,它们就可以访问大容量存储设备224上的数据,反之亦然。由于服务器A 210和服务器B 220没有共享同一个大容量存储设备,因此不会发生一处数据毁坏导致所有数据毁坏的情况,并且它们彼此之间可以相隔很远。服务器A 210和服务器B 220之间的远距离分布减少了由于电源断电或自然灾害导致所有的大容量存储设备中的数据同时都不能访问的风险。

当服务器A 210和服务器B 220进行初始化配置时,其中一台服务器由操作员赋予“生存权”。本实例中的“生存权”由一个软件标志表示,并且可以被设置为“开”或“关”。通常,在计算机集群进行正常运转时,“生存权”标志在一台服务器上并且只能在一台服务器上设置为“开”。当完成初始化配置后,在下文将要详细描述的某些网络情况下,服务器可以将其“生存权”标志由“关”变为“开”的位置。

如果服务器间的通讯发生丢失,“生存权”用来决定哪一台服务器可以继续对集群的操作,以及哪一台服务器必须中止对集群的操作。服务器A 210和服务器B 220之间发生通讯丢失,主要有两种情况。第一种情况发生在由于服务器发生软件故障或掉电,导致一台服务器终止了通过专用链路202进行的通讯。第二种情况发生在专用链路202的完整性发生故障时。

如上所述,服务器A 210和服务器B 220可以区分两种不同类型的通讯失败的情况。在下面的论述中,假定服务器B 220是主服务器,即在计算机集群正常运作的初始化时期,服务器B 220持有“生存权”;此时,服务器A 210为从服务器,开始并不持有“生存权”。如果主服务器B 220检测到与服务器A 210发生通讯丢失,由于持有“生存权”,服务器B 220继续运行,并且不关心通讯丢失的原因是由于专用链路202的故障,还是服务器A 210的故障。

当从服务器A 210检测到与服务器B 220发生通讯丢失,服务器A 210停止操作,除非它确定对它来说承担“生存权”是安全的。如果服务器A 210确定通讯丢失的原因是在通讯链路202上的故障,服务器A 210就假定主服务器B 220仍然可以继续工作。因此,由于服务器A 210没有“生存权”,它便终止动作,以避免发生“大脑分裂”的问题。然而,如果从服务器A 210确定通讯链路202没有故障,它便假定是由于主服务器B 220的故障或是其不再能够提供网络服务导致发生通讯丢失。在这种情况下,从服务器A 210为自己赋予“生存权”并继续工作,不必担心在集群中发生“大脑分裂”的问题。在后种情况中,服务器A 210可以处理来自网络设备230,240和250的资源请求,否则,这些请求将被提交到发生故障的服务器B 220处。在前述的任何情况中,服务器间发生通讯丢失后,只能有一台服务器可以继续运行,以避免发生“大脑分裂”之问题。

图3展示了在依照本发明的一种实施例所实现的具有代表性的计算机系统之中,各软件模块之间的交互作用。图3所示的系统和结构提供了一个实例,说明服务器A 210在检测到与其他服务器之间的通讯丢失后,如何决定自己是否应该获得“生存权”并继续工作。在计算机集群初始化操作时,“生存权”标志306可以由系统管理员或是自动进行初始设置。如上所述,当检测到与其他服务器发生通讯丢失时,持有“生存权”标志且设置为“开”的服务器继续工作,并且不关心原因是在专用链路202完整性上的错误,或是由于其他服务器故障所导致。此处本发明所概括性描述的内容延伸到主服务器,其“生存权”标志306初始化时设置为“开”位置,在发生通讯丢失后,它仍然可以继续工作。下面将要详细论述图3中关于从服务器的内容,此时从服务器丢失与其他服务器的通讯,并且其“生存权”标志306设置为“关”位置。

如图3所示,当服务器A 210在计算机集群中工作时,它在计算机集群中各组件间接收和发送数据。数据308表示由服务器B 220通过专用链路202发送到服务器A 210的心跳信号。此处使用的短语“心跳信号”可以是以任何形式存在的任何信号或数据,并可由服务器用来确定另一台服务器是否正常工作。通讯附加装置驱动程序301是用来控制通讯附加装置215和接收数据308的软件模块。同样,数据309表示传送在网络201上的数据。网络接口驱动程序302控制网络接口211并接收数据309。

在“生存权”标志306被置为“关”位置时,当可以断定与服务器B 220的通讯发生丢失时,作为响应,服务器A 210可以使用数据308和用来处理分析数据308和专用链路210的模块来决定是否应当继续工作。服务器A 210包含一个服务器通讯探测器303,可以用来监控与服务器B 220的通讯,以判断是否按预期接收到了数据308。连接状态探测器304可为任何硬件组件,软件组件,或软、硬件的结合;当与服务器B 220的通讯丢失时,可以用来探测专用链路202是否出现故障。在许多情况下,服务器通讯探测器303和连接状态探测器304可以是分离的模块,虽然二者的功能可以合并为一个结构。

在本例中,通讯探测器303和连接状态探测器304监控数据308和专用链路202的完整性。然而,在另外一个实施例中,与服务器B 220的通讯是使用网络201和网络接口驱动302来传递数据,而不是使用专用链路202;服务器通讯探测器303和连接状态探测器304监控数据309和网络201的完整性。

在上述任意一种情形中,服务器通讯探测器303判断是否检测到了服务器B 220的心跳信号。当发现来自服务器B 220的心跳信号丢失时,连接状态探测器分析传送心跳信号的通讯链路(例如:专用链接202或网络201)的完整性。当发生与服务器B 220的通讯丢失时,服务器通讯探测器303和连接状态探测器304向负责处理通讯丢失的管理器305通报该现象,并告知其是否有可能是传送心跳信号的通讯链路发生故障。接下来,负责处理通讯丢失的管理器305根据“生存权”306的状态和来自服务器通讯探测器303和连接状态探测器304的信息,决定是否关闭服务器A 210,或允许其继续工作。

总结负责处理通讯丢失的管理器305采取的规则,可以得到:如果“生存权”标志306标明服务器A 210持有“生存权”,那么服务器A 210就可以继续工作。然而,假设与服务器B 220的通讯丢失时,服务器A 210是从服务器,且根据“生存权”标志306,服务器A 210不持有“生存权”;那么,如果可以断定是通讯链路的故障导致通讯丢失,负责处理通讯丢失的管理器305就使服务器A 210停止工作。如果通讯链路的故障导致通讯丢失,那么就假定服务器B 220可以正常运转,在这种情况下,使服务器A 210停止工作可以避免整个计算机集群工作在“大脑分裂”模式下的可能。

相反,如果负责处理通讯丢失的管理器305断定服务器A 210与服务器B 220之间发生通讯丢失,并且通讯链路没有发生故障,负责处理通讯丢失的管理器305就推断服务器B 220出现故障。假定服务器A 210是从服务器,接下来,“生存权”标志306就被设定为“开”的位置,表明服务器A 210拥有了“生存权”。在此种状况下,服务器A 210通过满足以前对服务器B 220发出的服务请求,对计算机集群进行“重组”。通过发送命令给网络接口驱动302,使网络接口驱动302对以前网络设备在网络201上发送到服务器B 220的请求进行服务,服务器A 210达到了“重组”的目的。

图4为下列步骤的流程图:在计算机集群中,当主服务器(亦即初始化时持有“生存权”的服务器)发生故障时,为提高网络资源可用性,依照本发明的一个实施例,在从服务器(亦即现在还没有“生存权”的服务器)上会采取一系列步骤。需要注意的是,当与从服务器发生通讯丢失时,主服务器不需要采取图4中的一系列步骤;因为主服务器持有“生存权”,这使得它可以继续工作而不需关心通讯丢失的原因,相关内容将参考图5在后文作详细阐述。

继续研究图4,在判别框401中,从服务器A试图检测与服务器B通讯是否可信赖。如果服务器A能够检测到与服务器B的可信赖通讯,程序进行到步骤402,其中服务器等待一个特定的时间间隔,然后重复判别框401中的判断。

如果在判别框401中,服务器A未探测到与服务器B的可信赖通讯,那么在判别框403中,服务器A就检查通讯链路的可靠性。如果在判别框403中服务器A未检测到可信赖的通讯链路,那么在步骤405中,服务器A就终止在集群中的活动,以避免工作在“大脑分裂”模式中。

然而,在判别框403中,如果服务器A确实检测到了可信赖的通讯链路,那么程序进行到判别框407。在判别框407中,程序判断在假定服务器B发生故障之前,服务器A是否等待了必需的若干个时间间隔。如果根据判别框407,服务器A尚未等待必需的若干个时间间隔,程序进行到步骤408,该步骤中服务器A等待一个时间间隔。等待过后,在判别框409中,服务器A试图再次检测是否与服务器B有可信赖通讯。如果在判别框409中服务器A检测到了与服务器B的可信赖通讯,程序返回步骤402。根据步骤407,408和409定义的循环,重复检测重新建立的通讯连接,以避免在重组集群系统之前,由于服务器B上不重要的软件错误造成的短暂停顿,使得服务器A取代服务器B的位置进行工作。

如果服务器A在若干次必需的尝试后仍没有检测到与服务器B的可信赖通讯,在步骤411中,服务器A就为自身赋予“生存权”,并在步骤412中对集群进行重组。服务器A完成对集群的重组后,它再一次于判别框413中开始检测来自服务器B的通讯是否可信赖。如果服务器B从一个非终止类型的软件错误中恢复,在集群完成重组后,它可能继续向服务器A发送心跳信号和其他数据以与服务器A保持通讯。只要没有检测到来自服务器B的通讯,那么就如判别框413和步骤414组成的循环所示,服务器A继续工作,并周期性地监控来自服务器B的通讯。如果在判别框413中,检测到来自服务器B的通讯重新建立完成,程序进行到步骤415,其中服务器B在发生任何磁盘访问事件之前自行关闭,以避免工作在“大脑分裂”模式并由此导致服务器A和服务器B的大容量存储设备中的数据产生矛盾。

根据本发明的一个实施例,持有“生存权”的主服务器可以执行图5中的程序步骤,作为针对来自其他服务器发生通讯丢失的反应。在判别框501中,主服务器B试图检测与服务器A的可信赖通讯。如果主服务器B能够检测到与服务器A的可信赖通讯,程序进行到步骤502,其中服务器B等待一个特定的时间间隔,然后继续重复判别框501中的动作。

在判别框501中,如果服务器B没有检测到与服务器A的可信赖通讯,程序进行到判别框507,判断在假定服务器A发生故障之前,服务器B是否等待了必需的若干个时间间隔。如果根据判别框507,服务器B尚未等待必需的若干个时间间隔,程序进行到步骤508,该步骤中服务器B等待一个时间间隔。等待过后,在判别框509中,服务器B试图再次检测是否与服务器A有可信赖通讯。如果在判别框509中服务器B检测到了与服务器A的可信赖通讯,程序返回步骤502。根据步骤507,508和509定义的循环,重复检测重新建立的通讯连接,以避免在重组集群系统之前,由于服务器A上不致命的软件错误造成的短暂停顿,使得服务器B取代服务器A的位置进行工作。

如果服务器B在若干次必需的尝试后仍没有检测到与服务器A的可信赖通讯,在步骤512中,服务器B对集群进行重组。服务器B完成对集群的重组后,它再一次于判别框513中开始检测来自服务器A的通讯是否可信赖。如果服务器A从一个非终止类型的软件错误中恢复,在集群完成重组后,它可能继续向服务器B发送心跳信号和其他数据以与服务器B保持通讯。只要没有检测到来自服务器A的通讯,那么就如判别框513和步骤514组成的循环所示,服务器B继续工作,并周期性地监控来自服务器A的通讯。如果在判别框513中,检测到来自服务器A的通讯重新建立完成,程序进行到步骤516,其中服务器B重组集群以接纳服务器A恢复工作。

在不背离本发明的精神和必需特征的前提下,本发明可以通过其他特定方式实现。上述实施例应被认为仅作为说明行为,而非仅限于此。因此,本发明的范围由所附权利要求所标明,而非前文描述。在不背离和超出本发明的权利要求及其等同物所限定的范围内,可以进行修改。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号