JP4189379B2 - アプリケーション運用制御方法およびシステム - Google Patents

アプリケーション運用制御方法およびシステム Download PDF

Info

Publication number
JP4189379B2
JP4189379B2 JP2004377746A JP2004377746A JP4189379B2 JP 4189379 B2 JP4189379 B2 JP 4189379B2 JP 2004377746 A JP2004377746 A JP 2004377746A JP 2004377746 A JP2004377746 A JP 2004377746A JP 4189379 B2 JP4189379 B2 JP 4189379B2
Authority
JP
Japan
Prior art keywords
application
server
load test
deployed
deployment
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2004377746A
Other languages
English (en)
Other versions
JP2006185152A (ja
Inventor
崇 石澤
敦 畠山
明彦 山口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004377746A priority Critical patent/JP4189379B2/ja
Publication of JP2006185152A publication Critical patent/JP2006185152A/ja
Application granted granted Critical
Publication of JP4189379B2 publication Critical patent/JP4189379B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Description

本発明は、複数サーバ上で稼動するアプリケーションの運用を制御する方法およびシステムに関するものである。
近年、グリッド・コンピューティング技術への注目が高まっている。グリッド・コンピューティング技術は、複数のサーバ間での分散処理を行うことにより一台の高性能サーバと同等以上の大量の処理を行うようにするものであり、その大きな利点の一つとしてはスケーラビリティの高さが挙げられる。つまり、サーバの台数が必要に応じて増減可能ということである。従来、このようなグリッド・コンピューティング技術を用いることにより、グリッド化されたサーバ群への負荷状況に応じて、動的にサーバを追加する技術が知られている(例えば、特許文献1参照)。
特開2003−124976号公報(段落0026,0032〜0038、図6,1516)
しかし、特許文献1に記載の技術では、サーバの負荷に応じてアプリケーションが使用するサーバを動的に追加する場合に、あるサーバの負荷が増大したことを検知してから、アプリケーションが使用するサーバを追加するようになっているため、各サーバの負荷を軽減するまでの間は、高負荷状態のサーバ上で稼動するアプリケーションを安定に稼動させることができないという不都合があった。そのため、あるサーバが高負荷になってから、当該サーバの負荷を軽減するまでの時間を短縮し、サーバの高負荷状態をできるだけ短縮することが求められる。
ところで、その短縮要求を満たす方法として、例えば、グリッド化されたサーバ群上で複数のアプリケーションが稼動している状況において、サーバ群上で稼動する全てのアプリケーションを、追加するサーバに事前に配備しておくことで、特定のアプリケーションが高負荷になってから、サーバを追加し、特定のアプリケーションにかかる負荷を低減するまでの時間を短縮する方法が考えられる。しかし、全てのアプリケーションを事前に配備しておくと、サーバの持つ計算機資源を非常に多く使ってしまうことになるため、必要最小限の計算機資源を利用して、前述した負荷を低減するまでの時間短縮を実現する方法が望まれている。その実現方法の一つとして、全てのアプリケーションを事前に配備するのではなく、高負荷になると予想されるアプリケーションのみを事前に配備しておく方法が考えられるが、そのようなアプリケーションを正確に予想するためにはいくつか考慮すべき点がある。
特に、同一サーバ上で複数のアプリケーションが稼動することを想定した場合には、各アプリケーション間の相互作用によって負荷変動パターンが異なるので、この点も考慮して、アプリケーションにかかる負荷の変動を予測しなければならない。例えば、2つのアプリケーションが、両方ともディスクへのI/O(Input Output)を頻繁に行う性質のものである場合、各アプリケーションの相互作用により、I/Oバスが競合するため、応答時間が悪化することが考えられる。
そこで、本発明は、前記した状況下において、サーバ群の無駄な計算機資源の利用を抑えつつ、特定のアプリケーションに集中した負荷を円滑に低減することをその目的とする。
前記目的を達成するために本発明では、クライアントからのアプリケーションへの要求に従って複数のサーバ間で負荷分散制御を行うアプリケーション運用制御システムにおけるアプリケーション運用制御方法であって、
前記アプリケーション運用制御システムに用いられる運用制御装置は、前記アプリケーションを記憶する記憶装置と、前記アプリケーションの配備を制御する処理装置とを備え、
前記処理装置は、
前記複数のサーバのうちの所定のサーバに配備または事前配備されている特定のアプリケーションに対し、テスト用のリクエストを送信させる負荷テストを実行、前記負荷テストで不合格となった場合、当該アプリケーションに対するテスト用のリクエストの送信を停止させて負荷テストを停止し、当該アプリケーションを記憶装置から読み出して、前記複数のサーバのうちの他のサーバに事前配備し、稼動待機中とする負荷テストステップと
前記負荷テストステップを実行中の前記所定のサーバ以外のサーバから負荷増大通知を受け付けたとき、前記事前配備した稼動待機中のアプリケーションを、前記事前配備したサーバ上で稼動させる稼動ステップと
を実行するようにした。
これによって、アプリケーションの稼動状況を変更することが可能となる。
本発明によると、サーバ群の無駄な計算機資源の利用を抑えつつ、特定のアプリケーションに集中した負荷を円滑に低減することができる。
以下、本発明の第1実施形態から第3実施形態までについて図面を参照して説明する。
[第1実施形態]
図1は、クライアントサーバシステムの全体構成図である。このクライアントサーバシステムは、クライアント群とサーバ群とを備えている。クライント群には、クライアントA(101A)、クライアントB(101B)およびクライアントC(101C)が含まれ、サーバ群には、サーバA(104A)、サーバB(104B)およびサーバC(104C)が含まれている。
さらに、このクライアントサーバシステムは、負荷分散装置103と、運用制御装置105とを備えている。負荷分散装置103は、ネットワーク1(102)を介して、前記したクラインアト群に接続され、またネットワーク2(106)を介して、前記したサーバ群および運用管理装置105に接続されている(簡潔に記載)。以下にこれらを詳述する。なお、図1では、クライアント群およびサーバ群は、それぞれ3台としたが、何台でも構わない。また、ネットワーク1やネットワーク2は、別々のネットワークとしたが、同一のネットワークとしても構わない。
クライアント群は、サーバA,B,C上で稼動するアプリケーションにリクエストを発行しながら、所定の業務を行う装置群である。
負荷分散装置103は、クライアント群からのリクエストが特定のサーバに集中し、そのサーバが高負荷にならないように他のサーバへ前記リクエストを振り分ける装置である。図1に示すように、負荷分散装置103は、リクエスト分配先設定プログラム161、リクエスト分配先情報管理テーブル162および負荷分散プログラム163を具備している。リクエスト分配先設定プログラム161は、ネットワーク2経由でテーブルの設定変更要求を受け付けるものである。
負荷分散プログラム163は、サーバA,B,Cへリクエストの分配を行う機能がある。また、この負荷分散プログラム163は、後記するリクエスト分配先情報管理テーブル162の情報を元に、ネットワーク1を介して、所定のクライアントから受信するリクエストを、サーバA〜C上で稼動する適切なアプリケーションへ振り分ける機能がある。なお、前記した負荷分散プログラム163の機能は公知の技術であるため、詳細は省略する。
リクエスト分配先情報管理テーブル162には、図2に示すように、アプリケーションIDと配備先IPアドレスとが格納されている。アプリケーションIDとは、アプリケーションを識別するための識別情報であり、配備先IPアドレスとは、配備先のサーバA〜CのIPアドレスである。つまり、リクエスト分配先情報管理テーブル162には、サーバA,B,C上に配備されているアプリケーションに所定のクライアントからのリクエストを分配するための情報が管理されている。
図1に戻って、サーバA〜Cのサーバ群について説明する。ここでは、主としてサーバAについて説明する。
サーバAには、アプリケーション実行プログラム151A、アプリケーション監視プログラム152A、サーバ性能情報収集プログラム153Aおよび閾値テーブル154Aを具備している。アプリケーション実行プログラム151Aは、運用制御装置105から送られたアプリケーションのインストールおよび起動を行う機能がある。
アプリケーション監視プログラム152Aは、サーバA上で稼動中のアプリケーションの負荷の監視を行ったり、監視中の負荷があらかじめ設定された閾値を超えた場合に運用制御装置105へ負荷増大通知を行ったりする機能がある。
サーバ性能情報収集プログラム153Aは、CPU(Central Processing Unit)利用率を取得するための要求に応じて、サーバAのCPU利用率をサーバAのOS(Operating System)に依頼して取得し、取得したCPU利用率を要求元へ返送する機能がある。
閾値テーブル154Aには、図3に示すように、アプリケーションIDと、そのアプリケーションの負荷許容上限値を表す閾値とが格納されている。ここにいう閾値としては、次のようなアプリケーションのレスポンスタイムを用いることとする。すなわち、図1に示したアプリケーション監視プログラム152Aが送信したリクエストを所定のアプリケーションが受信した後、そのアプリケーションがそのリクエストに応じた処理を終了してアプリケーション監視プログラム152Aへそのレスポンスを返すまでの時間である。このようにすると、前記したレスポンスタイムに着目して、アプリケーションの負荷状況を把握することが可能となる。
本実施形態では、アプリケーションの負荷許容上限値を表す閾値としてレスポンスタイムを用いることとするが、アプリケーションの負荷状況を把握することができるのであれば、これに限られない。例えば、アプリケーションへの単位時間当たりのリクエスト数や、アプリケーションへのコネクション数を図3の閾値に用いてもよい。この場合、アプリケーションの負荷状況に着目して図3の閾値を設定することができる。
また、サーバAのCPU使用率やメモリ使用率、コマンドへの応答時間を図3の閾値に用いてもよい。この場合、アプリケーションが稼動するサーバの負荷状況に着目して図3の閾値を設定することができる。なお、前記したアプリケーションへの単位時間当たりのリクエスト数や、CPU使用率などを組み合わせて適用するようにしてもよい。
なお、サーバB,CもサーバAと同様の構成になっている。すなわち、サーバBは、アプリケーション実行プログラム151B、アプリケーション監視プログラム152B、サーバ性能情報収集プログラム153Bおよび閾値テーブル154Bを具備する。また、サーバCも,アプリケーション実行プログラム151C、アプリケーション監視プログラム152C、サーバ性能情報収集プログラム153Cおよび閾値テーブル154Cを具備している。
次に、運用制御装置105について説明する。この運用制御装置105は、各サーバA,B,C上で稼動するアプリケーションへの負荷テストを実施し、必要に応じ、各サーバA,B,Cへのアプリケーションの配備や、負荷分散装置103の設定変更を行う。これを具体的に説明する。
図4は、運用制御装置の構成を示す図である。図4において、運用制御装置105は、通信制御装置431、中央演算装置(処理装置:CPU)432、ディスプレイ433、キーボード434、CD−ROMドライブ装置435、1次記憶装置400、2次記憶装置420、およびシステムバス436から構成されている。以下、これらを詳述する。
通信制御装置431は、ネットワーク2を介して、負荷分散装置103およびサーバ群と各種データやコマンドを交換するために使用されるものである。CPU432は、後記する各種プログラムを実行する。ディスプレイ433は、アプリケーションの実行状況等を表示するためのものである。キーボード434は、オペレータがアプリケーション登録処理の実行等を指示するコマンドを入力するためのものである。
CD−ROM(Compact Disk - Read Only Memory)ドライブ(記憶装置)435は、CD−ROM媒体からアプリケーションのインストール時に必要なファイルを読み込むためのものである。システムバス436は、通信制御装置431、CPU432、ディスプレイ433、キーボード434、CD−ROMドライブ装置435、1次記憶装置400および2次記憶装置420のそれぞれの間で各種データを伝送させるものである。
ここで、1次記憶装置400および2次記憶装置420の記憶内容について説明する。まず、1次記憶装置400について説明する。1次記憶装置400には、イベント受信プログラム401、負荷分散制御プログラム402、運用制御プログラム403、アプリケーション配備プログラム404、アプリケーション事前配備制御プログラム405、リクエスト分配制御プログラム406、負荷テスト実行プログラム407、およびシステムプログラム408が格納されている。そして、1次記憶装置400には、ワークエリア409が保持され、このワークエリア409には、負荷テスト対象サーバ情報410、負荷テスト不合格アプリケーション情報411および負荷テスト強制終了フラグ412が確保されるようになっている。
ここで、まず、前記した各プログラム401〜408の機能について順を追って説明する。イベント受信プログラム401は、各サーバA,B,C上で稼動するアプリケーションからのイベントメッセージを監視し、負荷増大通知を受信すると、その時の状況に応じて負荷分散制御プログラム402の起動、もしくは事前配備が必要であることをアプリケーション事前配備制御プログラム405に伝える。
負荷分散制御プログラム402は、アプリケーションの配備状況に応じて、アプリケーション配備プログラム404の起動や、リクエスト分配制御プログラム406を用いて負荷分散装置103の設定を変更することで、アプリケーションの負荷分散制御を行う。
運用制御プログラム403は、オペレータのアプリケーション新規配備要求によって起動し、アプリケーション配備プログラム404、アプリケーション事前配備制御プログラム405およびリクエスト分配制御プログラム406を用いて、サーバA,B,Cへアプリケーションの新規配備の指示、サーバA,B,C上に配備されているアプリケーションへのリクエスト制御、負荷テスト、および事前配備の指示を行い、アプリケーションの運用を制御する。
アプリケーション配備プログラム404は、配備対象となるアプリケーションのアプリケーションIDを入力として起動し、そのアプリケーションの配備先のサーバを選択して当該アプリケーションの配備を行う。
アプリケーション事前配備制御プログラム405は、サーバを一意に識別するサーバIDを入力として起動し、そのサーバIDに対応するサーバについての負荷テストを、負荷テスト実行プログラム407を用いて実施する。そして、このプログラム405は、負荷テスト結果に応じて、アプリケーション配備プログラム404を用いてアプリケーションの事前配備を行う。
リクエスト分配制御プログラム406は、リクエストの分配を開始したいアプリケーションのアプリケーションID、およびアプリケーションが配備されているサーバのサーバIDを入力として起動する。そして、このプログラム406は、負荷分散装置103の設定を変更して、入力されたアプリケーションIDに対応するアプリケーションについて、クライアントA,B,Cからのリクエストの分配を開始する。
負荷テスト実行プログラム407は、負荷テスト対象のアプリケーションのアプリケーションID、および、負荷テスト対象のアプリケーションが配備されているサーバのサーバIDを入力として起動する。そして、このプログラム407は、あらかじめ設定されている時間が経過するまで、あるいは強制的に終了させられるまでの間、前記した負荷テスト対象のアプリケーションにリクエストを発行し続けて負荷をかける。
システムプログラム408は、ディスプレイ433等を含む周辺装置との間のデータの入出力等、運用制御装置105上のプログラムを実行するための基本機能を提供する。
続いて、ワークエリア409に確保される前記した各情報410〜412について説明する。負荷テスト対象サーバ情報410には、負荷テスト対象となっているサーバのサーバIDや、負荷テスト実施中であるか否かを示す情報が含まれる。
具体的には、負荷テスト対象サーバ情報410は、サーバIDが書き込まれている状態と、何も書き込まれていない状態(NULL文字等が書き込まれている状態など)をとる。サーバIDが書き込まれている場合には、そのサーバIDに対応するサーバの負荷テストが実施中であることを表し、何も書き込まれていない場合は、どのサーバでも負荷テストが実施されていないことを表している。
負荷テスト不合格アプリケーション情報411には、次のような場合に、負荷テストが不合格になったアプリケーションに関する情報が含まれる。具体的にはアプリケーションIDである。前記した場合というのは、負荷テスト中に、イベント受信プログラム401が負荷テスト対象のサーバから負荷増大通知を受信した場合である。つまり、所定のサーバから負荷増大通知を受信したか否かがこれに示される。
負荷テスト強制終了フラグ412は、アプリケーション事前配備制御プログラム405が、負荷テスト実行プログラム407に、負荷テストの終了指示を伝えるために用いられる。なお、ワークエリア409には、前記した各情報410〜412のほか、プログラム実行時にアクセスするデータや一時的に保持するデータが確保される。
次に、2次記憶装置420の記憶内容について説明する。2次記憶装置420には、アプリケーション配備状態テーブル421、サーバIPアドレス管理テーブル422、負荷テスト設定情報テーブル423、およびアプリケーション格納場所管理テーブル424が格納される。以下に、これらのテーブル421〜424について詳述する。
アプリケーション配備状態テーブル421は、サーバA〜C上に配備されているアプリケーションの状態を管理するためのテーブルである。具体的には、このアプリケーション配備状態テーブル421は、アプリケーションID、配備先サーバID、アプリケーションの状態、およびアプリケーションの配備時間を保持する。このアプリケーション配備状態テーブル421は、サーバのアプリケーションが新しく配備されたり、または削除されたりした場合に更新される。あるいは、サーバ上に配備されているアプリケーションがクライアントからのリクエストの受付開始、または受付終了した場合に更新される。
アプリケーション配備状態テーブル421の構成例を図5に示す。図5に示すテーブル421には、アプリケーションID、配備先サーバID、アプリケーションの状態およびアプリケーション配備時間が格納されている。ここにいうアプリケーションの状態には、「稼動中」や「待機中」、「強制配備中」、「削除済」の種類がある。つまり、サーバ上のアプリケーションの状態が管理されている。
「稼動中」は、アプリケーションが起動し、かつクライアントからのリクエストを受け付けている配備済みの状態を表す。「待機中」は、アプリケーションが最適なサーバに事前配備されている状態を表す。
「強制配備中」は、あるアプリケーションについて最適なサーバが存在しない場合に、強制的に、いずれかのサーバに事前配備した状態を表す。ここにいう事前配備された状態とは、アプリケーションが起動しているが、クライアントA〜Cからのリクエストを受け付けていない状態を表す。
「削除済」は、以前にアプリケーションが配備されたが、そのアプリケーションが削除された状態を表す。
次に、図4に示したサーバIPアドレス管理テーブル422の構成例を図6に示す。図6に示すテーブル422には、サーバのサーバIDおよびそのサーバのIPアドレスが格納されている。
次に、図4に示した負荷テスト設定情報テーブル423の構成例を図7に示す。図7に示すテーブル423には、アプリケーションのID、アプリケーションの負荷の閾値(本実施形態ではアプリケーションのレスポンスタイムの許容上限値、例えば5.0秒)、負荷テスト用URL(Uniform Resource Locator)、リクエスト送信頻度(例えば、100件/分)、および負荷テスト最大継続時間(例えば、5.0分)が格納されている。ここにいう負荷テスト用URLとは、図4に示した負荷テスト実行プログラム407が負荷テストを行う際に用いるURLである。
例えば、負荷テスト対象アプリケーションの通常運用時に使用するURLや、負荷テスト用に特別に準備したURLをこれに用いてもよい。なお、負荷テスト用URLとして、負荷テスト用に特別に準備したURLを用いる場合、次のようなプログラムを導入するようにしてもよい。すなわち、あるURLへのリクエストに対し、前記負荷テスト対象アプリケーションの典型的な処理(例えば、(1)ユーザ認証処理、(2)商品一覧を表示する処理、(3)購入手続き処理、(4)商品販売完了画面の表示処理、といった一連の処理)を自動的に実施してレスポンスを返すプログラムである。これにより実運用に近い状況での負荷テストを実施することが可能となる。
なお、図7に示した負荷テスト用URL(雛形)には、実際には、負荷テスト用URLのサーバアドレス以外の情報を保持している。
なお、前記した負荷テスト設定情報テーブル423は、アプリケーション登録時にオペレータの操作によって更新される。
次に、アプリケーション格納場所管理テーブル424の構成例を図8に示す。図8に示すテーブル424には、アプリケーションIDおよびそのアプリケーションのインストールに関するデータ格納場所が格納されている。データ格納場所というのは、例えば、アプリケーションのインストール時に必要なアーカイブファイルやインストールプログラムの格納場所の意味である。
なお、本実施形態では、CD−ROMドライブ装置435からアプリケーションのインストール時に必要となるアーカイブファイルなどのファイルを読み込む構成としたが、フロッピー(登録商標)ディスクドライブ、MO(Magneto-Optical disk)ドライブ、DVD(Digital Versatile Disk)ドライブ等、他の外部記憶装置を用いて読み込むこともできる。また、外部コンピュータからネットワーク1を介して配信されたアプリケーションを読み込む構成とすることもできる。
また、本実施形態では、アプリケーション監視プログラム152Aが能動的にアプリケーションの負荷が閾値を超えた事を運用制御装置105に通知する方法について説明するが、運用制御装置105からの問い合わせに応じて、通知する方法でも構わない。また、本実施形態では、アプリケーション監視プログラム152A〜Cは、サーバ上に存在する構成としたが、負荷分散装置103、または運用制御装置105上に存在しても構わない。
次に、前記した運用制御装置105での事前準備に関する処理について説明する。
オペレータの指示に従い、図4に示した運用制御装置105のCPU432は、事前準備として、まず、運用制御装置105に接続されている全てのサーバA,B,CにサーバIDを割当て、これらサーバIDと、それぞれのIPアドレスを、2次記憶装置420のサーバIPアドレス管理テーブル422に書き込む。次に、CPU432は、各サーバA,B,Cの図示しない記憶領域上に、当該割り当てた各サーバIDを格納させる。これにより、ネットワーク2上に接続されている各サーバA,B,Cが、自己のサーバIDを参照することが可能となる。
次に、オペレータの指示に従い、CPU432は、イベント受信プログラム401を起動する。また、CPU432は、配備対象アプリケーションの情報を、図8のアプリケーション格納場所管理テーブル424と、図7の負荷テスト設定情報テーブル423に設定する。
次に、CPU432は、配備対象のアプリケーションのアプリケーションIDを入力値として運用制御プログラム403を起動する。
次に、図4に示したアプリケーション格納場所管理テーブル424の設定手順について説明する。まず、オペレータが、CD−ROM媒体をCD−ROMドライブ装置435に挿入すると、CPU432は、CD−ROM媒体に格納されているアプリケーションのインストール時に必要なファイルを、CD−ROMドライブ装置435によりCD−ROM媒体から読み出して2次記憶装置420に格納する。
そして、CPU432は、アプリケーションについて、一意に識別するアプリケーションIDを割当て、アプリケーション格納場所管理テーブル424上のアプリケーションIDのカラムに当該割り当てたアプリケーションIDと、データ格納場所のカラムにアプリケーションのインストール時に必要なファイルの格納場所とを書き込む。
次に、図4に示した負荷テスト設定情報テーブル423の設定手順について説明する。まず、オペレータの入力に従って、CPU432は、負荷テスト設定情報テーブル423に、前記アプリケーションID、そのアプリケーションIDのアプリケーションについて許容される負荷の上限(最大レスポンスタイム)を示す閾値、負荷テスト用URL(雛形)、リクエスト送信頻度、および負荷テスト最大継続時間を書き込む。
次に、オペレータの指示に従いCPU432は、あるサーバに、前記のアプリケーションを新規配備するため、そのアプリケーションIDを入力として運用制御プログラム403を起動する。
[処理手順]
次に、前記した各プログラム401〜408等の処理手順について説明する。なお、各プログラムは、図4に示したCPU432が順次読み出して実行するものとする。
まず、図4に示した運用制御プログラム403の処理手順を図9に示すフローチャートに従って説明する。ここでは、運用制御プログラム403は、新規に運用を開始するアプリケーションのアプリケーションID(例えば「D」)を入力値として起動することとする。
ステップ901では、前記入力値とされたアプリケーションIDを入力値として渡してアプリケーション配備プログラム404を起動する。その戻り値として、運用対象のアプリケーションIDのアプリケーションを新規に配備したサーバのサーバID(例えば「A」)を取得する。これにより、運用対象のアプリケーションが適切なサーバ(例えばサーバA)に配備される。
ステップ902では、ステップ901でアプリケーション配備プログラム404の戻り値(サーバID)がNULLであるか否かを判断し、NULLでない場合(Yes)にはステップ903に進み、NULLである場合(No)には本プログラムを終了する。
ステップ903では、図4に示したリクエスト分配制御プログラム406に、入力値として指定されたアプリケーションID、およびステップ901で取得したサーバIDを渡して、リクエスト分配制御プログラム406を起動する。これにより、ステップ901で新規に配備したアプリケーションへのリクエストの分配が開始される。
ステップ904では、図4に示したアプリケーション事前配備制御プログラム405に、ステップ901で取得したサーバIDを渡して、アプリケーション事前配備制御プログラム405を起動する。これにより、アプリケーションの新規配備先サーバ(例えばサーバA)の負荷テストを実施し、負荷テストの結果が不合格のときに、そのアプリケーションについての事前配備が他のサーバに行なわれる。アプリケーション事前配備制御プログラム405による処理が終了すると、本プログラムの処理が終了する。
次に、図4に示したアプリケーション配備プログラム404の処理手順を図10A〜Cに示すフローチャートに従って説明する。アプリケーション配備プログラム404は、配備対象のアプリケーションのアプリケーションID(例えば「D」)を入力値として起動する。
図10Aのステップ1001では、CPU432が、本プログラムを実行して、配備対象のアプリケーションIDのアプリケーションが既に配備されている、または以前に配備されたが削除された全てのサーバのサーバID(例えば「A」)を取得する。具体的には、CPU432は、図4に示したアプリケーション配備状態テーブル421から、アプリケーションIDのカラムの値が、本プログラムへの入力値として指定されたアプリケーションIDと一致するレコードを検索し、検索にヒットした全てのレコードにおける配備先サーバのカラムの値であるサーバID群を取得する。
ステップ1002では、CPU432は、ネットワーク2に接続されている全てのサーバのサーバID(例えば「A」〜「C」)を取得する。具体的には、CPU432は、図4に示したサーバIPアドレス管理テーブル422から、全てのサーバIDを取得する。
ステップ1003では、CPU432は、ステップ1002で取得したサーバID群の中から、ステップ1001で取得したサーバIDと一致しないサーバIDのみを取得する。つまり、CPU432は、全ての配備先候補のサーバのサーバIDを取得する。
また、取得したサーバID群を図4に示したワークエリア409に保存する。
ステップ1004では、CPU432は、ステップ1003で図4に示したワークエリア409に保存したデータが存在するか否か、すなわち配備対象のアプリケーションの配備先候補サーバが存在するか否かを判断し、存在する場合(Yes)にはステップ1005に進み、存在しない場合(No)にはステップ1011(図10B参照)に進む。
ステップ1005では、CPU432は、ステップ1003で取得したサーバID群の中から、任意に一つのサーバID(例えば「B」)を選択する。
ステップ1006では、選択されたサーバIDに対応するサーバのIPアドレスを取得する。具体的には、CPU432は、図4に示したサーバIPアドレス管理テーブル422(図6参照)から、サーバIDのカラムの値がステップ1005で選択したサーバIDと一致するレコードを検索し、検索にヒットしたレコードのIPアドレスのカラムの値を取得する。
ステップ1007では、CPU432は、ステップ1005で選択されたサーバIDに対応するサーバのCPU利用率を取得する。具体的には、CPU432は、まず、ステップ1006で取得したIPアドレスに該当するサーバ上のサーバ性能情報収集プログラム153Bへサーバ性能情報取得要求を発行してCPU利用率を受け取る。また、CPU432は、取得したCPU利用率を、そのサーバIDと対応付けてワークエリア409に保存した後、ステップ1003で取得したサーバID群から、CPU利用率を取得したサーバのサーバIDを削除する。
ステップ1008では、CPU432は、ステップ1003でワークエリア409上に保存したデータが残っているか否かに基づき、全ての配備先候補のサーバのCPU利用率を取得したか否かを判断する。具体的には、サーバIDが残っていない場合、すなわち全ての配備先候補サーバのCPU利用率を取得した場合(1008のYes)、CPU432は、ステップ1010に進む。他方、サーバIDが残っている場合、すなわち配備先候補サーバCのCPU利用率を全て取得していない場合(1008のNo)、CPU432は、ステップ1009に進む。
ステップ1009では、CPU432は、配備先候補のサーバの中から、CPU利用率を取得していないサーバのサーバID(例えば「C」)を選択する。具体的には、CPU432は、ステップ1003でワークエリア409上に保存したサーバID群の中で、残っているサーバID群の中から任意に一つを選択し、ステップ1006に戻る。
図10Cのステップ1010では、CPU432は、配備対象のアプリケーションIDのアプリケーションの配備先を決定する。具体的には、CPU432は、ステップ1007で保存したサーバIDのサーバのCPU利用率の中で最も低い値のものを選択し、その選択したCPU利用率に対応するサーバIDをワークエリア409に保存する。
なお、このステップ1010の次に、ステップ1021へ進むことになるが、例えば、図10Aのステップ1004において、配備先候補のサーバが存在しない場合(1004のNo)、図10Bのステップ1011に進むので、以下に、このステップ1011以降の処理について説明する。
図10Bのステップ1011では、CPU432は、全ての強制配備先候補のサーバ
のサーバIDを取得する。具体的には、CPU432は、まず、図4に示したアプリケーション配備状態テーブル421(図5参照)から、アプリケーションIDのカラムの値が、本プログラムの入力値として指定されたアプリケーションIDと一致し、かつそのアプリケーションIDのアプリケーションの状態のカラムの値が、「削除済」であるレコードを検索する。そして、CPU432は、その検索にヒットした全てのレコードにおける配備先サーバIDのカラムの値を取得する。そして、その取得した値をワークエリア409に保存する。
ステップ1012では、CPU432は、ステップ1011により、ワークエリア409に保存したデータが存在するか否か、すなわち配備対象のアプリケーションIDのアプリケーションについての強制配備先候補となるサーバが存在するか否かを判断し、存在する場合(1012のYes)には、ステップ1013に進む。他方、存在しない場合(1012のNo)には、CPU432は、ステップ1020に進む。
ステップ1013では、CPU432は、強制配備先候補のサーバIDのサーバの中から、任意のサーバを選択する。具体的には、CPU432は、ステップ1011で取得したサーバID群の中から、任意に一つのサーバIDを選択する。
ステップ1014では、CPU432は、任意に選択されたサーバIDのサーバのIPアドレスを取得する。具体的には、CPU432は、図4に示したサーバIPアドレス管理テーブル422(図6参照)から、サーバIDのカラムの値がステップ1013で取得したサーバIDと一致するレコードを検索し、検索でヒットしたレコードのIPアドレスのカラムの値を取得する。
ステップ1015では、CPU432は、1013で任意に選択されたサーバIDのサーバのCPU利用率を取得する。具体的には、CPU432は、まず、ステップ1014で取得したIPアドレスに該当するサーバB上のサーバ性能情報収集プログラム153Bに、サーバ性能情報取得要求を発行する。そして、CPU432は、CPU利用率を受け取る。また、前記取得したCPU利用率を、サーバIDと対応付けてワークエリア409に保存した後、ステップ1011で取得したサーバID群から、前記CPU利用率を取得したサーバのサーバIDを削除する。
ステップ1016では、ステップ1011で、ワークエリア409上に保存したサーバIDが残っているか否かに基づいて、全ての強制配備先候補のサーバIDのサーバのCPU利用率を取得したか否かを判断する。そして、それが残っている場合、すなわち全ての強制配備先候補サーバのCPU利用率を取得していない場合(1016のNo)はステップ1017に進む。他方、それが残っていない場合、すなわち全ての強制配備先候補サーバのCPU利用率を取得している場合(1016のYes)には、CPU432は、ステップ1018に進む。
ステップ1017では、CPU432は、強制配備先候補のサーバのサーバIDの中から、まだCPU利用率を取得していないサーバのサーバIDを選択する。具体的には、CPU432は、ステップ1011でワークエリア409上に保存したサーバID群の中で、まだ残っているサーバIDを任意に一つ選択し、ステップ1014に戻る。
ステップ1018では、CPU432は、配備対象のアプリケーションIDのアプリケーションについて、強制配備先を決定する。具体的には、CPU432は、ステップ1015で保存したサーバのCPU利用率の中で最も低い値を選択し、その選択したCPU利用率に対応するサーバIDをワークエリア409に保存する。
ステップ1019では、CPU432は、アプリケーション配備状態テーブル421のアプリケーション配備状態を「強制配備中」にする。具体的には、CPU432は、まず、図4に示したアプリケーション配備状態テーブル421(図5参照)上のアプリケーションIDのカラムの値、および強制配備先サーバIDのカラムの値が、それぞれ本プログラムへの入力値として指定されたアプリケーションID、およびステップ1018で保存したサーバIDと一致するレコードを検索する。そして、CPU432は、その検索にヒットしたレコードにおけるアプリケーションの状態のカラムの値を「強制配備中」に更新する。
ステップ1020では、CPU432は、図4に示したディスプレイ433上に、配備対象のアプリケーションを配備可能なサーバが存在しない旨のメッセージを表示してオペレータに通知し、本プログラムを終了する。このとき、本プログラムの戻り値としてNULLを返す。
次に、図10Cのステップ1021では、CPU432は、配備対象のアプリケーションインストール用ファイルのデータ格納場所を取得する。具体的には、CPU432は、まず、図4に示したアプリケーション格納場所管理テーブル424(図8参照)から、アプリケーションIDのカラムの値が、本プログラムへの入力値として指定されたアプリケーションIDと一致するレコードを検索する。そして、CPU432は、その検索にヒットしたレコードのデータ格納場所を取得する。
ステップ1022では、CPU432は、閾値を取得する。具体的には、CPU432は、まず、図4に示した負荷テスト設定情報テーブル423(図7参照)から、アプリケーションIDのカラムの値が、本プログラムへの入力値として指定されたアプリケーションIDと一致するレコードを検索する。そして、CPU432は、その検索にヒットしたレコードの閾値のカラムの値を取得する。
ステップ1023では、CPU432は、配備先または強制配備先のサーバのIPアドレスを取得する。具体的には、CPU432は、まず、図4に示したサーバIPアドレス管理テーブル422(図6参照)から、サーバIDのカラムの値が、ステップ1010、もしくはステップ1018でワークエリア409に保存したサーバIDと一致するレコードを検索する。そして、CPU432は、その検索にヒットしたレコードのサーバIPアドレスのカラムの値を取得する。
ステップ1024では、CPU432は、配備先または強制配備先のサーバIDのサーバにアプリケーションの配備要求を発行する。具体的には、CPU432は、ステップ1023で取得したIPアドレスに該当するサーバIDのサーバ上で稼動するアプリケーション実行プログラム151Bへ、当該アプリケーションの配備要求または強制配備要求を発行する。
ステップ1025では、CPU432は、配備対象(強制配備も含む)のアプリケーションのアプリケーションIDと、インストール用ファイルと、負荷の閾値とを送信する。この送信は、ステップ1023で取得したIPアドレスに該当するサーバ上で稼動するアプリケーション実行プログラム151Bに行う。具体的には、本プログラムへの入力値として指定されたアプリケーションID、ステップ1021で取得したデータの格納場所に保存されているアーカイブファイル・インストールプログラム、アプリケーションの起動や停止の手順が書かれているアプリケーション起動・停止手順ファイル、ステップ1022で選択した閾値を送信する。
ステップ1026では、CPU432は、図4に示したアプリケーション配備状態テーブル421上のアプリケーションIDのカラムの値、および配備先サーバIDのカラムの値が、それぞれ本プログラムへの入力値として指定されたアプリケーションID、およびステップ1010、もしくはステップ1018でワークエリア409に保存したサーバIDと一致するレコードが存在するか否かを判断する。そして、前記のレコードが存在する場合(1026のYes)には、ステップ1010、もしくはステップ1018でワークエリア409に保存したサーバIDを戻り値として、本プログラムの呼び出し元に返し、本プログラムを終了する。他方、前記レコードが存在しない場合(1026のNo)には、ステップ1027に進む。
ステップ1027では、CPU432は、配備対象のアプリケーションIDのレコードを追加する。具体的には、CPU432は、アプリケーションID、および配備先サーバIDのカラムの値が、それぞれ本プログラムへの入力値として指定されたアプリケーションID、およびステップ1010、もしくはステップ1018でワークエリア409に保存したサーバIDであるレコードを追加する。
ステップ1028では、CPU432は、配備対象のアプリケーションのレコードを更新する。具体的には、CPU432は、ステップ1027で、アプリケーション配備状態テーブル421へ追加したレコードのアプリケーションの状態のカラムの値を「待機中」にする。また、CPU432は、ステップ1010、もしくはステップ1018でワークエリア409に保存したサーバIDを戻り値として、本プログラムの呼び出し元に返し、本プログラムを終了する。
次に、図1に示したサーバA上のサーバ性能情報収集プログラム153Aの処理手順を図11を示すフローチャートに従って説明する。ここでは、図1に示したサーバAに実装されているCPUが動作を行うが、サーバB,C上のサーバ性能情報収集プログラム153B,153Cも同様である。
ステップ1101では、サーバ性能情報収集要求を受け付けたか否かを判断し、受け付けていない場合(No)は、ステップ1101を繰り返し、受け付けた場合(Yes)は、ステップ1102に進む。
ステップ1102では、サーバAのCPU利用率(性能情報)を、当該サーバ上のOSに収集を依頼し、その結果を取得する。
ステップ1103では、ステップ1102で取得したCPU利用率(性能情報)を、運用制御装置105上のアプリケーション配備プログラム404へ返送する。
次に、図1に示したサーバA上のアプリケーション実行プログラム151Aの処理手順を図12に示すフローチャートに従って説明する。なお、サーバB,C上のアプリケーション実行プログラム151B,151Cについても同様である。
ステップ1201では、クライアント群や図1に示した運用制御装置105からのリクエストを監視すると共に、運用制御装置105からコマンドを受信して、そのコマンドがアプリケーションの配備要求の場合(1201の配備要求)にはステップ1202に進む。他方、そのコマンドがアプリケーションの削除要求の場合(1201の削除要求)には、ステップ1209に進む。また、ステップ1201において、運用制御装置105から受信したコマンドが、配備要求や削除要求以外のその他のコマンドの場合(1201のその他)にはステップ1201を継続する。
ステップ1202では、アプリケーションの配備要求元のプログラムに対し、配備要求されたアプリケーションに関する情報、すなわちアプリケーションID、アプリケーションのインストールに必要なアーカイブファイル、インストールプログラム、アプリケーション起動・停止手順ファイル、および図3に示した閾値の送信を要求する。そして、それぞれの情報を受信している間は(1202のNo)、図示しないローカルディスクに書き込み、他方、これらの情報の受信が終了した場合(1202のYes)には、ステップ1203に進む。
ステップ1203では、ステップ1202で受信したアプリケーションのインストールに必要なアーカイブファイルなどを図示しないメモリ等の適切な場所に展開する。
ステップ1204では、ステップ1202で受信したインストールプログラムまたは、OS付属のインストールプログラムを実行し、ステップ1202で受信したアプリケーションのインストールを実施する。このようにして配備対象アプリケーションのインストールプログラムを実行する。
ステップ1205では、ステップ1202で受信した情報に含まれるアプリケーション起動・停止手順ファイルに書かれている手順に従い、図示しないアプリケーション起動プログラムを実行する。
ステップ1206では、閾値テーブル154Aにレコードを追加し、アプリケーションIDのカラム、および閾値のカラムに、ステップ1202で受信したアプリケーションID、および閾値を書き込む。
ステップ1207では、アプリケーション監視プログラム152Aへ、ステップ1202で受信したアプリケーションIDに該当するアプリケーションの稼動状況の監視を要求する。
ステップ1208では、図1に示した運用制御装置105上のアプリケーション配備プログラム404にアプリケーションの配備が完了したことを通知する。以上でアプリケーション実行プログラム151Aにおけるアプリケーション配備要求を受けた場合の処理が終了し、ステップ1201へ戻る。
ステップ1209では、アプリケーション監視プログラム152Aに対し、ステップ1201で受信したコマンドであるアプリケーション削除要求の引数として指定されたアプリケーションIDを渡して、アプリケーションの稼動状況の監視停止を要求する。
ステップ1210では、アプリケーション起動・停止手順ファイルに書かれている手順に従い、ステップ1201で受信したコマンドであるアプリケーション削除要求の引数として指定されたアプリケーションIDに該当するアプリケーション停止プログラムを実行する。つまり、削除対象のアプリケーションの実行を停止する。
ステップ1211では、アプリケーション起動・停止手順ファイルに書かれている手順に従い、ステップ1201で受信したコマンドであるアプリケーション削除要求の引数として指定されたアプリケーションIDに該当するアプリケーションのアンインストールプログラムを実行する。つまり、削除対象のアプリケーションのアンインストールを行う。
ステップ1212では、閾値テーブル154Aから、アプリケーションIDのカラムの値が、ステップ1201で受信したコマンドであるアプリケーション削除要求の引数として指定されたアプリケーションIDと一致するレコードを検索し、検索にヒットしたレコードを削除する。
ステップ1213では、図1に示した運用制御装置105上の図4に示したアプリケーション事前配備制御プログラム405にアプリケーションの削除が完了したことを示すメッセージを通知する。以上でアプリケーション実行プログラム151Aにおけるアプリケーション削除要求を受けた場合の処理が終了し、ステップ1201へ戻る。
なお、図1に示したアプリケーション監視プログラム152Aは、図1に示したアプリケーション実行プログラム151Aのアプリケーション監視要求に応じて、アプリケーションのレスポンスタイムを測定するためのURLに定期的にリクエストを投げる。そして、前記リクエストに対するレスポンスを受け取るまでの時間を計測する。
そして、前記計測された値、もしくは前記計測された値の数回分の平均値が、閾値テーブル154A上の閾値を超えたか否かを定期的に判断し、閾値を超えた場合、運用制御装置105上の図1に示したイベント受信プログラム401へ、負荷増大通知と、負荷が閾値を超えたアプリケーションのアプリケーションID、および本プログラムが実行されているサーバAのサーバIDを送信する。
次に、図4に示したリクエスト分配制御プログラム406の処理手順を図13に示すフローチャートに従って説明する。リクエスト分配制御プログラム406は、サーバ上に配備されているアプリケーションへ、クライアント(例えばクライアントA)からのリクエストの分配を開始するため、分配先アプリケーションのアプリケーションID(例えば「D」)、およびその分配先アプリケーションが配備されているサーバのサーバID(例えば「B」)を入力値として起動される。
ステップ1301では、分配先アプリケーションが配備されているサーバのIPアドレスを取得する。具体的には、図4に示したサーバIPアドレス管理テーブル422から、サーバIDのカラムの値が、本プログラムへの入力値として指定されたサーバIDと一致するレコードを検索し、検索にヒットしたレコードのIPアドレスのカラムの値を取得する。
ステップ1302では、図1に示した負荷分散装置103上のリクエスト分配先設定プログラム161へ、負荷分散装置103の設定変更要求を発行し、当該コマンドの引数として、本プログラムへの入力値として指定されたアプリケーションIDと、ステップ1301で取得したサーバのIPアドレスを送信する。
ステップ1303では、図4に示したアプリケーション配備状態テーブル421上の、アプリケーションIDのカラムの値、および配備先サーバIDのカラムの値が、それぞれ本プログラムへの入力値として指定されたアプリケーションID、およびサーバIDであるレコードを検索し、検索にヒットしたレコードのアプリケーションの状態のカラムの値を「稼動中」に更新する。
次に、図1に示した負荷分散装置103のリクエスト分配先設定プログラム161の処理手順を、図14に示したフローチャートに従って説明する。
ステップ1401では、負荷分散装置103の設定変更要求を受け付けたか否かを判断し、受け付けていない場合(No)は、それを受け付けるまでステップ1401を繰り返し、他方、それを受け付けた場合(Yes)はステップ1402に進む。
ステップ1402では、図1に示したリクエスト分配先情報管理テーブル162上の、アプリケーションIDのカラム、および配備先IPアドレスのカラムに、それぞれ、ステップ1401で受信した、アプリケーションID、サーバのIPアドレスを書き込む。
ステップ1403では、負荷分散装置103の設定変更要求の要求元であるリクエスト分配制御プログラム406へ、設定変更完了メッセージを返送する。
次に、アプリケーション事前配備制御プログラム405の処理手順を図15Aおよび図15Bに示すフローチャートに従って説明する。アプリケーション事前配備制御プログラム405は、負荷テスト対象サーバのサーバIDを入力値として起動される。また、本実施形態では、負荷テスト対象サーバ上で複数のアプリケーションが稼動する場合、全てのアプリケーションについて、配備時間の新しい順に負荷テストを実施する場合について説明するが、どのような順番で実施しても構わない。
ステップ1501では、負荷テスト対象のサーバに配備されている全てのアプリケーションIDを取得する。具体的には、アプリケーション配備状態テーブル421から、配備先サーバIDのカラムの値が、本プログラムへの入力値として指定されたサーバIDと一致するレコードを検索する。そして、その検索にヒットした全てのレコードのアプリケーションIDのカラムの値、およびアプリケーション配備時間のカラムの値を取得する。また、そのアプリケーションIDの値と、そのアプリケーションIDに対応するアプリケーション配備時間の値とを対応付けてワークエリア409に保存する。
ステップ1502では、配備時間が最新のアプリケーションを選択する。具体的には、ステップ1501で図4に示したワークエリア409に保存したアプリケーション配備時間の値の中で最新の時刻を示している値に対応付けられているアプリケーションIDを取得し、これを選択する。この取得したアプリケーションIDのアプリケーションが、負荷テスト対象になる。
ステップ1503では、まず、図4に示したアプリケーション配備状態テーブル421から、アプリケーションIDのカラムの値、および配備先サーバIDのカラムの値が、ステップ1502で選択したアプリケーションのアプリケーションID、および本プログラムへの入力値として指定されたサーバIDと一致するレコードを検索する。そして、その検索にヒットしたレコードのアプリケーションの状態のカラムの値を取得する。次に、取得した値が「強制配備中」であるか否かを判断し、「強制配備中」であれば(1503のYes)、ステップ1515に進み、他方、「強制配備中」でなければ(1503のNo)、ステップ1504に進む。
ステップ1504では、ステップ1502で選択したアプリケーションのアプリケーションID、および本プログラムへの入力値として指定されたサーバIDを入力値として負荷テスト実行プログラム407を起動する。これにより、負荷テスト対象のアプリケーションの負荷テストが開始される。なお、負荷テストの結果は、不合格アプリケーション情報411に記憶される。
ステップ1505では、図4に示した負荷テスト対象サーバ情報410にデータが存在するか否かを判断し、データが存在しなければ(No)、負荷テストが終了していると判断し、図15Aのステップ1506,1507および図15Bのステップ1508〜1514までの事前配備等の処理を行わず、図15Bのステップ1515に進む。他方、負荷テスト対象サーバ情報410にデータが存在する場合(1505のYes)には、ステップ1506に進む。
ステップ1506では、図4に示した負荷テスト不合格アプリケーション情報411にデータが存在するか否かを判断し、データが存在しない場合(No)にはステップ1505に戻る。他方、負荷テスト不合格アプリケーション情報411にデータが存在する場合(Yes)には、ステップ1507に進む。なお、不合格アプリケーション情報411に存在したデータは、不合格の結果を得たアプリケーションのアプリケーションIDのことであり、これは、負荷テスト実施中に入力値として指定されたサーバIDに該当するサーバから、イベント受信プログラム401へ負荷増大通知がきたときに、負荷テスト不合格アプリケーション情報411に記憶される。
ステップ1507では、図4に示した負荷テスト強制終了フラグ412をONに更新する。これにより、負荷テスト実行プログラムに、負荷テスト終了の指示を伝える。
次に、図15Bのステップ1508について説明する。このステップ1508では、図4に示したアプリケーション配備状態テーブル421上の、アプリケーションIDのカラムの値、および配備先サーバIDのカラムの値が、それぞれ図4に示した負荷テスト不合格アプリケーション情報411に書かれているアプリケーションID、および本プログラムへの入力値として指定されたサーバIDと一致するレコードを検索する。そして、その検索にヒットしたレコードのアプリケーションの状態のカラムの値が「待機中」であるか否かを判断する。つまり、負荷が閾値を超えたアプリケーションが事前配備のアプリケーションか否かを判断する。そして、その判断の結果、「待機中」でない場合(1508のNo)には、ステップ1512に進み、「待機中」であった場合(1508のYes)は、ステップ1509に進む。
ステップ1509では、図4に示したサーバIPアドレス管理テーブル422上のサーバIDのカラムの値が、本プログラムへの入力値として指定されたサーバIDと一致するレコードを検索し、検索にヒットしたレコードのサーバIPアドレスのカラムの値を取得する。
ステップ1510では、ステップ1509で取得したIPアドレスに該当するサーバ上のアプリケーション実行プログラムに、アプリケーション削除要求と、当該コマンドの引数として、負荷テスト不合格アプリケーション情報411に書かれているアプリケーションIDとを送信する。このようにして、負荷が閾値を超えたアプリケーションの削除を要求する。
ステップ1511では、図4に示したアプリケーション配備状態テーブル421上の、アプリケーションIDのカラムの値、および配備先サーバIDのカラムの値が、それぞれ負荷テスト不合格アプリケーション情報411に書かれている負荷テストの結果が不合格であったことを示すアプリケーションID、および本プログラムへの入力値として指定されたサーバIDと一致するレコードを検索する。そして、その検索にヒットしたレコード上のアプリケーションの状態の値を「削除済」に更新する。このようにして、負荷が閾値を超えたアプリケーションの状態を「削除済」に更新する。
ステップ1512では、図4に示した負荷テスト不合格アプリケーション情報411に書かれているアプリケーションIDを入力値として、図4に示したアプリケーション配備プログラム404を起動し、前記プログラムの戻り値としてサーバIDを取得する。これにより、負荷が閾値を超えたアプリケーションが事前配備される。また、前記戻り値は、図4に示した負荷テスト不合格アプリケーション情報411に書かれているアプリケーションIDに該当するアプリケーションについての事前配備先サーバのサーバIDである。
ステップ1513では、図4に示した負荷テスト不合格アプリケーション情報411からデータ、すなわちアプリケーションIDを削除する。
ステップ1514では、ステップ1512で起動したアプリケーション配備プログラムの入力値となったサーバIDを入力値として、図4に示したアプリケーション事前配備制御プログラム405を再帰的に呼び出す。これにより、事前配備先サーバの負荷テストを実施し、必要に応じた事前配備(強制配備を含む)と、事前配備に伴う負荷テストが繰り返し行われる。
ステップ1515では、ステップ1501でワークエリア409に保存した配備時間群を参照し、全てのアプリケーションに対する処理が終了したかどうかを判断する。具体的には、15Aのステップ1502において取得したアプリケーションIDに対応付けられているアプリケーション配備時間の次に新しい配備時間が対応付けられているアプリケーションIDが存在しないかどうかを判断する。
そして、対応付けられているアプリケーション配備時間が存在する場合(1515のNo)は、ステップ1516に進み、他方、存在しない場合(1515のYes)は、本プログラムを終了する。
ステップ1516では、図15Aのステップ1501でワークエリア409に保存した配備時間群の中で、ステップ1502で選択したアプリケーションIDのアプリケーション配備時間に対応付けられているアプリケーションの次に新しい配備時間に対応付けられているアプリケーションIDを取得し、ステップ1503に戻る。この取得したアプリケーションIDに該当するアプリケーションが、次の負荷テスト対象になる。
また、本実施形態では、このアプリケーション事前配備制御プログラム405の処理終了後、図4に示したアプリケーション配備状態テーブル421は更新されずに図4に示した運用制御プログラム403の処理が終了する。このため、次に、運用制御プログラム403が起動する際、図4に示したアプリケーション配備状態テーブル421上の、前回のアプリケーション事前配備制御プログラム405によるアプリケーションの削除履歴が引き継がれることになるが、アプリケーション事前配備制御プログラム405の処理終了ごとに、運用制御プログラム403によってアプリケーション配備状態テーブル421上の、アプリケーションの状態が「削除済」であるレコード全てを削除するようにしてもよい。
次に、図4に示した負荷テスト実行プログラム407の処理手順を図16に示すフローチャートに従って説明する。負荷テスト実行プログラム407は、負荷テスト対象サーバのサーバID、および負荷テスト対象アプリケーションのアプリケーションIDを入力値として起動する。
ステップ1601では、図4に示した負荷テスト設定情報テーブル423(図7参照)から、アプリケーションIDのカラムの値が、本プログラムへの入力値として指定されたアプリケーションIDと一致するレコードを検索する。そして、その検索にヒットしたレコードの、負荷テスト用URL(雛形)のカラムの値、リクエスト送信頻度のカラムの値、および負荷テスト最大継続時間のカラムの値を取得する。
ステップ1602では、図4に示したサーバIPアドレス管理テーブル422(図6参照)から、サーバIDのカラムの値が、本プログラムへの入力値として指定されたサーバIDと一致するレコードを検索し、検索にヒットしたレコードのIPアドレスのカラムの値、すなわちテスト対象サーバのIPアドレスを取得する。
ステップ1603では、ステップ1601で取得した負荷テスト用URL(雛形)と、ステップ1602で取得したIPアドレスとを用いて負荷テスト用URLを取得する。
ステップ1604では、図4に示した負荷テスト対象サーバ情報410に本プログラムへの入力値であるサーバIDを書き込む。
ステップ1605では、負荷テストの開始時間である現在の時刻を取得し、次のステップ1606では、設定されたリクエスト送信頻度に合わせてリクエストを送信するために、現在の時間を取得する。この現在の時間は、リクエストを送信するためのタイミング計算用として利用される。
ステップ1607では、図4に示した負荷テスト強制終了フラグ412を参照して強制終了フラグがONであるかOFFであるかを判断し、負荷テスト強制終了フラグ412がONであった場合は(ON)、ステップ1611に進む。他方、負荷テスト強制終了フラグ412がOFFであった場合(1607のOFF)は、ステップ1608に進む。
ステップ1608では、ステップ1605で取得した負荷テスト開始時間から、ステップ1601で取得した負荷テスト最大継続時間を経過したかを判断し、経過していない場合(No)はステップ1609に進み、他方、経過している場合(1608のYes)は、ステップ1612に進む。
ステップ1609では、ステップ1606で取得した時間と、ステップ1601で取得したリクエスト送信頻度をもとに、リクエストを送信すべき時間か否かの判断を繰り返し行う(No)。他方、その時間になった場合(1609のYes)は、ステップ1610に進む。
ステップ1610では、ステップ1603で取得した負荷テスト用URLにリクエストを送信し、ステップ1606に戻る。
ステップ1611では、図4に示した負荷テスト強制終了フラグ412をOFFに更新する。
ステップ1612では、図4に示した負荷テスト対象サーバ情報410のデータを削除し、本プログラムの処理を終了する。
次に、イベント受信プログラム401の処理手順を図17に示すフローチャートに従って説明する。イベント受信プログラム401は、オペレータの事前準備の際に起動する。
ステップ1701では、あるサーバから負荷増大通知を受信したか否かを判断し、受信していなければ(No)、受信するまで繰り返す。そして、負荷増大通知を受信したら(1701のYes)、負荷増大通知とともに、送信されてきたサーバIDおよびアプリケーションIDをワークエリア409に保存し、ステップ1702に進む。ここでいうサーバIDは、負荷増大通知の通知元サーバのサーバIDであり、アプリケーションIDは、負荷が閾値を超えたことを検知されたアプリケーションのアプリケーションIDである。
ステップ1702では、図4に示した負荷テスト対象サーバ情報410を参照し、それにデータがあるか否か、すなわち負荷テストが実施されているサーバのサーバIDが存在するか否かを判断する。そして、その判断の結果、負荷テスト対象サーバ情報410にデータが存在しない場合(1702のNo)は、ステップ1705に進み、他方、存在する場合(1702のYes)は、ステップ1703に進む。
ステップ1703では、負荷テスト対象サーバ情報410に書かれているサーバIDと、ステップ1701でワークエリア409に保存したサーバIDとが一致するか否かを判断する。つまり、負荷増大通知を行ったサーバと、負荷テスト対象となっているサーバが同じであるか否かを判断する。そして、その判断の結果、一致する場合(1703のYes)はステップ1704に進み、他方、一致しない場合(1703のNo)は、ステップ1705に進む。
ステップ1704では、図4に示した負荷テスト不合格アプリケーション情報411に、ステップ1703で一致したアプリケーションID、すなわち、負荷が閾値を超えたアプリケーションのIDを書き込み、ステップ1701に戻る。
ステップ1705では、図4に示した負荷分散制御プログラム402に、ステップ1701でワークエリア409に保存したサーバID、およびアプリケーションIDを入力値として渡して、負荷分散制御プログラム402が起動し、ステップ1701に戻る。また、存在したアプリケーションIDを書き込み、ステップ1701に戻る。
次に、負荷分散制御プログラム402の処理手順を図18に示すフローチャートに従って説明する。負荷分散制御プログラム402は、負荷増大通知元サーバのサーバID、および負荷が閾値を超えたアプリケーションのアプリケーションIDを入力値として起動する。
ステップ1801では、アプリケーションが事前配備されているか否かを判断する。具体的には、図4に示したアプリケーション配備状態テーブル421上のアプリケーションIDのカラムの値が、本プログラムへの入力値として指定されたアプリケーションIDと一致し、さらにアプリケーションの状態のカラムの値が、「待機中」であるレコードを検索する。そして、その検索にヒットするレコードが存在するか否か、すなわち負荷が閾値を超えたアプリケーションが、負荷増大通知元サーバ以外のサーバに事前配備されているか否かを判断する。
そして、その判断の結果、前記検索にヒットしたレコードが存在する場合、すなわち事前配備されている場合(1801のYes)には、検索にヒットしたレコード上の配備先サーバIDのカラムの値を取得し、ステップ1802に進む。他方、存在しない場合、すなわち事前配備されていない場合(1801のNo)は、ステップ1803に進む。
ステップ1802では、図4に示したリクエスト分配制御プログラム406に、ステップ1801で取得したサーバID、および本プログラムへの入力値として指定されアプリケーションIDを入力値として渡して、リクエスト分配制御プログラム406が起動し、本プログラムを終了する。
ステップ1803では、図4に示したアプリケーション配備プログラム404に、本プログラムへの入力値として指定されたアプリケーションIDを入力値として渡して、アプリケーション配備プログラム404が起動し、戻り値としてサーバIDを受け取る。これにより、負荷が閾値を超えたアプリケーションIDのアプリケーションを、そのアプリケーションが配備されていないサーバに配備する。
ステップ1804では、図4に示したリクエスト分配制御プログラム406に、本プログラムへの入力値として指定されたアプリケーションID、およびステップ1803で起動したアプリケーション配備プログラム404の戻り値であるサーバIDを入力値として渡して、リクエスト分配制御プログラム406が起動し、本プログラムを終了する。
次に、前記した運用制御装置105やサーバA〜Cにおけるアプリケーション分配制御の全体的な処理手順を説明する。ここでは、サーバA,B,C上でアプリケーションA,B,Cがそれぞれ稼動している状況において、新規なアプリケーションDをサーバAに配備する場合を例に説明する。なお、アプリケーションA〜Dは、アプリケーションIDがそれぞれA〜Dであることを示している。
まず、アプリケーションDをサーバAに新規に配備し、その後、そのアプリケーションDへのリクエスト分配開始までの処理の流れを図19Aに基づいて説明する。
図4に示した運用制御プログラム403が、オペレータの操作により起動されると、図4に示したアプリケーション配備プログラム404が起動する。ここでは、図4に示したCPU432がアプリケーション配備プログラム404を読み出して実行するものとする。
アプリケーション配備プログラム404は、各サーバA〜CのCPU利用率を取得し、その時点で最もCPU利用率の低いサーバ(例えばサーバA)にアプリケーションDを新規に配備する(同図(1))。そして、アプリケーション配備状態テーブル421に、アプリケーションIDのカラムの値がD、配備先サーバIDのカラムの値がAであるレコードを追加する(同図(2))。このとき、追加したレコードのアプリケーションの状態のカラムの値を「待機中」にする。
次に、運用制御プログラム403は、リクエスト分配制御プログラム406を起動する。リクエスト分配制御プログラム406は、負荷分散装置103の設定を変更して、サーバA上に配備されたアプリケーションDへのリクエスト分配を開始する(同図(3))。そして、アプリケーション配備状態テーブル421上の同図(2)で追加したレコードのアプリケーションの状態のカラムの値を「稼動中」に更新する(同図(4))。
次に、運用制御装置105のCPU432が、負荷テスト実行プログラム407を用いて負荷テストを実施し、事前配備を行う。この処理の流れを図19Bに基づいて説明する。まず、運用制御プログラム403は、アプリケーションDの新規配備先サーバAを負荷テスト対象サーバに指定して、図4に示したアプリケーション事前配備制御プログラム405を起動する。
アプリケーション事前配備制御プログラム405は、アプリケーション配備状態テーブル421を参照し、サーバA上に配備されているアプリケーションの中で、最も配備時間が新しいアプリケーションDを負荷テスト対象に指定し、負荷テスト実行プログラム407を起動する。そして、アプリケーションDの負荷テストを開始する(同図(5))。負荷テスト実行プログラム407は、負荷テストを開始すると、図4に示した負荷テスト対象サーバ情報410に負荷テスト対象サーバAのサーバID(「A」)を書き込む。
図4に示したイベント受信プログラム401が、負荷テスト実施中であるサーバA上のアプリケーションDの負荷増大通知を受信する(同図(6))。負荷テストの結果、アプリケーションDの負荷(レスポンスタイム)は、予め設定された閾値を超えたものとする。そして、図4に示した負荷テスト不合格アプリケーション情報411に負荷が閾値を超えたアプリケーションのアプリケーションID(「A」)を書き込む。
次に、アプリケーション事前配備制御プログラム405は、負荷テスト不合格アプリケーション情報411にデータが存在することを検知し、負荷テスト強制終了フラグ412をONにし、負荷テストを終了させる。次に、アプリケーション事前配備制御プログラム405は、負荷テストに不合格であったアプリケーションIDのアプリケーションを、サーバA以外の他のサーバに事前配備するため、アプリケーション配備プログラム404を起動する。
アプリケーション配備プログラム404は、他のサーバのCPU利用率を取得し、その時点でCPU利用率の最も低いサーバBに、アプリケーションDを事前配備する(同図(7))。そして、アプリケーション配備状態テーブル421に、アプリケーションIDのカラムの値がD、配備先サーバIDのカラムの値がBであるレコードを追加し、そのレコードのアプリケーションの状態のカラムの値を「待機中」とする(同図(8))。
事前配備終了後、アプリケーション事前配備制御プログラム405は、事前配備先サーバBを負荷テスト対象サーバとしてアプリケーション事前配備制御プログラム405を再帰的に呼び出す。再帰的に呼び出されたアプリケーション事前配備制御プログラム405は、まず、サーバB上の事前配備アプリケーションDの負荷テストを実施する(同図(9))。
そして、その負荷テストの結果、アプリケーションDの負荷(レスポンスタイム)は、予め設定された閾値を超えなかったものとすると、イベント受信プログラム401は、前記の負荷テスト実施中に負荷増大通知を受信しないため、サーバB上のアプリケーションD以外のアプリケーションBの負荷テストを実施する(同図(10))。そして、この負荷テストの結果、例えば、アプリケーションBの負荷(レスポンスタイム)が、予め設定された閾値を超えなかった場合、イベント受信プログラム401は、アプリケーションBの負荷テスト実施中に負荷増大通知を受信しないため、再帰的に呼び出されたアプリケーション事前配備制御プログラム405は処理を終了する。そして、呼び出し元のアプリケーション事前配備制御プログラム405に戻る。
呼び出し元のアプリケーション事前配備制御プログラム405は、サーバA上で、まだ負荷テストを実施しないで、かつアプリケーションの状態が「強制配備中」でないアプリケーションAの負荷テストを実施する(同図(11))。
この負荷テストの結果、例えば、アプリケーションAの負荷(レスポンスタイム)が、予め設定された閾値を超えなかった場合、イベント受信プログラム401は、負荷テスト実施中に負荷増大通知を受信しないため、サーバA上の強制配備ではない全てのアプリケーションの負荷テストが終了する。そして、アプリケーション事前配備制御プログラム405が終了する。
このように、負荷テストに不合格となったアプリケーション(本例ではアプリケーションD)のみ事前配備が行われるため、無駄な計算機資源の使用を抑えながら、アプリケーションへの急激な負荷増大への対処の準備が可能となる。
次に、例えば、クライアントからのリクエストが集中したことにより、アプリケーションDの負荷が閾値を超えた場合の処理の流れを図19Cに基づいて説明する。ここでの「クライアント」とは、例えば、図1に示したクライアント群を指しており、以下同じ意味で用いる。
サーバA上で稼動中のアプリケーションDに対するクライアントからのリクエストが集中した場合(同図(12))、サーバA上のアプリケーションDの負荷増大通知をイベント受信プログラム401が受信する(同図(13))。イベント受信プログラム401は、負荷テストが終了して負荷テスト対象サーバ情報410にデータが存在しないため、すなわち、どのサーバでも負荷テストが実施されていないため、負荷増大通知元サーバのサーバID(「A」)、および負荷が閾値を超えたアプリケーションのアプリケーションID(「D」)を入力として負荷分散制御プログラム402を起動する。
負荷分散制御プログラム402は、まず、アプリケーション配備状態テーブル421を参照し、アプリケーションDがサーバBに事前配備されていることを検出する(同図(14))。次に、サーバB上に事前配備されているアプリケーションDへのリクエスト分配を開始するため、図4に示したリクエスト分配制御プログラム406を起動する。リクエスト分配制御プログラム406は、負荷分散装置103の設定を変更してサーバB上のアプリケーションDへのリクエストの分配を開始させる(同図(15))。
そして、サーバB上のアプリケーションDが稼動すると、アプリケーションDへのリクエストが、2台のサーバA,B間で分散される(同図(16))。そして、アプリケーション配備状態テーブル211上のアプリケーションIDのカラムの値がD、配備先サーバIDのカラムの値がBであるレコード上のアプリケーションの状態を「待機中」から「稼動中」に更新する(同図(17))。
このように、アプリケーションDは事前配備済みであったため、アプリケーションの配備や起動等の処理に時間を要することなく、負荷分散装置103の設定変更のみで、アプリケーションDへのリクエストを処理するサーバを追加することができる。
[第2実施形態]
本発明の第2実施形態について説明する。
図20は、第2実施形態の運用制御装置105の構成を示すブロック図である。なお、第1実施形態と同一部分には同一符号を付して重複説明を省略する。
図20では、運用制御プログラム2001およびアプリケーション事前配備制御プログラム2002が、第1実施形態の場合と処理手順が異なっている。また、テスト実施状況管理テーブル2003および負荷テストスケジュール管理テーブル2004が、第1実施形態の場合と異なり追加されている。その他の運用制御装置105を含む全体システムの構成は第1実施形態と同様である。
まず、テスト実施状況管理テーブル2003の構成例を図21に基づいて説明する。
テスト実施状況管理テーブル2003には、サーバID、およびテスト実施状況が格納されている。テスト実施状況とは、負荷テストの実施の有無を指し、ここでは「テスト済み」と「テスト未実施」の2つの状態がある。「テスト済み」は、サーバA〜Cのテストが済んだ状態を表し、「テスト未実施」はサーバのテストが未実施であることを表す。このように構成することにより、運用管理装置105が管理しているサーバA〜Cの負荷テストの実施状況を管理することが可能となる。
次に、負荷テストスケジュール管理テーブル2004の構成例を図22に基づいて説明する。
負荷テストスケジュール管理テーブル2004には、負荷テスト実施時刻が格納されている。負荷テスト実施時刻は、負荷テストを実施する時刻を指し、先頭レコードから時間順に格納されている。
次に、アプリケーション事前配備制御プログラム2002の処理手順を図23Aおよび図23Bに基づいて説明する。アプリケーション事前配備制御プログラム2002は、負荷テスト対象のサーバのサーバIDを入力値として起動される。
このアプリケーション事前配備制御プログラム2002の処理手順では、図15Aおよび図15Bに示したステップ1501〜1516に、ステップ2301〜ステップ2304を追加した点が図15Aおよび図15Bの場合と異なる。そこで以下では、ステップ2301〜2304について説明する。
図23Aのステップ2301では、アプリケーション配備状態テーブル421上のアプリケーションIDのカラムの値が、ステップ1502で選択したアプリケーションのアプリケーションIDと一致するレコードを検索する。そして、その検索にヒットしたレコードのうち、アプリケーションの状態のカラムの値が「待機中」であるレコードが存在するか否か、すなわち、他のサーバへ事前配備されているか否かを判断する。
そして、その判断の結果、前記レコードが存在し、他のサーバへ事前配備されている場合(2301のYes)には、図23Bのステップ1515に進む。他方、存在せず、他のサーバへ事前配備されていない場合(2301のNo)には、ステップ1504に進む。これにより、ステップ1502で負荷テスト対象に選択したアプリケーションが、他のサーバへ事前配備されているか否かを判断し、その判断の結果、事前配備されているサーバが存在する場合は、前記アプリケーションについての負荷テストを実施しないことになる。
次に、図23Bのステップ2302では、アプリケーション配備状態テーブル421(図5参照)上のアプリケーションIDのカラムの値が、負荷テスト不合格アプリケーション情報411に書かれているアプリケーションIDと一致するレコードを検索する。そして、その検索にヒットしたレコードのうち、アプリケーションの状態のカラムの値が「待機中」であるレコードが存在するか否かを判断する。
そして、その判断の結果、前記レコードが存在し、他のサーバへ事前配備されていると判断された場合(2302のYes)には、ステップ2303に進む。他方、存在せず、事前配備されていないと判断された場合(2302のNo)には、ステップ1512に進む。ここで、前記したレコードが存在する場合というのは、負荷テスト対象となっているアプリケーションの負荷テスト中に、当該サーバに配備されている負荷テスト対象アプリケーション以外のアプリケーションの負荷が閾値を超え、かつ当該アプリケーションが、当該アプリケーションが配備されているサーバ以外のサーバへ事前配備されている場合を意味する。このような場合、事前配備は行わない。
ステップ2303では、負荷テスト不合格アプリケーション情報411からデータを削除する。
ステップ2304では、テスト実施状況管理テーブル2003上で、負荷テスト対象サーバのサーバIDのレコードのテスト実施状況のカラムの値を「テスト済み」に更新する。
ここで、オペレータが行う事前準備を説明する。オペレータは、第1実施形態における事前準備に加え、テスト実施状況管理テーブル2003に、サーバIDのカラムに各サーバID、テスト実施状況のカラムの値を、全て「テスト未実施」に設定する。そして、負荷テストスケジュール管理テーブル2004に負荷テストを実施する時刻を時間順に設定する。
次に、運用制御プログラム2001の処理手順を図24に基づいて説明する。運用制御プログラム2001は、オペレータの操作により起動される。
ステップ2401では、負荷テストスケジュール管理テーブル2004にレコードが存在するか否かを判断することにより、全てのスケジュールが終了したか否かを判断する。そして、レコードが存在し、全てのスケジュールが終了していないと判断された場合(2401のNo)は、ステップ2402に進む。他方、レコードが存在せず、全てのスケジュールが終了していると判断された場合(2401のYes)には、本プログラムを終了する。
ステップ2402では、負荷テストスケジュール管理テーブル2004の先頭レコードの負荷テスト実施時刻のカラムの値を取得する。つまり、次に負荷テストを実施する時刻を取得する。
ステップ2403では、テスト実施状況管理テーブル2003の先頭レコードのサーバIDのカラムの値を取得してそのサーバを選択し、ワークエリア409に保存する。
ステップ2404では、現在の時刻を取得し、それがステップ2402で取得した時刻と一致するか否かを判断することにより、負荷テスト実施時間になったか否かを判断する。そして、その判断の結果、双方の時刻が一致せず、負荷テスト実施時間になっていないと判断した場合(2404のNo)は、ステップ2404を繰り返す。他方、双方の時刻が一致して、負荷テスト実施時間になったと判断した場合(2404のYes)は、2005に進む。
ステップ2405では、アプリケーション事前配備制御プログラム2002に、ステップ2403でワークエリアに保存したサーバIDを入力値として渡して、アプリケーション事前配備制御プログラム2002が起動する。アプリケーション事前配備制御プログラム2002は、指定されたサーバIDに該当するサーバの負荷テストを実施して、テスト実施状況管理テーブル2003上のテスト実施状況のカラムの値を「テスト済み」に更新する。ただし、負荷テストの結果に応じて事前配備を行い、サーバA〜Cのうち、事前配備先に選択されたサーバの負荷テストを実施するため、テスト実施状況管理テーブル2003の二つ以上のレコードを更新する場合もある。
ステップ2406では、全てのサーバA〜Cの負荷テストが終了したか否かを判断する。具体的には、テスト実施状況管理テーブル2003上のテスト実施状況のカラムの値が「テスト未実施」であるレコードを検索する。そして、その検索にヒットしたレコードが存在し、全てのサーバの負荷テストが終了していないと判断された場合(2406のNo)は、ステップ2407に進む。他方、レコードが存在せず、全てのサーバの負荷テストが終了したと判断された場合(2407のYes)には、ステップ2408に進む。
ステップ2407では、テスト実施状況管理テーブル2003上のテスト実施状況のカラムの値が「テスト未実施」であるレコードを検索する。そして、その検索にヒットした全てのレコードの中から任意に一つを選択し、前記レコードのサーバIDのカラムの値を取得し、ステップ2403で保存したワークエリア409へ上書きしてステップ2405に戻る。
ステップ2408では、テスト実施状況管理テーブル2003上の全てのテスト実施状況のカラムの値を初期化、すなわち「テスト未実施」に更新する。
ステップ2409では、負荷テストスケジュール管理テーブル2004の先頭レコードを削除し、ステップ2401に戻る。
このように、スケジュールに従って負荷テストを行い、運用状況に合わせてアプリケーションを事前配備することも可能である。
[第3実施形態]
本発明の第3実施形態について説明する。
図25は、第3実施形態の運用制御装置105の機能構成を示すブロック図である。なお、第1実施形態と同一部分には同一符号を付して重複説明を省略する。
図25では、アプリケーション事前配備制御プログラム2501が、第1実施形態の場合と処理が異なっている。その他の運用制御装置105を含む全体システムの構成は第1実施形態と同様である。
次に、アプリケーション事前配備制御プログラム2501の処理手順を図26Aおよび図26Bに基づいて説明する。アプリケーション事前配備制御プログラム2501の処理手順は、図15Aおよび図15Bに示したステップ1501〜1516に、ステップ2601〜ステップ2604を追加した点が、図15Aおよび図15Bと異なる。そこで以下に、ステップ2601〜2604を中心に説明する。
図26Aのステップ1505において、負荷テスト中に負荷テスト対象アプリケーションの負荷増大通知を受信しなかったため、負荷テスト対象サーバ情報410にデータが存在しなかった場合(1505のNO)、ステップ2601に進む。
ステップ2601では、アプリケーション配備状態テーブル421上のアプリケーションIDのカラムの値が、ステップ1502で選択したアプリケーションのアプリケーションIDと一致し、さらにアプリケーションの状態のカラムの値が、「待機中」であるレコードが存在するか否かを判断する。つまり、他のサーバに事前配備されているかどうかを判断する。
そして、その判断の結果、他のサーバに事前配備されていると判断した場合(2601のYes)には、前記レコードの配備先サーバIDのカラムの値を取得してステップ2602に進み、他方、事前配備されていないと判断した場合(2601のNo)には、図26Bのステップ1515に進む。
ステップ2602では、事前配備されているサーバのIPアドレスを取得する。具体的には、サーバIPアドレス管理テーブル422上のサーバIDのカラムの値が、ステップ2601で事前配備されていると判断されたサーバのサーバIDと一致するレコードを検索する。そして、その検索にヒットしたレコードのIPアドレスのカラムの値を取得する。
ステップ2603では、事前配備アプリケーションの削除を要求する。具体的には、ステップ2602で取得したIPアドレスに該当するサーバ上のアプリケーション実行プログラムに、アプリケーション削除要求コマンドと、当該コマンドの引数としてステップ1502で選択したアプリケーションのアプリケーションIDとを送信する。
ステップ2604では、アプリケーション配備状態テーブル421上の配備先サーバIDのカラムの値、およびアプリケーションIDのカラムの値が、それぞれステップ2201で取得したサーバID、およびステップ1502で選択したアプリケーションIDと一致するレコードを検索する。そして、その検索にヒットしたレコードを削除し、図26Bのステップ1515に進む。
このように、事前配備されているアプリケーションを適宜削除することによって、計算機資源を有効に活用することができる。
なお、本発明は、前記した実施形態に限られない。例えば、本実施形態は、事前配備を行う否かの判断をするアプリケーションの負荷の閾値と、事前配備されているアプリケーションの削除を行うか否かを判断するアプリケーションの負荷の閾値とが同一である場合について説明したが、それぞれの閾値を異なる値に設定し(例えば、事前配備を行うか否かを判断する閾値はレスポンスタイム5.0秒とし、削除を行うか否かを判断するための閾値はレスポンスタイム6.0秒と設定する。)、適用するようにしてもよい。
また、CPU利用率に基づいて、アプリケーションを配備するサーバを選択することとして説明したが、例えば、メモリの使用率やディスクIOの速度に基づいてサーバを選択してもよい。さらに、それらの異なる基準を組み合わせて、サーバを選択してもよい。
また、ネットワーク環境下にあるサーバにより負荷テストを行うことにより、新規配備または事前配備(強制配備を含む)を行う場合について説明したが、ネットワーク環境下にないコンピュータに負荷テストを行って、その結果、負荷が最も低いコンピュータにアプリケーションを新規配備または事前配備(強制配備を含む)するようにしてもよい。
さらに、運用制御装置105を含むシステム全体の構成およびデータ構成は、本発明の趣旨を逸脱しない限り、種々の変更が可能である。例えば、複数のコンピュータを用いて分散することにより、運用制御装置105を構築するようにしてもよい。また、運用制御装置105と負荷分散装置103とを1台のコンピュータで構築するようにしてもよい。
第1実施形態のクライアントサーバシステムの全体構成図である。 図1に示したリクエスト分配先情報管理テーブルの構成例を示す図である。 図1に示した閾値テーブルの構成例を示す図である。 図1に示した運用制御装置の構成を示すブロック図である。 図4に示したアプリケーション配備状態テーブルの構成例を示す図である。 図4に示したサーバIPアドレス管理テーブルの構成例を示す図である。 図4に示した負荷テスト設定情報テーブルの構成例を示す図である。 図4に示したアプリケーション格納場所管理テーブルの構成例を示す図である。 図4に示した運用制御プログラムの処理手順を示すフローチャートである。 図4に示したアプリケーション配備プログラムの処理手順を示すフローチャートである。 図4に示したアプリケーション配備プログラムの処理手順を示すフローチャートである。 図4に示したアプリケーション配備プログラムの処理手順を示すフローチャートである。 図1に示したサーバ性能情報収集プログラムの処理手順を示すフローチャートである。 図1に示したアプリケーション実行プログラムの処理手順を示すフローチャートである。 図4に示したリクエスト分配制御プログラムの処理手順を示すフローチャートである。 図1に示したリクエスト分配先設定プログラムの処理手順を示すフローチャートである。 図4に示したアプリケーション事前配備制御プログラムの処理手順を示すフローチャートである。 図4に示したアプリケーション事前配備制御プログラムの処理手順を示すフローチャートである。 図4に示した負荷テスト実行プログラムの処理手順を示すフローチャートである。 図4に示したイベント受信プログラムの処理手順を示すフローチャートである。 図4に示した負荷分散制御プログラムの処理手順を示すフローチャートである。 第1実施形態のアプリケーション分配制御の全体的な処理手順を示すフローチャートである。 第1実施形態のアプリケーション分配制御の全体的な処理手順を示すフローチャートである。 第1実施形態のアプリケーション分配制御の全体的な処理手順を示すフローチャートである。 第2実施形態の運用制御装置の構成を示すブロック図である。 図20に示したテスト実施状況管理テーブルの構成例を示す図である。 図20に示した負荷テストスケジュール管理テーブルの構成例を示す図である。 図20に示したアプリケーション事前配備制御プログラムの処理手順を示すフローチャートである。 図20に示したアプリケーション事前配備制御プログラムの処理手順を示すフローチャートである。 図20に示した運用制御プログラムの処理手順を示すフローチャートである。 第3実施形態の運用制御装置の構成を示すブロック図である。 図25に示したアプリケーション事前配備制御プログラムの処理手順を示すフローチャートである。 図25に示したアプリケーション事前配備制御プログラムの処理手順を示すフローチャートである。
符号の説明
101A〜101C・・・クライアント、102・・・ネットワーク1、103・・・負荷分散装置、104A〜104C・・・サーバ、105・・・運用制御装置、106・・・ネットワーク2、151A〜151C・・・アプリケーション実行プログラム、152A〜152C・・・アプリケーション監視プログラム、153A〜153C・・・サーバ性能情報収集プログラム、154A〜154C・・・閾値テーブル、161・・・リクエスト分配先設定プログラム、162・・・リクエスト分配先情報管理テーブル、163・・・負荷分散プログラム、431・・・通信制御装置、432・・・中央演算装置、433・・・ディスプレイ、434・・・キーボード、435・・・CD−ROMドライブ装置、436・・・システムバス、400・・・1次記憶装置、401・・・イベント受信プログラム、402・・・負荷分散制御プログラム、403・・・運用制御プログラム、404・・・アプリケーション配備プログラム、405・・・アプリケーション事前配備制御プログラム、406・・・リクエスト分配制御プログラム、407・・・負荷テスト実行プログラム、408・・・システムプログラム、409・・・ワークエリア、410・・・負荷テスト対象サーバ情報、411・・・負荷テスト不合格アプリケーション情報、412・・・負荷テスト強制終了フラグ、421・・・アプリケーション配備状態テーブル、422・・・サーバIPアドレス管理テーブル、423・・・負荷テスト設定情報テーブル、424・・・アプリケーション格納場所管理テーブル

Claims (8)

  1. クライアントからのアプリケーションへの要求に従って複数のサーバ間で負荷分散制御を行うアプリケーション運用制御システムにおけるアプリケーション運用制御方法であって、
    前記アプリケーション運用制御システムに用いられる運用制御装置は、前記アプリケーションを記憶する記憶装置と、前記アプリケーションの配備を制御する処理装置とを備え、
    前記処理装置は、
    前記複数のサーバのうちの所定のサーバに配備または事前配備されている特定のアプリケーションに対して、テスト用のリクエストを送信させる負荷テストを実行し、前記負荷テストで不合格となった場合、当該アプリケーションに対するテスト用のリクエストの送信を停止させて負荷テストを停止し、当該アプリケーションを記憶装置から読み出して、前記複数のサーバのうちの他のサーバに事前配備し、稼動待機中とする負荷テストステップと、
    前記負荷テストステップを実行中の前記所定のサーバ以外のサーバから負荷増大通知を受け付けたとき、前記事前配備した稼動待機中のアプリケーションを、前記事前配備したサーバ上で稼動させる稼動ステップと、
    を実行することを特徴とするアプリケーション運用制御方法。
  2. 前記処理装置は、前記負荷テストで不合格となったアプリケーションを前記他のサーバに事前配備した後に、前記事前配備先のサーバに対して、前記負荷テストステップを再帰的に実行させること
    を特徴とする請求項1に記載のアプリケーション運用制御方法。
  3. 前記処理装置は、前記負荷テストステップを実行する前記所定のサーバに配備または事前配備されている複数のアプリケーションについて、配備された時間が早いアプリケーションから順に、特定のアプリケーションとして負荷テストを実施すること
    を特徴とする請求項1または請求項2に記載のアプリケーション運用制御方法。
  4. 前記処理装置は、前記負荷テストステップを実行する前記所定のサーバに対して、アプリケーションが配備または事前配備されたタイミングで、負荷テストを実施すること
    を特徴とする請求項3に記載のアプリケーション運用制御方法。
  5. クライアントからのアプリケーションへの要求に従って複数のサーバ間で負荷分散制御を行うアプリケーション運用制御システムであって、
    前記アプリケーション運用制御システムに用いられる運用制御装置は、前記アプリケーションを記憶する記憶装置と、前記アプリケーションの配備を制御する処理装置とを備え、
    前記処理装置は、
    前記複数のサーバのうちの所定のサーバに配備または事前配備されている特定のアプリケーションに対して、テスト用のリクエストを送信させる負荷テストを実行し、前記負荷テストで不合格となった場合、当該アプリケーションに対するテスト用のリクエストの送信を停止させて負荷テストを停止し、当該アプリケーションを記憶装置から読み出して、前記複数のサーバのうちの他のサーバに事前配備し、稼動待機中とする負荷テストステップと、
    前記負荷テストステップを実行中の前記所定のサーバ以外のサーバから負荷増大通知を受け付けたとき、前記事前配備した稼動待機中のアプリケーションを、前記事前配備したサーバ上で稼動させる稼動ステップと、
    を実行することを特徴とするアプリケーション運用制御システム。
  6. 前記処理装置は、前記負荷テストで不合格となったアプリケーションを前記他のサーバに事前配備した後に、前記事前配備先のサーバに対して、前記負荷テストステップを再帰的に実行させること
    を特徴とする請求項5に記載のアプリケーション運用制御システム。
  7. 前記処理装置は、前記負荷テストステップを実行する前記所定のサーバに配備または事前配備されている複数のアプリケーションについて、配備された時間が早いアプリケーションから順に、特定のアプリケーションとして負荷テストを実施すること
    を特徴とする請求項5または請求項6に記載のアプリケーション運用制御システム。
  8. 前記処理装置は、前記負荷テストステップを実行する前記所定のサーバに対して、アプリケーションが配備または事前配備されたタイミングで、負荷テストを実施すること
    を特徴とする請求項7に記載のアプリケーション運用制御システム。
JP2004377746A 2004-12-27 2004-12-27 アプリケーション運用制御方法およびシステム Expired - Fee Related JP4189379B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004377746A JP4189379B2 (ja) 2004-12-27 2004-12-27 アプリケーション運用制御方法およびシステム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004377746A JP4189379B2 (ja) 2004-12-27 2004-12-27 アプリケーション運用制御方法およびシステム

Publications (2)

Publication Number Publication Date
JP2006185152A JP2006185152A (ja) 2006-07-13
JP4189379B2 true JP4189379B2 (ja) 2008-12-03

Family

ID=36738227

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004377746A Expired - Fee Related JP4189379B2 (ja) 2004-12-27 2004-12-27 アプリケーション運用制御方法およびシステム

Country Status (1)

Country Link
JP (1) JP4189379B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4751265B2 (ja) * 2006-08-01 2011-08-17 株式会社日立製作所 リソース管理システム及びその方法
CN102027725A (zh) * 2008-05-15 2011-04-20 朗讯科技公司 Diameter应用的端到端过载控制方法和网络单元
JP5195913B2 (ja) * 2008-07-22 2013-05-15 トヨタ自動車株式会社 マルチコアシステム、車両用電子制御ユニット、タスク切り替え方法
JP5884595B2 (ja) * 2012-03-29 2016-03-15 富士通株式会社 メッセージ通信方法,メッセージ通信プログラムおよびコンピュータ
JP5933118B2 (ja) * 2013-04-24 2016-06-08 三菱電機株式会社 試験装置及び試験方法及びプログラム
JP6221761B2 (ja) * 2014-01-16 2017-11-01 日本電気株式会社 アプリケーション配備システム、アプリケーション配備方法及びそのプログラム
EP3125468B1 (en) * 2014-04-23 2019-01-02 Huawei Technologies Co., Ltd. Cloud application processing method and application deployment method and relevant apparatus and system

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10260851A (ja) * 1997-03-21 1998-09-29 Toshiba Corp クライアントサーバシステムならびに同システムにおけるサーバの割り付け方法、及び同システムにおけるサーバ負荷の制御方法
JP2000250878A (ja) * 1999-02-25 2000-09-14 Nec Corp 負荷分散システム
JP2002183106A (ja) * 2000-12-11 2002-06-28 Hitachi Ltd サービス切替システム及び方法
JP2002342296A (ja) * 2001-05-17 2002-11-29 Nec Corp ネットワークシステム
US20020178254A1 (en) * 2001-05-23 2002-11-28 International Business Machines Corporation Dynamic deployment of services in a computing network

Also Published As

Publication number Publication date
JP2006185152A (ja) 2006-07-13

Similar Documents

Publication Publication Date Title
US7933995B2 (en) Computer program and apparatus for controlling computing resources, and distributed processing system
US8584127B2 (en) Storage medium storing job management program, information processing apparatus, and job management method
US9244731B2 (en) Migration management apparatus and migration management method
JP6963168B2 (ja) 情報処理装置、メモリ制御方法およびメモリ制御プログラム
JP5285353B2 (ja) 複数のサービス構成要素に対応するアクションの実行を管理するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
US8191069B2 (en) Method of monitoring performance of virtual computer and apparatus using the method
US20090313630A1 (en) Computer program, apparatus, and method for software modification management
US10635473B2 (en) Setting support program, setting support method, and setting support device
JP5239075B2 (ja) 複数のサービスステップを含むサービスプロセスを管理するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
JP2009519523A (ja) 仮想データ・センタ複合体内のターゲット仮想オペレーティング・システムのパフォーマンスをモニタするための方法、システム、およびコンピュータ・プログラム
JP6246923B2 (ja) 管理サーバ、計算機システム及び方法
WO2010050524A1 (ja) バッチジョブを管理するためのコンピュータ・システム、並びにその方法及びコンピュータ・プログラム
JP4479284B2 (ja) 計算機システムのモニタリングを設定する管理計算機及びシステム
CN106789308B (zh) 一种微服务架构可自动伸缩的gis服务装置及其控制方法
JPH10301760A (ja) ソフトウェア自動配布管理システム及び方法
JP4189379B2 (ja) アプリケーション運用制御方法およびシステム
US20080295103A1 (en) Distributed processing method
JPWO2007108062A1 (ja) サーバ管理方法、プログラム及び装置
JP5660986B2 (ja) データ処理システム及びデータ処理方法及びプログラム
JP4700104B2 (ja) サーバ管理方法、プログラム及び装置
JP4232606B2 (ja) ファイル配信システム、クライアントプログラム、クライアント、サーバプログラム、サーバ、及び方法
JP6568232B2 (ja) 計算機システム、及び、装置の管理方法
JP2008217299A (ja) ジョブネット実行システムおよびジョブネット実行方法
JP2010009555A (ja) 情報処理装置及びプログラム
JP2006344025A (ja) 稼動性能データ取得方法、性能監視サーバ、業務サーバ、計算機及びコンピューティングシステム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060728

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080515

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080527

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080728

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080909

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080912

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110919

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120919

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120919

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130919

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees