(57)【要約】【課題】きめ細かい負荷分散の設定が可能で、特定のサーバに負荷が集中することによる性能劣化を防ぐことができ、サーバに障害が発生しても代替サーバが障害サーバの代わりをする、公共工事の積算に用いられる負荷分散システムを提供する。【解決手段】複数のクライアントサーバと、複数のＷＥＢサーバと、複数のデータベースサーバと、複数のアプリケーションサーバとで構成され、サーバの負荷分散のパターンが書き込まれたテーブルを有し、前記テーブルに従って負荷が分散される。また、ＷＥＢサーバの障害を監視する手段を有し、障害が発生したときどのサーバが代替サーバになるかが書き込まれたテーブルを有する。  これにより、サーバの負荷を容易に分散させ、サーバに障害が発生しても動作が可能な信頼性の高いシステムとすることができる。【選択図】図１
2008225793.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントサーバと、前記クライアントサーバからの接続を受け付ける複数のＷＥＢサーバと、積算に使用するデータが保存されている複数のデータベースサーバと、積算を行う複数のアプリケーションサーバとで構成される負荷分散システムであって、
前記複数のＷＥＢサーバと、前記複数のデータベースサーバと、前記複数のアプリケーションサーバとのうち、少なくとも１種類以上の複数のサーバの負荷を分散させるための分散パターンが書き込まれた１個以上のテーブルを有する管理データベースサーバを備え、
前記複数のＷＥＢサーバと、前記複数のデータベースサーバと、前記複数のアプリケーションサーバとのうち、少なくとも１種類以上の複数のサーバが、前記テーブルの分散パターンに基づいて負荷を割り当てられることを特徴とする負荷分散システム。
【請求項２】
前記テーブルに、負荷分散システムのユーザの所属部署ごとにサーバを割り当てた分散パターンが書き込まれており、
ユーザの所属部署ごとに使用するサーバが割り当てられることを特徴とする請求項１に記載の負荷分散システム。
【請求項３】
前記テーブルに、負荷分散システムのユーザが使用する機能ごとにサーバを割り当てた分散パターンが書き込まれており、
ユーザが使用する機能ごとにサーバが割り当てられることを特徴とする請求項１または２に記載の負荷分散システム。
【請求項４】
前記テーブルに、サーバごとに分散割合が書き込まれており、
サーバが実行するジョブ数が、前記分散割合と同じ割合になるように、サーバごとにジョブを割り振ることを特徴とする請求項１から３の何れかに記載の負荷分散システム。
【請求項５】
前記テーブルに、サーバごとに実際に実行しているジョブ数が書き込まれており、
ジョブ数の少ないサーバから優先してジョブを割り振ることを特徴とする請求項１から４の何れかに記載の負荷分散システム。
【請求項６】
前記ＷＥＢサーバの障害の発生を監視する障害監視手段と、
前記ＷＥＢサーバが動作可能か否かを示す動作状態と、当該ＷＥＢサーバが動作不可の場合の代替サーバのサーバ名とが書き込まれたテーブルと、
を有し、
前記障害監視手段は、定期的にｐｉｎｇを前記各ＷＥＢサーバに実行することにより障害を監視し、
前記障害監視手段は、障害を検知したときは、前記テーブルの障害が発生したサーバの動作状態を動作不可と書き込み、
前記テーブルにおいて、動作不可と書き込まれたサーバの代替サーバに指定されているサーバは、障害を起こしたサーバの代替として動作すること
を特徴とする請求項１から５の何れかに記載の負荷分散システム。
【請求項７】
前記障害監視手段は、前記各ＷＥＢサーバに擬似的にＷＥＢ要求を出すことにより障害を監視することを特徴とする請求項６に記載の負荷分散システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工事等の積算に使用されるシステムであって、特にサーバの負荷を分散させる負荷分散システムに関する。
【背景技術】
【０００２】
従来、公共工事費等の積算を行う積算システムは数多く存在し、例えば、ＷＥＢを利用した積算システムとして、工事積算システム（特許文献１）が提案されている。
特許文献１に記載された工事積算システムは、クライアントコンピュータと、該クライアントコンピュータにネットワークで接続されたＷＥＢサーバと、工事積算に必要なデータを記憶したデータベースサーバとを有し、前記ＷＥＢサーバにはプログラムライブラリを設け、前記クライアントコンピュータにはバージョン管理プログラムと、画面処理プログラムと、帳票出力プログラムと、前記データベースサーバとのアクセスインタフェースプログラムとを設けたことを特徴としている。
【０００３】
これにより、工事積算業務として必要な機能と操作性を十分に備え、かつ、システムの維持運用コストが少ない工事積算システムを提供できるとしている。
【特許文献１】特開２００４−３１０６４７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の工事積算システムは、サーバごとの利用頻度の差により、利用が集中したサーバには著しい性能劣化が発生していた。また、利用頻度の少ないサーバも存在するので、コンピュータ資源を有効に活用できないという問題点があった。
【０００５】
サーバの負荷を分散するための装置として、ハードウェアで負荷を分散するロードバランサーが知られているが、高価であり、きめ細かい負荷分散の要求に答えられないという問題があった。また、システム運用後の稼働状況により負荷分散方式を見直すことが困難であった。
【０００６】
本発明は、このような実情に鑑みてなされたものであり、きめ細かい負荷分散の設定が可能であり、システム運用後の稼働状況によって負荷分散方式を見直すことも容易な負荷分散システムを提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明の課題は、下記の各発明によって解決することができる。
即ち、本発明の負荷分散システムは、複数のクライアントサーバと、前記クライアントサーバからの接続を受け付ける複数のＷＥＢサーバと、積算に使用するデータが保存されている複数のデータベースサーバと、積算を行う複数のアプリケーションサーバとで構成される負荷分散システムであって、前記複数のＷＥＢサーバと、前記複数のデータベースサーバと、前記複数のアプリケーションサーバとのうち、少なくとも１種類以上の複数のサーバの負荷を分散させるための分散パターンが書き込まれた１個以上のテーブルを有する管理データベースサーバを備え、前記複数のＷＥＢサーバと、前記複数のデータベースサーバと、前記複数のアプリケーションサーバとのうち、少なくとも１種類以上の複数のサーバが、前記テーブルに基づいて負荷を割り当てられることを主要な特徴としている。
【０００８】
これにより、前記テーブルの設定によってきめ細かい負荷分散の設定が可能となる。また、システム運用後の稼働状況によって、前記テーブルの設定を変更することで負荷分散方式を見直すことも容易となる。
【０００９】
また、本発明の負荷分散システムは、前記テーブルに、負荷分散システムのユーザの所属部署ごとにサーバを割り当てた分散パターンが書き込まれており、ユーザの所属部署ごとに使用するサーバが割り当てられることを主要な特徴としている。
これにより、ユーザの所属部署ごとに使用するサーバを設定することが可能となる。
【００１０】
更に、本発明の負荷分散システムは、前記テーブルに、負荷分散システムのユーザが使用する機能ごとにサーバを割り当てた分散パターンが書き込まれており、ユーザが使用する機能ごとにサーバが割り当てられることを主要な特徴としている。
これにより、ユーザの使用する機能ごとに使用するサーバを決定することができる。
【００１１】
更にまた、本発明の負荷分散システムは、前記テーブルに、サーバごとに分散割合が書き込まれており、サーバが実行するジョブ数が、前記分散割合と同じ割合になるように、サーバごとにジョブを割り振ることを主要な特徴としている。
【００１２】
また、本発明の負荷分散システムは、前記テーブルに、サーバごとに実際に実行しているジョブ数が書き込まれており、ジョブ数の少ないサーバから優先してジョブを割り振ることを主要な特徴としている。
これにより、サーバの負荷を平準化することが可能となり、負荷の集中によるサーバの性能劣化を防ぐことができる。
【００１３】
更に、本発明の負荷分散システムは、前記ＷＥＢサーバの障害の発生を監視する障害監視手段と、前記ＷＥＢサーバが動作可能か否かを示す動作状態と、当該ＷＥＢサーバが動作不可の場合の代替サーバのサーバ名とが書き込まれたテーブルと、を有し、前記障害監視手段は、定期的にｐｉｎｇを前記各ＷＥＢサーバに実行することにより障害を監視し、前記障害監視手段は、障害を検知したときは、前記テーブルの障害が発生したサーバの動作状態を動作不可と書き込み、前記テーブルにおいて、動作不可と書き込まれたサーバの代替サーバに指定されているサーバは、障害を起こしたサーバの代替として動作することを主要な特徴としている。
これにより、ＷＥＢサーバに障害が発生しても代替サーバが障害が発生したサーバの代わりをするので、システム全体の信頼性を高くすることができる。
【００１４】
更にまた、本発明の負荷分散システムは、前記障害監視手段は、前記各ＷＥＢサーバに擬似的にＷＥＢ要求を出すことにより障害を監視することを主要な特徴としている。
これにより、ｐｉｎｇでは検出できないソフト的な障害も検出することができる。
【発明の効果】
【００１５】
以上説明したように、本発明の負荷分散システムによれば、サーバの負荷を分散させることができるので、特定のサーバに負荷が集中することによる性能の劣化を防ぐことができる。
また、本発明の負荷分散システムによれば、サーバの負荷分散の設定をきめ細かく行うことができ、かつ、システム運用後であっても容易に負荷分散の方式を変更することができる。
【００１６】
更に、本発明の負荷分散システムによれば、サーバに障害が発生しても代替サーバが障害が発生したサーバの代わりをするので、システム全体の信頼性を高くすることができる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照しながら、本発明の負荷分散システムの一実施形態を詳細に説明する。
＜構成＞
図１は、本発明の一実施形態に係る負荷分散システムの構成図である。図１に示すように、本発明の負荷分散システムは、複数の積算クライアント１と、管理クライアント２と、複数のＷＥＢサーバ３と、複数のデータベースサーバ４と、管理データベースサーバ５と、複数のアプリケーションサーバ６と、ネットワーク７とから構成されている。
【００１８】
積算クライアント１は、積算に必要なデータ（以後、積算データと称する）を入力するためのコンピュータであり、ネットワーク７を介してＷＥＢサーバ３に接続されている。図１において積算クライアント１は、５台記載されているが５台に限定されることはない。
管理クライアント２は、ＷＥＢサーバ３と管理データベースサーバ５の各種設定を行うためのコンピュータであり、ネットワーク７を介してＷＥＢサーバ３と、管理データベースサーバ５とに接続されている。
【００１９】
ＷＥＢサーバ３は、ネットワークを介して積算クライアント１と、データベースサーバ４とに接続されている。ＷＥＢサーバ３は、積算クライアント１によって入力された積算データをデータベースサーバ４に書き込み、データベースサーバ４に書き込まれている積算の結果を積算クライアント１に返す処理を行う。図１においてＷＥＢサーバ３は、５台記載されているが、５台に限定されることはない。
【００２０】
データベースサーバ４は、ネットワークを介してＷＥＢサーバ３と、アプリケーションサーバ６とに接続されている。データベースサーバ４は、クライアントサーバ１からＷＥＢサーバ３を介して送られた積算データを保存し、この積算データを基にアプリケーションサーバ６で積算された積算結果も保存する。また、積算処理に必要な各種情報、例えば各種材料の単価データや、作業員の単価データなども保存されている。図１においてデータベースサーバ４は、３台記載されているが、３台に限定されることはない。
【００２１】
アプリケーションサーバ６は、ネットワークを介してデータベースサーバ４と接続されている。アプリケーションサーバ６は、データベースサーバ４に保存されている積算データを読み込んで、積算処理を行い、積算結果をデータベースサーバ４に保存する。図１においてアプリケーションサーバ６は、３台記載されているが、３台に限定されることはない。
【００２２】
管理データベースサーバ５は、ネットワークを介してＷＥＢサーバ３と、データベースサーバ４とアプリケーションサーバ６とに接続されている。管理データサーバ５には、積算クライアント１を使用するユーザに関する情報、後述するＷＥＢ３の分散に関する情報、後述するデータベースサーバ４の分散に関する情報などが保存されている。
【００２３】
図２は、ＷＥＢサーバ３の分散パターンの例を示した図である。分散パターンとは、複数のＷＥＢサーバ３のうち、特定のサーバにアクセスが集中しないように、アクセスを分散させる方法のことである。
【００２４】
この図に示すように、例えば、部署別の分散パターンを採用する場合には、Ａ部署のユーザはＷ１、Ｗ５サーバを使用するように割り振り、Ｂ部署のユーザはＷ２サーバを使用するように割り振る。機能別の分散パターンを採用する場合には、例えば、画面入力と逐次計算を行わせるユーザにはＷ１，Ｗ２を割り振り、帳票印刷をさせるユーザにはＷ３を割り振る。また、負荷別分散の分散パターンを採用する場合には、各ＷＥＢサーバ３を使用しているユーザ数により、ユーザ数の少ないサーバにユーザを割り振ることを行う。
【００２５】
具体的に説明すると、ＷＥＢサーバ３のうち１台がマスタＷＥＢサーバに指定され残りがサブＷＥＢサーバに指定されている。例えば、図１に示すＷＥＢサーバ３のうちＷ１をマスタＷＥＢサーバとすると、積算クライアント１からの接続は、マスタＷＥＢサーバであるＷ１に接続される。Ｗ１は、管理ＤＢサーバ５にアクセスし、登録されている分散パターンに従って積算クライアント１がアクセスするＷＥＢサーバ３を決め、そこに接続するための情報（以後、接続情報と称する）を積算クライアント１に返す。
【００２６】
積算クライアント１は、Ｗ１から返された接続情報に基づき、割り振られたサブＷＥＢサーバ３に接続し直す。このようにして、ＷＥＢサーバ３の分散が行われる。これにより、ＷＥＢサーバ３のうち特定のサーバにアクセスが集中しすぎることがないため、負荷の集中による処理速度の低下を防ぐことができる。
【００２７】
図３は、データベースサーバ４の分散パターンの例を示した図である。分散パターンの意味は、前記と同様である。この図に示すように、例えば、部署別の分散パターンを採用する場合は、Ａ部署のユーザが使用するのは、Ｄ１サーバ、Ｂ部署のユーザが使用するのはＤ２サーバのように割り振ることができる。
【００２８】
例えば、機能別の分散パターンを採用する場合は、逐次計算をさせるユーザにはＤ２サーバを割り振り、印刷編集をさせるユーザにはＤ３サーバを割り振ることができる。
このように、データベースサーバ４を割り振ることによって、特定のデータベースサーバにアクセスが集中することを防ぎ、負荷集中による処理速度の低下を防ぐことができる。
【００２９】
具体的に説明すると、マスタＷＥＢサーバは、積算クライアント１からアクセスがあった場合に、管理データベースサーバ５を参照して、設定された分散パターンに従って積算クライアント１がアクセスするＷＥＢサーバ３とデータベースサーバ４とを決定し、その接続情報をクライアントサーバ１に返す。クライアントサーバ１は、返された接続情報を基にＷＥＢサーバ３を介して割り振られたデータベースサーバ４に接続する。このようにして、データベースサーバ４へのアクセスが分散されることになる。
【００３０】
＜積算処理概要＞
図４は、積算処理の概要を橋梁工事を例にして示した図である。
積算の担当者は、橋の下部と上部を作るための材料の種類、数量と作業員の必要数量等の積算に必要なデータ（以後、積算データと称する）を積算クライアント１から入力する。このとき、積算クライアントは、ＷＥＢサーバ３と接続され、ＷＥＢサーバ３を介してデータベースサーバ４にアクセス可能となっている。
【００３１】
そこで、例えば、鉄柱取付に必要な作業人数などは、ＷＥＢサーバ３を介してデータベースサーバ４を検索することにより、保存してある基準データの値を読み込むことができる。
【００３２】
積算クライアント１から入力されたデータは、ＷＥＢサーバ３を介してデータベースサーバ４に書き込まれる。アプリケーションサーバ６は、データベースサーバ４に書き込まれたデータを基にして代価計算、直接工事費計算、経費計算などの積算処理を行う。この際、各種材料や作業員の単価など計算に必要なデータは、データベースサーバ４に保存されているデータを検索して読み込むことにより使用することができる。
【００３３】
積算処理が終了すると、アプリケーションサーバ６は、積算処理結果のデータをデータベースサーバ４に書き込む。ＷＥＢサーバ３は、データベースサーバ４に書き込まれた積算処理結果を読込んで、積算クライアント１に積算処理結果を返す。
＜動作＞
【００３４】
次に、本実施形態の動作について図１を参照して説明する。
各積算担当者は、積算クライアント１を使用してＷＥＢサーバ３に接続する。ＷＥＢサーバ３には、１台のマスタＷＥＢサーバと、それ以外のサブＷＥＢサーバとがある。積算担当者が最初に接続するのはマスタＷＥＢサーバである。
【００３５】
マスタＷＥＢサーバは、接続時にＩＤとパスワードを要求し、積算担当者が入力したＩＤとパスワードが登録されたものか否かを、管理データベースサーバ５に問い合わせることによって確認する。管理データベースサーバ５には、各積算担当者のＩＤ、パスワード、所属等の情報が保存されている。
【００３６】
マスタＷＥＢサーバは、ＩＤとパスワードが登録されたものである場合は、接続を許可する。続いて、マスタＷＥＢサーバは、接続してきた積算担当者がどのＷＥＢサーバ３とデータベースサーバ４に接続するべきかを決定する。この決定は、マスタＷＥＢサーバが管理データベースサーバ５にアクセスし、図２、図３に示すようなＷＥＢサーバ分散パターン、データベースサーバ分散パターンに関する情報を取得することによって行われる。
【００３７】
よって、例えば、管理データベースサーバ５に部署別の分散パターンが設定されていた場合は、接続してきた積算担当者の部署によって接続すべきＷＥＢサーバ３、データベースサーバ４を決定する。同様に、管理データベースサーバ５に機能別分散パターンが設定されていた場合は、積算担当者が使用しようとする機能によって、接続すべきＷＥＢサーバ３、データベースサーバ４を決定する。
【００３８】
また、管理データベースサーバ５に負荷別分散の分散パターンが設定されていた場合は、マスタＷＥＢサーバは、各サブＷＥＢサーバに接続しているユーザ数を調べ、ユーザ数の少ないサーバを接続すべきＷＥＢサーバ３として決定する。
【００３９】
なお、上記において、ＷＥＢサーバ３の分散パターンとデータベースサーバの分散パターンを異なるようにすることもできる。例えば、ＷＥＢ分散パターンを部署別にし、データベースサーバ分散パターンを機能別にすることもできる。また、ＷＥＢサーバ３の分散パターンとデータベースサーバの分散パターンは、前記各種分散パターンを組み合わせて使用することもできる。例えば、部署別であり、かつ、各部署の中でも機能別に分散パターンを設定することもできる。
【００４０】
図１に戻って、接続すべきＷＥＢサーバ３とデータベースサーバ４とが決定すると、マスタＷＥＢサーバは、接続情報を積算クライアント１に返す。
積算クライアント１は、返された接続情報を基にして、ＷＥＢサーバ３とデータベースサーバ４に接続する。
【００４１】
続いて、積算担当者は、接続されたＷＥＢサーバ３に積算データを入力する。入力された情報は、ＷＥＢサーバ３を介して、接続されているデータベースサーバ４に書き込まれる。
【００４２】
アプリケーションサーバ６は、定期的にデータベースサーバ４に書き込まれている積算データのチェックを行う。ここで、アプリケーションサーバ６は、１台のマスタアプリケーションサーバと、残りのサブアプリケーションサーバで構成されている。
【００４３】
マスタアプリケーションサーバは、新規に書き込まれた積算データを検出したとき、当該積算データを用いた積算処理をどのアプリケーションサーバ６にさせるかの決定を行う。当該決定は、マスタアプリケーションサーバが、管理データベースサーバ５にアクセスして設定された分散パターンを読み込むことにより行う。
【００４４】
分散パターンは、前記ＷＥＢサーバ３の分散パターンと同様に、部署別、機能別、負荷別分散などがある。また、各アプリケーションサーバ６の処理能力によって、分散割合を設定することもできる。例えば、処理能力の高いサーバには、分散割合を多く、処理能力の低いサーバには分散割合を少なく設定することができる。これにより、サーバの処理能力や性能を考慮した積算処理の配分が可能となる。
【００４５】
また、アプリケーションサーバごとに、一度に処理させる積算処理の本数の最大値を設定することができる。これにより、同時処理が多すぎて処理能力が低下することやシステムリソースを使いすぎることによるシステムの不安定化等を防ぐことができる。
【００４６】
マスタアプリケーションサーバは、積算処理をさせるアプリケーションサーバ６が決定すると、前記積算データに関連付けてデータベースサーバ４に、積算処理をさせるアプリケーションサーバ６を識別する情報を書き込む。なお、マスタアプリケーションサーバは、積算処理を行うサーバとして、自らを設定することもできる。
【００４７】
アプリケーションサーバ６（サブアプリケーションサーバ及びマスタアプリケーションサーバ）は、定期的にデータベースサーバ４に書き込まれている積算データのチェックを行っている。アプリケーションサーバ６は、新規に書き込まれた積算データを検出した際、その積算データに関連付けられた情報が、自分が積算処理を行う旨の情報であった場合は、その積算データを読み込み、積算処理を行う。
アプリケーションサーバ６は、積算処理が終了すると、積算処理結果をデータベースサーバ４に書き込む。
【００４８】
ＷＥＢサーバ３は、積算処理結果がデータベースサーバ４に書き込まれたことを検出すると、その積算処理結果を読み込んで、その結果を積算クライアントに返す。
なお、マスタＷＥＢサーバが行う、ＷＥＢサーバ３とデータベースサーバ４への分散パターンに基づいたクライアントサーバ１の接続の割り当てと、マスタアプリケーションサーバが行うアプリケーションサーバ６への分散パターンに基づいたジョブの割り当ては、管理データベースサーバ５が行うこともできるし、管理クライアント２が行うこともできる。また、その割り当てのためのサーバを別に設けることもできる。
【００４９】
＜ＷＥＢサーバの分散方式＞
次に、本実施形態の負荷分散システムにおける、ＷＥＢサーバの分散方式について説明する。図５は、ＷＥＢサーバの分散の動作について示した図である。
一般ユーザは、積算クライアント１からＷＥＢサーバ３のマスタＷＥＢサーバにアクセスする。ＷＥＢサーバ３のうち、１台はマスタＷＥＢサーバであり、残りはサブＷＥＢサーバである。マスタＷＥＢサーバへのアクセスは、ユーザＩＤとパスワードによって行う。
【００５０】
マスタＷＥＢサーバは、ユーザＩＤとパスワードを管理データベースサーバ５にアクセスして問い合わせ、登録してある内容と一致した場合にアクセスを許可する。次に、マスタＷＥＢサーバは、管理データベースサーバ５に保存されているＷＥＢサーバの分散パターンを基にして、アクセスしてきたユーザが接続すべきサブＷＥＢサーバとデータベースサーバ４のアドレスを積算クライアント１に返す。
【００５１】
積算クライアント１は、返されたアドレスを基にして、サブＷＥＢサーバと、サブＷＥＢサーバを介してデータベースサーバ４とに接続する。
【００５２】
ここで、ＷＥＢサーバ３の分散パターンについて説明する。
図２に示すように、ＷＥＢサーバの分散パターンには、部署別、機能別、負荷別分散などが考えられる。よって、例えば、管理データベースサーバ５に部署別の分散パターンが登録されていた場合は、マスタＷＥＢサーバは、ログインしてきたユーザの所属によって接続すべきサブＷＥＢサーバを決定する。
【００５３】
また、管理データベースサーバ５に機能別の分散パターンが登録されていた場合は、マスタＷＥＢサーバは、ログインしてきたユーザがどの機能を使用しようとしているかによって、接続すべきサブＷＥＢサーバを決定する。
また、管理データベースサーバ５に負荷別分散の分散パターンが登録されていた場合は、マスタＷＥＢサーバは、サブＷＥＢサーバに接続しているユーザ数を調べ、接続ユーザ数の少ないサブＷＥＢサーバを接続すべきサーバとして決定する。ここで、ＷＥＢサーバの分散パターンは、図２に示した、部署別、機能別、負荷別分散だけに限定されるものではなく、様々な方法を適用することができる。
これにより、ＷＥＢサーバ３は、接続される積算クライアント１の数が分散されるので、負荷の集中による処理速度の低下を防ぐことができる。
【００５４】
次に、データベースサーバ４の分散パターンについて説明する。
図３に示すように、データベースサーバ４の分散パターンには、部署別、機能別などが考えられるが、これに限定されるわけではない。データベースサーバ４の分散パターンには、負荷別分散が無いがこれは、データベースサーバ４には、個別に種類の違う積算のためのデータが入っているので、データの入っていない種類の積算には使用できず、代替が困難なためである。
【００５５】
しかしながら、すべてのデータベースサーバ４に同一のデータを入れることによって、負荷別分散のパターンに対応することもできる。
マスタＷＥＢサーバは、管理データベースサーバ５に部署別の分散パターンが登録されていた場合は、マスタＷＥＢサーバは、ログインしてきたユーザの所属によって接続すべきデータベースサーバ４を決定する。
【００５６】
また、管理データベースサーバ５に機能別の分散パターンが登録されていた場合は、マスタＷＥＢサーバは、ログインしてきたユーザがどの機能を使用しようとしているかによって、接続すべきデータベースサーバ４を決定する。
【００５７】
これにより、データベースサーバ４へのアクセスも分散させることができるので、負荷の集中による処理速度の低下を防ぐことができる。
【００５８】
図５に戻って、システムの管理を行う管理ユーザは、管理クライアント２からＷＥＢサーバ３を介して、または、直接管理データベースサーバに接続して、ＷＥＢサーバの分散パターンやデータベースサーバの分散パターンの設定及び変更を行うことができる。
【００５９】
＜マスタＷＥＢサーバの動作＞
次に、マスタＷＥＢサーバの動作について、図６を参照して更に説明する。図６は、マスタＷＥＢサーバの動作フローを表したフロー図である。
【００６０】
積算クライアント１は、ユーザＩＤ、所属、機能ＩＤ、パスワードの情報の送信と共に分散問い合わせをマスタＷＥＢサーバに行う。ユーザＩＤとは、各積算担当者ごとに設定されているＩＤであり、パスワードも各積算担当者ごとに設定されている。
【００６１】
所属とは、積算担当者の所属部署のことである。機能ＩＤとは、積算担当者が、積算処理において使用する機能のことであり、例えば、積算計算、帳票編集、帳票印刷などである。
【００６２】
マスタＷＥＢサーバは、管理データベースサーバ５中のＤＢ分散管理ＤＢの検索を行う（Ｓ６１）。ここで、管理データベースサーバ５中のＤＢ分散管理ＤＢにはデータベースサーバ４の分散パターンが保存されており、ＷＥＢ分散管理ＤＢには、ＷＥＢサーバ３の分散パターンが保存されている。また、分散状態ＤＢには、各サーバが実行しているジョブの本数が保存されている。
【００６３】
マスタＷＥＢサーバは、検索の結果、機能別のＤＢ接続情報または所属別のＤＢ接続情報が検出された場合は、それらの情報を取得する（Ｓ６２）。
【００６４】
次に、マスタＷＥＢサーバは、管理データベースサーバ５内のＷＥＢ分散管理ＤＢの検索を行い、設定されている分散パターンに関する情報を読み込む（Ｓ６３）。
続いて、ＷＥＢサーバの決定を行う（Ｓ６４）。Ｓ６３で読み込んだ分散パターンが、所属別または機能別の場合は、Ｓ６５から実行し、所属別または機能別に設定されている分散パターンから合致しているＷＥＢを選択して、決定する（Ｓ６６）。
【００６５】
Ｓ６３で読み込んだ分散パターンが、ＷＥＢサーバの負荷に応じて分散させる設定となっていた場合は、Ｓ６７から実行し、管理データベースサーバ５内の分散状態ＤＢを検索して、実行本数、分散割合が最小のサーバを選択する（Ｓ６８）。ここで、分散状態ＤＢには、現在、各ＷＥＢサーバ３が実行している積算処理の数が書き込まれている。
【００６６】
サーバの選択後、分散状態ＤＢの選択したサーバの積算処理実行数を１プラスする（Ｓ６９）。
ＷＥＢサーバ決定後、決定したＷＥＢサーバの接続情報を管理データベースサーバ５から取得し（Ｓ７０）、クライアントサーバ１にＷＥＢサーバ接続情報とＤＢサーバ接続情報を送信する。
【００６７】
＜ＷＥＢサーバの動作＞
ＷＥＢサーバ３の動作について、図７を参照して更に説明する。図７は、ＷＥＢサーバ３の動作を示したフロー図である。
【００６８】
クライアントサーバ１は、マスタＷＥＢサーバにログインする（Ｓ７１）。クライアントサーバ１は、前記＜マスタＷＥＢサーバの動作＞で説明したように、ＷＥＢサーバの接続情報と、ＤＢサーバの接続情報を取得する（Ｓ７２）。クライアントサーバ１は、マスタＷＥＢサーバによって、接続すべきサーバとして指定されたＷＥＢサーバ（以後、指定ＷＥＢサーバと称する。）に接続する（Ｓ７３）。
【００６９】
クライアントサーバ１は、指定ＷＥＢサーバに積算処理をリクエストする（Ｓ７４）。
指定ＷＥＢサーバは、処理リクエストをデータベースサーバ４に書き込み、アプリケーションサーバ６は、書き込まれた処理リクエストに基づいて積算処理を行い、その結果をデータベースサーバ４に書き込む。
【００７０】
指定ＷＥＢサーバは、積算処理結果をデータベースサーバ４から読み込み、クライアントサーバ１は、指定ＷＥＢサーバから積算処理結果を受け取る（Ｓ７５）。
クライアントサーバ１は、指定ＷＥＢサーバとの接続を切断する（Ｓ７６）。
【００７１】
＜分散パターン＞
次に、分散パターンについて説明する。図８は、アプリケーションサーバ６と、ＷＥＢサーバ３の分散パターンの例を示した図である。図８に示すように、部署別、機能別、負荷別分散の分散パターンがあるが、これに限定されるものではない。
【００７２】
また、これらの分散パターン単独だけでなく、組み合わせた分散パターンとすることもできる。例えば、部署別でかつ機能別とすることもできるし、部署別、機能別、負荷別分散のすべてを組み合わせた分散パターンとすることもできる。
【００７３】
部署別の分散パターンとは、Ａ部署、Ｂ部署、Ｃ部署のように部署別にサーバを割り当てる方法のことである。機能別の分散パターンとは、ａ機能、ｂ機能のように積算で使用する機能別にサーバを割り当てる方法のことである。負荷別分散の分散パターンとは、サーバごとにジョブ数の割合を定めておく方法のことであり、例えば、０１サーバ３０％、０２サーバ４０％、０３サーバ３０％と設定したとすると、それぞれのサーバで実行するジョブ数の割合が、３０％、４０％、３０％となるようにジョブを割り当てる分散の方法のことである。
【００７４】
また、負荷別分散の分散パターンとして、実際にサーバごとの負荷を調査し、負荷の少ないサーバにジョブを割り振る方法も考えられる。
【００７５】
部署別、機能別、負荷別分散の分散パターンを組み合わせた分散パターンとは、例えば、Ａ部署の中でも、ａ機能とｂ機能に分かれ、そのａ機能が０１サーバ３０％、０２サーバ４０％、０３サーバ３０％、のように負荷別分散されるような方法のことである。
【００７６】
図９は、データベースサーバ４の分散パターンの例を示した図である。この図に示すように、分散パターンは、部署別、機能別、部署別かつ機能別などが考えれられるが、これに限定されるものではなく、様々なパターンを採用することができる。
【００７７】
それぞれの分散パターンの意味は、前述と同様である。即ち、部署別の分散パターンとは、部署ごとにサーバを割り当てる方法のことであり、機能別の分散パターンとは、積算で使用する機能ごとにサーバを割り当てる方法であり、部署別かつ機能別の分散パターンとは、部署別と機能別の分散パターンを併用する方法のことである。
【００７８】
データベースサーバ４の分散パターンには、負荷別分散の分散パターンが記載していない。それは以下の理由による。積算には、使用する機能や、部署ごとに特有のデータを必要とする。よって、その特有のデータが保存されているデータベースサーバは、そのデータに関する積算処理を割り当てられることができるが、その特有のデータが保存されていないデータベースサーバは、そのデータに関する積算処理を割り当てることができないからである。
【００７９】
しかしながら、上記特有のデータが割り当てられているデータベースサーバ４同士の間ならば、負荷別分散の分散パターンを採用することができる。また、すべてのデータベースサーバ４に上記特有のデータを保存することによって、すべてのデータベースサーバ４で負荷別分散の分散パターンを採用することができる。
【００８０】
なお、上記のすべての分散パターンは、ＷＥＢサーバ３、データベースサーバ４、アプリケーションサーバ６のどれにも採用することができ、すべてを分散パターンを任意に組み合わせて採用することもできる。
【００８１】
＜管理データベースサーバ＞
図１０は、管理データベースサーバ５に保存されているサーバ管理テーブルの一例である。このテーブルは、サーバ番号、ＩＰコンピュータ名、状態、役割、交代サーバについて記載されている。
【００８２】
サーバ番号とは、各サーバを区別するためにサーバに割り振られた番号のことである。ＩＰコンピュータ名とは、インターネット上でパソコンを識別するために割り振られた名前のことである。状態とは、Ａと表示されていれば、Ａｃｔｉｖｅ、即ちサーバが動作中であることを示し、Ｃと表示されていれば、Ｃｌｏｓｅ、即ちサーバがダウンしている、もしくは、動作不可状態であることを示している。
【００８３】
役割とは、Ｍと表示されていれば、Ｍａｓｔｅｒ、即ちマスタサーバであることを示し、Ｗと表示されていればＷｏｒｋ  Ｓｅｒｖｅｒ、即ちサブサーバであることを示す。交代サーバとは、そのサーバがダウンしたときに代替するサーバの番号を示している。
【００８４】
このテーブルは、ＷＥＢサーバ３用とアプリケーションサーバ６用のものがある。ＷＥＢサーバ３を例にとって説明する。各ＷＥＢサーバ３は、定期的に管理データベースサーバ５のサーバ管理テーブルを参照する。そして、自分のサーバ番号に対応する役割のチェックを行う。ＷＥＢサーバ３は、自分のサーバ番号に対応する役割がＭと表示されていれば、マスタＷＥＢサーバとして動作し、Ｗと表示されていればサブサーバとして動作する。
【００８５】
また、ＷＥＢサーバ３は、各サーバの状態をチェックしＣと表示されているサーバの交代サーバの番号が自分の番号であった場合は、Ｃと表示されている、即ちダウンしているサーバの仕事も受け持つ。例えば、ダウンしているサーバがマスタＷＥＢサーバの場合は、自ら、マスタＷＥＢサーバとしての動作も行う。
【００８６】
更に、ダウンしているサーバが前述した分散パターンによって割り振れている場合は、交代サーバは、ダウンしているサーバが割り振られるジョブの処理を受け持つ。これにより、各ＷＥＢサーバ３は、常に自らの役割をチェックしているので、仮にマスタＷＥＢサーバがダウンしても、直ちに他のサーバがマスタＷＥＢサーバの役割を果たすことができる。
【００８７】
また、どのＷＥＢサーバ３がダウンしても、直ちに交代サーバがダウンしたＷＥＢサーバの役割を果たすので、システム全体は、ストップすることなく安定に動作することができる。
アプリケーションサーバ６についても、同様に動作し、同様の効果を得ることができる。
【００８８】
図１１は、管理データベースサーバ５に保存されている分散状態テーブルの一例である。このテーブルには、サーバ番号と関連付けて、設定されている分散パターンが表示されている。よって、分散パターンとして部署別に設定されている場合は、サーバ番号と部署が表示され、分散パターンとして部署別、機能別、負荷別が併用して設定されている場合は、本図のように、サーバ番号、部署、機能、本数が表される。
【００８９】
本数とは、現在処理しているジョブの数を表している。よって、負荷別に分散する場合は、この本数の少ないサーバにジョブを割り当てる。また、負荷別の分散であっても、サーバごとに分散割合（図８参照）が設定されている場合は、この本数が分散割合となるようにサーバにジョブを割り当てることもできる。
【００９０】
この分散状態テーブルは、ＷＥＢサーバ３用、データベースサーバ４用、アプリケーションサーバ６用がある。マスタＷＥＢサーバは、この分散状態テーブルを参照することにより、クライアントサーバの接続先のＷＥＢサーバ３とデータベースサーバ４を選択する。
また、マスタアプリケーションサーバは、この分散状態テーブルを参照することにより、各積算処理をどのアプリケーションサーバに割り振るか決定する。
【００９１】
このように、分散パターンは分散状態テーブルとして定義されているので、分散状態テーブルの内容を書き換えることによって容易に、適用する分散パターンを変更することができる。
【００９２】
＜積算処理動作＞
図１２は、積算処理の動作フロー図である。クライアントサーバ１は、マスタＷＥＢサーバにより指定されたＷＥＢサーバ３に積算要求を出す（（１）積算要求）。前記ＷＥＢサーバ３は、マスタＷＥＢサーバにより指定されたデータベースサーバ４に処理要求を書き込む（（２）処理要求書き込み）。
【００９３】
マスタアプリケーションサーバは、書き込まれた前記処理要求をどのアプリケーションサーバ６に割り振るか決定し、割り振ったアプリケーションサーバの番号を前記処理要求に関連付けてデータベースサーバ４に書き込む。
【００９４】
アプリケーションサーバ６は、定期的にデータベースサーバ４を参照し、自分の番号と関連付けられた処理要求があった場合は、その処理要求を受け付ける（（３）要求受け付け）。続いて、その処理要求に係る積算の計算処理を実行し（（４）計算処理実行）、計算処理が終了した後（（５）計算処理終了）、計算結果をデータベースサーバ４に書き込む（（６）計算結果書き込み）。
【００９５】
ＷＥＢサーバ３は、データベースサーバ４に計算結果が書き込まれていた場合、計算結果を読み込む（（７）終了確認・計算結果読込）。クライアントサーバ１は、ＷＥＢサーバ３に計算結果が読み込まれていた場合、計算結果を取得して終了確認を行う（（８）終了確認）。
【００９６】
なお、アプリケーションサーバ６は、電源投入時、セットアップ時にレジストリに自らのサーバ番号を設定する。これにより、アプリケーションサーバ６は、自らのサーバ番号を認識することができる。
【００９７】
図１３は、データベースサーバ４に保存されている処理待ちテーブルの一例である。積算処理の要求ごとに付けられる設計書番号に関連付けて、その積算処理の処理状態を示す状態、積算処理を行うサーバ、積算処理の要求がきた時刻が書き込まれている。
【００９８】
マスタアプリケーションサーバは、定期的にこの処理待ちテーブルを参照する。マスタアプリケーションサーバは、参照によって積算処理を行うアプリケーションサーバが決まっていない積算処理の要求を検出した場合、その積算処理を行うアプリケーションサーバを決定し、そのアプリケーションサーバを識別する番号（以後、サーバ番号と称する）をサーバ欄に記載する。
【００９９】
アプリケーションサーバ６は、定期的に処理待ちテーブルを参照する。アプリケーションサーバ６は、参照によって状態が待ちの積算処理要求であって、自らのサーバ番号が付されたものを検出した場合、状態の欄に処理中と書き込み、その積算処理を実行する。
ただし、既に同時に実行できる最大本数の処理を実行している場合は、状態の欄に処理中と書き込むことなく、現在実行中の処理が完了するまで待機する。
【０１００】
図１４は、積算処理要求の待ち行列と積算処理要求の割り振りの例を示した図である。この図に示す例は、割り振るアプリケーションサーバが２台であり、それぞれが同時に実行できる最大処理本数２本で、負荷別分散の分散パターンでの割り振りの例である。
【０１０１】
積算処理要求１、２（以後、積算処理要求は、処理要求と称する。）が同時に来た場合、マスタアプリケーションサーバは、処理要求１をサーバ１、処理要求２をサーバ２に割り振ることによって負荷を分散する。以後も上記同様、処理要求の割り振りはマスタアプリケーションサーバによって行われる。
【０１０２】
次に来た処理要求３は、サーバ１、２とも実行中の本数は同じなのでサーバ１に割り振られる。次に来た処理要求４は、サーバ１は既に最大本数２本実行中であり、実行本数もサーバ２の方が少ないので、サーバ２に割り振られる。
【０１０３】
次に来た処理要求５は、サーバ１については既に実行中の処理は終了しており、サーバ２については処理要求４を実行中なので、実行中本数の少ないサーバ１に割り振られる。
次に来た処理要求６は、サーバ１、２とも実行中の処理は終了しているので、サーバ１に割り振られる。
【０１０４】
次に来た処理要求７は、サーバ１については処理要求６を実行中であり、サーバ２については実行中の処理はないので、サーバ２に割り振られる。
処理要求７と同時に来た処理要求８は、サーバ１についてはまだ処理要求６を実行中であり、サーバ２については処理要求７を実行中で、サーバ１、２とも実行本数は同じなので、サーバ１に割り振られる。
【０１０５】
次に来た処理要求９は、サーバ１については、処理要求６を実行中であり、サーバ２については、実行中の処理はないので、サーバ２に割り振られる。
このように、実行中の本数の少ないサーバに処理要求を割り振るので、特定のサーバに処理要求が集中しすぎることによる処理速度の低下を防ぐことができる。
【０１０６】
＜障害発生時の動作＞
図１５は、ＷＥＢサーバに障害が発生した場合の概略図である。データベースサーバ４の内の１台に障害監視プログラム１５０がインストールされている。この障害監視プログラム１５０は、定期的にＷＥＢサーバ３にアクセスすることでＷＥＢサーバ３に障害が発生していないかチェックする。
【０１０７】
障害監視プログラム１５０は、ＷＥＢサーバ３に障害が発生したことを検知すると、管理データベースサーバ５に保存されているサーバ管理テーブル１５２の障害が発生したＷＥＢサーバの状態欄にＣを書き込む。
【０１０８】
マスタＷＥＢサーバは、クライアントサーバ１から接続要求があった場合、このサーバ管理テーブル１５２を参照して状態がＣとなっているサーバには接続を割り振らず、当該サーバの交代サーバとして登録されているサーバに接続を割り振る。
【０１０９】
ＷＥＢサーバ３は、定期的にサーバ管理テーブル１５２を参照し、自分が交代サーバとして指定されているサーバの状態がＣとなっている場合は、状態がＣとなっているサーバに割り当てられる接続を引き受ける。
【０１１０】
また、マスタＷＥＢサーバに障害が発生した場合も同様であり、ＷＥＢサーバ３のうちマスタＷＥＢサーバの交代サーバとして指定されているサーバは、マスタＷＥＢサーバの状態がＣとなっていることを検知すると、自らマスタＷＥＢサーバとしても動作する。
【０１１１】
障害監視プログラム１５０は、各ＷＥＢサーバ３に対してｐｉｎｇを実行することによって、障害の発生を検知することができる。また、ｐｉｎｇの場合は、ハード障害は検出できるが、ソフト障害は検出できない。そこで、擬似的にＷＥＢ要求を各ＷＥＢサーバ３に出すことによって、ソフト障害を検出することもできる。
【０１１２】
なお、この障害を検出する方法は、アプリケーションサーバ６にも適用することができ、同様の作用、効果を得ることができる。この場合は、障害監視プログラム１５０は、擬似的にＷＥＢ要求を出すのではなく、擬似的に積算処理要求を出すことによって、ソフト障害を検出することができる。
【０１１３】
これにより、サーバに障害が発生しても速やかに交代サーバによって障害サーバの仕事がなされるので、システム全体の信頼性を高めることができる。
【０１１４】
なお、本発明は、本発明の技術的思想の範囲内で様々な変更が可能である。例えば、本発明の負荷分散システムにおける各サーバが行う動作は、記憶装置上のプログラムをコンピュータシステムのＣＰＵが読み込み、実行することによっても行うことができ、全く同様の作用効果を得て、発明が解決しようとする課題を解決することができる。
【産業上の利用可能性】
【０１１５】
本発明の負荷分散システムは、コンピュータのＣＰＵ、メモリ、記憶装置、ディスプレイ、入出力デバイス等を含むハードウェア資源上に構築されたＯＳ、アプリケーション、データベース、プログラム等によって実現されるものであり、積算処理を各サーバに分散して行うという情報処理が上記のハードウェア資源を用いて具体的に実現されるものであるから、自然法則を利用した技術的思想に該当するものであり、積算処理を行う分野ならばどこでも、このシステムを利用することができる。
【図面の簡単な説明】
【０１１６】
【図１】本発明の一実施形態に係る負荷分散システムの構成図である。
【図２】ＷＥＢサーバの分散パターンの例を示した図である。
【図３】データベースサーバの分散パターンの例を示した図である。
【図４】積算処理の概要を橋梁工事を例にして示した図である。
【図５】ＷＥＢサーバの分散の動作について示した図である。
【図６】マスタＷＥＢサーバの動作フローを表したフロー図である。
【図７】ＷＥＢサーバの動作を示したフロー図である。
【図８】アプリケーションサーバとＷＥＢサーバの分散パターンの例を示した図である。
【図９】データベースサーバの分散パターンの例を示した図である。
【図１０】管理データベースサーバに保存されているサーバ管理テーブルの一例である。
【図１１】管理データベースサーバに保存されている分散状態テーブルの一例である。
【図１２】積算処理の動作フロー図である。
【図１３】データベースサーバに保存されている処理待ちテーブルの一例である。
【図１４】積算処理要求の待ち行列と積算処理要求の割り振りの例を示した図である。
【図１５】ＷＥＢサーバに障害が発生した場合の概略図である。
【符号の説明】
【０１１７】
１      積算クライアント
２      管理クライアント
３      ＷＥＢサーバ
４      データベースサーバ
５      管理データベースサーバ
６      アプリケーションサーバ
７      ネットワーク
１５０  障害監視プログラム
１５２  サーバ管理テーブル
【図１】
2008225793.tif 000003
【図２】
2008225793.tif 000004
【図３】
2008225793.tif 000005
【図４】
2008225793.tif 000006
【図５】
2008225793.tif 000007
【図６】
2008225793.tif 000008
【図７】
2008225793.tif 000009
【図８】
2008225793.tif 000010
【図９】
2008225793.tif 000011
【図１０】
2008225793.tif 000012
【図１１】
2008225793.tif 000013
【図１２】
2008225793.tif 000014
【図１３】
2008225793.tif 000015
【図１４】
2008225793.tif 000016
【図１５】
2008225793.tif 000017