説明

改良された高可用性コンポーネント実装のためのシステム及び方法

本発明は、少なくとも2つのノードを有するクラスタ内で使用するための、トランスポート接続上でのセッションを介する高可用性処理のためのコンピュータシステム及び方法に関する。このシステムは、プロトコルコンポーネント、少なくとも2つのノードを有してプロトコルコンポーネントを動作させるように構成されているクラスタ、及びトランスポート接続上でクラスタのノードとのプロトコルセッションを維持するように構成されたサーバを備える。クラスタは、少なくとも2つのインスタンスがアクティブであるように前記少なくとも2つのノードのそれぞれにおいてプロトコルコンポーネントの、1つのインスタンスを維持するように構成され、サーバはプロトコルセッションを各インスタンスと同時に維持するように構成される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロトコルコンポーネント、少なくとも2つのノードを有してプロトコルコンポーネントを動作させるように構成されているクラスタ、及びTCP接続などトランスポート接続上でクラスタのノードとのプロトコルセッションを維持するように構成されたサーバを備えた高可用性処理のためのシステムに関する。また、本発明はトランスポート接続上のプロトコルセッションを介した高可用性処理のための方法に関する。
【背景技術】
【0002】
より高い可用性と低ダウンタイムを必要とする応用例が増加するにつれて、フォールトトレラントな高可用性処理システムに大きな関心が寄せられている。1つの知られている解決策はプロセッサのクラスタグループを相互接続するネットワークを必要とする(imply)。クラスタはハードウェア冗長の原理に基づくものであり、通常は可用性の増大のために単一のシステムとして管理される複数のノードからなる。
【0003】
高可用性クラスタに関する最も一般的なサイズは2つのノード、例えばマスタノードとバックアップノードである。現在、コンポーネント実装が高可用性であるとベンダが主張するときには、コンポーネントが、クラスタ化された環境内で動作すること、またコンポーネントの1つのインスタンスがサーバとプロトコルセッションを維持することを意味する。一般に、マスタコンポーネントは、マスタコンポーネントが順調に機能している限りオフラインで機能するがマスタコンポーネントが故障したとき使用可能になるバックアップコンポーネントによってバックアップされる。換言すれば、現行の「高可用性」アーキテクチャはコンポーネントのいくつかのインスタンス(マスタコンポーネント、及び1つ又は複数のバックアップコンポーネント)からなるが、マスタコンポーネントとサーバの間に単一のプロトコルセッションしかない。マスタコンポーネントが故障した場合、新しいプロトコルセッションをサーバとバックアップコンポーネントの間で開く必要がある。従って、サーバはサービスの使用可能でない期間を知覚することになる。実際には、コンポーネントに対する処理負担及びコンポーネントが故障する確率は低減されない。はっきり言えば、コンポーネントをバックアップコンポーネントによって支援してもコンポーネントに対する処理負担は減少しない。コンポーネントが使用できなくなる確率はバックアップコンポーネントが有っても無くてもちょうど同じである。さらに、バックアップコンポーネントに対する処理負担は通常、マスタコンポーネントに対する処理負担に近く、その結果、この解決策の総処理負担は単一のコンポーネントの処理負担のほぼ2倍になる。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本発明の目的は、コンポーネントに対する処理負担を低減し、使用可能なリソースに対する負荷を低減するように構成可能であり、従ってコンポーネントのインスタンスのクラッシュ及び/又は障害の確率を低減する、トランスポート接続に基づく高可用性コンポーネント実装を提供することである。
【課題を解決するための手段】
【0005】
この目的を達成するために、本発明によるシステムは、クラスタが、少なくとも2つのインスタンスがアクティブであるように前記少なくとも2つのノードのそれぞれにおいてプロトコルコンポーネントの1つのインスタンスを維持するように構成される点、またサーバが、プロトコルセッションを各インスタンスと同時に維持するように構成される点を特徴とする。さらに、従来技術の問題は本発明の方法によって解決され、この方法は、基本的に、プロトコルコンポーネントを少なくとも2つのノードにわたって分散し、同じプロトコルコンポーネントの、1つのインスタンスが各ノード上で動作すること、及び1つ又は複数のトランスポート接続上でこのプロトコルコンポーネントと少なくとも2つのプロトコルセッションを開くことによって特徴付けられる。
【0006】
本発明のシステム及び方法は、プロトコルコンポーネントに対する処理負担を低減することによって、真の負荷平衡機構からプロトコルに対する利益をもたらすことができるという利点を有する。というのは、プロトコルコンポーネントが少なくとも2つのノードにわたって分散され、それらの少なくとも2つのプロトコルセッションが依然としてアクティブであるためそれらのノードに対するトラフィックを連続的に適切に調整することができるからである。
【0007】
「プロトコルセッション」という用語は広い意味で解釈される必要があり、TCP(伝送制御プロトコル)接続を介したXMPPセッションなどトランスポート接続上の任意の持続性のある接続を指すが、例えばTCP又はSCTP(ストリーム制御伝送プロトコル)接続を介したDiameterプロトコル接続をも含むことに留意されたい。原則として、プロトコルセッションを使用する、またトランスポート接続上での使用に適した任意の他のプロトコルが本発明によって想定されている。
【0008】
有利な実施形態が従属請求項に記載されている。
【0009】
好ましくは、このシステムは、障害のあるインスタンスとのプロトコルセッション上で送られるトラフィックを異なるアクティブなプロトコルセッションに再度割り当てるように構成される。そのようにして恒久的な可用性が確保される。
【0010】
好ましい実施形態によれば、サーバは、所定のアルゴリズムに従ってプロトコルパケットを複数のインスタンスのそれぞれに代わりに割り当てるためのモジュールを備える。このモジュールは通常、そのプロトコルコンポーネントとのアクティブなプロトコルセッションのリストにアクセスすることができ、サーバはプロトコルパケットを、これらのパケットを所定のアルゴリズムに従って送るモジュールに送達するように構成される。ラウンドロビン法、ハッシュ法、ランダム法、固定割当て法、セッション識別子に基づく方法、前記方法のうちの1つ以上の組合せなど、多数の様々なアルゴリズムが可能であることを当業者なら理解するであろう。これらの方法は、図4を参照してさらに明らかにされることになる。
【0011】
本発明の方法の異なる態様によれば、サーバはプロトコルコンポーネントの各インスタンスに対する処理負荷を測定し、プロトコルパケットの割当てはその処理負荷測定に基づく。そのようにして、インスタンス間で非常に効率的な負荷平衡を実施することができる。
【0012】
添付の図面を使用し、本発明の現在好ましい非限定的な例示的実施形態を示す。以下の詳細な説明を添付の図面と併せ読めば、本発明の上記の、及び他の利点、特徴、及び目的がより明らかになり、本発明についてより良く理解されよう。
【図面の簡単な説明】
【0013】
【図1】本発明のシステム及び方法を実施することができる典型的なコンピュータネットワークの例を示す図である。
【図2A】従来技術の高可用性実装を概略的に示す図である。
【図2B】従来技術の高可用性実装を概略的に示す図である。
【図3A】本発明のシステム及び方法の一実施形態を概略的に示す図である。
【図3B】本発明のシステム及び方法の一実施形態を概略的に示す図である。
【図4】本発明のシステム及び方法において使用するように構成されたXMPPサーバを概略的に表した図である。
【発明を実施するための形態】
【0014】
図1に、多数のクライアント1、多数のサーバ2、並びに第1のサーバ及び第2のサーバ5からなるサーバクラスタ3を有する典型的なコンピュータシステムを示す。サーバクラスタ3は通常、同じマシン上で動作することができる、又は異なるマシン上に位置することができる多数のサーバインスタンス又はプロセスからなることに留意されたい。サーバクラスタのサーバインスタンスは多数のコンポーネント6、7を動作させるように構成される。
【0015】
図2は、いわゆる高可用性XMPP(Extensible Messaging and Presence Protocol)コンポーネント実装を用いた、XMPPコンポーネントベンダによって使用されている従来技術の方法を示す。XMPPは、メッセージ及びプレゼント情報(present information)をほぼリアルタイムで交換するためにXMLエレメントをストリーミングするためのプロトコルである。IETFのXMPPワークグループはJabberプロトコルをIETFによって承認されたインスタントメッセージング(IM)及びプレゼンス技術としてさらに適合させた。提供されているプロトコルは、http://www.ietf.org/rfc/rfc3920.txtから入手可能なRFC3920(XMPPコア)、及びhttp://www.ietf.org/rfc/rfc392l.txtから入手可能なRFC3921(XMPPコアに対するIM及びプレゼンス拡張部)であり、これらのRFCテキストは参照により本明細書に組み込む。これに加えて、JabberコミュニティはJabber拡張プロトコル(XEP)を管理している。
【0016】
XMPPは高信頼のコンポーネントがXMPPサーバに接続することを可能にし、XMPPサーバ及びXMPPコンポーネントは1つ以上の相互のXMPPセッションを維持する。そのようなセッションはトランスポート接続、特にTCP接続上で確立される。メッセージセッションはTCP接続を介してXMLスタンザのストリームとして搬送される。
【0017】
図2(A)に示されているように、従来技術の高可用性実装は、マスタXMPPコンポーネント21が故障した場合に引き継ぐためにバックアップXMPPコンポーネント20を使用することにある。XMPPコンポーネントを実行するために、XMPPサーバ22はマスタコンポーネント21との単一のセッションを維持するにすぎない。バックアップXMPPコンポーネント20はマスタコンポーネント21が順調に機能している限りオフラインで機能する。この状況では、バックアップコンポーネントは、図2(B)に示されているように、マスタコンポーネントが使用できなくなった場合にバックアップコンポーネントが直ちに引き継ぐことができるように、必要とされる構成及び/又はリアルタイム情報全てをマスタコンポーネント21から複製する。しかし、XMPPセッションが存在せず、XMPPサーバとバックアップコンポーネントの間で新しいセッションを開く必要があるため、ユーザはサービスの使用可能でない期間を知覚することになる。
【0018】
本発明の主な着想は、バックアップコンポーネントを提供することに次いで、一方の側のサーバと他方の側のコンポーネント及びバックアップコンポーネントとの間にバックアッププロトコルセッションが提供されることである。
【0019】
この概念の可能な実施形態が図3(A)及び図3(B)に示されている。この例では、XMPPプロトコルが使用される。しかし、図のシステム及び方法は、トランスポート接続上で、通常はTCPを使用して搬送される任意の他のプロトコルで実施することもできることを当業者なら理解するであろう。XMPPに対する代替の一例は、Diameterである。Diameterベースプロトコルは、ネットワークアクセス又はIPモビリティなどの応用例のために認証、許可、アカウンティング(AAA)フレームワークを提供することが意図されており、http://www.ietf.org/rfc/rfc3588.txtから入手可能なRFC3588に定義されている。
【0020】
図3(A)の例では、XMPPコンポーネントが3つのノードのクラスタにわたって分散されている。各ノードには、同じXMPPコンポーネントの1つのインスタンス31、32、33があり、各インスタンス31、32、33はサーバ30との単一のXMPPセッション34、35、36を維持する。全てのインスタンス31〜33及びそれらの対応するセッション34〜36は同時にアクティブであり、その結果、トラフィックを全てのXMPPセッションにわたって効果的に分割することができる。換言すれば、同じXMPPコンポーネントの総処理負担を、クラスタ内でアクティブである異なるインスタンスにわたって均等に分散することができる。そのような均等分散の場合には、n個のノードのクラスタの各インスタンスの処理負担がおよそn分の1に分割されることになる。
【0021】
しかし、いくつかのシステムでは、不均等な分散を有することが好ましい可能性があることを当業者なら理解するであろう。これは、例えば、あるコンポーネントが別のコンポーネントより高い、使用可能な処理能力を有する場合である。可能な変形形態によれば、各コンポーネントの負荷を測定するようにサーバを構成することができ、トラフィックの分割はそのような負荷測定に基づくものとすることができよう。これについては図4を参照して下記でさらに論じる。
【0022】
インスタンスの1つ、例えば図3(B)におけるインスタンス3が故障した場合、セッション3上で送られるトラフィックはセッション1及び/又はセッション2に自動的に再度割り当てられる。
【0023】
クラスタ内で同時にアクティブである異なるプロトコルセッションに向かってトラフィックを割り当てること、及び障害時の自動再割当ては、サーバ内に設けられた特別なモジュールによって行うことができる。次に、フォールトトレラント(FT)モジュールとも呼ばれるそのようなプロトコルセッション割当てモジュールの一実施形態について、図4を参照して例示する。
【0024】
この実施形態によれば、FTモジュール42はXMPPサーバ40内で実装され、典型的にはいくつかのTCP接続の上で開かれた使用可能なXMPPセッションの間で、XMPPコンポーネントに対して指定されたトラフィックをどのように分割するか決定する責任を担う。
【0025】
同じコンポーネントとの1組のXMPPセッションを開いたとき、XMPPサーバ40は、通常はセッションIDで識別される確率済みXMPPセッションのリスト41についてFTモジュールに通知することになる。パケットをXMPPコンポーネントに転送しなければならないとき、FTモジュールはどのXMPPセッションを使用するか判断し、それに応じてパケットを送ることになる。以下のものなど、様々なアルゴリズムを使用することができる。
− 各XMPPセッションが順に使用されるラウンドロビン法。FTモジュールは最後のセッションID(又はそれに関連する変数)を覚えており、次のパケットを次のセッションIDによって識別される次のセッションに送る。そのようなアルゴリズムは多数のコンポーネントがあるとき有用となり、実装するのが非常に簡単であるという利点を有する。
− ハッシュ法:FTモジュールは、最初に、「フロー」(例えば、「スレッドID」(があればそれ)と結合された「to」及び「from」属性)を識別するXMPPパケット内のいくつかのフィールドにわたってハッシュ(例えば、CRC16)を実施することによって鍵を選択する。各セッションIDには、鍵空間内の一意の領域が割り当てられる。FTモジュールはこの鍵を使用し、パケットを送る必要があるセッションIDを決定する。そのようなアルゴリズムは専用のコンポーネントを拾い上げる必要がある場合特に適切なものとなるがより複雑である。
− ハッシュ法の、ラウンドロビン法又は任意の他の単純なアルゴリズムとの組合せ:ハッシュ法により、可能なコンポーネントのリストが返された場合には、判断するために別の方法を使用しなければならないことになり、これは例えば、ラウンドロビン法、又は下記の他の方法のうちの1つとすることができよう。
− 負荷に基づく方法:各コンポーネントに対する処理負荷に関する情報を得るように、サーバを構成することができる。次いで、パケットを負荷の最も小さいコンポーネントのセッションに送ることができよう。
− パケットを「任意の」コンポーネントにランダムに送る「ランダム」法。
− ある種のパケットが同じセッション上で常に送られる「常に同じ」法。
− 例えば最も小さい識別子を有するコンポーネントにパケットを送る、識別子に基づく方法、など。
【0026】
本発明の原理について、特定の実施形態に関連して上述したが、この説明は、例として記載されているにすぎず、添付の特許請求の範囲によって決定される保護の範囲を限定するものとして記載されているのではないことを明確に理解されたい。

