发明内容
图1所示的双重化配置需要的服务器的数目是在正常操作期间操作的活动服务器的数目的两倍。从而,就处理能力和成本之间的关系来看,涉及到高成本。如果额外安装服务器以尝试向外扩展节点,则对于每个节点必须添加两个服务器,这也构成了高成本的一个因素。
在采用图2所示的N重化配置的情况下,考虑到处理能力和成本之间的关系,与图1的配置相比成本降低了。然而,如果任何活动服务器发生故障,则通信路径必须被分割来到达接管服务的多个服务器,为了采取这样的动作,必须进行复杂的操作。
图3所示的冷备用的N+1冗余配置比图1的配置需要的成本低,并且不需要如图2所示的分割通信路径的操作。另外,图3的配置不需要同步数据的处理。然而,在活动服务器和备用服务器之间没有同步数据,因此,当备用服务器取代发生故障的活动服务器开始操作时,备用服务器无法继续到目前为止由活动服务器提供的服务。
还存在这样一种系统,其采用与图3类似的配置,并且允许备用服务器在同步数据被从发生故障的活动服务器传送到备用服务器之后开始服务。然而,在此情况下,由于必须同时传送大量同步数据,所以为了高速切换服务器,需要包含能够进行高速数据传送的特殊接口的昂贵服务器。
在图4所示的具有热备用的N+1冗余配置中,备用服务器在其开始操作时可以继续活动服务器的服务。然而,由于单个备用服务器934负责与N个活动服务器931-933进行数据同步,所以活动服务器的数目N的增大将要求备用服务器934提供大量资源。一般为活动服务器931-933和备用服务器934采用相同性能的服务器,但是这样一种使用方式将导致活动服务器的规格过高,并且增大了切换时的成本。
本发明的一个目的是提供在无需诸如分割通信路径之类的复杂操作的情况下能够在包括多个服务器的冗余配置中以低成本继续服务的技术。
为了实现上述目的,根据本发明一个方面的一种节点系统包括:
多个活动服务器,这多个活动服务器级联连接,使得与前级服务器的数据同步的数据被存储在后级服务器中;以及
备用服务器,该备用服务器存储与级联连接的多个活动服务器中最后一个活动服务器的数据同步的数据,
其中,在任何活动服务器发生故障时,从发生故障的活动服务器后级的服务器到备用服务器的每个服务器利用与相应的前级服务器同步的数据来接管到目前为止由该前级服务器提供的服务。
根据本发明的一个方面的一种服务器切换方法包括:
在后级活动服务器中存储与前级服务器的数据同步的数据,使得多个活动服务器级联连接,并且在备用服务器中存储与级联连接的多个活动服务器中的最后一个活动服务器的数据同步的数据,
其中,在任何活动服务器发生故障时,从发生故障的活动服务器后级的服务器到备用服务器的每个服务器利用与相应的前级服务器同步的数据来接管到目前为止由该前级服务器提供的服务。
根据本发明的一个方面的一种服务器装置包括:
存储装置,用于存储与节点系统中的前级活动服务器装置的数据同步的数据,该节点系统包括多个活动服务器装置,这多个活动服务器装置级联连接,使得与前级服务器装置的数据同步的数据被存储在后级活动服务器装置中,该节点系统还包括备用服务器装置,该备用服务器装置存储与最后的活动服务器装置的数据同步的数据;以及
处理装置,响应于在前级活动服务器装置中发生故障,或者响应于从前级活动服务器装置做出的请求,用于使后级服务器装置接管到目前为止由服务器装置本身提供的服务,然后利用存储在存储装置中的、与前级活动服务器装置的数据同步的数据来接管到目前为止由前级活动服务器装置提供的服务。
根据本发明的一个方面的一种程序使得计算机执行:
用于存储与节点系统中的前级活动服务器装置的数据同步的数据的过程,该节点系统包括多个活动服务器装置,这多个活动服务器装置级联连接,使得与前级服务器装置的数据同步的数据被存储在后级活动服务器装置中,该节点系统还包括备用服务器装置,该备用服务器装置存储与最后的活动服务器装置的数据同步的数据;
用于在前级活动服务器装置中发生故障时或者在从前级活动服务器装置做出请求时,使后级服务器装置接管到目前为止由服务器装置本身提供的服务的过程;以及
用于利用存储在存储装置中的、与前级活动服务器装置的数据同步的数据来接管到目前为止由前级活动服务器装置提供的服务的过程。
具体实施方式
将参考附图详细描述本发明的示例性实施例。
(第一示例性实施例)
图5是示出第一示例性实施例中的节点的配置的框图。此示例性实施例的节点包括活动服务器111、112和备用服务器12。活动服务器111、112和备用服务器12连接到通信路径13。
在正常操作期间,活动服务器111、112利用其自己的数据D11、D12来提供服务,并将其自己的数据同步到其他服务器。这样,节点被维持在活动服务器111、112的服务能够被另外的服务器继续的状态中。另外的服务器指的是其他活动服务器或备用服务器。在数据的同步中,活动服务器111、112的相互关系通过级联连接实现。级联连接中的最后的活动服务器112将其自己的数据D12同步到在下一级级联连接的备用服务器12,作为数据D12′。
当任何活动服务器发生故障时,该活动服务器后级的服务器利用与发生故障的活动服务器同步的数据来继续服务。在此情况下,更后级的服务器继续下述活动服务器到目前为止提供的服务:该活动服务器利用与前级活动服务器同步的数据提供服务。
当活动服务器112发生故障时,或者当活动服务器112取代更前级活动服务器111开始服务时,备用服务器12利用与前级活动服务器112同步的数据D12′来继续服务。
在图5的示例中,当活动服务器111发生故障时,活动服务器112利用与活动服务器111同步的数据D11′来继续服务。然后,活动服务器112提供的服务由备用服务器12继续。
在此示例性实施例中,多个活动服务器111、112和备用服务器12被级联连接,使得前级活动服务器的数据被同步到后级活动服务器,并且最后的活动服务器的数据被同步到备用服务器。当任何活动服务器发生故障时,其后级的服务器利用从前级服务器同步的数据来继续前级服务器的服务。
这样,在对于多个活动服务器包括一个备用服务器的配置中,活动服务器和备用服务器都被用于数据同步。结果,根据此示例性实施例,与备用服务器以一对一对应关系支持活动服务器时相比,可以以更低的成本切换服务器以继续服务,其中备用服务器所需的资源不取决于活动服务器的数目,无需诸如分割通信路径之类的复杂操作。
预期到,当备用服务器所需的资源不取决于活动服务器的数目时,这种独立性有助于以低成本获得备用服务器,并且当在活动服务器和备用服务器之间提供共同性时,还有助于以低成本获得活动服务器。
再次参考图5,活动服务器11包括处理器14、存储设备15和通信接口16。
处理器14通过执行软件程序来操作,并且利用存储在存储设备15中的数据来提供服务。
处理器14在利用其自己的数据提供服务时还将其自己的数据同步到后级服务器。另外,如果在包含处理器14的服务器之前存在活动服务器11,则处理器14在存储设备15中存储与前级活动服务器11同步的数据。
另外,当前级活动服务器11发生故障时,或者前级活动服务器11取代更前级活动服务器11开始服务时,处理器14利用与前级活动服务器11同步的数据D1′来继续服务。
存储设备15保存相关联的服务器的服务所需的数据。另外,当在相关联的服务器之前存在活动服务器11时,存储设备15还保存来自前级服务器的同步的数据D1′。
通信接口16连接到通信路径13以在服务器之间建立通信。在服务器之间,同步数据在活动服务器之间或者活动服务器与备用服务器之间传送。
备用服务器12包括处理器17、存储设备18和通信接口19。
处理器17通过执行软件程序来操作,并且在前级活动服务器112发生故障时或者当活动服务器112取代更前级的活动服务器111开始服务时,利用存储在存储设备18中的与活动服务器112同步的数据D12′来继续服务。
存储设备18保存与前级活动服务器112同步的数据D12′。
通信接口19连接到通信路径13以与前级活动服务器112进行通信。在通信中,通信接口19在活动服务器112与备用服务器12之间传送同步数据。
图6是示出在第一示例性实施例的服务器中当前级活动服务器发生故障时服务器的操作的流程图。这里,作为示例,使操作对于活动服务器11和备用服务器12是同样的。
参考图6,服务器检测活动服务器11的故障,并且开始服务器间切换序列(步骤101)。服务器间切换序列是用于在提供冗余的多个服务器之间切换服务的处理序列。服务器判定在其后级是否存在活动服务器11或备用服务器(步骤102)。这是判定服务器本身是活动服务器11还是备用服务器12的处理。当使得操作对于活动服务器11和备用服务器12是同样的时,不需要此处理。当在其后级发现服务器时,意味着服务器本身是活动服务器,而当在其后级没有服务器时,意味着服务器本身是备用服务器。
当存在后级服务器时,服务器向后级服务器发送服务器间切换请求(步骤103)。服务器间切换请求是用于请求后级服务器开始服务器间切换序列的消息。然后,在接收到来自后级服务器的服务器间切换完成消息后(步骤104),服务器停止其操作(步骤105)。服务器间切换完成是用于通知服务器间切换序列完成的消息。然后,服务器利用与前级服务器同步的数据接管到目前为止前级服务器提供的服务(步骤106)。
另一方面,当在步骤102中判定没有后级服务器时,服务器进行步骤106处的操作,其中服务器接管到目前为止前级服务器提供的服务。
图7是示出在第一示例性实施例的服务器中接收到来自前级活动服务器的服务器间切换请求的服务器的操作的流程图。这里,作为示例,使得操作对于活动服务器11和备用服务器12是同样的。
参考图7,服务器接收来自前级服务器的服务器间切换请求,并且开始服务器间切换序列(步骤201)。步骤202-206处所示的服务器间切换序列与图6中步骤102-106处所示的相同。当服务器完成步骤202-206处的处理时,服务器向前级服务器发送服务器间切换完成消息,并且终止处理。
接下来,将描述当活动服务器11发生故障时整个节点的操作。这里,将描述当从活动服务器111和活动服务器112都在提供服务的正常操作状态中活动服务器111发生时节点的操作。当活动服务器111发生故障时,服务器被切换,使得活动服务器112和备用服务器12提供服务,从而允许了节点继续操作。
当活动服务器111发生故障时,活动服务器112检测此故障,并且开始服务器间切换序列。活动服务器112认识到其本身不是备用服务器,并且请求将接管活动服务器112的服务的后级服务器(备用服务器12)进行服务器间切换。
在接收到服务器间切换请求后,备用服务器12利用与前级活动服务器112同步的数据D12′来开始到目前为止由活动服务器112提供的服务。然后,备用服务器12通知前级活动服务器112服务器间切换完成。
在接收到来自备用服务器12的服务器间切换完成后,活动服务器112停止到目前为止由其提供的服务。接下来,活动服务器112利用与前级活动服务器111同步的数据D11′开始到目前为止由活动服务器111提供的服务。
注意,在服务器之间发送/接收的服务器间切换请求和服务器间切换完成的数据量与为了同步用于服务中的数据而传送的同步数据的数据量相比足够小。这样,服务器之间的通信花费较短的时间,并且服务器间切换立即完成。从而,当活动服务器111发生故障时,从整个节点来看可以继续服务。
另外,虽然此示例性实施例是在假设后级服务器检测前级服务器的故障的情况下描述的,但是本发明并不限于此,也可以用任何配置或方法来监视故障。
(第二示例性实施例)
在第一示例性实施例中,一个备用服务器被指派给级联连接的一组活动服务器。然而,本发明并不限于此。第二示例性实施例例示了将一个备用服务器指派给级联连接的两组活动服务器的配置。
活动服务器充当其余活动服务器之一的备份,因此包括用于存储两个活动服务器的数据(包括其自己的数据)的存储容量。当对于活动服务器和备用服务器都使用具有相同性能的服务器时,备用服务器也包括用于存储两个活动服务器的数据的存储容量。
因此,在此示例性实施例中,多个活动服务器被分成两组,并且在每个组中通过级联连接来同步数据,并且在两组的最末级处共享一个备用服务器。这样,当任何活动服务器发生故障时,服务器间切换可以仅限于该活动服务器所属的组。
另外,作为一个结果,可以减少伴随着服务器间切换而在服务器之间发送/接收的消息。当N个活动服务器都在一个组中级联连接时,在服务器间将进行最多N次通信。作为替换,当N个活动服务器被分成两组,每组包括(N/2)个活动服务器时,通信可以减少到最多(N/2)次。结果,从整个节点来看也减少了服务器间切换所花费的时间量。
图8是示出第二示例性实施例中的节点的配置的框图。此示例性实施例的节点包括活动服务器211-214以及备用服务器22。活动服务器211-214和备用服务器22连接到通信路径23。
活动服务器211-214被分成两组,即包括活动服务器211、212的组和包括活动服务器214、213的组,其中通过级联连接同步数据。
在正常操作期间,活动服务器211-214利用其自己的数据D21-D24来提供服务,并且将其自己的数据D21-D24同步到级联连接中其后级的服务器。
当任何服务器发生故障时,该活动服务器后级的服务器利用与发生故障的活动服务器同步的数据来继续服务。在此情况下,更后级的服务器利用与前级活动服务器同步的数据来继续将接管服务的活动服务器到目前为止提供的服务。
当属于两个组中的任何一组的前级活动服务器21中发生故障时,或者当前级活动服务器21取代更前级活动服务器21开始服务时,备用服务器22利用与前级活动服务器21同步的数据D2′来继续服务。
在此示例性实施例中,当活动服务器21发生故障时,服务器间切换限于包括发生故障的活动服务器21的群组内。
在图8的示例中,当活动服务器211发生故障时,活动服务器212利用与活动服务器211同步的数据D21′来继续服务。然后,先前由活动服务器212提供的服务由备用服务器22继续。
另一方面,当活动服务器214发生故障时,活动服务器213利用与活动服务器214同步的数据D24′来继续服务。然后,先前由活动服务器213提供的服务由备用服务器22继续。
再次参考图8,活动服务器21包括处理器24、存储设备25和通信接口26。处理器24、存储设备25和通信接口26在配置和操作上与图5所示的根据第一示例性实施例的活动服务器11的处理器14、存储设备15和通信接口16类似。
备用服务器22包括处理器27、存储设备28和通信接口29。备用服务器22与图5所示的根据第一示例性实施例的备用服务器12的不同之处在于它被两个组中的活动服务器所共享。然而,备用服务器22对于每个组的操作方式与第一示例性实施例中的备用服务器12类似。另外,处理器27、存储设备28和通信接口29对于每个组的操作方式与根据第一示例性实施例的处理器17、存储设备18和通信接口19类似。
接下来,将描述当活动服务器211发生故障时整个节点的操作。这里,将描述当从活动服务器211-214提供服务的正常操作状态中活动服务器211发生故障时节点的操作。当活动服务器211发生故障时,服务器被切换,使得活动服务器212和备用服务器22提供服务,从而允许了节点继续操作。
当活动服务器211发生故障时,活动服务器212检测该故障,并且开始服务器间切换序列。活动服务器212确认其不是备用服务器,并且向继续活动服务器212自身的服务的后级服务器(备用服务器12)请求服务器间切换。
在接收到服务器间切换请求后,备用服务器12利用与前级活动服务器212同步的数据D22′来开始到目前为止由活动服务器212提供的服务。然后,备用服务器22通知活动服务器212服务器间切换完成。
在接收到来自备用服务器22的服务器间切换完成后,活动服务器212停止到目前为止由其提供的服务。接下来,活动服务器212利用与前级活动服务器211同步的数据D21′开始到目前为止由活动服务器211提供的服务。
注意,在服务器之间发送/接收的服务器间切换请求和服务器间切换完成消息的数据量与为了同步用于服务中的数据而传送的同步数据的数据量相比足够小。这样,服务器之间的通信花费较短的时间,并且服务器间切换立即完成。从而,当活动服务器211发生故障时,从整个节点来看可以继续服务。
另外,虽然这里例示的配置对两组活动服务器包括一个备用服务器,配置也可以改为对于三组或更多组包括一个备用服务器。
(第三示例性实施例)
在第一和第二示例性实施例中,每个活动服务器属于一组,并且多个活动服务器仅在一个方向上同步其数据。然而,本发明并不限于此,第三示例性实施例例示了一种配置,其包括级联连接的多个活动服务器,使得它们的数据在两个方向上被同步。
在此示例中,一个方向上的第一活动服务器在另一方向上被视为最末活动服务器。多个活动服务器连接成一线,使得相邻的活动服务器在两个方向上相互同步数据。另外,两端处的两个活动服务器还与备用服务器同步它们的数据。
关于作为不同组的不同方向上的级联连接,活动服务器分别属于两个组。这样,当活动服务器发生故障时,可以从两组中选择适当的一个来执行切换。
根据此配置,当任何活动服务器发生故障时,服务器间切换可以仅限于两个方向之一。另外,当任何活动服务器发生故障时,可以依据发生故障的活动服务器选择包括较少数目的必须切换服务的服务器的组。结果,服务器间切换所要求在服务器之间发送/接收的消息的数目可以减少。当N个活动服务器都在一个组中级联连接时,在服务器之间将最多进行N次通信。作为替换,当N个活动服务器被分成各包括(N/2)个活动服务器的两组并且在双方向上级联连接以总共提供四组时,通信可以减少到最多(N/4)次。结果,从整个节点来看也减少了服务器间切换所花费的时间量。
图9是示出第三示例性实施例中的节点的配置的框图。此示例性实施例的节点包括活动服务器311-316以及备用服务器32。活动服务器311-316和备用服务器32连接到通信路径33。
活动服务器311-316被分成两组,即活动服务器311、312和313的集合和活动服务器313、314、315和316的集合,它们分别通过级联连接同步其数据。
属于同一集合的多个活动服务器31连接成一线,使得相邻的活动服务器31在双方向上相互同步数据,并且两端的两个活动服务器还与备用服务器32同步其数据。
例如,在活动服务器311、312和313的集合中,活动服务器311和活动服务器312在双方向上相互同步数据。另外,活动服务器312和活动服务器313在双方向上相互同步数据。此外,位于两端的活动服务器311和活动服务器313还与备用服务器32同步其数据。这样,通过活动服务器311、312和313的集合建立了两组级联连接。
这里,活动服务器313属于两个集合,并且在每个集合中位于级联连接的组的最后一级,在该处连接到备用服务器32。利用此配置,单个活动服务器313的数据可以用作两个组的应当同步到备用服务器32的数据。
再次参考图9,活动服务器31包括处理器34、存储设备35和通信接口36。处理器34、存储设备35和通信接口36在配置和操作上与图5所示的根据第一示例性实施例的活动服务器11的处理器14、存储设备15和通信接口16类似。然而,在此示例性实施例中,单个活动服务器31属于多个组。
因此,当任何一个活动服务器31发生故障时,判定将在发生故障的活动服务器31所属的一个组中执行服务器间切换。处理器34除了与图5所示的根据第一示例性实施例的活动服务器11的处理器14的功能类似的功能之外,还可包括在任何活动服务器31发生故障时选择要经历服务器间切换的组的功能。例如,处理器34可以根据发生故障的活动服务器31的位置来选择要经历服务器间切换的组。更具体而言,每个服务器可以预先登记有将发生故障的活动服务器31映射到下述组的信息:该组包括最少数目的针对故障必须进行服务器间切换的服务器。
备用服务器32包括处理器37、存储设备38和通信接口39。与图8所示的第二示例性实施例中的备用服务器22的情况一样,备用服务器32被多个组所共享。备用服务器32对于每个组的操作方式与第一示例性实施例中的备用服务器12类似。另外,处理器37、存储设备38和通信接口39对于每个组的操作方式与根据第一示例性实施例的处理器17、存储设备18和通信接口19类似。
接下来,将描述当活动服务器314发生故障时整个节点的操作。这里,将描述当从活动服务器311-316正提供服务的正常操作状态中活动服务器314发生故障时节点的操作。
当活动服务器314发生故障时,活动服务器313和活动服务器315检测到该故障。在经过活动服务器313的组中,在去往备用服务器32的途中只经过一个服务器(只有活动服务器313)。另一方面,在经过活动服务器315的组中,在去往备用服务器32的途中经过两个服务器(活动服务器315、316)。因此,在经过活动服务器313的组中执行服务器间切换。
活动服务器313开始服务器间切换序列。活动服务器313确认它不是备用服务器32,并且向将继续活动服务器313自身的服务的后级服务器(备用服务器32)请求服务器间切换。
在接收到服务器间切换请求后,备用服务器32利用与前级活动服务器313同步的数据D33″′来开始到目前为止由活动服务器313提供的服务。另外,备用服务器32通知活动服务器313服务器间切换完成。
在接收到来自备用服务器32的服务器间切换完成消息后,活动服务器313停止到目前为止由其提供的服务。接下来,活动服务器313利用与前级活动服务器314同步的数据D34″开始到目前为止由活动服务器314提供的服务。
注意,在服务器之间发送/接收的服务器间切换请求和服务器间切换完成消息的数据量与为了同步用于服务中的数据而传送的同步数据的数据量相比足够小。这样,服务器之间的通信花费较短的时间,并且服务器间切换立即完成。从而,当活动服务器314发生故障时,从整个节点来看可以继续服务。
虽然已经参考一些示例性实施例描述了本发明,但是本发明并不限于这些示例性实施例。权利要求中限定的本发明在配置和细节上可以按各种方式被修改,本领域的技术人员可以理解这些方式是处于本发明的范围内的。