(57)【要約】【課題】処理性能を向上することができると共にバックエンドサーバの故障をクライアントから隠蔽することができるようにすること。【解決手段】複数個のバックエンドサーバ１２と、フロントエンドサーバ１１と、該フロントエンドサーバ１１に配置し受信したリクエストを適切なバックエンドサーバ１２に転送するリクエスト転送制御機構１１３と、サーバの故障を検出するノード故障検出機構１２２を備え、リクエスト転送制御機構１１３は、クライアントの識別情報を用いて、同一サービスに対する複数のクライアントからのリクエストを転送するバックエンドサーバ１２を決定して転送し、ノード故障検出機構１２２がサーバの故障を検出すると、故障したバックエンドサーバ１２へのリクエスト転送を中止して、クライアントからの再リクエスト時に正常運用している別のバックエンドサーバ１２にリクエストを転送する。【選択図】図１
2006228243.tif 000002
【特許請求の範囲】
【請求項１】
クライアントのリクエストを処理するサーバプロセスを配置した複数個のバックエンドサーバと、
クライアントからのリクエストを受信するフロントエンドサーバと、
該フロントエンドサーバに配置し、前記受信したリクエストを適切な前記バックエンドサーバに転送するリクエスト転送制御機構と、
サーバの故障を検出するノード故障検出機構とを備え、
前記リクエスト転送制御機構は、クライアントの識別情報を用いて、同一サービスに対する複数のクライアントからのリクエストを転送する前記バックエンドサーバを決定してリクエストを転送し、
前記ノード故障検出機構がサーバの故障を検出すると、前記リクエスト転送制御機構は、故障したバックエンドサーバへのリクエスト転送を中止して、クライアントからの再リクエスト時に正常運用している別のバックエンドサーバにリクエストを転送することを特徴としたサーバ装置。
【請求項２】
前記リクエスト転送制御機構は、リクエスト転送制御表を用いて転送するリクエストの比率をバックエンドサーバ毎に制御することを特徴とした請求項１記載のサーバ装置。
【請求項３】
前記バックエンドサーバの負荷を監視してリクエストの転送比率を変更するノード負荷監視機構を設け、
該ノード負荷監視機構が負荷が高い前記バックエンドサーバを発見すると、リクエスト転送制御機構は、負荷の高いバックエンドサーバへの転送比率を下げて、前記バックエンドサーバ間の負荷を平均化することを特徴とした請求項１又は２に記載のサーバ装置。
【請求項４】
システム管理者が前記バックエンドサーバへの転送比率を制御するためのユーザインタフェース機構を設けることを特徴とした請求項１〜３のいずれかに記載のサーバ装置。
【請求項５】
前記サーバプロセスとクライアントプロセス間のコネクション状態を監視するコネクション状態監視機構を設け、
前記リクエスト転送制御機構は、前記コネクション状態監視機構にコネクション状態を問い合わせ、サービス中のコネクションに対しては、該サービス終了後に、転送経路の変更を行うことを特徴とした請求項１〜４のいずれかに記載のサーバ装置。
【請求項６】
前記サーバプロセスの制御を行うサーバプロセス制御機構を設け、
あるサービスのサーバプロセスが配置された各バックエンドサーバの負荷が高くなった時に、前記サーバプロセス制御機構はそのサーバプロセスが未配置なバックエンドサーバにサーバプロセスを起動することを特徴とした請求項１〜５のいずれかに記載のサーバ装置。
【請求項７】
前記リクエスト転送制御機構を、ネットワークの通信制御をするネットワークドライバとパケットの処理をするオペレーティングシステムのパケット処理部の中間に配置したパケットフィルタで構成することを特徴とした請求項１〜６のいずれかに記載のサーバ装置。
【請求項８】
前記クライアントの識別情報として、クライアントから受信したリクエストのパケットのソースアドレスとソースポート番号のペアを使用することを特徴とした請求項１〜７のいずれかに記載のサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機環境におけるクライアント／サーバシステムのサーバの構成に関し、特に、サーバをクラスタシステム（複数のノードを結合したシステム）で構成する際のノード（サーバ）間の負荷分散を行うサーバ装置に関する。
【０００２】
近年、インターネット等の開放型システムの普及に伴い、クライアント／サーバシステムへの関心が高まり、特に不特定多数のクライアントからの要求が集中することが予想されるサーバシステムを高性能／高可用化する（利用可能率を高くする）ための技術として、クラスタシステムの負荷分散に関する技術の開発が望まれている。
【背景技術】
【０００３】
従来のクラスタシステムにおける負荷分散技術の１つに、ルータやパケットフィルタによるリダイレクション（仕事の割り振り）がある。この方式では、サーバはクライアントからのリクエストを受けるフロントエンドノード（ＦＥＰノード）と、クライアントからのリクエストを処理する機能を複数台のノードに分散配置したバックエンドノード（ＢＥＰノード）群から構成されていた。全てのクライアントはＦＥＰノードに対してリクエストを送り、ＦＥＰノードは要求されたサービスに対して適切なＢＥＰノードにリクエストを転送して負荷分散を行っていた。
【０００４】
図７は従来例の説明図（１）、図８は従来例の説明図（２）である。以下図７、図８に基づいて従来例の説明をする。
【０００５】
図７において、従来のリダイレクションを利用した負荷分散の例であり、サーバドメイン１と複数のクライアントドメイン(1) 、(2) がＷＡＮ（ワイドエリアネットワーク）を介して接続されている。
【０００６】
サーバドメイン１には、ＦＥＰサーバ１１、複数のサーバ１２（サーバＡ〜Ｃ）、ドメインネイムサーバ（ＤＮＳ）１３、ルータ１４が設けてある。クライアントドメイン(1) には、複数のクライアント（１）〜（３）、ＤＮＳ４３、ルータ４４が設けてある。クライアントドメイン(2) には、複数のクライアント（４）〜（６）、ＤＮＳ４３、ルータ４４が設けてある。
【０００７】
ＦＥＰサーバ１１は、ＬＡＮ（ローカルエリアネットワーク）でクライアントからのリクエストを受信し、高速ノード間結合により適切なＢＥＰノードにリクエストを転送する転送制御プロセスを有するＦＥＰノードである。サーバ１２（サーバＡ〜Ｃ）は、それぞれ異なる種類のサービスＸ〜Ｚを処理するサーバプロセスＸ〜Ｚを有するＢＥＰノードである。
【０００８】
ＤＮＳ１３は、ＬＡＮと接続されておりクライアント等から問い合わせのあったサービス名に対応するＩＰアドレス（各コンピュータ固有のアドレス）を応答するものである。例えば、図８（ｂ）はＩＰアドレス例の説明であり、図８（ｂ）のようにクライアントは、ＤＮＳ１３からサービス名「ftp-server」のＩＰアドレス「133.160.12.5」を取得して、この取得したＩＰアドレスに向かってリクエストを出すものである。ルータ１４は、ＷＡＮとＬＡＮ間の中継処理を行うものである。
【０００９】
複数のクライアント（１）〜（３）、複数のクライアント（４）〜（６）は、それぞれのＬＡＮで接続されておりサービス（データ処理）を要求する側である。ＤＮＳ４３は、ＬＡＮと接続されており問い合わせのあったサービス名に対応するＩＰアドレス応答するものである。ルータ４４は、ＬＡＮとＷＡＮ間の中継処理を行うものである。
【００１０】
図８（ａ）は仕事の割り振り表の説明であり、ＦＥＰノード上のプロセスによって管理される各サーバプロセスの配置を示すものである。図８（ａ）において、サービス識別子に対応する転送先サーバ識別子が示されている。例えば、サービスＸはサーバＡに、サービスＹはサーバＢに、サービスＺはサーバＣに転送することが示されている。
【００１１】
全てのクライアントからのリクエストは、クライアントドメインのＬＡＮ、ルータ４４、ＷＡＮ、ルータ１４、サーバドメイン１のＬＡＮを介してＦＥＰノードに送られ、ＦＥＰノードは、要求されたサービスの種類に応じてリクエストの転送先ノードを決定し、適切なＢＥＰノードに、高速ノード間結合を介してリクエストを転送する。ＢＥＰノードＡ〜Ｃ上のサーバプロセスＸ〜Ｚは、ＦＥＰノードから転送されたリクエストを処理してクライアントにリプライするものであった。
【発明の開示】
【発明が解決しようとする課題】
【００１２】
前記従来のリダイレクション方式においては、ＢＥＰノード毎に異なるサービスを処理するサーバプロセスを配置し、図８（ａ）のような表を用いて、クライアントが要求したサービスをキーとして転送先ＢＥＰノードを決定していた。このため、１種類のサービスの処理が多くなっても複数台のＢＥＰノードで負荷分散することができない課題があった。
【００１３】
本発明は、このような従来の課題を解決し、同一サービスに対する複数のクライアントからのリクエストを複数台のサーバノードで負荷分散をできるようにし、また、自動的にサーバノード故障隠蔽機能や、負荷調整機能を持つことにより、システム管理コストを削減することを目的とする。
【課題を解決するための手段】
【００１４】
図１は本発明の原理説明図である。図１中、１１はフロントエンドサーバ、１２はバックエンドサーバ、２１はサーバプロセス、２２はノード間通信制御部、２３はコネクション状態監視機構、１１１は割当済転送経路一覧表、１１２はリクエスト転送制御表、１１３はリクエスト転送制御機構、１１４は対クライアント通信制御部、１１５はクラスタ内ノード間通信制御部、１２１は負荷調整部、１２２はノード故障検出機構、１２３はノード負荷監視機構、１２４はサーバプロセス制御機構、１２５はユーザインタフェース機構である。
【００１５】
本発明は前記従来の課題を解決するため次のように構成した。
【００１６】
（１）：クライアントのリクエストを処理するサーバプロセス２１を配置した複数個のバックエンドサーバ１２と、クライアントからのリクエストを受信するフロントエンドサーバ１１と、該フロントエンドサーバ１１に配置し、前記受信したリクエストを適切な前記バックエンドサーバ１２に転送するリクエスト転送制御機構１１３と、サーバの故障を検出するノード故障検出機構１２２とを備え、前記リクエスト転送制御機構１１３は、クライアントの識別情報を用いて、同一サービスに対する複数のクライアントからのリクエストを転送する前記バックエンドサーバ１２を決定してリクエストを転送し、前記ノード故障検出機構１２２がサーバの故障を検出すると、リクエスト転送制御機構１１３は、故障したバックエンドサーバ１２へのリクエスト転送を中止して、クライアントからの再リクエスト時に正常運用している別のバックエンドサーバ１２にリクエストを転送する。このため、１種類のサービスの処理を複数台のバックエンドサーバで負荷分散でき、処理性能を向上することができると共に、クライアントからの再リクエストにより、バックエンドサーバの故障をクライアントから隠蔽することができる。
【００１７】
（２）：前記（１）のサーバ装置において、前記リクエスト転送制御機構１１３は、リクエスト転送制御表１１２を用いて転送するリクエストの比率をバックエンドサーバ１２毎に制御する。このため、バックエンドサーバの処理能力に応じた負荷分散ができ、より処理性能を向上することができる。
【００１８】
（３）：前記（１）又は（２）のサーバ装置において、前記バックエンドサーバ１２の負荷を監視してリクエストの転送比率を変更するノード負荷監視機構１２３を設け、該ノード負荷監視機構１２３が負荷が高い前記バックエンドサーバ１２を発見すると、リクエスト転送制御機構１１３は、負荷の高いバックエンドサーバ１２への転送比率を下げて、前記バックエンドサーバ１２間の負荷を平均化する。このため、常に負荷を平均化することができ、処理性能を向上することができる。
【００１９】
（４）：前記（１）〜（３）のサーバ装置において、システム管理者が前記バックエンドサーバ１２への転送比率を制御するためのユーザインタフェース機構１２５を設ける。このため、例えば、活性保守のためのバックエンドサーバの転送比率をゼロとしてノードの一時的な切り離しや再組み込みが可能となる。
【００２０】
（５）：前記（１）〜（４）のサーバ装置において、前記サーバプロセス２１とクライアントプロセス間のコネクション状態を監視するコネクション状態監視機構２３を設け、前記リクエスト転送制御機構１１３は、前記コネクション状態監視機構２３にコネクション状態を問い合わせ、サービス中のコネクションに対しては、該サービス終了後に、転送経路の変更を行う。このため、サービス途中に新たなバックエンドサーバに切り換わることがなく、処理の中断を防止することができる。
【００２１】
（６）：前記（１）〜（５）のサーバ装置において、前記サーバプロセス２１の制御を行うサーバプロセス制御機構１２４を設け、あるサービスのサーバプロセス２１が配置された各バックエンドサーバ１２の負荷が高くなった時に、前記サーバプロセス制御機構１２４がそのサーバプロセス２１が未配置なバックエンドサーバ１２にサーバプロセス２１を起動する。このため、複数個のバックエンドサーバ全体の負荷を調整することができ、処理性能を向上することができる。
【００２２】
（７）：前記（１）〜（６）のサーバ装置において、前記リクエスト転送制御機構１１３を、ネットワークの通信制御をするネットワークドライバとパケットの処理をするオペレーティングシステムのパケット処理部の中間に配置したパケットフィルタで構成する。このため、パケットフィルタで１種類のサービスの処理を複数台のバックエンドサーバで負荷分散でき、処理性能が向上する。
【００２３】
（８）：前記（１）〜（７）のサーバ装置において、前記クライアントの識別情報として、クライアントから受信したリクエストのパケットのソースアドレスとソースポート番号のペアを使用する。このため、クライアントプロセス毎にリクエストの転送先ノードの制御を行うことができる。
【発明の効果】
【００２４】
以上のように、本発明によれば次のような効果がある。
【００２５】
（１）：フロントエンドサーバに配置したリクエスト転送制御機構で受信したクライアントからのリクエストをクライアントの識別情報を用いて、同一サービスに対する複数のクライアントからのリクエストを転送するバックエンドサーバを決定してリクエストを転送し、ノード故障検出機構がサーバの故障を検出すると、リクエスト転送制御機構で、故障したバックエンドサーバへのリクエスト転送を中止して、クライアントからの再リクエスト時に正常運用している別のバックエンドサーバにリクエストを転送するため、１種類のサービスの処理を複数台のバックエンドサーバで負荷分散でき、処理性能を向上することができると共に、クライアントからの再リクエストにより、バックエンドサーバの故障をクライアントから隠蔽することができる。
【００２６】
（２）：リクエスト転送制御機構で、リクエスト転送制御表を用いて転送するリクエストの比率をバックエンドサーバ毎に制御するため、バックエンドサーバの処理能力に応じた負荷分散ができ、より処理性能を向上することができる。
【００２７】
（３）：ノード負荷監視機構が負荷が高いバックエンドサーバを発見すると、リクエスト転送制御機構で、負荷の高いバックエンドサーバへの転送比率を下げて、前記バックエンドサーバ間の負荷を平均化するため、常に負荷を平均化することができ、処理性能を向上することができる。
【００２８】
（４）：ユーザインタフェース機構で、システム管理者がバックエンドサーバへの転送比率を制御するため、例えば、活性保守のためのバックエンドサーバの転送比率をゼロとしてノードの一時的な切り離しや再組み込みが可能となる。
【００２９】
（５）：リクエスト転送制御機構は、コネクション状態監視機構にコネクション状態を問い合わせ、サービス中のコネクションに対しては、該サービス終了後に、転送経路の変更を行うため、サービス途中に新たなバックエンドサーバに切り換わることがなく、処理の中断を防止することができる。
【００３０】
（６）：あるサービスのサーバプロセスが配置された各バックエンドサーバの負荷が高くなった時に、サーバプロセス制御機構がそのサーバプロセスが未配置なバックエンドサーバにサーバプロセスを起動するため、複数個のバックエンドサーバ全体の負荷を調整することができ、処理性能を向上することができる。
【００３１】
（７）：リクエスト転送制御機構を、ネットワークの通信制御をするネットワークドライバとパケットの処理をするオペレーティングシステムのパケット処理部の中間に配置したパケットフィルタで構成するため、パケットフィルタで１種類のサービスの処理を複数台のバックエンドサーバで負荷分散でき、処理性能が向上する。
【００３２】
（８）：クライアントの識別情報として、クライアントから受信したリクエストのパケットのソースアドレスとソースポート番号のペアを使用するため、クライアントプロセス毎にリクエストの転送先ノードの制御を行うことができる。
【発明を実施するための最良の形態】
【００３３】
図２〜図６は本発明の実施の形態を示した図である。本発明では、ＦＥＰノードにおけるリクエスト転送制御に、クライアントが要求したサービスの種類に加えて、リクエストを送ったクライアント識別子を用い、同一サービスに対するリクエストの転送先ＢＥＰノードをクライアント毎に制御するものである。以下、図面に基づいて本発明の実施の形態を説明する。
【００３４】
（１）：サーバ装置の説明
(a) ：装置構成の説明
図２は装置構成図（１）である。以下、図２に基づいてサーバ装置の説明をする。
【００３５】
図２において、サーバ装置は、ＦＥＰサーバ（ＦＥＰノード）１１と複数のＢＥＰサーバ（ＢＥＰノード）１２ａ、１２ｂ、１２ｃ、・・・がノード間結合３で接続されている。クライアント４は、ＬＡＮあるいはＷＡＮ５を経由してＦＥＰノード１１と結合されている。
【００３６】
ＦＥＰサーバ１１には、割当済転送経路一覧表１１１、転送制御表１１２、リクエスト転送処理部１１３、対クライアント通信制御部１１４、クラスタ内ノード間通信制御部１１５、負荷調整部１２１、ノード故障検出部１２２、ノード負荷監視部１２３、サーバプロセス制御部１２４、システム管理者インタフェース１２５が設けてある。
【００３７】
ＢＥＰサーバ１２ａには、サーバプロセス２１ａ、ノード間通信制御部２２ａ、コネクション状態監視部２３ａが設けてあり、ＢＥＰサーバ１２ｂには、サーバプロセス２１ｂ、ノード間通信制御部２２ｂ、コネクション状態監視部２３ｂが設けてあり、ＢＥＰサーバ１２ｃにも、サーバプロセス２１ｃ、ノード間通信制御部２２ｃ、コネクション状態監視部２３ｃが設けてある。
【００３８】
割当済転送経路一覧表１１１は、クライアント毎に割り当てたリクエストの転送経路を記録したものである。転送制御表１１２は、リクエストを処理するサーバプロセスの配置とリクエストの振り分け比率を記録したものである。リクエスト転送処理部１１３は、クライアントからのリクエストをＢＥＰノードに転送するものである。対クライアント通信制御部１１４は、クライアントとの通信を制御するものである。クラスタ内ノード間通信制御部１１５は、ＢＥＰノードとの通信を制御するものである。負荷調整部１２１は、システム管理者の要求や発生したイベントに応じて動的に転送制御を調整するものである。ノード故障検出部１２２は、ＢＥＰノードの故障を検出するものである。ノード負荷監視部１２３は、ＢＥＰノードの負荷状態を監視するものである。サーバプロセス制御部１２４は、ＢＥＰノードに必要なサーバプロセスを起動するものである。システム管理者インタフェース１２５は、システム管理者６にユーザインタフェースを提供するものである。
【００３９】
サーバプロセス２１ａ、２１ｂ、２１ｃは、クライアントからのリクエストを処理するプロセスである。ノード間通信制御部２２ａ、２２ｂ、２２ｃは、ＦＥＰノードとの通信を制御するものである。コネクション状態監視部２３ａ、２３ｂ、２３ｃは、クライアントとサーバプロセスとのコネクション状態を監視するものである。
【００４０】
(b) ：転送制御表と割当済転送経路一覧表の説明
図３は転送制御表と割当済転送経路一覧表の説明図であり、図３（ａ）は転送制御表の説明、図３（ｂ）は割当済転送経路一覧表の説明である。
【００４１】
図３（ａ）において、転送制御表１１２には、リクエストの宛て先としてのポート番号等を使用するサービス識別子、転送先となる利用可能なＢＥＰノードのＩＰアドレス等を使用する利用可能ＢＥＰノード識別子、同一サービスに対するリクエストの分配比率（転送比率）である比率が設けてある。
【００４２】
図３（ｂ）において、割当済転送経路一覧表１１１には、リクエストの宛て先としてのポート番号等を使用するサービス識別子、ソースＩＰアドレスとソースポートのポート番号等を使用するクライアント識別子、転送先のＢＥＰノードのＩＰアドレス等を使用する転送先ＢＥＰノード識別子が設けてある。
【００４３】
（２）：サーバ装置の動作の説明
以下、図２に基づいてサーバ装置の動作を説明する。
【００４４】
(a) ：クライアントからリクエストがあった場合の説明
クライアント４がリクエストをＬＡＮあるいはＷＡＮ５を経由してＦＥＰノード１１に送ると、対クライアント通信制御部１１４によって受信されたリクエストはリクエスト転送処理部１１３に送られる。リクエスト転送処理部１１３は、まず、割当済転送経路一覧表１１１を用いて、すでに転送経路を割り当てたことがあるクライアントからのリクエストかどうか調べる。この割当済転送経路一覧表１１１には、リクエストしたクライアントの識別子と要求したサービスの識別子のペアーをキーとして、割り当てられた転送先ＢＥＰノードの識別子が記録されている。
【００４５】
割当済転送経路一覧表１１１にクライアントのエントリがない場合には、リクエスト転送処理部１１３は、転送制御表１１２を参照して、転送先ＢＥＰノードを決定する。この転送制御表１１２には、利用可能ＢＥＰノード識別子とリクエストの分配比率がサービス毎に記録されている。
【００４６】
転送制御表１１２でリクエストの転送先ＢＥＰノードが決定すると、リクエスト転送処理部１１３は、割当済転送経路一覧表１１１に転送先を割り当てたクライアントのエントリを作り、クラスタ内ノード間通信制御部１１５、ノード間結合３を経由して、リクエストを転送先として決定したＢＥＰノードに転送する。
【００４７】
このリクエストが転送されたＢＥＰノード（例えば、ＢＥＰノード１２ａとする）では、ノード間通信制御部２２ａがリクエストを受信してサーバプロセス２１ａにリクエストを送る。サーバプロセス２１ａは、リクエストを処理すると、ノード間通信制御部２２ａ、ノード間結合３を経由して、ＦＥＰノード１１にリプライを送る。ＦＥＰノード１１は、クラスタ内ノード間通信制御部１１５でリプライを受け、リクエスト転送処理部１１３が対クライアント通信制御部１１４、ＬＡＮあるいはＷＡＮ５を介してクライアント４にリプライを返す。
【００４８】
割当済転送経路一覧表１１１にエントリが存在するクライアントからのリクエストの場合は、リクエスト転送処理部１１３は、割当済転送経路一覧表１１１で割り当てられているＢＥＰノードにリクエストを送ることになる。このような処理を行うことによって、同一のクライアント識別子で識別されるクライアントからのリクエストは同一のＢＥＰサーバに転送されることになる。
【００４９】
(b) ：ノード故障の場合の説明
ノード故障検出部１２２は、定期的に全てのＢＥＰノードが正常動作していることを確認する。ノード故障検出部１２２は、ＢＥＰノードの故障を検出すると、負荷調整部１２１を経由して転送制御表１１２を書き換えて、故障したＢＥＰノードへのリクエストの分配を停止する。リクエスト転送処理部１１３は、割当済転送経路一覧表１１１内の転送先ＢＥＰノードが故障したＢＥＰノードとなっている全てのエントリを削除する。
【００５０】
このＢＥＰノードの故障によって、故障したＢＥＰノードを利用していたクライアントとＢＥＰノード上のサーバプロセスとのコネクションは切断されるが、クライアントがリクエストをリトライすることによって故障は隠蔽される。
【００５１】
クライアントからの再リクエストはリクエスト転送処理部１１３に送られると、リクエスト転送処理部１１３は、割当済転送経路一覧表１１１を調べるが、再リクエストしたクライアントのエントリは既に削除されているため、リクエスト転送処理部１１３は、転送制御表１１２に基づいて新たな転送先を決定してリクエストを転送する。リクエストを転送されたＢＥＰノードでは、通常のリクエストと同様にリクエストを処理してリプライする。
【００５２】
(c) ：ノード負荷監視の説明
ノード負荷監視部１２３は、定期的に全てのＢＥＰノードの負荷状態を監視する。ノード負荷監視部１２３は、負荷が高いＢＥＰノードを発見すると、負荷調整部１２１を経由して転送制御表１１２を書き換えて、負荷が高いＢＥＰノードへのリクエストの分配比率を下げる。リクエスト転送処理部１１３は、分配比率変更時に割り当て済の転送経路の状態を各ＢＥＰサーバのコネクション状態監視部２３ａ、２３ｂ、２３ｃ、・・・に問い合わせ、割当済転送経路一覧表１１１からアクティブでないコネクションの転送経路のエントリを削除し、その時点のリクエスト分配比率を算出する。
【００５３】
リクエスト転送処理部１１３は、以降の新規クライアントからのリクエスト転送先の調整や、コネクション状態監視部２３ａ、２３ｂ、２３ｃ、・・・に問い合わせによる割当済転送経路一覧表１１１の更新により、書き換えられた転送制御表１１２で指定された分配比率に実際の分配比率を近付けるようにする。
【００５４】
(d) ：サーバプロセスの起動・停止の説明
サーバプロセス制御部１２４は、クラスタ内ノード間通信制御部１１５、ノード間結合３を介して各ＢＥＰノード上のサーバプロセスを制御するものである。
【００５５】
あるサービスに割り当てられた全てのＢＥＰノードの負荷が高い場合には、ノード負荷監視部１２３は負荷調整部１２１にＢＥＰノードの割り当て増を依頼する。各サービスへのＢＥＰノードの割り当てを管理している負荷調整部１２１は、負荷が高いサービスへのＢＥＰノード割り当ての増を決めると、新たに割り当てたＢＥＰノードへサーバプロセスの起動をサーバプロセス制御部１２４に依頼する。そこで、サーバプロセス制御部１２４は、クラスタ内ノード間通信制御部１１５、ノード間結合３を経由して、指定されたＢＥＰノード上のサーバプロセスを起動する。このサーバプロセスの起動が完了すると、負荷調整部１２１は、新たに割り当てたＢＥＰノードにリクエストを転送するように転送制御表１１２を書き換える。
【００５６】
新たに割り当てたＢＥＰノード上で、それまで動作していたサーバプロセスを停止させることが必要な場合、負荷調整部１２１は、転送制御表１１２を書き換えてリクエストに対する分配を停止する（分配比率を０とする）。リクエスト転送処理部１１３は、リクエストの転送の停止が指示されたＢＥＰノードのコネクション状態監視部にコネクションの状態を問い合わせ、割当済転送経路一覧表１１１の未使用状態のエントリを削除する。負荷調整部１２１は、割当済転送経路一覧表１１１を参照して、指定したＢＥＰノードへのコネクションのエントリが無くなった時点で、サーバプロセス制御部１２４にサーバプロセスの停止を依頼する。サーバプロセス制御部１２４は、クラスタ内ノード間通信制御部１１５、ノード間結合３を経由して、指定されたＢＥＰノード上のサーバプロセスを停止する。
【００５７】
(e) ：システム管理者インタフェースの説明
システム管理者インタフェース１２５は、システム管理者６にシステム管理のためのインタフェースを提供するものである。
【００５８】
システム管理者インタフェース１２５が提供する機能としては、クラスタへの動的な（運用中の）ノードの追加／切り離し、サービスへのＢＥＰノード割り当て指定／変更、その他システム状態の参照等の機能がある。
【００５９】
（３）：ＵＮＩＸ（ＡＴ＆Ｔ社の汎用のオペレーティングシステム）マシンによる説明
以下、図４〜図６に従ってＵＮＩＸマシンによる説明をする。
【００６０】
(a) ：クライアント／サーバシステムの説明
図４はクライアント／サーバシステムの説明図である。以下図４に基づいて説明をする。
【００６１】
図４において、リダイレクションを利用した負荷分散の例であり、サーバドメイン１と複数のクライアントドメイン(1) 、(2) がＷＡＮを介して接続されている。
【００６２】
サーバドメイン１には、ＦＥＰサーバ１１、複数のサーバ１２（サーバＡ〜Ｆ）、ドメインネイムサーバ（ＤＮＳ）１３、ルータ１４が設けてある。クライアントドメイン(1) には、複数のクライアント（１）〜（５）、ＤＮＳ４３、ルータ４４が設けてある。クライアントドメイン(2) には、複数のクライアント（６）〜（１０）、ＤＮＳ４３、ルータ４４が設けてある。
【００６３】
ＦＥＰサーバ１１は、ＬＡＮ（ローカルエリアネットワーク）でクライアントからのリクエストを受信し、高速ノード間結合により適切なＢＥＰノード１２にリクエストを転送するパケットフィルタ１１３を有するＦＥＰノードである。サーバ１２（サーバＡ〜Ｆ）は、サービスＸ、Ｙ、Ｚを処理するサーバプロセス２１（サーバプロセスＸ、Ｙ、Ｚ）を有するＢＥＰノードである。ＤＮＳ１３は、ＬＡＮと接続されておりクライアント等から問い合わせのあったサービス名に対応するＩＰアドレス（各コンピュータ固有のアドレス）を応答するものである。
【００６４】
複数のクライアント（１）〜（５）、複数のクライアント（６）〜（１０）は、それぞれのＬＡＮで接続されておりサービス（データ処理）を要求する側である。ＤＮＳ４３は、ＬＡＮと接続されており問い合わせのあったサービス名に対応するＩＰアドレス応答するものである。ルータ４４は、ＬＡＮとＷＡＮ間の中継処理を行うものである。
【００６５】
(b) ：サーバ装置の説明
ＵＮＩＸマシンのサーバ装置（クラスタシステム）における負荷分散について、図２のリクエスト転送処理部１１３は、ネットワークのデータ処理をするストリーム処理部の最下層に位置するパケットフィルタとして実現される。そして、割当済転送経路一覧表１１１と転送制御表１１２はパケットフィルタ内に置かれている。また、図２の負荷調整部１２１はユーザ空間内のＵＮＩＸプロセスである負荷調整プロセスとして実現する。この負荷調整プロセスは、ＵＮＩＸ  ＯＳ（オペレーティングシステム）が提供するＩＯＣＴＬシステムコールを利用して、パケットフィルタ内の転送制御表の書き換えを行うものである。
【００６６】
図５は装置構成図（２）である。以下、図５に基づいてサーバ装置の説明をする。
【００６７】
図５において、サーバ装置は、ＦＥＰノード１１とＢＥＰノード１２（実際は複数のＢＥＰノードが設けられる）がノード間結合ネットワーク３で接続されている。クライアントとは、ＬＡＮ等のネットワーク５を介してＦＥＰノード１１と結合されている。
【００６８】
ＦＥＰノード１１には、カーネル（中枢部分）空間とユーザ空間があり、カーネル空間にはストリーム処理部、外部ネットワークドライバ１１４、内部ネットワークドライバ１１５が設けてある。ストリーム処理部には、パケットフィルタ１１３、ＩＰパケット処理層１３１、ＴＣＰパケット処理層１３２が設けてあり、パケットフィルタ１１３には、割当済転送経路一覧表１１１と転送制御表１１２が設けてある。ユーザ空間には、負荷調整プロセス１２１、ノード故障検出プロセス１２２、ノード負荷監視プロセス１２３、サーバ制御プロセス１２４、ユーザＩ／Ｆ処理プロセス１２５が設けてある。
【００６９】
ＢＥＰノード１２にも、カーネル空間とユーザ空間があり、カーネル空間にはストリーム処理部、内部ネットワークドライバ２２が設けてある。ストリーム処理部には、ＩＰパケット処理層２４１、ＴＣＰパケット処理層２４２が設けてある。ユーザ空間には、接続監視プロセス２３、サーバプロセス２１が設けてある。
【００７０】
割当済転送経路一覧表１１１は、クライアント毎に割り当てたリクエストの転送経路を記録したものである。転送制御表１１２は、リクエストを処理するサーバプロセスの配置とリクエストの振り分け比率を記録したものである。パケットフィルタ１１３は、クライアントからのリクエストをＢＥＰノードに転送するものである。外部ネットワークドライバ１１４は、クライアントとの通信を制御するものである。内部ネットワークドライバ１１５は、ＢＥＰノードとの通信を制御するものである。負荷調整プロセス１２１は、システム管理者の要求や発生したイベントに応じて動的に転送制御を調整するものである。ノード故障検出プロセス１２２は、ＢＥＰノードの故障を検出するものである。ノード負荷監視プロセス１２３は、ＢＥＰノードの負荷状態を監視するものである。サーバ制御プロセス１２４は、ＢＥＰノードに必要なサーバプロセスを起動するものである。ユーザＩ／Ｆ処理プロセス１２５は、システム管理者にユーザインタフェースを提供するものである。ＩＰパケット処理層１３１は、通信プロトコルの一つであるインターネットプロトコル（ＩＰ）のパケットの処理を行うものである。ＴＣＰパケット処理層１３２は、通信プロトコルの一つであるＴＣＰ（transmission control protocol ）のパケットの処理を行うものである。
【００７１】
サーバプロセス２１は、クライアントからのリクエストを処理するプロセスである。内部ネットワークドライバ２２は、ＦＥＰノード１１との通信を制御するものである。接続監視プロセス２３は、クライアントとサーバプロセスとのコネクション状態を監視するものである。ＩＰパケット処理層２４１は、インターネットプロトコルのパケットの処理を行うものである。ＴＣＰパケット処理層２４２は、ＴＣＰのパケットの処理を行うものである。
【００７２】
(c) ：転送制御表と割当済転送経路一覧表の説明
図６は転送制御表と割当済転送経路一覧表の説明図であり、図６（ａ）は転送制御表の説明、図６（ｂ）は割当済転送経路一覧表の説明である。
【００７３】
図６（ａ）において、転送制御表１１２には、サービス識別子、転送先ＢＥＰノード識別子、同一サービスに対するリクエストの分配比率である比率が設けてある。
【００７４】
サービス識別子としてデスティネーション（宛て先）ポートのポート番号を使用し、この例では「８０８０、８０８１、８０８２」が記録されている。転送先ＢＥＰノード識別子として、デスティネーションＩＰアドレスを使用し、この例では例えば、サービス「８０８０」のデスティネーションＩＰアドレスには「ＩＰ−Ａ、ＩＰ−Ｂ」が記録され、これらの比率として、ＩＰ−Ａには「１」、ＩＰ−Ｂには「１」と同じ比率が記録されている。
【００７５】
図６（ｂ）において、割当済転送経路一覧表１１１には、サービス識別子、クライアント識別子、転送先ＢＥＰノード識別子が設けてある。
【００７６】
サービス識別子としてデスティネーションポートのポート番号を使用し、この例では「８０８０、８０８１、８０８２」が記録されている。
【００７７】
クライアント識別子としてソースＩＰアドレスとソースポート番号の組を使用する。ソースＩＰアドレスはクライアントのＩＰアドレスであり、ソースポート番号はプロセス毎に設けられている。この例では、（例えば、図４のクライアント（１））ソースＩＰアドレス「ＩＰ−ＣＬ１」には３つのソースポート番号「ＰＯＲＴ−ＣＬ１−ｘｘ１」、「ＰＯＲＴ−ＣＬ１−ｘｘ２」、「ＰＯＲＴ−ＣＬ１−ｘｘ３」が示されている。
【００７８】
転送先ＢＥＰノード識別子として、デスティネーションＩＰアドレスを使用し、この例では例えば、サービス「８０８０」のデスティネーションＩＰアドレスには「ＩＰ−Ａ」と「ＩＰ−Ｂ」が記録されている。
【００７９】
なお、サービスとポート番号の対応はＵＮＩＸ  ＯＳ上のファイルに定義され、クラスタ内の各ノードは、共通のサービスポートを使うものである。
【００８０】
(d) ：サーバ装置の動作の説明
ａ：クライアントからリクエストがあった場合の説明
ＦＥＰノード１１の外部ネットワークドライバ１１４は、クライアントからのリクエストを受信して、パケットフィルタ１１３に送る。パケットフィルタ１１３は、割当済転送経路一覧表１１１と転送制御表１１２を用いてパケットを転送するＢＥＰノードを決定し、ノード間結合ネットワーク３を介してパケットをＢＥＰノード１２に送る。
【００８１】
このパケットが転送されたＢＥＰノード１２の内部ネットワークドライバ２２は、受信したパケットをストリーム処理部に送る。サーバプロセス２１には、ＵＮＩＸが提供するシステムコールインタフェースを用いてＴＣＰパケット処理層２４２に届いたパケットを読み出して、リクエストを処理する。
【００８２】
サーバプロセス２１は、リクエストの処理が完了するとクライアントにリプライするために、ＵＮＩＸのシステムコールを用いてパケットをストリーム処理部に渡す。このリプライのパケットは、内部ネットワークドライバ２２、ノード間結合ネットワーク３を介してＦＥＰノード１１に転送された後、ＦＥＰノード１１によって、クライアントに送られる。
【００８３】
ｂ：ノード故障の場合の説明
ノード故障検出プロセス１２２は、ユーザプロセスとして実現されている。ノード故障検出プロセス１２２は、定期的に全てのＢＥＰノードが正常動作していることを確認し、ＢＥＰノードの故障を検出すると、負荷調整プロセス１２１を経由してパケットフィルタ１１３の転送制御表１１２を書き換えて、故障したＢＥＰノードへのリクエストの分配を停止する。パケットフィルタ１１３は、割当済転送経路一覧表１１１内の転送先ＢＥＰノードが故障したＢＥＰノードとなっている全てのエントリを削除する。
【００８４】
このＢＥＰノードの故障によって、故障したＢＥＰノードを利用していたクライアントとＢＥＰノード上のサーバプロセスとのコネクションは切断されるが、クライアントがリクエストをリトライすることによって故障は隠蔽される。
【００８５】
クライアントからの再リクエストはパケットフィルタ１１３に送られると、パケットフィルタ１１３は、割当済転送経路一覧表１１１を調べるが、再リクエストしたクライアントのエントリは既に削除されているため、パケットフィルタ１１３は、転送制御表１１２に基づいて新たな転送先を決定してリクエストを転送する。リクエストを転送されたＢＥＰノードでは、通常のリクエストと同様にリクエストを処理してリプライする。
【００８６】
ｃ：ノード負荷監視の説明
ノード負荷監視プロセス１２３は、定期的にＢＥＰノード１２と通信してＢＥＰノード１２の負荷状態を監視する。ノード負荷監視プロセス１２３は、負荷が高いＢＥＰノード１２を発見すると、負荷調整プロセス１２１に通知し、通知を受けた負荷調整プロセス１２１は、ＩＯＣＴＬシステムコールを用いてパケットフィルタ１１３内の転送制御表１１２を書き換える。
【００８７】
パケットフィルタ１１３は、ＢＥＰノード１２上の接続監視プロセス２３にクライアントの接続の状態を問い合わせる。接続監視プロセス２３は、ＩＯＣＴＬを使って自ノードのストリーム処理部にコネクション状態を問い合わせ、パケットフィルタ１１３に通知する。パケットフィルタ１１３は、未使用のコネクションの転送先だけを変更して転送比率を調整する。
【００８８】
負荷調整プロセス１２１は、必要があれば、サーバ制御プロセス１２４にＢＥＰノード１２へのサーバプロセス２１の起動あるいは停止を依頼する。
【００８９】
このように、本発明によれば、同一サービスに対する複数のクライアントからのリクエストを複数台のサーバノードで負荷分散することが可能となる。また、自動的なサーバノード故障隠蔽機能や、負荷調整機能を持つことにより、システム管理コストを削減することができる。
【図面の簡単な説明】
【００９０】
【図１】本発明の原理説明図である。
【図２】実施の形態における装置構成図（１）である。
【図３】実施の形態における転送制御表と割当済転送経路一覧表の説明図である。
【図４】実施の形態におけるクライアント／サーバシステムの説明図である。
【図５】実施の形態における装置構成図（２）である。
【図６】実施の形態における転送制御表と割当済転送経路一覧表の説明図である。
【図７】従来例の説明図（１）である。
【図８】従来例の説明図（２）である。
【符号の説明】
【００９１】
１１  フロントエンドサーバ
１２  バックエンドサーバ
２１  サーバプロセス
２２  ノード間通信制御部
２３  コネクション状態監視機構
１１１  割当済転送経路一覧表
１１２  リクエスト転送制御表
１１３  リクエスト転送制御機構
１１４  対クライアント通信制御部
１１５  クラスタ内ノード間通信制御部
１２１  負荷調整部
１２２  ノード故障検出機構
１２３  ノード負荷監視機構
１２４  サーバプロセス制御機構
１２５  ユーザインタフェース機構
【図１】
2006228243.tif 000003
【図２】
2006228243.tif 000004
【図３】
2006228243.tif 000005
【図４】
2006228243.tif 000006
【図５】
2006228243.tif 000007
【図６】
2006228243.tif 000008
【図７】
2006228243.tif 000009
【図８】
2006228243.tif 000010