【特許請求の範囲】
【請求項1】
プロトコルコンポーネント、
少なくとも2つのノードを有し、前記プロトコルコンポーネントを動作させるように構成されているクラスタ、及び
トランスポート接続上で前記クラスタのノードとのプロトコルセッションを維持するように構成されたサーバ
を備えた高可用性処理のためのコンピュータシステムであって、
前記クラスタが、少なくとも2つのインスタンスがアクティブであるように前記少なくとも2つのノードのそれぞれにおいて前記プロトコルコンポーネントの、1つのインスタンスを維持するように構成されること、及び前記サーバが、プロトコルセッションを各インスタンスと同時に維持するように構成されることを特徴とするコンピュータシステム。
【請求項2】
請求項1記載のコンピュータシステムであって、さらに、
前記少なくとも2つのインスタンスのうちの障害のあるインスタンスとのプロトコルセッション上で送られるトラフィックを、前記少なくとも2つのインスタンスのうちの別のインスタンスとの維持されている異なるプロトコルセッションに再度割り当てるように構成されたことを特徴とするコンピュータシステム。
【請求項3】
請求項1記載のコンピュータシステムであって、
前記トランスポート接続上の前記プロトコルセッションが、以下のプロトコル、即ちXMPP、Diameter、又はトランスポート接続上で使用するのに適した任意の他のシグナリングプロトコルのうちの1つを使用することを特徴とするコンピュータシステム。
【請求項4】
請求項1記載のコンピュータシステムであって、
前記サーバが、所定のアルゴリズムに従ってプロトコルパケットを前記複数のインスタンスのそれぞれに代わりに割り当てるためのモジュールを備えたことを特徴とするコンピュータシステム。
【請求項5】
請求項4記載のコンピュータシステムであって、
前記モジュールが、そのプロトコルコンポーネントとのアクティブなプロトコルセッションのリストにアクセスすることができること、及び前記サーバが、プロトコルパケットを前記モジュールに送達するように構成されたことを特徴とするコンピュータシステム。
【請求項6】
少なくとも2つのノードを有しプロトコルコンポーネントを動作させるように構成されているクラスタ内で使用するための、トランスポート接続上でのセッションを介する高可用性処理のための方法であって、
プロトコルコンポーネントが少なくとも2つのノードにわたって分散され、前記プロトコルコンポーネントの、1つのインスタンスが各ノード上で動作すること、及び
サーバが、1つ又は複数のトランスポート接続上でこのプロトコルコンポーネントに対して少なくとも2つのプロトコルセッションを開くことを特徴とする方法。
【請求項7】
請求項6記載の方法であって、ある決定されたアルゴリズムに基づいて、プロトコルパケットが前記少なくとも2つのプロトコルセッションに割り当てられることを特徴とする方法。
【請求項8】
請求項7記載の方法であって、前記アルゴリズムが、ラウンドロビン法、ハッシュ法、ランダム法、固定割当て法、セッション識別子に基づく方法、又は前記方法のうちの1つ以上の組合せのうちの1つであることを特徴とする方法。
【請求項9】
請求項6記載の方法であって、前記サーバが前記プロトコルコンポーネントの各インスタンスに対する処理負荷を測定し、前記プロトコルパケットの割当てが前記処理負荷測定に基づくことを特徴とする方法。
【請求項10】
請求項6記載の方法であって、前記少なくとも2つのプロトコルセッションのうちのあるプロトコルセッション上で前記少なくとも2つのインスタンスのうちの障害のあるインスタンスに送られるプロトコルパケットが前記少なくとも2つのプロトコルセッションのうちの異なるプロトコルセッションに再度割り当てられることを特徴とする方法。

【図1】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3A】
image rotate

【図3B】
image rotate

【図4】
image rotate


【公表番号】特表2011−505619(P2011−505619A)
【公表日】平成23年2月24日(2011.2.24)
【国際特許分類】
【出願番号】特願2010−535300(P2010−535300)
【出願日】平成20年11月24日(2008.11.24)
【国際出願番号】PCT/EP2008/010163
【国際公開番号】WO2009/068317
【国際公開日】平成21年6月4日(2009.6.4)
【出願人】(391030332)アルカテル−ルーセント (1,149)
【Fターム(参考)】