(57)【要約】【課題】サービスを提供するサーバへの好適な負荷分散を実現する。【解決手段】サービス状態管理テーブル１５には、本システムが提供するサービス毎に、当該サービスを実行可能なサーバ２に対応させてサーバ２の障害発生状況を示すサーバ状態、障害の程度を示す障害レベル及び負荷分散対象か否かを示す情報を含む障害情報が設定登録されている。サービス状態監視処理部１１は、各サーバ２ａ〜２ｄの状態（障害発生状況）を定期的に監視し、状態が変化したときには、その内容でサービス状態管理テーブル１５を更新する。クライアント発信のサービス要求を受信すると、サーバ決定処理部１３は、サービス状態管理テーブル１５に設定された障害情報を参照に、サーバ決定ルールに従い、要求されたサービスが提供可能なサーバの中から当該サービスを提供するサーバ２を決定する。サービス処理制御部１２は、その決定されたサーバ２へサービス要求を転送する。【選択図】図２
2007164264.tif 000002
【特許請求の範囲】
【請求項１】
１または複数のサービスを実行する複数のコンピュータと共に、受信したサービス要求に応じてサービスを提供するサービスシステムに含まれ、受信したサービス要求を、各コンピュータにかかる負荷が分散されるようにいずれかのコンピュータに転送する負荷分散用コンピュータを、
サービスシステムが提供する各サービスを実行しうるコンピュータと当該各コンピュータにおける現在の障害の程度を示す障害レベル情報とが対応付けされた障害情報をサービス毎に記憶するサービス状態記憶手段、
各サービスの提供に関わる障害発生状況を各コンピュータから収集し、その収集した障害発生状況に基づいて、前記サービス状態記憶手段に記憶された障害情報を更新するサービス状態監視手段、
サービス要求を受信する要求受信手段、
前記要求受信手段が受信したサービス要求により指定されたサービスを実行するコンピュータを、前記サービス状態記憶手段に記憶されている当該サービスを実行しうる各コンピュータの障害情報と予め決められた決定ルールによって決定する決定処理手段、
前記決定処理手段が決定したコンピュータへ当該サービス要求を転送する要求転送手段、
として機能させる負荷分散プログラム。
【請求項２】
請求項１記載の負荷分散プログラムにおいて、
前記決定処理手段は、障害レベル情報により特定される障害の程度に応じて決められたサービス要求転送先の順番に従うという決定ルールに従い当該サービスを実行するコンピュータを決定する負荷分散プログラム。
【請求項３】
請求項２記載の負荷分散プログラムにおいて、
前記サーバ決定処理手段は、当該サービスを実行しうる各コンピュータへのサービス要求転送数が、障害レベル情報により特定される障害の程度に応じて決められた一定割合となるように当該サービスを実行するコンピュータを決定する負荷分散プログラム。
【請求項４】
請求項２記載の負荷分散プログラムにおいて、
前記サーバ決定処理手段は、障害レベル情報により特定される障害の程度に応じて決められたサービス要求転送数上限値に達するまで障害の程度の低いコンピュータから優先的に当該サービスを実行するコンピュータとして選出する負荷分散プログラム。
【請求項５】
請求項１記載の負荷分散プログラムにおいて、前記負荷分散用コンピュータを更に、
各コンピュータにおける負荷状況を取得する負荷状況取得手段として機能させ、
前記決定処理手段は、前記負荷状況取得手段が取得した当該サービスを実行しうる各コンピュータの負荷状況に基づいて当該サービスを実行するコンピュータを決定する負荷分散プログラム。
【請求項６】
請求項１記載の負荷分散プログラムにおいて、
前記サービス状態記憶手段には、サービスシステムが提供する各サービスに対応させて、負荷分散するために当該サービスを提供可能なコンピュータとして確保しておきたい下限台数が設定されており、
前記サービス状態監視手段は、各コンピュータから収集した障害発生状況からサービスの提供が不能ではない程度の障害が発生していると判定したコンピュータを、前記サービス状態記憶手段に設定されている下限台数とすでに負荷分散対象として選択されているコンピュータの台数との関係に基づき負荷分散対象とするか否かを判断し、その判断結果を障害情報の一部として前記サービス状態記憶手段に設定登録する負荷分散プログラム。
【請求項７】
１または複数のサービスを実行する複数のコンピュータと共に、サービス要求に応じてサービスを提供するサービスシステムに含まれ、受信したサービス要求を、各コンピュータにかかる負荷が分散されるようにいずれかのコンピュータに転送する負荷分散用装置において、
サービスシステムが提供するサービス毎に、当該サービスを実行しうるコンピュータと当該各コンピュータにおける現在の障害の程度を示す障害レベル情報とが対応付けされた障害情報を記憶するサービス状態記憶手段と、
各サービスの提供に関わる障害発生状況を各コンピュータから収集し、その収集した障害発生状況に基づいて、前記サービス状態記憶手段に記憶された障害情報を更新するサービス状態監視手段と、
サービス要求を受信する要求受信手段と、
前記要求受信手段が受信したサービス要求により指定されたサービスを実行するコンピュータを、前記サービス状態記憶手段に記憶されている当該サービスを実行しうる各コンピュータの障害情報と予め決められたサーバ決定ルールによって決定する決定処理手段と、
前記決定処理手段が決定したコンピュータへ当該サービス要求を転送する要求転送手段と、
を有することを特徴とする負荷分散装置。
【請求項８】
１または複数のサービスを実行する複数のコンピュータと、
受信したサービス要求に応じてサービスを提供するサービスシステムに含まれ、受信したサービス要求を、各コンピュータにかかる負荷が分散されるようにいずれかのコンピュータに転送する負荷分散装置と、
を有するサービスシステムにおいて、
前記負荷分散装置は、
サービスシステムが提供するサービス毎に、当該サービスを実行しうるコンピュータと当該各コンピュータにおける現在の障害の程度を示す障害レベル情報とが対応付けされた障害情報を記憶するサービス状態記憶手段と、
各サービスの提供に関わる障害発生状況を各コンピュータから収集し、その収集した障害発生状況に基づいて、前記サービス状態記憶手段に記憶された障害情報を更新するサービス状態監視手段と、
サービス要求を受信する要求受信手段と、
前記要求受信手段が受信したサービス要求により指定されたサービスを実行するコンピュータを、前記サービス状態記憶手段に記憶されている当該サービスを実行しうる各コンピュータの障害情報と予め決められたサーバ決定ルールによって決定する決定処理手段と、
前記決定処理手段が決定したコンピュータへ当該サービス要求を転送する要求転送手段と、
を有することを特徴とするサービスシステム。
【請求項９】
請求項８記載のサービスシステムにおいて、
前記各コンピュータは、前記サービス状態監視手段からの問合せに応じて自コンピュータに関わる障害発生状況を送信する障害監視手段を有し、
前記サービス状態監視手段は、前記各障害監視手段へ障害通知要求を発信することによって、各コンピュータから障害発生状況を収集することを特徴とするサービスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、負荷分散しながらサービスを実行する複数のコンピュータのいずれかに、要求されたサービスを提供させる際、そのサービスを提供させるコンピュータの決定方法に関する。
【背景技術】
【０００２】
ＷＥＢアプリケーションサービスの可用性を高めるための技術としては、フェイルオーバー型のクラスタ構成を構築する方法と、負荷分散装置を用いて複数台のうち稼働可能なＷＥＢサーバに負荷を分散しながらサービスを継続する方法がある。このうち、後者の負荷分散装置を用いる方法の内容について詳述すると、この方法は、ＷＥＢアプリケーションサービスを提供する複数台のＷＥＢサーバと、各ＷＥＢサーバの負荷分散を担当する負荷分散装置とでシステムを構築しておく。そして、負荷分散装置は、各サーバの負荷の状態や、各サーバがサービスを提供可能な状態であるかといったサーバに関する情報を定期的に取得、保持する。
【０００３】
クライアントからのリクエストを受信すると、負荷分散装置は、保持している各サーバに関する情報に基づき予め設定されたルールに従い当該リクエストを処理するのに最適なサーバを決定する。なお、予め設定しておくルールには、各サーバに関する情報に基づいて、当該リクエストを処理するのに最適なサーバを決定するための決定手順が設定されているが、少なくとも障害が発生しているサーバは選出されないように設定される。そして、負荷分散装置は、受信したリクエストを、ルールに従い決定したサーバへ転送する。リクエストが転送されてきたサーバは、そのリクエストに応じて発信元のクライアントに対してサービスを提供することになる。
【０００４】
このように、複数台のＷＥＢサーバに負荷分散しながらサービスを提供する方法では、設定されたルールに従って障害が発生したサーバを選択候補から除外し、障害が発生しておらず、かつ要求されたサービスを提供可能なサーバの中から当該リクエストに対応するサーバを選出するので、可用性を向上させることができる。なお、負荷分散装置において、負荷を分散するサーバを動的に決定する従来技術としては、例えば特許文献１，２などがある。
【０００５】
【特許文献１】特開平１１−２５００２０号公報
【特許文献２】特開２００３−２８１００７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、サーバで発生しうる障害には、例えば、バックアップの失敗や冗長化されたハードウェアの一部の障害などのように、障害ではあるがサービスの提供は継続可能な障害と、サービス提供自体に支障が生ずるような障害とが存在する。従って、このような程度（レベル）によって障害を分類することができる。
【０００７】
障害の程度が相対的に軽度である障害が発生したサーバは、障害が発生したのだから負荷分散対象、すなわちサービス要求に対してサービスを提供するサーバの選択候補から除外されるべきであるとも考えられる。つまり、障害が発生していないサーバのみを負荷分散対象とすべきであると考えられる。しかしながら、その一方で、障害が発生していないサーバの負荷が過大な状態であるのにもかかわらず、軽度な障害であるためにサービスの提供が可能なサーバを常に負荷分散対象から除外し、負荷が過大なサーバに対して更にサービスを実行させることが妥当な負荷分散ではあるとは言い難い。負荷分散の観点からすると、軽度な障害であるためにサービスの提供が可能なサーバにもサービスの提供を行わせた方がよいとも考えられる。
【０００８】
しかしながら、従来の負荷分散方法では、いずれかのサーバで障害が発生したとき、発生した障害の程度によって区別せずに障害発生の有無のみで当該サーバを選択候補から除外するようにしていた。従って、前述したような障害の程度に応じた負荷の分散制御を実現することができない。
【０００９】
本発明は、以上のような課題を解決するためになされたものであり、サービスを提供するコンピュータへの好適な負荷分散を実現することを目的とする。
【課題を解決するための手段】
【００１０】
以上のような目的を達成するために、本発明に係る負荷分散プログラムは、１または複数のサービスを実行する複数のコンピュータと共に、受信したサービス要求に応じてサービスを提供するサービスシステムに含まれ、受信したサービス要求を、各コンピュータにかかる負荷が分散されるようにいずれかのコンピュータに転送する負荷分散用コンピュータを、サービスシステムが提供する各サービスを実行しうるコンピュータと当該各コンピュータにおける現在の障害の程度を示す障害レベル情報とが対応付けされた障害情報をサービス毎に記憶するサービス状態記憶手段、各サービスの提供に関わる障害発生状況を各コンピュータから収集し、その収集した障害発生状況に基づいて、前記サービス状態記憶手段に記憶された障害情報を更新するサービス状態監視手段、サービス要求を受信する要求受信手段、前記要求受信手段が受信したサービス要求により指定されたサービスを実行するコンピュータを、前記サービス状態記憶手段に記憶されている当該サービスを実行しうる各コンピュータの障害情報と予め決められた決定ルールによって決定する決定処理手段、前記決定処理手段が決定したコンピュータへ当該サービス要求を転送する要求転送手段として機能させるものである。
【００１１】
また、前記決定処理手段は、障害レベル情報により特定される障害の程度に応じて決められたサービス要求転送先の順番に従うという決定ルールに従い当該サービスを実行するコンピュータを決定するものである。
【００１２】
更に、前記決定処理手段は、当該サービスを実行しうる各コンピュータへのサービス要求転送数が、障害レベル情報により特定される障害の程度に応じて決められた一定割合となるように当該サービスを実行するコンピュータを決定する。
【００１３】
あるいは、前記サーバ決定処理手段は、障害レベル情報により特定される障害の程度に応じて決められたサービス要求転送数上限値に達するまで障害の程度の低いコンピュータから優先的に当該サービスを実行するコンピュータとして選出するようにしてもよい。
【００１４】
また、前記負荷分散用コンピュータを更に、各コンピュータにおける負荷状況を取得する負荷状況取得手段として機能させ、前記決定処理手段は、前記負荷状況取得手段が取得した当該サービスを実行しうる各コンピュータの負荷状況を参照に当該サービスを実行するコンピュータを決定するものである。
【００１５】
また、前記サービス状態記憶手段には、サービスシステムが提供する各サービスに対応させて、負荷分散するために当該サービスを提供可能なコンピュータとして確保しておきたい下限台数が設定されており、前記サービス状態監視手段は、各コンピュータから収集した障害発生状況からサービスの提供が不能ではない程度の障害が発生していると判定したコンピュータを、前記サービス状態記憶手段に設定されている下限台数とすでに負荷分散対象として選択されているコンピュータの台数との関係に基づき負荷分散対象とするか否かを判断し、その判断結果を障害情報の一部として前記サービス状態記憶手段に設定登録するものである。
【００１６】
本発明に係る負荷分散装置は、１または複数のサービスを実行する複数のコンピュータと共に、サービス要求に応じてサービスを提供するサービスシステムに含まれ、受信したサービス要求を、各コンピュータにかかる負荷が分散されるようにいずれかのコンピュータに転送する負荷分散用装置において、サービスシステムが提供するサービス毎に、当該サービスを実行しうるコンピュータと当該各コンピュータにおける現在の障害の程度を示す障害レベル情報とが対応付けされた障害情報を記憶するサービス状態記憶手段と、各サービスの提供に関わる障害発生状況を各コンピュータから収集し、その収集した障害発生状況に基づいて、前記サービス状態記憶手段に記憶された障害情報を更新するサービス状態監視手段と、サービス要求を受信する要求受信手段と、前記要求受信手段が受信したサービス要求により指定されたサービスを実行するコンピュータを、前記サービス状態記憶手段に記憶されている当該サービスを実行しうる各コンピュータの障害情報と予め決められたサーバ決定ルールによって決定する決定処理手段と、前記決定処理手段が決定したコンピュータへ当該サービス要求を転送する要求転送手段とを有することを特徴とする。
【００１７】
本発明に係るサービスシステムは、１または複数のサービスを実行する複数のコンピュータと、受信したサービス要求に応じてサービスを提供するサービスシステムに含まれ、受信したサービス要求を、各コンピュータにかかる負荷が分散されるようにいずれかのコンピュータに転送する負荷分散装置とを有するサービスシステムにおいて、前記負荷分散装置は、サービスシステムが提供するサービス毎に、当該サービスを実行しうるコンピュータと当該各コンピュータにおける現在の障害の程度を示す障害レベル情報とが対応付けされた障害情報を記憶するサービス状態記憶手段と、各サービスの提供に関わる障害発生状況を各コンピュータから収集し、その収集した障害発生状況に基づいて、前記サービス状態記憶手段に記憶された障害情報を更新するサービス状態監視手段と、サービス要求を受信する要求受信手段と、前記要求受信手段が受信したサービス要求により指定されたサービスを実行するコンピュータを、前記サービス状態記憶手段に記憶されている当該サービスを実行しうる各コンピュータの障害情報と予め決められたサーバ決定ルールによって決定する決定処理手段と、前記決定処理手段が決定したコンピュータへ当該サービス要求を転送する要求転送手段とを有することを特徴とする。
【００１８】
また、前記各コンピュータは、前記サービス状態監視手段からの問合せに応じて自コンピュータに関わる障害発生状況を送信する障害監視手段を有し、前記サービス状態監視手段は、前記各障害監視手段へ障害通知要求を発信することによって、各コンピュータから障害発生状況を収集することを特徴とする。
【発明の効果】
【００１９】
本発明によれば、障害が発生したからといってそのコンピュータを無条件に負荷分散の候補から除外するのではなく、発生した障害の程度に応じてサービスの提供をさせるか否かを判断するようにした。これにより、正常なコンピュータへの負荷の集中の回避と、障害が発生したとはいえサービスの提供が可能なコンピュータの有効利用とが可能になるので、より効果的な負荷分散を実現することができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面に基づいて、本発明の好適な実施の形態について説明する。
【００２１】
図１は、本発明に係るサービスシステムの一実施の形態を示した全体構成図である。図１には、それぞれが１または複数のサービスを提供する複数台のＷＥＢアプリケーションサーバコンピュータ（以下、単に「サーバ」）２と、サーバ２が提供する各種サービスの提供を受けるユーザが利用するクライアントコンピュータ（以下、単に「クライアント」）４と、サービスの提供を受けるためにクライアント４から発信されたサービス要求を受け付け、サーバ２にかかる負荷が分散されるようにいずれかのサーバ２に転送する負荷分散装置１０と、ファイアウォール６を介してクライアント４と負荷分散装置１０を接続するインターネット８とが示されている。
【００２２】
本システムは、クライアントユーザに対して複数種類のサービスを提供する。一のサービスが単一のＷｅｂアプリケーションの実行により実現されるとすると、本実施の形態では、Ｗｅｂアプリケーションそれぞれを１または複数のサーバ２にインストールしていることになる。換言すると、論理的には同じ場合もあり得るが、基本的にはサーバ２によって搭載されるサービスの種類や数が異なっている。
【００２３】
クライアント４は、本実施の形態ではパーソナルコンピュータ（ＰＣ）を想定しているが、これに限らず携帯電話等インターネット８を介して負荷分散装置１０と情報交換が可能なコンピュータ若しくはコンピュータ搭載の情報機器であれば特に機器の種類に限定しない。負荷分散装置１０は、本実施の形態では通信機能搭載のＰＣを想定している。なお、クライアント４と負荷分散装置１０とは、情報交換可能に接続されていればよいため、ネットワーク手段としては、必ずしもインターネット８を介する必要はなくイントラネット等の通信網でもよい。
【００２４】
以下、図１を用いてクライアント４にサービスを提供する際の基本的な処理の概要について説明する。
【００２５】
本システムが提供するサービスを利用したいユーザは、利用したいサービスの種類や当該サービスの実施に必要な情報を含むサービス要求をクライアント４から発信する。負荷分散装置１０は、インターネット８、ファイアウォール６を介してクライアント４から発信されたサービス要求を受信すると、その要求されたサービスを提供可能なサーバ２の中から各サーバ２の障害レベル等を考慮してその要求に対応する一のサーバ２を決定する。そして、クライアント４が発信したサービス要求を当該サーバ２へ転送する。サービス要求を受け取ったサーバ２は、要求に応じて当該サービスを実施し、その処理結果を負荷分散装置１０へ返す。負荷分散装置１０は、サーバ２から送られてきた処理結果をサービス要求元のクライアント４へ転送する。
【００２６】
本実施の形態では、以上のようにクライアント４から送られてきたサービス要求に応じて当該クライアント４へサービスを提供する。サービスを提供する全体的な処理の流れ自体は、従前と同様であるが、本実施の形態は、負荷分散装置１０により実行される処理、具体的には、クライアント４からの要求に応じてサービスを提供するサーバ２の決定処理に特徴がある。この点については追って詳述する。
【００２７】
図２は、図１に示した負荷分散装置１０及びサーバ２のブロック構成図である。本実施の形態における負荷分散装置１０は、サービス状態監視処理部１１、サービス処理制御部１２、サーバ決定処理部１３、障害レベル情報テーブル１４及びサービス状態管理テーブル１５を有している。サービス状態監視処理部１１は、各サーバの状態を定期的に監視し、サービスの提供に関わる障害発生状況を各サーバ２から収集する。サービス処理制御部１２は、クライアント４が発信したサービス要求を受信する要求受信手段及びサーバ決定処理部１３が決定したサーバ２へ受信したサービス要求を転送する要求転送手段として機能する。サーバ決定処理部１３は、サービス処理制御部１２が受信したサービス要求により指定されたサービスを実行するサーバ２を、サービス状態管理テーブル１５に記憶されている障害情報を参照に予め決められたサーバ決定ルールに従い決定する。なお、障害レベル情報テーブル１４及びサービス状態管理テーブル１５に関しては、追って説明する。
【００２８】
一方、サーバ２は、サービス実行部２１と障害監視部２２を有している。サービス実行部２１は、負荷分散装置１０から転送されてきたサービス要求に応じて該当するサービスを実行し、その処理結果を負荷分散装置１０へ転送する。障害監視部２２は、負荷分散装置１０からの問合せに応じて自サーバに関わる障害発生状況、具体的には障害の発生の有無及び障害が発生している場合には、その障害の内容等自サーバの現在の状態を通知する。なお、図２では、説明の便宜上、４台のサーバ２ａ〜２ｄで構成した例を示している。各サーバ２ａ〜２ｄは、それぞれ前述した構成要素２１，２２を有しているが、処理能力等の相違によって提供可能なサービスの数や種類が異なる。
【００２９】
負荷分散装置１０及びサーバ２をそれぞれ形成するコンピュータは、ＣＰＵ、ＲＯＭ、ＲＡＭ、外部記憶装置として設けられたハードディスクドライブ（ＨＤＤ）、入力手段として設けられたマウス及びキーボード、表示装置として設けられたディスプレイなどをそれぞれバスで接続して構成される。各構成要素１１〜１３，２１〜２２における処理機能は、コンピュータと当該処理機能を実現する１または複数の負荷分散プログラムとの協調動作により実現される。また、障害レベル情報テーブル１４及びサービス状態管理テーブル１５は、ＨＤＤで実現することを想定しているが、ＲＡＭに必要なデータをコピーしてから使用するようにしてもよい。
【００３０】
図３は、本実施の形態における障害レベル情報テーブル１４に設定登録された障害レベル情報のデータ構成例を示した図である。図３に示したように、障害レベル情報テーブル１４には、サーバ２において発生しうる障害の種類と各障害の程度を示す障害レベルとが対応付けして設定される。本実施の形態では、最低限必要な障害レベルとして、サーバ２がサービスを提供できない障害が発生した状態（「サービス不能」）であることを示す障害レベル０と、障害が発生していないためにサーバ２がサービスを正常に提供できる状態（「正常」）であることを示す障害レベル２と、障害が発生していているもののその障害の程度が軽微であるためにサーバ２がサービスを提供できる状態であることを示す障害レベル１との３パターンを用意した。従来では、障害の有無のみによって各サーバのサービスの提供が可能か否かを判断していたところを、本実施の形態では、障害が発生している「有」の状態を、サービスの提供が不能な状態と、サービスの提供が可能な状態とに更に区別して取り扱うようにしたことを特徴としている。本実施の形態では、障害レベル１として図３に示したように「バックアップ失敗」と「Ｈ／Ｗ冗長性喪失」とを例示している。サービス自体の提供に影響が及ばないようなデータのバックアップが失敗しても、あるいはミラーディスクの破損等ＨＤＤの冗長性が維持されていない状態でも、サービスを提供することには支障は来さないと考えられるからである。なお、本実施の形態では、サービス不能でない程度が軽微な障害を障害レベル１という１段階のみで構成したが、複数段階に分けて障害を分類するようにしてもよい。
【００３１】
図４は、本実施の形態におけるサービス状態管理テーブル１５のデータ構成例を示した図である。図４に示したように、本システムが提供するサービス毎に、サーバ下限台数と、Ｗｅｂアプリケーションがインストールされていることにより当該サービスを実行しうるサーバと、当該各サーバにおける現在の障害の程度を示す障害レベル情報とが対応付けされた障害情報とが対応付けして登録される。「サーバ下限台数」というのは、負荷分散するために当該サービスを提供可能なサーバとして確保しておきたいサーバの台数である。詳細は後述するように、サーバ下限台数は、サーバ２から取得した状態が障害レベル１に相当するときに、当該サーバ２を負荷分散対象とするか、除外するかを判断する際の閾値として利用される。各サービスに対して「サーバ下限台数」と「サーバ」とは、各サービスに対して事前に設定しておく必要がある。なお、あるサービスを提供可能なサーバ２はどれかということは、システム起動時において負荷分散装置１０と各サーバ２との間の情報交換で自動的に収集し、サービス状態管理テーブル１５に設定登録することは可能である。
【００３２】
障害情報は、「サーバ状態」、「障害レベル」及び「負荷分散対象」で構成され、各サーバに対応付けして設定登録される。「サーバ状態」は、現在のサーバ２の状態を示す情報である。本実施の形態では、障害発生状況に関する情報であって、具体的には障害の発生の有無及び障害が発生している場合には、その障害の程度を示す情報が設定される。「障害レベル」は、「サーバ状態」を数値化したデータである。負荷分散装置１０は、サービス要求が送られてきたとき、その要求された種類のサービスを、当該サービスを提供するためのＷｅｂアプリケーションがインストールされたサーバ２のうち各サーバ２の現在の負荷等を考慮していずれかのサーバ２に提供させることになるが、「負荷分散対象」には、サーバ２が負荷分散される選択候補であるか（“Ｙｅｓ”）、あるいは選択宝庫から除外されているか（“Ｎｏ”）、が設定される。
【００３３】
サービス状態監視処理部１１は、各サーバ２の状態を定期的に監視し、サーバ２の状態の変化を検出したときには、その変化した状態に応じてサービス状態管理テーブル１５の「サーバ状態」、「障害レベル」及び「負荷分散対象」を更新するが、ここで、サービス状態管理テーブル１５のデータ構成の詳細な説明と共に本実施の形態におけるサーバ状態監視処理を図５に示したフローチャートを用いて説明する。
【００３４】
サービス状態監視処理部１１は、定期的に起動され、定時処理として以下の処理を行う。まず、サービス状態監視処理部１１は、サービス状態管理テーブル１５を参照することによりサーバ２を１台選択し、現在の障害発生状況を問い合わせる（ステップ１１０）。本実施の形態では、４台のサーバ２ａ〜２ｄでサーバ群を形成しているので、以下の処理を４回繰り返し実行することになる。当該サーバ２の障害監視部２２は、サービス状態監視処理部１１による問合せに応じてサーバ２にてサービスの提供に関わる障害発生状況、すなわち障害の発生の有無、そして障害が発生している場合には、その障害の内容を返信する。サービス状態監視処理部１１は、このようにして処理対象のサーバ２の状態を取得する（ステップ１２０）。
【００３５】
続いて、サービス状態監視処理部１１は、サービス状態管理テーブル１５に記憶されている処理対象のサーバ２のサーバ状態を読み出し、その読み出したサーバ状態と、取得したサーバ２の障害発生状況とを比較し、その結果、一致しないことによりサーバ２の状態が変化したと判断した場合には（ステップ１３０でＹ）、取得したサーバ２の状態でサービス状態管理テーブル１５を更新する（ステップ１４０）。この更新と共に、障害レベル情報テーブル１４を参照することによって更新したサーバ２の状態の障害レベルを特定し、その特定した障害レベルでサービス状態管理テーブル１５を更新する。そして、サーバ状態が「正常」に更新されたときには（ステップ１５０でＹ）、サービス状態管理テーブル１５に記憶されている当該サーバ２の負荷分散対象を“Ｙｅｓ”に変更した後（ステップ２２０）、ステップ１９０に移行する。
【００３６】
サーバ状態が「正常」でない場合、すなわち、処理対象のサーバ２に何らかの障害が発生しているときには（ステップ１５０でＮ）、以下のステップ１６０〜１８０における処理を実施する。なお、ステップ１６０に移行する場合というのは、直前のサーバ状態が「正常」か、同じ障害レベル１の他の種類の障害が新たに発生した場合である。障害レベル０の「サービス不能」であった場合は、障害レベル１に直接移行する場合はなく、いったん障害レベル２の「正常」に戻ることになる。
【００３７】
まず、サービス状態監視処理部１１は、更新したサーバ２の状態が軽微な障害レベルに更新されたか否かを判断する（ステップ１６０）。本実施の形態でいう「軽微な障害レベル」というのは、「バックアップ失敗」などのように発生してもなおサービスを継続して提供できるような障害の程度を言う。本実施の形態では、軽微な障害レベルではない障害に該当するのは、「サービス不能」に割り当てた障害レベル０の障害だけであり、正常なサーバ状態を意味する障害レベル２を除くその他の障害レベルが軽微な障害レベルに該当する。本実施の形態では、便宜的に軽微な障害レベルを１段階のみ設定したので、障害レベル１のみが軽微な障害レベルに該当する。
【００３８】
軽微な障害が発生している場合（ステップ１６０でＹ）、サービス状態監視処理部１１は、処理対象のサーバ２が提供するサービス毎に、以下の計算を行う。この計算について、処理対象中のサーバがサーバＡであるときを例にして説明する。例えば、図６に示したサービス状態管理テーブル１５の「サーバ」への設定例からサービス１についてのサービス要求の転送先候補がサーバＡ〜Ｄであることが理解できる。そして、処理対象中のサーバＡを除く他のサーバＢ〜Ｄのうち負荷分散対象が“Ｙｅｓ”であるサーバ２の台数を積算する。この例では、サーバＣ，Ｄの２台である。ここで、積算値とサービス１に対して設定されたサーバ下限台数は共に２であることから、ステップ１７０における判定式（負荷分散対象数≧サーバ下限台数）を満たすことがわかる。つまり、サービス１を提供する際の負荷分散のためにサーバ下限台数が確保されているので、処理対象のサーバＡの負荷分散対象を“Ｎｏ”に設定する（ステップ１８０）。一方、ステップ１７０における判定式を満たさない場合、サーバＡの負荷分散対象を“Ｎｏ”に変更してしまうと、負荷分散対象数が確保できなくなってしまうため、上記設定変更を行わない。
【００３９】
その後、サービス状態監視処理部１１は、必要に応じて負荷分散対象を変更する（ステップ１９０）。この処理については、追って説明する。そして、処理対象のサーバ２につき上記処理を処理対象としていないサービスが存在する場合には（ステップＳ２００でＹ）、ステップ１３０に戻り、前述した処理を繰り返し行う。
【００４０】
ここで、処理対象中のサーバがサーバＡであるときを例にして説明を続ける。サーバＡにおいては、今度はサービス２についてステップ１６０〜１８０の処理を行うことになる。図６に示したサービス状態管理テーブル１５への設定例から、負荷分散のためにサービス２についてのサービス要求の転送先候補がサーバＡ〜Ｃであることが理解できる。そして、処理対象中のサーバＡを除く他のサーバＢ〜Ｃのうち負荷分散対象が“Ｙｅｓ”であるサーバ２の台数を積算する。この例では、サーバＣの１台のみである。ここで、積算値は、サービス２に対して設定されたサーバ下限台数“２”を下回ることから、ステップ１７０における判定式（負荷分散対象数≧サーバ下限台数）を満たすことがわかる。従って、サーバＡの負荷分散対象を“Ｎｏ”に変更しない。
【００４１】
以上のように、軽微な障害が発生したサーバＡに対して、サービス１においてはサーバ下限台数を確保できているので負荷分散対象から除外する一方、サービス２においては、設定を“Ｎｏ”にしてしまうとサーバ下限台数を確保できなくなるので負荷分散対象から除外しない。このように、本実施の形態では、軽微な障害が発生したサーバに関しては、サーバ下限台数と負荷分散対象の数との比較によって負荷分散の対象とするかしないかを決定するようにした。ここで、上記において説明しなかった負荷分散対象の設定に関するステップ１９０について詳述する。
【００４２】
図６に示したサービス状態管理テーブル１５の状態、例えば図６に例示したサービス２の設定内容となる直前の状態は、図７に例示した２通りが考えられる。通常は、図７（ａ）に示した状態、すなわち、正常であったサーバＡにおいて「バックアップ失敗」等の軽微な障害が発生した場合である。この場合は、前述したようにサービス２におけるサーバＡの負荷分散対象を“Ｎｏ”に設定変更してしまうと、サーバ下限台数を確保できなくなるので“Ｙｅｓ”に維持したままとする。
【００４３】
一方、図７（ｂ）に示したように、サーバＡで「バックアップ失敗」が発生した時点では、サーバＢ，Ｃが共に正常であったためにサービス２のサーバ下限台数が確保されていることから、サーバＡの負荷分散対象には“Ｎｏ”が設定されることになる（ステップ１７０でＹ、１８０）。しかし、この後に、サーバＢにサービス２の提供が不可能となる障害が発生したとする。この場合、サーバＢの負荷分散対象を“Ｎｏ”に設定変更しなければならないが、サーバＢの負荷分散対象を“Ｎｏ”に変更すると、サービス２は、サーバ下限台数を確保できなくなってしまう。
【００４４】
従って、障害発生時には“Ｎｏ”と設定されたサーバＡの負荷分散対象を、“Ｙｅｓ”に設定変更することによってサービス２のサーバ下限台数を確保するように調整した方が好ましいと考えられる。そこで、ステップ１９０において、サービスのサーバ下限台数を確保できるように各サービスにつき負荷分散対象を調整するようにした。
【００４５】
サービス状態監視処理部１１は、前述した処理を各サーバにつきサービス毎に行うことで（ステップ２００，２１０）、サービス状態管理テーブル１５の更新を行う。
【００４６】
本実施の形態においては、以上説明したように、いずれかのサーバ２にて軽微な障害が発生したときには、障害が発生したとして当該サーバによるサービスの提供を不能、すなわち負荷分散対象から無条件に除外するのではなく、サーバ下限台数の確保を図りつつ負荷分散の効率化を実現できるようにした。従って、軽微な障害が発生したサーバ２が、あるサービスにおいてはサービス提供可能なサーバとして位置づけられ、他のサービスにおいてはサービス不能能なサーバとして位置づけられる場合が生じてくる。
【００４７】
なお、サービス状態監視処理部１１と障害監視部２２との間で授受される情報というのは、障害に関する情報であれば何でもよいというわけでなく、より具体的にいうと障害が発生してもなおサービスの提供が継続して可能か否かの判断指標となりうる情報である必要がある。
【００４８】
また、本実施の形態では、図３から明らかなように同じサーバ状態に対して同一の障害レベルを便宜的に割り当てた。つまり、サーバ状態と障害レベルとを１対１の関係にした。しかし、例えば、スキャナ機能の障害によって提供ができなくなるサービスや、スキャナ機能に障害が発生してもサービスを継続して提供できるサービスもあり得る。つまり、同じ障害が発生してもサービスの種類によって提供不能になったり、あるいは提供可能な状態を維持できたりする場合も考えられる。従って、サービス状態監視処理部１１は、サービスの内容（使用するハードウェア構成、機能等）と発生した障害の内容との関係に従って、当該サービスの処理対象のサーバに対して適切な障害レベルを設定できるようにすることが望ましい。
【００４９】
以上のようにしてサービス状態管理テーブル１５の設定内容は、定期的に更新されることになるが、続いて、本システムがこのサービス状態管理テーブル１５を利用しながらクライアント４からの要求に応じてサービスを提供するときの処理について図８に示したフローチャートを用いて説明する。
【００５０】
サービス処理制御部１２は、いずれかのクライアント４から送られてきたサービス要求を受信すると（ステップ３１０）、そのサービス要求に含まれている各種情報を読み込む（ステップ３２０）。そして、サービス処理制御部１２は、本システムが提供するサービスが、受信したサービス要求に指定されているかを確認し、もし、指定されていなかった場合には（ステップ３３０でＮ）、サービス要求発信元のクライアント４に対してその旨のエラーを通知する（ステップ３９０）。
【００５１】
本システムが提供するサービス利用であることが確認されると（ステップ３３０でＹ）、サーバ決定処理部１３は、要求されたサービスが提供可能なサーバが存在するかを確認する。これは、サービス状態管理テーブル１５を参照することにより、要求されたサービスを提供するサーバ２のうち負荷分散対象に“Ｙｅｓ”と設定されているサーバが少なくとも１台存在すれば、当該サービスの提供が可能と判断する。これに対し、全てのサーバの負荷分散対象に“Ｎｏ”と設定されていれば、サービスの提供が不能と判断して（ステップ３４０でＮ）、サービス要求発信元のクライアントに対してその旨のエラーを通知する（ステップ３９０）。
【００５２】
サービスの提供が可能と判断した場合（ステップ３４０でＹ）、サーバ決定処理部１３は、負荷分散対象に“Ｙｅｓ”と設定されているサーバ２が１台のみであれば、そのサーバ２を、サービスを提供するサーバ２として決定し、負荷分散対象に“Ｙｅｓ”と設定されているサーバ２が複数台存在すれば、その中からサービスを提供する１台のサーバ２を決定する（ステップ３５０）。この１台のサーバ２を決定する方法については、後述する。
【００５３】
サーバ決定処理部１３がサービスを提供するサーバ２を決定すると、サービス処理制御部１２は、受信したサービス要求をその決定されたサーバ２へ転送する（ステップ３６０）。サービス要求が転送されてくると、そのサーバ２のサービス実行部２１は、要求されたサービスに対応するＷｅｂアプリケーションを起動することで当該サービスを実行し、そのサービス処理の結果を得る。サービス処理制御部１２は、転送したサービス要求に応じてサーバ２から送られてきた処理結果を取得すると（ステップ３７０）、その処理結果を、サービス要求発信元のクライアント４へ転送する（ステップ３８０）。
【００５４】
本実施の形態によれば、以上のようにしてクライアント４へサービスを提供する。ここで、複数台のサーバ２がサービスの提供が可能な状態であるときに、その中からサービスを提供する１台のサーバ２を決定するステップ３５０における処理について説明する。
【００５５】
サーバ決定方法としては、種々のパターンが考えられるので、ここで、いくつかの決定方法について説明する。
【００５６】
サービスの提供が可能な（負荷分散対象が“Ｙｅｓ”である）サーバ２は、障害レベル２のサーバ状態が「正常」のサーバ２のみならず、障害レベル１の軽微な障害が発生しているサーバも存在しうる。障害レベルが同じサーバ間においては、負荷が均等に分散されるようにサービス要求を均等に分配すればよいが、異なる障害レベルが混在している場合、すなわち障害レベルが２と１のサーバ２が混在している場合もある。障害レベル１のサーバ２は、サービスの提供が可能なサーバ状態であるものの、たとえ軽微であるとはいえ障害が発生していることには変わりがなく、性能が低下している可能性もある。従って、軽微な障害が発生しているサーバ２を正常なサーバ２と全く同等に負荷分散の対象として扱うのが適切であるとは限らない。そこで、本実施の形態では、障害レベルに応じて負荷分散対象のサーバ２に優先順位を付け、そしてその優先順位に従い決められた順番にサービス要求の転送先を決定するようにした。なお、この決定方法は、予めサーバ決定ルールとして設定しておく。
【００５７】
例えば、第１の方法としては、サービス要求を一定割合に従ってサーバ状態が正常であるサーバ２に対して優先的に割り振る方法が考えられる。このサービス要求を割り振る概念を図９（ａ）に示す。
【００５８】
図９では、サービスの提供が可能なサーバ状態にあるサーバとして、障害レベル２の２台のサーバＡ，Ｂと、障害レベル１の１台のサーバＣが存在していることを示している。そして、各サーバＡ〜Ｃの下方の数字が、各サーバ決定方法により定義されたルールに従って選択される順番を意味する。図９（ａ）では、障害レベル２のサーバと、障害レベル１のサーバとが２対１の割合でサービス要求が転送されるように設定されている例である。従って、障害レベル２のサーバＡとサーバＢは、交互に選択され、障害レベル１のサーバＣは、サーバＡ，Ｂが２回ずつ選択された後に１回選択されることになる。サーバ決定処理部１３は、第１の方法として、一定の割合（ｍ：ｎ、ｍ＞ｎ）で各サーバＡ〜Ｃが選択されるように、サービス要求を転送するサーバを決定する。このようにして、負荷分散を実現しつつ軽微な障害が発生しているサーバＣへの負荷の軽減を図ることができる。
【００５９】
第２の方法としては、割り振る数の上限値として基準値を設定する。このサービス要求を割り振る概念を図９（ｂ）に示す。図９（ｂ）では、基準値として“５”を設定したときの例である。従って、基準値に達するまでは、障害の程度の低い障害レベル２のサーバＡとサーバＢが交互に選択され、各サーバＡ，Ｂへの転送数が基準値に達した後に障害レベル１のサーバＣを転送対象として選択する。サーバ決定処理部１３は、第２の方法として、正常なサーバＡ，Ｂへの転送数が一定の上限値に達するまでは、軽微な障害が発生しているサーバＣへの転送を控えることができるので、負荷分散を実現しつつ軽微な障害が発生しているサーバＣへの負荷の軽減を図ることができる。
【００６０】
上記方法がサービス要求の転送数のみに着目して次に受信したサービス要求を転送するサーバを決定するのに対し、ここで説明する第３の方法は、更に各サーバにかかっている負荷を更に考慮してサービスを提供させるサーバを決定するものである。
【００６１】
すなわち、サービス状態監視処理部１１は、サーバ２の負荷の状態を定期的に監視する。サーバ２にかかる負荷というのは、ＣＰＵの使用率等によって計測することができる。そして、負荷の上限値を予め設定しておき、サーバ決定処理部１３は、障害レベル２のサーバＡ，Ｂにかかる負荷がその上限値に達するまでは、サーバＡ，Ｂにかかる負荷が均等になるようにいずれかのサーバＡ，Ｂを選択する。そして、サーバＡ，Ｂ双方の負荷が上限値に達した後に、障害レベル１のサーバＣを選択するようにする。
【００６２】
サービスの実行が終了すると、サーバにかかる負荷は軽減される。サーバ決定処理部１３は、第３の方法として、実際の負荷を監視しながらサービスを提供させるサーバを決定するようにしたので、負荷分散を実現しつつ軽微な障害が発生しているサーバＣへの負荷の軽減を図ることができる。なお、第３の方法は、第１又は第２の方法と組み合わせて実行するようにしてもよい。あるいは、各障害レベル２，１のＣＰＵ使用率を４０％と２０％などと一定の割合に設定するなど第１の方法の考え方を第３の方法に取り入れるようにしてもよい。
【００６３】
本実施の形態では、以上のように、障害の程度に応じてサービス要求の転送先とするサーバ２を決定する。
【００６４】
本実施の形態によれば、障害が発生したからといってそのサーバを無条件に負荷分散の候補から除外するのではなく、発生した障害の程度に応じてサービスの提供をさせるか否かを決定するようにした。これにより、正常なサーバ２への負荷の集中の回避と、障害が発生したとはいえサービスの提供が可能なサーバ２の有効利用が可能となるので、より効果的な負荷分散を実現することができる。
【図面の簡単な説明】
【００６５】
【図１】本発明に係るサービスシステムの一実施の形態を示した全体構成図である。
【図２】図１に示した負荷分散装置及びサーバのブロック構成図である。
【図３】本実施の形態における障害レベル情報テーブルに設定登録された障害レベル情報のデータ構成例を示した図である。
【図４】本実施の形態におけるサービス状態管理テーブルのデータ構成例を示した図である。
【図５】本実施の形態におけるサーバ状態監視処理を示したフローチャートである。
【図６】本実施の形態におけるサービス状態管理テーブルの他のデータ設定例を示した図である。
【図７】本実施の形態におけるサービス状態管理テーブルへのデータ設定を説明するために用いる図である。
【図８】本実施の形態におけるサービス提供処理を示したフローチャートである。
【図９】本実施の形態におけるサーバ決定ルールの例を示した概念図である。
【符号の説明】
【００６６】
２，２ａ〜２ｄ  サーバ、４  クライアント、６  ファイアウォール、８  インターネット、１０  負荷分散装置、１１  サービス状態監視処理部、１２  サービス処理制御部、１３  サーバ決定処理部、１４  障害レベル情報テーブル、１５  サービス状態管理テーブル、２１  サービス実行部、２２  障害監視部。
【図１】
2007164264.tif 000003
【図２】
2007164264.tif 000004
【図３】
2007164264.tif 000005
【図４】
2007164264.tif 000006
【図５】
2007164264.tif 000007
【図６】
2007164264.tif 000008
【図７】
2007164264.tif 000009
【図８】
2007164264.tif 000010
【図９】
2007164264.tif 000011