(57)【要約】【課題】共通のデータベースに対する処理を行う複数台のデータベースサーバに対する負荷を分散するとともに、一連の複数のリクエストからなるトランザクションを正常に処理する。【解決手段】ＤＢ接続部１５とリスナ接続部１１とを備えた複数台の業務サーバ１と、複数台のＤＢサーバ３と、業務サーバ１とＤＢサーバ３とを接続させ、この接続切断後、所定時間内にその業務サーバ１から再びリクエストを受け付けたときは、前回の接続に係るＤＢサーバ３と再接続させる負荷分散装置５とを備える。各ＤＢ接続部１５が実質的に同時にリクエストを発行すると、負荷分散装置５は、ＤＢサーバ３に接続される業務サーバ１の台数が実質的に均等になるように接続させる。この接続切断後、リスナ接続部１１は、非接続状態が所定時間以上継続しないように周期的にリクエストを発行する。【選択図】図１
2008234373.tif 000002
【特許請求の範囲】
【請求項１】
第１のリクエスト手段と、第２のリクエスト手段と、をそれぞれ備えた複数台のリクエスト装置と、
前記複数台のリクエスト装置からのリクエストに応じて所定の処理を実行する、複数台のサーバと、
いずれかのリクエスト装置からリクエストを受け付けると、そのリクエスト装置を前記複数台のサーバのいずれかとの接続を確立させて、サーバの負荷を分散させる負荷分散装置であって、前記確立された接続が切断されたときには、その切断後、所定時間内に前記接続に係るリクエスト装置から再びリクエストを受け付けたときは、前記接続に係るサーバと再接続させる負荷分散装置と、を備えた負荷分散システムであって、
各リクエスト装置のそれぞれの第１のリクエスト手段が、実質的に同時にリクエストを発行すると、前記負荷分散装置は、各サーバに接続されるリクエスト装置の台数が実質的に均等になるように、各リクエスト装置と各サーバとを接続させ、
前記第１のリクエスト手段のリクエストに基づく接続が切断された後、各リクエスト装置のそれぞれの前記第２のリクエスト手段は、非接続状態が所定時間以上継続しないように周期的にリクエストを発行することを特徴とする負荷分散システム。
【請求項２】
前記第２のリクエスト手段によるリクエストに基づく接続を確立させるために要する時間は、前記第１のリクエスト手段によるリクエストに基づく接続を確立させるために要する時間よりも短いことを特徴とする請求項１記載の負荷分散システム。
【請求項３】
前記複数台のサーバはデータベース管理サーバであって、各データベース管理サーバは、リクエスト受付手段と、データベース管理手段とを備え、
前記データベース管理手段は、前記リクエスト受付手段を介して前記第１のリクエスト手段によるリクエストを受け付けて、リクエスト装置との接続を確立し、
前記リクエスト受付手段は、前記第２のリクエスト手段よるリクエストを受け付けて、リクエスト装置との接続を確立することを特徴とする請求項１記載の負荷分散システム。
【請求項４】
前記複数台のリクエスト装置は、複数のグループにグループ化されていて、
各リクエスト装置のそれぞれの第１のリクエスト手段は、前記グループ単位で実質的に同時にリクエストを発行し、
前記第１のリクエスト手段のリクエストに基づく接続の切断は、全グループのリクエスト装置がいずれかのサーバに接続された後に行うことを特徴とする請求項１記載の負荷分散システム。
【請求項５】
前記複数台のリクエスト装置のすべてが、いずれのサーバとも非接続であり、かつ、接続が切断されてから前記所定時間以上が経過しているときに、各リクエスト装置のそれぞれの第１のリクエスト手段が、実質的に同時にリクエストを発行することを特徴とする請求項１記載の負荷分散システム。
【請求項６】
前記複数台のリクエスト装置は、所定の業務処理に関するリクエストを発行する第３のリクエスト手段をさらに備え、
各リクエスト装置の第３のリクエスト手段が任意のタイミングで発行するリクエストは、それぞれの第１のリクエスト手段のリクエストによって接続したサーバが受け付けて処理をすることを特徴とする請求項１記載の負荷分散システム。
【請求項７】
第１のリクエスト手段と、第２のリクエスト手段と、をそれぞれ備えた複数台のリクエスト装置と、前記複数台のリクエスト装置からのリクエストに応じて所定の処理を実行する、複数台のサーバと、いずれかのリクエスト装置からリクエストを受け付けると、そのリクエスト装置を前記複数台のサーバのいずれかとの接続を確立させて、サーバの負荷を分散させる負荷分散装置であって、前記確立された接続が切断されたときには、その切断後、所定時間内に前記接続に係るリクエスト装置から再びリクエストを受け付けたときは、前記接続に係るサーバと再接続させる負荷分散装置と、を備えた負荷分散システムにおける負荷分散方法であって、
各リクエスト装置のそれぞれの第１のリクエスト手段が、実質的に同時にリクエストを発行するステップと、
前記負荷分散装置が、前記実質的に同時に発行されたリクエストに応じて、各サーバに接続されるリクエスト装置の台数が実質的に均等になるように、各リクエスト装置と各サーバとを接続させるステップと、
前記第１のリクエスト手段のリクエストに基づく接続が切断された後、各リクエスト装置のそれぞれの前記第２のリクエスト手段が、非接続状態が所定時間以上継続しないように周期的にリクエストを発行するステップとを有することを特徴とする負荷分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共通のデータベースに対する処理を行う複数台のデータベースサーバに対する負荷分散を行うための技術に関する。
【背景技術】
【０００２】
従来、複数台のサーバに同一の機能を持たせ、負荷分散装置が受け付けたリクエストをこれらのサーバのいずれかに分散させて処理させる負荷分散システムが知られている（例えば特許文献１）。
【０００３】
この負荷分散装置は、サーバ側の負荷が均等になるように、各サーバに対する接続数がほぼ同数になるようにリクエストを割り振るものがある。さらに、この負荷分散装置は、リクエストを発行したクライアントと、リクエストを処理する一台のサーバとを接続させると、その接続が切断されてから所定時間の間に来たリクエストは同じデータベースサーバへ割り当てる機能を有するものがある。
【特許文献１】特開平１０−１２４４１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ここで、図５を用いて、複数台のクライアント１００、１００，・・・からのリクエストを、負荷分散装置５００を用いて複数台のサーバ３００ａ，３００ｂ，３００ｃへ振り分ける場合を考える。このとき、負荷分散装置５００は、各サーバ３００ａ，３００ｂ，３００ｃが確立している接続数が実質的に均等（同数、またはほぼ同数）になるように割り振りを行うので、例えば図５Ａのような、特定のクライアント１００ａ，１００ｂが大量のリクエストを出しているときには、各サーバ３００ａ，３００ｂ，３００ｃの接続数は均等であっても、接続されるクライアント１００の台数に偏りが生じることがある。
【０００５】
この後、クライアント１００ａ、１００ｂのリクエストがなくなり、他のクライアント１００のリクエストが増えると、図５Ｂに示すように、他のクライアント１００のリクエストは引き続き、同じサーバ３００ｃへ割り当てられ、サーバ３００ａ，３００ｂにはまったくリクエストが割り当てられなくなるという著しい偏りが生じる。
【０００６】
また、各サーバ３００ａ，３００ｂ，３００ｃが共通のデータベースに対する処理を行うデータベースサーバであるときは、一連の複数のリクエストで一つのトランザクションが構成される場合、これらの一連の複数のリクエストが、リクエストごとに別のデータベースサーバへ割り当てられるとデータの不整合が生じ、このトランザクションは完結しない。従って、同一のトランザクションに係る一連の複数のリクエストは、同一のデータベースサーバに割り当てられる必要がある。
【０００７】
そこで、本発明の目的は、共通のデータベースに対する処理を行う複数台のデータベースサーバに対する負荷を分散するとともに、一連の複数のリクエストからなるトランザクションを正常に処理することである。
【課題を解決するための手段】
【０００８】
本発明の一実施態様に従う負荷分散システムは、第１のリクエスト手段と、第２のリクエスト手段と、をそれぞれ備えた複数台のリクエスト装置と、前記複数台のリクエスト装置からのリクエストに応じて所定の処理を実行する、複数台のサーバと、いずれかのリクエスト装置からリクエストを受け付けると、そのリクエスト装置を前記複数台のサーバのいずれかとの接続を確立させて、サーバの負荷を分散させる負荷分散装置であって、前記確立された接続が切断されたときには、その切断後、所定時間内に前記接続に係るリクエスト装置から再びリクエストを受け付けたときは、前記接続に係るサーバと再接続させる負荷分散装置と、を備える。そして、各リクエスト装置のそれぞれの第１のリクエスト手段が、実質的に同時にリクエストを発行すると、前記負荷分散装置は、各サーバに接続されるリクエスト装置の台数が実質的に均等になるように、各リクエスト装置と各サーバとを接続させ、前記第１のリクエスト手段のリクエストに基づく接続が切断された後、各リクエスト装置のそれぞれの前記第２のリクエスト手段は、非接続状態が所定時間以上継続しないように周期的にリクエストを発行する。
【０００９】
これにより、同一のトランザクションに係る複数のリクエストが同じサーバに送られ、トランザクションが正常に処理されるとともに、サーバ間の負荷もほぼ均等に分散される。
【００１０】
好適な実施形態では、前記第２のリクエスト手段によるリクエストに基づく接続を確立させるために要する時間は、前記第１のリクエスト手段によるリクエストに基づく接続を確立させるために要する時間よりも短くてもよい。
【００１１】
これにより、リクエスト装置とサーバとの関連づけを維持するために周期的に行われる接続処理の負荷が軽減される。
【００１２】
好適な実施形態では、前記複数台のサーバはデータベース管理サーバであって、各データベース管理サーバは、リクエスト受付手段と、データベース管理手段とを備え、前記データベース管理手段は、前記リクエスト受付手段を介して前記第１のリクエスト手段によるリクエストを受け付けて、リクエスト装置との接続を確立し、前記リクエスト受付手段は、前記第２のリクエスト手段よるリクエストを受け付けて、リクエスト装置との接続を確立するようにしてもよい。
【００１３】
好適な実施形態では、前記複数台のリクエスト装置は、複数のグループにグループ化されていて、各リクエスト装置のそれぞれの第１のリクエスト手段は、前記グループ単位で実質的に同時にリクエストを発行し、前記第１のリクエスト手段のリクエストに基づく接続の切断は、全グループのリクエスト装置がいずれかのサーバに接続された後に行うようにしてもよい。
【００１４】
好適な実施形態では、前記複数台のリクエスト装置のすべてが、いずれのサーバとも非接続であり、かつ、接続が切断されてから前記所定時間以上が経過しているときに、各リクエスト装置のそれぞれの第１のリクエスト手段が、実質的に同時にリクエストを発行するようにしてもよい。
【００１５】
好適な実施形態では、前記複数台のリクエスト装置は、所定の業務処理に関するリクエストを発行する第３のリクエスト手段をさらに備えてもよい。このとき、各リクエスト装置の第３のリクエスト手段が任意のタイミングで発行するリクエストは、それぞれの第１のリクエスト手段のリクエストによって接続したサーバが受け付けて処理をされる。
【００１６】
これにより、各リクエスト装置の第３のリクエスト手段からのリクエストは、常に同じサーバへ送られる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の一実施形態に係る負荷分散システムについて、図面を参照して説明する。
【００１８】
図１は、本実施形態に係る負荷分散システムの全体構成図である。
【００１９】
本システムは、同図に示すように、複数台の業務サーバ１，１，・・・と、複数台のデータベースサーバ３，３，・・・と、データベースサーバ３，３，・・・の負荷を分散させる負荷分散装置５と、データベースサーバ３，３，・・・がアクセスするデータベース７とを備える。
【００２０】
複数台の業務サーバ１，１，・・・、及び複数台のデータベースサーバ３，３，・・・は、いずれも例えば汎用的なコンピュータシステムにより構成され、以下に説明する各サーバ内の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。
【００２１】
各業務サーバ１，１，・・・は、所定の業務処理を行うための処理装置である。各業務サーバ１，１，・・・は、図示しないクライアント端末などからのリクエストに基づいて、所定の業務処理を実行する。各業務サーバ１，１，・・・に対するクライアント端末からのリクエストは、例えば負荷分散装置などを用いて、各業務サーバ１，１，・・・に実質的に均等に割り当てられている。
【００２２】
各業務サーバ１，１，・・・は、各業務処理の中でデータベース７に格納されているデータの参照または更新を行うときは、負荷分散装置５に対してリクエストを発行する。負荷分散装置５は、このリクエストを複数のデータベースサーバ３，３，・・・のいずれかに振り分ける。複数の業務サーバ１，１，・・・は、複数のグループ（ここでは、グループＡ，Ｂ及びＣ）に分けられている。
【００２３】
各データベースサーバ３，３，・・・は、いずれかの業務サーバ１，１，・・・から所定のリクエストを受け付けると、そのリクエストに従った処理を実行する。例えば、各データベースサーバ３，３，・・・は、データベース７に対する更新あるいは参照処理要求を受け付ければ、それを実行して処理結果を返す。
【００２４】
各業務サーバ１，１，・・・及びデータベースサーバ３，３，・・・は、それぞれ共通の構成を備え、その一例を図２に示す。
【００２５】
データベースサーバ３は、業務サーバ１からのリクエストの入力を受け付けるリスナ３１と、データベース７のデータを管理するＤＢＭＳ３３とを備える。
【００２６】
業務サーバ１は、リスナ３１に対するリクエストを発行するリスナ接続部１１と、ＤＢＭＳ３３に対するリクエストを発行するＤＢ接続部１３と、所定の業務処理を実行し、その処理に関連してＤＢＭＳ３３に対するリクエストを発行する複数のＡＰ１５，１５，・・・を備える。
【００２７】
リスナ接続部１１は、リスナ３１に対するリクエストを発行する。リスナ３１がこのリクエストを受け付けたときは、これに対するレスポンスを返す。ここで、リスナ３１がリスナ接続部１１からのリクエストを受け付けてレスポンスを返すまでの間、業務サーバ１とＤＢサーバ３との間の接続が確立された状態となる。ここで、リスナ３１がリスナ接続部１１からのリクエストを受け付けて接続を確立するまでに要する時間は、次に説明するＤＢＭＳ３３がＤＢ接続部１３からのリクエストを受け付けて接続を確立するまでに要する時間よりも短い。通信プロトコルがＴＣＰ／ＩＰのとき、リスナ接続部１１が発行するリクエストは、例えばｐｉｎｇでよい。
【００２８】
ＤＢ接続部１３は、ＤＢＭＳ３３に対するリクエストを発行する。ＤＢ接続部１３が発行したリクエストも、一旦リスナ３１が受け付ける。その後、このリクエストがリスナ３１からＤＢＭＳ３３に渡される。ＤＢＭＳ３３は、ＤＢ接続部１３からのリクエストを受け付けると、所定の処理を行ってＤＢ接続部１３との接続を確立する。この接続は、障害発生時などの意図しない切断を除けば、ＤＢ接続部１３からの切断リクエストにより切断される。
【００２９】
ＡＰ１５，１５，・・・が発行するリクエストも、リスナ３１が受け付けて、ＤＢＭＳ３３へ渡される。そして、ＡＰ１５，１５，・・・とＤＢＭＳ３３の接続が確立され、ＤＢＭＳ３３がデータベース７に対する所定の処理行い、処理結果を返して接続が切断される。
【００３０】
次に、負荷分散装置５について説明する。本実施形態に係る負荷分散装置５は、以下の（１）〜（３）のルールに従って、各業務サーバ１，１，・・・からのリクエストを各データベースサーバ３，３，・・・のいずれかに振り分ける。
【００３１】
（１）リクエストを発行した業務サーバ１が既にいずれかのデータベースサーバ３と接続が確立していれば、そのデータベースサーバ３に対してリクエストを割り当てる。これにより、既存の接続とは別の新たな接続が確立する。
【００３２】
（２）リクエストを発行した業務サーバ１が、いずれのデータベースサーバ３とも接続が確立しておらず、かつ、その業務サーバ１が前回の接続をすべて切断してから所定の解除時間（例えば３分）が経過していないときは、前回接続したデータベースサーバ３に対してリクエストを割り当てる。このようにすれば、比較的短時間の間に連続的に発生する同一トランザクションに係る複数のリクエストが、同じデータベースサーバ３へ割り当てられるようになる。
【００３３】
（３）リクエストを発行した業務サーバ１がいずれのデータベースサーバ３とも接続が確立しておらず、かつ、その業務サーバ１が前回の接続をすべて切断してから上記解除時間が経過しているときは、その時点で各データベースサーバ３，３，・・・が確立している接続数が実質的に均等になるように、一つのデータベースサーバ３を選択する。つまり、確立している接続数が最も少ないデータベースサーバ３を選択するか、または、すべてのデータベースサーバ３，３，・・・の接続数が同数であれば、いずれかのデータベースサーバ３をランダムに選択する。
【００３４】
これより、ある業務サーバ１ａがあるデータベースサーバ３ａと一旦接続を確立すると、負荷分散装置５は、業務サーバ１ａとデータベースサーバ３ａとを関連づけて記憶し、両者の間に確立された接続が存在しない（非接続である）時間が解除時間を超えない限り、この関連づけが維持される。その結果、非接続時間が解除時間を超えない間は、業務サーバ１ａのリクエストは常にデータベースサーバ３ａに割り当てられることになる。
【００３５】
次に、図３は、上記構成を備えた負荷分散システムにおいて、業務サーバ１が業務処理を開始する開始時刻以前に起動され、業務処理中も継続的に実行される処理のフローチャートである。
【００３６】
まず、本システムの状態が業務処理開始前の初期状態であるから、負荷分散装置５は、すべての業務サーバ１，１，・・・をいずれのデータベースサーバ３，３，・・・とも関連づけていない。このときに、各業務サーバ１，１，・・・のＤＢ接続部１５がリクエストを発行する（Ｓ１１）。各業務サーバ１，１，・・・でこのリクエストが発行されるタイミングは、実質的に同時である。
【００３７】
このとき、負荷分散装置５は、すべての業務サーバ１，１，・・・について上述の（３）の処理により、各データベースサーバ３、３，・・・に割り当てられる各業務サーバ１，１，・・・数が実質的に均等になるように、各業務サーバ１，１，・・・のリクエストを割り当てる。この結果、各業務サーバ１，１，・・・のＤＢ接続部１５と、負荷分散装置５が割り当てたデータベースサーバ３のＤＢＭＳ３３との接続が確立する（Ｓ１２）。
【００３８】
ここで、全業務サーバ１，１，・・・について、いずれかのデータベースサーバ３との接続が確立した後、各業務サーバ１，１，・・・のＤＢ接続部１５はこの接続を切断する（Ｓ１３）。
【００３９】
ステップＳ１１〜Ｓ１３で、各業務サーバ１、１，・・・といずれかのデータベースサーバ３との関連づけが完成する。ステップＳ１１で各業務サーバ１、１，・・・が発行するリクエストはそれぞれ一つであるから、負荷分散装置５が各データベースサーバ３，３，・・・に割り当てられる接続数が均等になるように振り分けることにより、各データベースサーバ３，３，・・・に割り当てられる業務サーバ１の台数が均等になるように関連づけられる。
【００４０】
この後、各業務サーバ１のリスナ接続部１１は、ステップＳ１３で接続を切断してからの経過時間を計測する。そして、この経過時間が、負荷分散装置５で上記の関連づけが解除される解除時間よりも短く設定されているリクエスト時間になると（Ｓ１４：Ｙｅｓ）、ｐｉｎｇを発行する（Ｓ１５）。これにより、負荷分散装置５での上記関連づけが解除されることなく維持される。
【００４１】
また、各業務サーバ１のリスナ接続部１１は、これ以降もステップＳ１４及びＳ１５を繰り返す。つまり、各業務サーバ１のリスナ接続部１１は、リクエスト時間間隔でｐｉｎｇを発行し、負荷分散装置５での関連づけを維持する。従って、業務処理の開始時刻以前から各業務サーバ１とデータベースサーバ３とが関連づけられ、かつ、業務処理中もその関連づけが維持されることになる。
【００４２】
なお、ここでは、関連づけ維持プロセスで、周期的なリクエストの発行を行うのはリスナ接続部１１である。リスナ接続部１１が、この関連づけ維持プロセスを行うことで、データベースサーバ３に対して周期的に実行される接続に要する負荷が軽減される。しかしながら、リスナ接続部１１の処理をＤＢ接続部１３が行うこともできる。
【００４３】
これにより、業務処理時間中の平均で考えると、各データベースサーバ３，３，・・・に対する負荷は、ほぼ均等に分散される。
【００４４】
さらに、一つの業務サーバ１が発行する同一トランザクションに係る複数の一連のリクエストは、常に同一のデータベースサーバ３で処理されるので、トランザクションに不整合が生じることなく、正常に処理を行うことができる。
【００４５】
また、本実施形態によれば、各業務サーバ１，１，・・・のリクエストが送られるデータベースサーバ３が固定されるので、何らかの障害が発生したときでも、トレースすべき範囲が明確であり、解析が容易になる。
【００４６】
なお、一つの業務サーバ１に、特定の業務処理関連のＡＰ１５をすべて搭載するようにしてもよい。このようにすれば、その業務処理関連のリクエストは、すべて同一のデータベースサーバ３へ割り当てられることになり、処理の整合性を担保できる。
【００４７】
上記説明したフローチャートにおいて、ステップＳ１１では、全業務サーバ１のＤＢ接続部１３が実質的に同時にリクエストを発行したが、このタイミングをグループ別に分けて行うようにしてもよい。
【００４８】
図４は、グループ別にリクエストを発行するときの手順を示すフローチャートである。
【００４９】
まず、グループＡに属する業務サーバ１、１，・・・のＤＢ接続部１３が、実質的に同時にリクエストを発行する（Ｓ２１）。これにより、グループＡに関して、各データベースサーバ３、３，・・・に関連づけられる業務サーバ１の台数が実質的に均等になる。
【００５０】
その後、グループＢ及びグループＣに属する業務サーバ１、１，・・・のＤＢ接続部１３が、それぞれ実質的に同時にリクエストを発行する（Ｓ２２，Ｓ２３）。この結果、グループＡと同様に、グループＢ及びグループＣに関しても、それぞれ、各データベースサーバ３、３，・・・に関連づけられる業務サーバ１の台数が実質的に均等になる。
【００５１】
ステップＳ２１〜Ｓ２３により、すべての業務サーバ１、１，・・・がいずれかのデータベースサーバ３と関連づけられると、各業務サーバ１、１，・・・はすべての接続を切断して、それぞれのリスナ接続部１１が、図３のステップＳ１４，Ｓ１５の関連づけ維持プロセスを繰り返し行って、上記の関連づけを維持する。
【００５２】
この結果、グループごとに、データベースサーバ３に関連づけられた業務サーバ１の台数が実質的に均等になるように割り当てが行われ、それが維持される。これにより、例えば、グループ別に実行される業務処理が異なるようなときは、それぞれの業務処理に関して適切な負荷分散が可能となる。
【００５３】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施形態に係る負荷分散システムの全体構成図である。
【図２】業務サーバ１及びデータベースサーバ３の構成の一例を示す。
【図３】業務サーバ１が業務処理を開始する開始時刻以前に起動され、業務処理中も継続的に実行される処理のフローチャートである。
【図４】グループ別にリクエストを発行するときの手順を示すフローチャートである。
【図５】従来の負荷分散の例を示す。
【符号の説明】
【００５５】
１，１，・・・      各業務サーバ
３，３，・・・      データベースサーバ
５           負荷分散装置
７           データベース
１１       リスナ接続部
１３       接続部
１５    接続部
３１       リスナ
３３       ＤＢＭＳ
【図１】
2008234373.tif 000003
【図２】
2008234373.tif 000004
【図３】
2008234373.tif 000005
【図４】
2008234373.tif 000006
【図５】
2008234373.tif 000007