(57)【要約】【課題】ノードコンピュータ１１２自身に冗長性を与えることができるロードバランサ１１０を実現し、耐故障性を向上させたサーバシステムを提供する。【解決手段】クライアント１６からの要求を、ロードバランサ１１０は、ノードコンピュータ１１２ａ及び１１２ｂに対して送信する。ノードコンピュータ１１２ａ及び１１２ｂは要求の処理を仮実行し、仮完了通知を行う。ロードバランサ１１０は、早い仮完了通知を送信してきた側の結果のみを利用し、他方を無効にする。これによって、ノードコンピュータの二重化を行うことができる。一方が故障した場合には、故障した側からは仮完了通知が送信されてこないので、自動的に処理を続行することができる。【選択図】　　　図１
2004030204.tif 000002
【特許請求の範囲】
【請求項１】
複数のノードコンピュータと通信可能に接続され、外部からの要求をいずれかの前記ノードコンピュータに割り当てる負荷分散装置において、
前記要求を、前記複数のノードコンピュータ中の、いずれか２個以上のノードコンピュータに割り当てる割り当て手段と、
前記割り当て手段が、前記要求を割り当てたノードコンピュータに、前記要求を送信する要求送信手段と、
前記割り当て手段が前記要求を割り当てた前記２個以上のノードコンピュータのいずれかから、前記要求に対する処理の結果が得られたことを通知する仮完了通知を受信した場合に、そのノードコンピュータの処理の結果を採用するか否かを通知する採用通知手段と、
を含むことを特徴とする負荷分散装置。
【請求項２】
請求項１記載の負荷分散装置において、
前記採用通知手段は、
最も早く前記仮完了通知を送信してきた前記ノードコンピュータに対して、その処理の結果を採用する旨の採用通知を送信することを特徴とする負荷分散装置。
【請求項３】
請求項２記載の負荷分散装置において、
前記採用通知手段は、
前記仮完了通知を送信してきた前記ノードコンピュータが、最も早く仮完了通知を送信してきたノードコンピュータ以外のノードコンピュータである場合には、その処理の結果を採用しない旨の非採用通知をそのノードコンピュータに対して送信することを特徴とする負荷分散装置。
【請求項４】
請求項１、２又は３のいずれかの請求項に記載の負荷分散装置において、
前記割り当て送信手段が前記要求を前記前記ノードコンピュータに送信してから、所定期間内に前記ノードコンピュータから仮完了通知を受信できなかった場合に、仮完了通知を受信できなかった前記ノードコンピュータに障害が発生したと判断する障害検出手段、
を含むことを特徴とする負荷分散装置。
【請求項５】
負荷分散装置と通信可能に接続されるノードコンピュータにおいて、
前記負荷分散装置から要求が送信されてきた場合に、その要求の処理を実行する処理手段と、
前記処理手段による処理の結果が得られた場合に、仮完了通知を前記負荷分散装置に送信する仮完了通知手段と、
を含むことを特徴とするノードコンピュータ。
【請求項６】
請求項５記載のノードコンピュータにおいて、
前記負荷分散装置から、前記処理の結果を採用する旨の採用通知が送信されてきた場合に、前記処理の結果を最終的な結果として外部に送信する結果送信手段、
を含むことを特徴とするノードコンピュータ。
【請求項７】
請求項６記載のノードコンピュータにおいて、
前記負荷分散装置から、前記処理の結果を採用しない旨の非採用通知が送信されてきた場合に、前記処理の結果を無効にする結果無効手段、
を含むことを特徴とするノードコンピュータ。
【請求項８】
複数のノードコンピュータと、
前記複数のノードコンピュータと通信可能に接続され、外部からの要求をいずれかの前記ノードコンピュータに割り当てる負荷分散装置と、
を備えたサーバシステムにおいて、
前記ノードコンピュータは、
前記負荷分散装置から要求が送信されてきた場合に、その要求の処理を実行する処理手段と、
前記処理手段による処理の結果が得られた場合に、仮完了通知を前記負荷分散装置に送信する仮完了通知手段と、
を含み、
前記負荷分散装置は、
外部からの要求を、前記複数のノードコンピュータ中の、いずれか２個以上のノードコンピュータに割り当てる割り当て手段と、
前記割り当て手段が、前記要求を割り当てたノードコンピュータに、前記要求を送信する要求送信手段と、
前記割り当て手段が前記要求を割り当てた前記２個以上のノードコンピュータのいずれかから、前記要求に対する処理の結果が得られたことを通知する仮完了通知を受信した場合に、そのノードコンピュータの処理の結果を採用するか否かを通知する採用通知手段と、
を含むことを特徴とするサーバシステム。
【請求項９】
外部からの要求を、複数のノードコンピュータ中のいずれかのノードコンピュータに割り当てる負荷分散装置としてコンピュータを動作させるプログラムにおいて、前記コンピュータに、
外部からの要求を、前記複数のノードコンピュータ中の、いずれか２個以上の前記ノードコンピュータに割り当てる割り当て手順と、
前記割り当て手順が、前記要求を割り当てたノードコンピュータに、前記要求を送信する要求送信手順と、
前記割り当て手順が前記要求を割り当てた前記２個以上のノードコンピュータのいずれかから、前記要求に対する処理の結果が得られたことを通知する仮完了通知を受信した場合に、そのノードコンピュータの処理の結果を採用するか否かを通知する採用通知手順と、
をコンピュータに実行させることを特徴とするプログラム。
【請求項１０】
請求項９記載のプログラムにおいて、
前記採用通知手順は、
最も早く前記仮完了通知を送信してきた前記ノードコンピュータに対して、その処理の結果を採用する旨の採用通知を送信することを特徴とするプログラム。
【請求項１１】
請求項１０記載のプログラムにおいて、
前記採用通知手順は、
前記仮完了通知を送信してきた前記ノードコンピュータが、最も早く仮完了通知を送信してきたノードコンピュータ以外のノードコンピュータである場合には、その処理の結果を採用しない旨の非採用通知をそのノードコンピュータに対して送信することを特徴とするプログラム。
【請求項１２】
請求項９、１０又は１１のいずれかの請求項に記載のプログラムにおいて、
前記割り当て送信手順が前記要求を前記前記ノードコンピュータに送信してから、所定期間内に前記ノードコンピュータから仮完了通知を受信できなかった場合に、仮完了通知を受信できなかった前記ノードコンピュータに障害が発生したと判断する障害検出手順、
をコンピュータに実行させることを特徴とするプログラム。
【請求項１３】
コンピュータを、負荷分散装置に接続されるノードコンピュータとして動作させるプログラムにおいて、前記コンピュータに、
前記負荷分散装置から要求が送信されてきた場合に、その要求の処理を実行する処理手順と、
前記処理手順による処理の結果が得られた場合に、仮完了通知を前記負荷分散装置に送信する仮完了通知手順と、
を実行させることを特徴とするプログラム。
【請求項１４】
請求項１３記載のプログラムにおいて、前記コンピュータに、
前記負荷分散装置から、前記処理の結果を採用する旨の採用通知が送信されてきた場合に、前記処理の結果を最終的な結果として外部に送信する結果送信手順、
を実行させることを特徴とするプログラム。
【請求項１５】
請求項１４記載のコンピュータにおいて、前記コンピュータに、
前記負荷分散装置から、前記処理の結果を採用しない旨の非採用通知が送信されてきた場合に、前記処理の結果を無効にする結果無効手順、
を実行させることを特徴とするプログラム。
【請求項１６】
負荷分散装置と、前記負荷分散装置に通信可能に接続された複数のノードコンピュータとを含むサーバシステム上で、外部からの要求をいずれかのノードコンピュータに割り当てる負荷分散方法において、
前記負荷分散装置が、外部からの要求を、前記複数のノードコンピュータ中の、いずれか２個以上のノードコンピュータに割り当てる割り当てステップと、
前記負荷分散装置が、前記割り当てステップにおいて前記要求を割り当てたノードコンピュータに、前記要求を送信する要求送信ステップと、
前記ノードコンピュータが、前記負荷分散装置から要求が送信されてきた場合に、その要求の処理を実行する処理ステップと、
前記ノードコンピュータが、前記処理ステップによる処理の結果が得られた場合に、仮完了通知を前記負荷分散装置に送信する仮完了通知ステップと、
前記割り当てステップにおいて前記要求を割り当てた前記２個以上のノードコンピュータのいずれかから、前記要求に対する処理の結果が得られたことを通知する仮完了通知を受信した場合に、そのノードコンピュータの処理の結果を採用するか否かを通知する採用通知ステップと、
を含むことを特徴とする負荷分散方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、負荷分散装置に関する。また、負荷分散装置によって負荷を割り当てられるノードコンピュータに関する。
【０００２】
【従来の技術】
外部からの要求（リクエスト）に対してサービスを提供するサーバコンピュータ（以下、単にサーバという）が広く利用されている。要求はリクエストと呼ばれることも多い。本特許では、「要求」の言葉を用いる。このサーバの能力を高めるために、複数のコンピュータを組み合わせて、処理能力の大きな１台のサーバを構成するシステムが種々知られている。このようなシステムの典型的な例として、数多くの要求を処理する必要があるインターネット上のＷＥＢサーバが挙げられよう。特に、インターネット上で商取引を行う電子商取引のサービスを提供するＷＥＢサーバは、多くの購買注文を処理しなければならないので、実際には複数のサーバで構成されることが多い。また、複数のサーバで構成することによって、対障害性を向上させることができると考えられている。すなわち、複数台のサーバの中の１台が故障しても、残りのサーバで電子商取引のサービスを続行することができるのである。
【０００３】
このように複数のサーバを利用する簡易な仕組みの一つとして、インターネット上におけるＤＮＳラウンドロビンと呼ばれる仕組みが従来から広く知られている。このＤＮＳラウンドロビンは、１のドメイン名に複数のＩＰアドレスを割り当てていく手法で、外部からの要求がある度に、ＩＰアドレスを順番に割り当てていくことで、１台のコンピュータにアクセス（要求）が集中することを防ぐ仕組みである。この仕組みは複数のＩＰアドレスを用いてしまう。
【０００４】
これに対して、１個のＩＰアドレスに対する要求を、複数のコンピュータに分散させる装置も従来から知られており、しばしばロードバランサ（Ｌｏａｄ　Ｂａｌａｎｃｅｒ）と呼ばれている。このロードバランサ１０を用いたＷＥＢサーバの構成概念図が図４に示されている。
【０００５】
ロードバランサ１０は、複数のノードコンピュータ１２ａ〜１２ｄとネットワークで接続されており、互いに通信を行えるように構成されている。ロードバランサ１０は、インターネット１４を介してクライアント１６ａ〜１６ｃから送られてきた要求を各ノードコンピュータ１２ａ〜１２ｄに割り振る動作を実行している。本特許では、ロードバランサ１０によって管理される複数のコンピュータをノードコンピュータ１２と呼ぶ。
【０００６】
ロードバランサ１０がこのような動作を行うことによって、各クライアント１６ａ〜１６ｃからは、あたかも１台のＷＥＢサーバがサービスを提供しているかのように見えるのである。提供されるサービスは、例えばＷＥＢの閲覧サービスや、電子商取引のサービスや、翻訳のサービス、データベースのサービス、その他種々のサービスである。
【０００７】
例えば、クライアント１６ａが出した電子商取引のサービス要求は、ノードコンピュータ１２ａに割り当てられる。ノードコンピュータ１２ａはクライアント１６ａに対する電子商取引サービスを実行し、その結果をロードバランサ１０に返す。ロードバランサ１０は、返ってきたサービス結果をクライアント１６ａに送信する。このような動作をするために、ロードバランサ１０内には、どの要求をどのノードコンピュータ１２に割り当てたかを記憶する機能が備えられている。
【０００８】
一方、クライアント１６ｂが出した要求は、ロードバランサ１０が受信し、ノードコンピュータ１２ｂに割り当てられる。ノードコンピュータ１２ｂはクライアント１６ｂに対する電子商取引サービスを実行し、その結果をロードバランサ１０に返す。ロードバランサ１０は、返ってきたサービス結果をクライアント１６ｂに送信する。
【０００９】
このような動作の結果、外部のインターネット１４側からは、あたかも１台のサーバがサービスを提供しているかのように見えるのである。また、ロードバランサ１０と複数のノードコンピュータ１２ａ〜１２ｄからなるシステムを本特許ではサーバシステム２０と呼ぶ。
【００１０】
以下、従来のロードバランサ１０の機能をいくつか簡単に説明する。
【００１１】
Ａ．負荷分散アルゴリズム
従来のロードバランサ１０の負荷分散アルゴリズムは、種々のものが知られている。
【００１２】
（１）ラウンドロビン
上述したＤＮＳラウンドロビンと同様に、複数のノードコンピュータ１２に順番に要求を割り当てていく手法である。
【００１３】
（２）セッション数に基づき要求を割り当てる
各ノードコンピュータ１２ａ〜１２ｄに現在割り当てられているセッションの数を考慮して、最もセッション数が少ないノードコンピュータ１２に要求を割り当てていく手法である。セッションは、やや大雑把にいえば、ノードコンピュータ１２に割り当てられている一連のサービス群である。１個のセッションは、クライアント１６が要求を出してから、その後、商品カタログの閲覧や、購入の指示等を経て、最終的にログオフするまでの一連の手続きをいう。
【００１４】
ある１のクライアント１６が出力するセッションは、そのセッションの処理のすべてを同一のノードコンピュータ１２が受け持つ必要がある。そこで、この手法を採用する場合は、ロードバランサ１０は、どのノードコンピュータ１２にどのクライアント１６が割り当てられているのか、そして、現在そのセッションが継続しているのかどうか、を常に管理している必要がある。
【００１５】
（３）ブロードキャストによる最速応答に基づき要求を割り当てる。
【００１６】
ロードバランサ１０が各ノードコンピュータ１２ａ〜１２ｄに所定のメッセージを一斉同報で送信する。これをブロードキャスト（ＢｒｏａｄＣａｓｔ）という。そのメッセージに対して最も早く応答メッセージを返してきたノードコンピュータ１２が最も負荷が軽いと判断し、そのノードコンピュータ１２に新たに要求を割り当てるのである。
【００１７】
この手法は、負荷が軽いほど、そのノードコンピュータ１２は早く応答を返すことができるであろうという考え方に基づく。
【００１８】
これら（１）〜（３）の手法を実現するために、ロードバランサ１０と各ノードコンピュータ１２との間でステータス情報を送受信し、ロードバランサ１０は各ノードコンピュータ１２の状態を把握することが一般に行われている。
【００１９】
Ｂ．スティッキー（Ｓｔｉｃｋｙ）機能
既に触れているが、同一のクライアント１６から出力される処理は、同一のノードコンピュータ１２で処理することが極めて望ましい。このように、ロードバランサ１０は、あるクライアント１６が出す処理を同一のノードコンピュータに引き続き割り当てる機能を持っていることが多い。すなわち、あるクライアント１６の「最初の要求」を割り当てたノードコンピュータ１２に引き続き同一のクライアントからの「後の要求」を割り当てるのである。このような機能をスティッキー機能と呼ぶ。このスティッキー機能によって、同一のクライアントからの処理が同一のノードコンピュータ１２によって実行され、処理の連続性が担保される。
【００２０】
Ｃ．フェイルオーバー（Ｆａｉｌ　Ｏｖｅｒ）機能
図４の例では、ロードバランサ１０を１台備える例を示した。しかし、稼働率を向上させるためや、対故障性を向上させるために、ロードバランサ１０を２台備える構成を採用する場合も多い。すなわち、マスターとスレーブの２台のロードバランサ１０を備えて、マスター側が故障した場合に、マスターの持つノード情報をスレーブ側が受け継ぐ機能である。このような機能が従来から知られており、フェイルオーバー機能と呼ばれている。
【００２１】
【発明が解決しようとする課題】
上述したように、ロードバランサ１０自身の冗長化を行う手法は従来から知られていた。しかし、各ノードコンピュータ１２の冗長化を行う手法は知られていない。
【００２２】
そのため、あるノードコンピュータ１２における処理中に障害が発生した場合には、その処理の継続は従来は困難であった。複数備えられているノードコンピュータ１２は基本的には別の要求に対する処理を行っているからである。
【００２３】
本発明は係る課題に鑑みなされたものであり、その目的は、ノードコンピュータ１２自身に冗長性を与えることができる構成を提案することである。さらに、そのような構成のサーバシステム、及びそのサーバシステムを実現するためのロードバランサ及びノードコンピュータを提供することが本発明の目的である。
【００２４】
【課題を解決するための手段】
Ａ．負荷分散装置に関する発明
本発明は、上記課題を解決するために、複数のノードコンピュータと通信可能に接続され、外部からの要求をいずれかの前記ノードコンピュータに割り当てる負荷分散装置において、前記要求を、前記複数のノードコンピュータ中の、いずれか２個以上のノードコンピュータに割り当てる割り当て手段と、前記割り当て手段が、前記要求を割り当てたノードコンピュータに、前記要求を送信する要求送信手段と、前記割り当て手段が前記要求を割り当てた前記２個以上のノードコンピュータのいずれかから、前記要求に対する処理の結果が得られたことを通知する仮完了通知を受信した場合に、そのノードコンピュータの処理の結果を採用するか否かを通知する採用通知手段と、を含むことを特徴とする負荷分散装置である。
【００２５】
要求を２個以上のノードコンピュータに割り当てるので、いずれかのノードコンピュータに障害が発生しても要求の処理を続行することができる。
【００２６】
また、本発明は、請求項１記載の負荷分散装置において、前記採用通知手段は、最も早く前記仮完了通知を送信してきた前記ノードコンピュータに対して、その処理の結果を採用する旨の採用通知を送信することを特徴とする負荷分散装置である。
【００２７】
このような構成によって、ノードコンピュータは自己の処理結果が採用されたことを知ることができる。
【００２８】
また、本発明は、前記採用通知手段は、前記仮完了通知を送信してきた前記ノードコンピュータが、最も早く仮完了通知を送信してきたノードコンピュータ以外のノードコンピュータである場合には、その処理の結果を採用しない旨の非採用通知をそのノードコンピュータに対して送信することを特徴とする負荷分散装置である。
【００２９】
このような構成によって、ノードコンピュータは自己の処理結果が採用されなかったことを知ることができる。
【００３０】
また、本発明は、前記割り当て送信手段が前記要求を前記前記ノードコンピュータに送信してから、所定期間内に前記ノードコンピュータから仮完了通知を受信できなかった場合に、仮完了通知を受信できなかった前記ノードコンピュータに障害が発生したと判断する障害検出手段、を含むことを特徴とする負荷分散装置である。
【００３１】
このような構成によって、負荷分散装置は、ノードコンピュータに障害が発生したことを知ることができる。
【００３２】
Ｂ．ノードコンピュータに関する発明
また、本発明は、負荷分散装置と通信可能に接続されるノードコンピュータにおいて、前記負荷分散装置から要求が送信されてきた場合に、その要求の処理を実行する処理手段と、前記処理手段による処理の結果が得られた場合に、仮完了通知を前記負荷分散装置に送信する仮完了通知手段と、を含むことを特徴とするノードコンピュータである。
【００３３】
このような構成によって、処理を実行して結果が得られた場合に、その結果を外部に提供する前に、その旨を負荷分散装置に通知するので、負荷分散装置は、どのノードコンピュータにおいて結果が得られたかを知ることができる。
【００３４】
また、本発明は、前記負荷分散装置から、前記処理の結果を採用する旨の採用通知が送信されてきた場合に、前記処理の結果を最終的な結果として外部に送信する結果送信手段、を含むことを特徴とするノードコンピュータである。
【００３５】
また、本発明は、前記負荷分散装置から、前記処理の結果を採用しない旨の非採用通知が送信されてきた場合に、前記処理の結果を無効にする結果無効手段、を含むことを特徴とするノードコンピュータである。
【００３６】
このような構成によって、結果を採用しないノードコンピュータに対して、そのノードコンピュータで要求の処理を行った結果を無効にすることができる。
【００３７】
Ｃ．サーバシステムに関する発明
また、本発明は、複数のノードコンピュータと、前記複数のノードコンピュータと通信可能に接続され、外部からの要求をいずれかの前記ノードコンピュータに割り当てる負荷分散装置と、を備えたサーバシステムにおいて、前記ノードコンピュータは、前記負荷分散装置から要求が送信されてきた場合に、その要求の処理を実行する処理手段と、前記処理手段による処理の結果が得られた場合に、仮完了通知を前記負荷分散装置に送信する仮完了通知手段と、を含み、前記負荷分散装置は、外部からの要求を、前記複数のノードコンピュータ中の、いずれか２個以上のノードコンピュータに割り当てる割り当て手段と、前記割り当て手段が、前記要求を割り当てたノードコンピュータに、前記要求を送信する要求送信手段と、前記割り当て手段が前記要求を割り当てた前記２個以上のノードコンピュータのいずれかから、前記要求に対する処理の結果が得られたことを通知する仮完了通知を受信した場合に、そのノードコンピュータの処理の結果を採用するか否かを通知する採用通知手段と、を含むことを特徴とするサーバシステムである。
【００３８】
このような構成によって、耐故障性に優れたサーバシステムを実現可能である。
【００３９】
Ｄ．プログラムに関する発明
以下の発明は、上記負荷分散装置やノードコンピュータの動作をコンピュータに行わせるプログラムの発明であり、その作用は上記の発明群と同様である。
【００４０】
まず、本発明は、外部からの要求を、複数のノードコンピュータ中のいずれかのノードコンピュータに割り当てる負荷分散装置としてコンピュータを動作させるプログラムにおいて、前記コンピュータに、外部からの要求を、前記複数のノードコンピュータ中の、いずれか２個以上の前記ノードコンピュータに割り当てる割り当て手順と、前記割り当て手順が、前記要求を割り当てたノードコンピュータに、前記要求を送信する要求送信手順と、前記割り当て手順が前記要求を割り当てた前記２個以上のノードコンピュータのいずれかから、前記要求に対する処理の結果が得られたことを通知する仮完了通知を受信した場合に、そのノードコンピュータの処理の結果を採用するか否かを通知する採用通知手順と、をコンピュータに実行させることを特徴とするプログラムである。
【００４１】
また、本発明は、前記採用通知手順は、最も早く前記仮完了通知を送信してきた前記ノードコンピュータに対して、その処理の結果を採用する旨の採用通知を送信することを特徴とするプログラムである。
【００４２】
また、本発明は、前記採用通知手順は、前記仮完了通知を送信してきた前記ノードコンピュータが、最も早く仮完了通知を送信してきたノードコンピュータ以外のノードコンピュータである場合には、その処理の結果を採用しない旨の非採用通知をそのノードコンピュータに対して送信することを特徴とするプログラムである。
【００４３】
また、本発明は、前記割り当て送信手順が前記要求を前記前記ノードコンピュータに送信してから、所定期間内に前記ノードコンピュータから仮完了通知を受信できなかった場合に、仮完了通知を受信できなかった前記ノードコンピュータに障害が発生したと判断する障害検出手順、をコンピュータに実行させることを特徴とするプログラムである。
【００４４】
さらに、本発明は、コンピュータを、負荷分散装置に接続されるノードコンピュータとして動作させるプログラムにおいて、前記コンピュータに、前記負荷分散装置から要求が送信されてきた場合に、その要求の処理を実行する処理手順と、前記処理手順による処理の結果が得られた場合に、仮完了通知を前記負荷分散装置に送信する仮完了通知手順と、を実行させることを特徴とするプログラムである。
【００４５】
また、本発明は、前記コンピュータに、前記負荷分散装置から、前記処理の結果を採用する旨の採用通知が送信されてきた場合に、前記処理の結果を最終的な結果として外部に送信する結果送信手順、を実行させることを特徴とするプログラムである。
【００４６】
また、本発明は、前記コンピュータに、前記負荷分散装置から、前記処理の結果を採用しない旨の非採用通知が送信されてきた場合に、前記処理の結果を無効にする結果無効手順、を実行させることを特徴とするプログラムである。
【００４７】
Ｅ．負荷分散方法に関する発明
以下の発明は、上記サーバシステムに以下の実施の形態で説明するペアリングの動作を行わせる方法の発明であり、その作用は上記サーバシステムの採用と同様である。
【００４８】
本発明は、負荷分散装置と、前記負荷分散装置に通信可能に接続された複数のノードコンピュータとを含むサーバシステム上で、外部からの要求をいずれかのノードコンピュータに割り当てる負荷分散方法において、前記負荷分散装置が、外部からの要求を、前記複数のノードコンピュータ中の、いずれか２個以上のノードコンピュータに割り当てる割り当てステップと、前記負荷分散装置が、前記割り当てステップにおいて前記要求を割り当てたノードコンピュータに、前記要求を送信する要求送信ステップと、前記ノードコンピュータが、前記負荷分散装置から要求が送信されてきた場合に、その要求の処理を実行する処理ステップと、前記ノードコンピュータが、前記処理ステップによる処理の結果が得られた場合に、仮完了通知を前記負荷分散装置に送信する仮完了通知ステップと、前記割り当てステップにおいて前記要求を割り当てた前記２個以上のノードコンピュータのいずれかから、前記要求に対する処理の結果が得られたことを通知する仮完了通知を受信した場合に、そのノードコンピュータの処理の結果を採用するか否かを通知する採用通知ステップと、を含むことを特徴とする負荷分散方法である。
【００４９】
【発明の実施の形態】
以下、本発明の好適な実施の形態を図面に基づき説明する。
【００５０】
図１には、本発明の好適な実施の形態のサーバシステム１００の構成を表す説明図が示されている。この図に示すように、ロードバランサ１１０は、複数のノードコンピュータ１１２ａ〜１１２ｄとネットワークで互いに接続されており、互いに通信を行えるように構成されている。
【００５１】
ロードバランサ１１０は、インターネット１４を介してクライアント１１６ａ〜１１６ｃから送られてきた要求を各ノードコンピュータ１１２ａ〜１１２ｄに割り振る動作を実行している。このロードバランサ１１０は、請求の範囲の負荷分散装置の一例に相当する。
【００５２】
本実施の形態において特徴的なことは、ノードコンピュータ１１２ａとノードコンピュータ１１２ｂとがペア（組）を構成している点である。さらに、ノードコンピュータ１１２ｃとノードコンピュータ１１２ｄとがペアを構成している点が特徴である。そして、同じペアのノードコンピュータ１１２ａとノードコンピュータ１１２ｂに同様の動作を行わせることで、処理の２重化を図っているのである。この結果、いずれか一方のノードコンピュータ１２ａ（又は１２ｂ）に障害が発生した場合でも、他方のノードコンピュータ１２ｂ（又は１２ａ）がすぐに処理を引き継ぐことが可能となり、より可用性に富むサーバシステム１００を提供することができる。これは、ノードコンピュータ１１２ｃとノードコンピュータ１１２ｄとの間でも全く同様である。このように、２個のノードコンピュータ１１２をペアとし、いずれか一方のノードコンピュータに障害が発生した場合に、他方のノードコンピュータが処理を続行できる仕組みを本特許では、ペアリングと呼んでいる。このペアリングを実現するための構成、及び、より詳細な動作説明を、以下行う。
【００５３】
ロードバランサの構成
図２には、本実施の形態のロードバランサ１１０の機能構成を示す構成ブロック図が示されている。
【００５４】
この図に示すように、ロードバランサ１１０は、クライアント１６からの要求を受信し、要求を割り当てる割り当て手段２００を備えている。割り当て手段２００は、従来のロードバランサ１０と同様のアルゴリズムで要求を割り当てる。従来と異なる点は、割り当ての対象が、単一のノードコンピュータ１２ではなく、ノードコンピュータのペアである点である。例えば、要求は、ノードコンピュータ１１２ａとノードコンピュータ１１２ｂとのペアに割り当てられるのである。
【００５５】
どのノードコンピュータ１１２がペアを組んでいるかに関する情報がテーブル２０２に格納されている。さらに、テーブル２０２には、各ペアに割り当てられているセッションの数等、割り当てに関する情報がすべて格納されている。割り当て手段２００は、このテーブル２０２の内容を参照して割り当てるべきノードコンピュータ１１２のペアを決定する。
【００５６】
さらに、ロードバランサ１１０は、要求送信手段２０４を備えている。要求送信手段２０４は、上記割り当て手段２００の割り当ての決定に基づき、クライアント１６からの要求をそのペアに送信する。
【００５７】
また、ロードバランサ１１０は、ノードコンピュータ１１２から、処理が完了した旨の通知を受信し、最も早くこの通知を送信してきたノードコンピュータに対して、その処理結果を採用する旨の通知をする採用通知手段２０６を備えている。
【００５８】
本実施の形態においては、２個のノードコンピュータ１１２をペアとして扱い同時に同様の処理を行わせ、最終的にはいずれか１個のノードコンピュータ１１２の結果を採用する必要がある。本実施の形態ではこの採用の基準として、処理が完了した通知を最も早く送ってきたノードコンピュータ１１２を採用するアルゴリズムを利用している。詳細な動作については後に詳述する。
【００５９】
なお、採用通知手段２０６が、所定期間内に、ノードコンピュータ１１２から通知を受信できなかった場合、そのノードコンピュータ１１２には障害が発生したと判断することができる。係る判断は、ロードバランサ１１０中の障害検出手段２０８が行う。障害検出手段２０８が障害が発生したと判断したノードコンピュータに関する障害情報はテーブル２０２に格納される。
【００６０】
以上述べた構成は、ロードバランサ１１０内部のプロセッサと、このプロセッサが実行するプログラムとから構成されている。すなわち、ロードバランサ１１０自身もまたコンピュータであり、その動作は、実行するプログラムによって規定される。コンピュータとしては従来の一般のコンピュータと同様のものである。
【００６１】
また、上記テーブル２０２は、所定の記憶手段で構成することが望ましい。コンピュータ内部の半導体記憶装置や磁気ディスク装置であるハードディスクで構成することが好ましい。もちろん、他の光ディスク（ＣＤ、ＣＤ−Ｒ、ＤＶＤ、ＤＶＤ−ＲＷ等）で構成してもかまわない。
【００６２】
本実施の形態におけるロードバランサ１１０は、基本的に従来のロードバランサと同様の機能を有している。そして、従来と同様の機能に関してはよく知られている事項であるので、図２では表示せず、説明も省略する。
【００６３】
ノードコンピュータの構成
図３には、本実施の形態のノードコンピュータ１１２の機能構成を表す構成ブロック図が示されている。この図に示すように、ノードコンピュータ１１２は、ロードバランサ１１０から送信されてきた要求に基づき処理を実行する処理手段３００を備えている。この処理手段３００は、要求の処理を行う点で従来のロードバランサの処理手段と同様のものである。しかし、この処理手段３００は、従来の装置とは異なり、処理の結果が得られた場合に、これを仮完了通知手段３０２に通知する。そして、仮完了通知手段３０２は、処理の結果が得られたことをロードバランサ１１０に通知するのである。このように、処理の結果が得られた旨の通知を仮完了通知と呼ぶ。
【００６４】
本実施の形態では、ロードバランサ１１０は、この通知が最も早くこの通知を受け取った相手であるノードコンピュータ１１２の処理結果のみを採用する。そして、仮完了通知が遅かった方のノードコンピュータ１１２の処理の結果が無効となるのである。これは既に説明したとおりである。すなわち、ロードバランサ１１０が採用通知を送信してきた場合には、結果送信手段３０４が起動し、処理手段３００の処理結果を、外部のクライアント１６に直接送信する。一方、ロードバランサ１１０が非採用通知を送信してきた場合には、結果無効手段３０６が起動し、処理手段３００の処理結果を無効にする。
【００６５】
このような構成によって、２個のノードコンピュータ１１２を組として取り扱うことができるので、いずれか一方に障害が発生しても処理を続行できる可能性が高くなる。
【００６６】
以上述べた構成は、ノードコンピュータ１１２内部のプロセッサと、このプロセッサが実行するプログラムとから構成されている。すなわち、ノードコンピュータ１１２自身は一般のコンピュータと同様であり、その動作は、実行するプログラムによって規定される。
【００６７】
本実施の形態におけるノードコンピュータ１１２は、基本的に従来のノードコンピュータと同様の機能を有している。図３では表示していない他の構成・機能に関しては、従来と同様の構成・機能であるのでその説明は省略する。
【００６８】
全体の動作
以下、図１に示すサーバシステム１００の詳細な動作を図４のシーケンス図に基づき説明する。上述したように、本実施の形態の動作は、コンピュータプログラムによって規定されているものである。このプログラムを実行することにより、以下に示すような動作が実行される。
【００６９】
まず、クライアント１６ａ（又は１６ｂ、１６ｃ）からの要求を、ロードバランサ１１０が受信する。ロードバランサ１１０は、受信した要求を一旦内部のバッファに格納し、この要求を割り当てるペアを選択する。この選択は、割り当て手段２００が実行する。
【００７０】
本実施の形態において特徴的なことは、要求を割り当てるノードコンピュータ１１２が２個であるという点である。すなわち、要求の割り当て対象が１個のノードコンピュータ１１２ではなく、ノードコンピュータ１１２の「ペア」となっていることである。このような動作によって、ノードコンピュータ１１２の冗長化を実現しているのである。本実施の形態では、ノードコンピュータ１１２ａ及び１１２ｂが第１ペアを構成し、ノードコンピュータ１１２ｃ及び１１２ｄが第２ペアを構成するものとして説明を行う（図４参照）。なお、図４では、ノードコンピュータ１１２ａを「ノード１」と称し、ノードコンピュータ１１２ｂを「ノード２」と称している。
【００７１】
また、本実施の形態においては、割り当てアルゴリズム自体は、従来のアルゴリズムをそのまま利用している。例えば、割り当てられているセッション数が最も少ないペアに、新たに要求が割り当てられるのである。
【００７２】
以下、第１ペア（ノードコンピュータ１１２ａ及び１１２ｂ）に要求が割り当てられたものとして説明を行う。
【００７３】
要求送信手段２０４は、要求が割り当てられたノードコンピュータ１１２ａ及び１１２ｂに対して、要求を送信する。このように本実施の形態では、１個の要求が２個のノードコンピュータ１１２ａ、１１２ｂに対して送信される。
【００７４】
要求が送られたノードコンピュータ１１２ａ及び１１２ｂは、まず、その要求があったことを記録に残すと共に、その処理を仮実行する。ここで、仮実行とは、処理の演算を行い、結果を得られた状態であって、最終的な結果を外部に送信していない状態までの実行をいう。換言すれば、結果は得られているがクライアント１６に結果を送信しておらず、サービスが完了していない状態までの実行をいう。
【００７５】
例を示せば、データベースサービスにおいて、検索したデータ群を一括して書き換える処理の場合に、単にメモリ上でデータの値を書き換えたが、ハードディスク等にはまだ最終的な格納を行っておらず、クライアント１６にも報告していない段階までの実行である。本特許では、このような実行処理を仮実行と呼ぶ。
【００７６】
第１ペアのノードコンピュータ１１２ａ及び１１２ｂは、仮実行が完了した後、仮完了通知をロードバランサ１１０に対して行う。具体的には、仮完了通知手段３０２がこの通知を行う。
【００７７】
ロードバランサ１１０は、仮完了通知を受信した場合、採用通知手段２０６が、以下のような動作を実行する。
【００７８】
最初に受け取った仮完了通知を送信したノードコンピュータ１１２ａ（又は１１２ｂ）に対しては、採用通知を送信する（図４参照）。２番目に受け取った仮完了通知を送信したノードコンピュータ１１２ｂ（又は１１２ａ）に対しては、非採用通知を送信する（図４参照）。このように本実施の形態では、２台のコンピュータに同様の処理を実行させ、早く処理が完了した方の結果を採用し、他方を破棄するのである。１個の処理を２台のノードコンピュータ１１２で実行させているので、処理中に一方のノードコンピュータ１１２ａ（又は１１２ｂ）に障害が生じても他方のノードコンピュータ１１２ｂ（又は１１２ａ）で処理を続行することができる。その結果、信頼性の高いサーバシステム１００を構築することが可能である。
【００７９】
採用通知や、非採用通知は、採用通知手段２０６が行う。
【００８０】
採用通知を受け取ったノードコンピュータ１１２ａ（１１２ｂ）は、処理の結果をハードディスク等に書き込むと共に、外部のクライアント１６に送信する（図４参照）。この送信の処理をもってサービスの処理が完全に完了すると考えられるので、この処理を本実行と呼ぶ（図４参照）。クライアント１６に対する送信処理は、結果送信手段３０４（図３参照）によって実行される。なお、この送信は、ロードバランサ１１０を介して行われるが、ロードバランサ１１０は、単に処理の結果のデータや報告を通過させるだけである。
【００８１】
一方、非採用通知を受け取ったノードコンピュータ１１２ｂ（１１２ａ）においては、結果無効手段３０６がこの非採用通知を検出し、処理手段３００の処理結果を無効にする。無効とする処理は、最終的な結果として利用しない状態に置く処理であればどのようなものでもかまわない。処理結果を単にハードディスク等に格納せずに、処理結果のデータを消去してしまうのも好ましい。また、管理等のために処理結果をハードディスク等に保存する場合でも、処理結果のデータが無効であることを表すフラグ等を用いて、処理結果のデータが正規のデータとして利用されないような状況に置くことができれば、本発明における「無効」に該当する。
【００８２】
以上述べたように、本実施の形態によれば、複数のノードコンピュータ１１２中にペアを設定し、要求を一つのペア（２個のノードコンピュータ１１２）に割り当て、同様の処理を２台のノードコンピュータ１１２に実行させている。したがって、本実施の形態によれば、いずれかのノードコンピュータ１１２に障害が発生しても、処理を続行することが可能なサーバシステム１００を実現することができる。
【００８３】
障害の検出
図４に示したシーケンス図では、ノードコンピュータ１１２ａもノードコンピュータ１１２ｂも正常に動作している場合の動作例を示した。これに対していずれか一方に障害が発生した場合には、障害が発生した側のノードコンピュータ１１２からは仮完了通知が送信されてこないと考えられる。したがって、自動的に障害が発生していない側のノードコンピュータ１１２に対して採用通知が出され、その処理結果が利用されることになる。
【００８４】
このように本実施の形態によれば、２台のノードコンピュータ１１２に同時に同様の処理を実行させているので、障害が発生しても、引継に関連す特段の処理を経ずに処理を続行することが可能である。
【００８５】
なお、要求を割り当ててから所定期間以上、仮完了通知が来ない場合には、障害検出手段２０８がこれを検出し、テーブル２０２上に障害情報を格納する。この動作によって装置の管理者は障害が発生したノードコンピュータ１１２を迅速に知ることが可能となる。その結果、故障したノードコンピュータ１１２の交換等を速やかに行うことが可能な、利便性の高いサーバシステム１００が実現される。
【００８６】
変形例その他
（１）なお、ノードコンピュータ１１２は、ロードバランサ１１０に接続されているコンピュータの意味であるが、その構成や機能は一般のコンピュータと何ら変わるところはない。
【００８７】
（２）また、上記実施の形態では、２個のノードコンピュータ１１２をペアとして設定することを提案したが、ペアの代わりに３個以上の「組」を設けることも好ましい。この場合でも、最初に仮完了通知を送信してきたノードコンピュータ１１２の処理結果を採用し、他のノードコンピュータ１１２の結果を無効とする動作原理は全く同様である。
【００８８】
（３）ロードバランサ１１０と複数のノードコンピュータ１１２の集合体を本実施の形態ではサーバシステム１００と呼んだが、クラスタコンピュータや、ブレードコンピュータと呼ぶ場合もある。
【００８９】
（４）ロードバランサ１１０と複数のノードコンピュータ１１２とは通信可能に接続されていればどのような手段で接続してもよい。イーサネット（Ｅｔｈｒｅｎｅｔ）（登録商標）のような有線接続の他、ブルートゥース（商標）のような無線手段で接続してもよい。
【００９０】
（５）本実施の形態では、２個のノードコンピュータ１１２に同時に要求を送信しているので、従来の技術で述べたスティッキー機能が良好に動作しないのではないかと疑問を持つ方がいるかもしれない。スティッキー機能は基本的に１台のノードコンピュータに引き続いて要求を割り当て続けるものだからである。しかし、本実施の形態では、２個のノードコンピュータに同時に要求を実行させるので、その２個のペアに対して要求を引き続いて割り当てることにより、従来のスティッキー機能も本実施の形態で十分に実行可能である。スティッキー機能は、各ノードコンピュータ１１２が自己に送信されてきた要求の履歴を覚えておくことにより実現される。本実施の形態では、処理の結果が採用されなかったノードコンピュータ１１２も要求がきた事実は履歴として保存しておく。したがって、例えば、「最初の要求」がノードコンピュータ１１２ａによって処理された場合に、ノードコンピュータ１１２ｂにも要求があった記録が残っている（例えば誰が何を電子商取引で購入したかの情報の記録）。したがって、「後の要求」がノードコンピュータ１１２ｂによって処理されても、スティッキー機能を良好に処理可能である。
【００９１】
【発明の効果】
以上述べたように、本発明によれば、負荷分散装置が、１個の要求を２個以上のノードコンピュータに割り当てるので、いずれかのノードコンピュータに障害が発生しても、残りの他のノードコンピュータで処理を続行可能である。その結果、耐故障性に優れたサーバシステムを提供可能である。
【００９２】
また、本発明によれば、上述のように、１個の要求を２個以上のノードコンピュータに割り当てることができる負荷分散装置が提供できる。また、本発明によれば、このような負荷分散装置と接続し、耐故障性に優れたサーバシステムを構築するのに利用されるノードコンピュータが提供可能である。
【図面の簡単な説明】
【図１】本実施の形態のロードバランサやノードコンピュータが利用されいる様子を表す模式図である。
【図２】本実施の形態のロードバランサの機能構成ブロック図である。
【図３】本実施の形態のノードコンピュータの機能構成ブロック図である。
【図４】本実施の形態の動作を表すシーケンス図である。
【図５】従来のロードバランサやノードコンピュータが利用されいる様子を表す模式図である。
【符号の説明】
１０　ロードバランサ
１２ａ、１２ｂ、１２ｃ、１２ｄ　ノードコンピュータ
１４　インターネット
１６ａ、１６ｂ、１６ｃ　クライアント
２０　サーバシステム
１００　サーバシステム
１１０　ロードバランサ
１１２　ノードコンピュータ
２００　割り当て手段
２０２　テーブル
２０４　要求送信手段
２０６　採用通知手段
２０８　障害検出手段
３００　処理手段
３０２　仮完了通知手段
３０４　結果送信手段
３０６　結果無効手段
【図１】
2004030204.tif 000003
【図２】
2004030204.tif 000004
【図３】
2004030204.tif 000005
【図４】
2004030204.tif 000006
【図５】
2004030204.tif 000007