JP2012212462A - アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム - Google Patents
アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム Download PDFInfo
- Publication number
- JP2012212462A JP2012212462A JP2012148803A JP2012148803A JP2012212462A JP 2012212462 A JP2012212462 A JP 2012212462A JP 2012148803 A JP2012148803 A JP 2012148803A JP 2012148803 A JP2012148803 A JP 2012148803A JP 2012212462 A JP2012212462 A JP 2012212462A
- Authority
- JP
- Japan
- Prior art keywords
- application
- web application
- web
- processing
- request
- 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.)
- Pending
Links
Images
Abstract
【課題】リークしたリソースを含む実行環境の一部を解放することで、障害の発生を抑止しつつ、実行環境の一部がまだメモリ等に残っていることによりCold Cacheによって発生する性能低下を最小限に抑える。
【解決手段】処理要求を受け付ける第1のアプリケーションApp1と第2のアプリケーションApp2を入れ替えるアプリケーションの高可用制御方法であって、第1のアプリケーションApp1を起動して、処理要求を第1のアプリケーションApp1へ転送する手順と、所定の条件を満たしたときには、第2のアプリケーションApp2を起動し、新たな処理要求を第2のアプリケーションApp2へ転送する手順と、第2のアプリケーションApp2が起動した後に、前記第1のアプリケーションApp1で前記処理要求を完了すると、当該第1のアプリケーションApp1を終了する手順と、を含む。
【選択図】図40
【解決手段】処理要求を受け付ける第1のアプリケーションApp1と第2のアプリケーションApp2を入れ替えるアプリケーションの高可用制御方法であって、第1のアプリケーションApp1を起動して、処理要求を第1のアプリケーションApp1へ転送する手順と、所定の条件を満たしたときには、第2のアプリケーションApp2を起動し、新たな処理要求を第2のアプリケーションApp2へ転送する手順と、第2のアプリケーションApp2が起動した後に、前記第1のアプリケーションApp1で前記処理要求を完了すると、当該第1のアプリケーションApp1を終了する手順と、を含む。
【選択図】図40
Description
本発明は、インターネットなどのネットワーク上でアプリケーションサービスを実行するアプリケーションサーバの運用方法の改良に関する。
近年情報システムはありとあらゆるところに使用され、情報システムに障害が発生するとその影響は非常に大きく、社会問題となっている。情報システムはサーバやストレージなどのハードウェアと、OSやアプリケーションなどのソフトウェアに分けられる。ハードウェア障害に対しては、ディスクや電源の二重化や、複数のサーバを用いたクラスタ構成により、障害が発生してもそれを隠蔽する技術が普及している。ソフトウェアの障害は、主にバグに起因する。OSは通常長い年月をかけてバグフィックスが行われており、バグによる障害発生は少ない。一方、アプリケーションはWeb技術の進歩により、Webアプリケーションとして実装する場合が増えている。こうしたWebアプリケーションを使用し、インターネットなどのネットワーク上でアプリケーションサービスを提供するWebサイトでは、Webサイト間の競争が激化しており、各Webサイトとも顧客の嗜好に合わせ迅速な機能修正や追加に追われている。迅速な機能の修正や追加は、すなわち開発とテストを限られた時間内で行うことを意味しており、必ずしも十分なテストができるとは限らない。従って、実際に顧客にサービスを提供する実運用を開始した後のWebアプリケーションにおいても、バグが残っている可能性が高く、それらのバグがシステムに障害を起し、サービスが停止する可能性がある。従って、情報システムの信頼性向上には、Webアプリケーションの信頼性向上が重要な課題となっている。前述の通り、Webアプリケーションの障害は、主にWebアプリケーションのバグに起因している。しかし、開発工数の制限などにより100%バグを根絶することは不可能であると考えられる。従って、Webアプリケーションにバグが存在していても極力サービスを継続させることのできる運用方法に注目が集まっている。
上記バグによってWebアプリケーションが停止または異常の要因としては、メモリリークを代表とするリソースリークが知られている。
バグによって発生した障害の多くはWebアプリケーションを再起動することで一時的に解決することが知られていることから、Webアプリケーションを運営するサイトの中には、定期的にWebアプリケーションを再起動して障害を未然に防ぐ手法が知られている。
しかし、上記の手法では一時的にアプリケーションサービスを中断することになってしまう。このため、アプリケーションサービスを継続しながらアプリケーションのリソースリークを防止するものとして、アプリケーションサーバをクラスタ構成として、所定時間ごとにフェールオーバを実行し、旧現用系のOSやアプリケーションをリセット(再起動)することで、リソースリークによるアプリケーションの停止を未然に防ぐ技術が知られている(例えば、特許文献1)。
あるいは、アプリケーションの実行中に、同一のアプリケーションを他のメモリ空間で新たに起動し、現在提供中のアプリケーションサービスを新たに起動したアプリケーションに移行させる技術が知られている(例えば、特許文献2)。
また、新たに起動したアプリケーションを使用する際の性能低下を抑制する技術として、新しいアプリケーションに対する処理要求の量を初めは少量とし、時間の経過と共に増やして行く技術が知られている(例えば、特許文献3)。
しかしながら、上記特許文献1と2では、現用系のアプリケーションから新たに起動したアプリケーションへ移行する際に、現用系のアプリケーションを終了してから、新たに起動した代替系のアプリケーションへ移行することになる。この現用系から代替系アプリケーションへの切替の際に、アプリケーションサービスが一時中断すると共に、アプリケーションの処理能力は一時的に低下するという問題がある。
また、特許文献1では、現在提供中のアプリケーションサービスで使用しているアプリケーション、OS、ハードウェアとはまったく異なる新規インスタンスのアプリケーション、OS,ハードウェアで運用を継続することになる。また、特許文献2では、従来サービスを提供していたアプリケーションと異なる新規のアプリケーションで運用を継続する。このため、新しく起動した代替系アプリケーションに切り替わった直後は、サーバのCPUのキャッシュメモリやディスクキャッシュなど、計算機上の各種のキャッシュに、アプリケーション実行に必要な情報が存在せず、キャッシュミスが頻発し、アプリケーションの実行性能が低下するという問題がある。このようにキャッシュに必要な情報が存在しない状態をCold状態と呼ぶ。
このキャッシュのCold状態の問題に対し、特許文献3では、新しく起動したアプリケーションに対する処理要求を最初は少なくし、時間と共に増加させていく事で、Cold状態のキャッシュを序所に暖め、ヒット率を向上する。これによって、代替系のアプリケーションを新規に起動した場合でも性能の低下をほとんど起こさないようにできる。しかし、この場合は、現用系から代替系アプリケーションへの移行に時間がかかり、場合によっては現用系アプリケーションで空きメモリが枯渇し、障害が発生する可能性がある。
そこで、アプリケーション全体を新規に起動した代替系のアプリケーションに入れ替えて、現用系アプリケーションを破棄し、メモリを解放するのではなく、リークしたリソースを含むアプリケーションの「一部」を解放するために、アプリケーションの一部を新規に起動して代替系とし、障害の発生を抑止しつつ、実行環境の一部がまだCPUのキャッシュメモリ等に残っていることによりキャッシュミス率の増加を抑え、性能低下を最小限に抑えることが課題である。
本発明のアプリケーションはWebアプリケーションとする。Webアプリケーションは、JAVA(登録商標) Virtual Machine(JVM)やJVMの上で動作するアプリケーションサーバ等のミドルウェア上で動作する。従来のアプリケーションは、OS上で動作することから、Webアプリケーションにおけるアプリケーションとは、JVMやアプリケーションサーバを含む概念と言える。しかし、JVMやアプリケーションサーバはソフトウェアベンダが提供するミドルウェアであり、出荷前に十分にデバッグ等がなされ、リソースリークのような不良はほとんど無いと言える。一方、Webアプリケーションは、上述のようにリソースリーク等のソフトウェアバグを含む可能性がある。そこで、Webアプリケーションのみを代替系のWebアプリケーションに入れ替える。すなわち本発明は、処理要求を受け付ける第1のWebアプリケーションと第2のWebアプリケーションを入れ替えるアプリケーションの高可用制御方法であって、前記第1のWebアプリケーションをアプリケーションサーバに配備した状態で、前記処理要求を第1のWebアプリケーションへ転送する手順と、所定の条件を満たしたときには、前記第2のWebアプリケーションを起動し、新たな処理要求を当該第2のWebアプリケーションへ転送する手順と、前記第2のWebアプリケーションが起動した後に、前記第1のWebアプリケーションで前記処理要求を完了すると、当該第1のWebアプリケーションを終了する手順と、を含む。
また、予め設定したアプリケーションから識別子の異なる前記第1のWebアプリケーションと、前記第2のWebアプリケーションを生成する。
したがって、本発明は、既に実行していた第1のWebアプリケーションを終了する際に、第1のWebアプリケーションが使用していたリークしたメモリを解放することができ、メモリリークによるWebアプリケーションの障害発生を予防することができる。さらに、Webアプリケーションのみを第二のWebアプリケーションに入れ替え、JVMやアプリケーションサーバは入れ替えずにそのまま使用し続けるため、CPUやディスクキャッシュ等にJVMやアプリケーションサーバのコードを残すことができるので、第2のWebアプリケーションへ入れ替えた直後のキャッシュヒット率の低下が少なく、性能の劣化を抑制することが可能となる。
さらに、第1のWebアプリケーションから第2のWebアプリケーションへの入れ替えを、処理要求の受け付けを停止することなく実行できるので、計算機システムの処理能力を低下させることなく円滑な入れ替えを実現できる。
以下、本発明の一実施形態を添付図面に基づいて説明する。
図1は、本発明を適用する計算機システムの構成図である。アプリケーションサービスを提供するWebサイト1は、ネットワーク2を介してクライアント3に接続されている。Webサイト1は、クライアント3から処理の実行要求を受け付けると、Web層、アプリケーション層及びデータベース層の3つの階層からなるWeb3階層アプリケーション(ビジネスシステム)によって所定の処理(例えば、ビジネスロジック)を実行し、実行結果をクライアント3へ送信する。
Web層は、クライアント3のWebブラウザが送信したHTTPによる処理要求を受け付けるWebサーバ計算機(以下、Webサーバとする)4が複数配置される。データベース層は、データや管理情報などを管理するデータベース管理システム(以下、DBMS)を実行するデータベースサーバ計算機6が複数配置される。そして、アプリケーション層は、Webサーバ4が受け付けた処理要求に対して、データベースサーバ計算機6からデータを取得し、取得したデータに所定の加工などを行ってWebサーバ4へ応答するアプリケーションサーバ計算機5を複数備える。
なお、Webサーバ4、アプリケーションサーバ計算機5及びデータベースサーバ計算機6は、図示はしないが、CPU、メモリ、ストレージ装置を備えるもので、各サーバ計算機はネットワークを介して相互に接続される。このネットワークには、各サーバ4〜6を制御するための管理端末7が接続される。管理端末7は、CPU、メモリ、ストレージ装置、及び表示装置を備え、管理者からの操作を受け付けて各サーバ4〜6へ指令することができる。
図2は、Web3階層アプリケーション(業務システム)の各層のソフトウェア構成を示すブロック図である。
Webサーバ4は、CPUやメモリ及びストレージ装置からなるハードウェア41上でオペレーティングシステム(以下、OS)42を実行する。そして、OS42上では、Webサーバ43が実行されており、このWebサーバ43は静的なコンテンツ44と、アプリケーションサーバ計算機5から送られてきた動的なコンテンツをクライアント3に提供する。
アプリケーションサーバ計算機5は、CPUやメモリ及びストレージ装置からなるハードウェア51上でOS52を実行する。そして、OS52上では、第1のミドルウェアとしてJAVA(登録商標)仮想マシン53が実行されており、このJAVA(登録商標)仮想マシン53上で第2のミドルウェアとしてアプリケーションサーバ54が実行される。アプリケーションサーバ54は、Webサーバ43が受け付けた処理要求に応じたWebアプリケーション55を実行する。Webアプリケーション55は、所定のビジネスロジックなどを処理し、データベースサーバ計算機6のデータベースサーバ63に対してデータの読み書きを要求し、取得したデータに所定の処理を施してからWebサーバ43に転送する。Webサーバ43はアプリケーションサーバ54から処理要求に対する応答を受信するとクライアント3が要求した処理の実行結果をクライアント3へ送信する。
データベースサーバ計算機6は、CPUやメモリ及びストレージ装置からなるハードウェア61上でOS62を実行する。そして、OS62上では、データベースサーバ63が実行されており、このデータベースサーバ63はWebアプリケーション55から要求されたデータについてデータベース64で読み書きを実行する。
なお、上記図1、図2において、Web層、アプリケーション層、データベース層は異なる計算機で実行される例を示したが、これら3つの層が同一の計算機で実行されても良い。あるいは、Web層とアプリケーション層が統合されたものであってもよい。また、Web層、アプリケーション層、データベース層の各サーバ4〜6は、ファイルシステムを備えたメモリ及びストレージ装置に接続されており、ファイルやデータなどを格納する。
図3は、アプリケーションサーバ54の機能を示すブロック図である。図3では、アプリケーションサーバ54がWebサーバ4からアプリケーションAppを実行する処理要求を受け付けた例を示している。アプリケーションサーバ54は、アプリケーションサーバ計算機5に接続されたストレージ装置またはメモリのファイルシステム56から、管理者の指示に従ってWebアプリケーションApp.earファイルを読み込んで、このファイルApp.earから2つのWebアプリケーションApp1.earと、WebアプリケーションApp2.earを生成する。そしてアプリケーションサーバ54は、後述するように実行するWebアプリケーションApp1からWebアプリケーションApp2へ入れ替えることで、リソースの解放を実行する。この際に、WebアプリケーションApp1とApp2は同じOS上のJVM上のアプリケーションサーバに配備されており、従って、OSやJVMやアプリケーションサーバのコードはWebアプリケーションの入れ替え時もCPUなどのキャッシュに残り、従って従来技術でアプリケーション全体を起動して入れ替える場合と比べて、キャッシュミスの影響を最小化して性能低下を抑制できると共に、リソースリークによる障害の発生を予防することができる。
次に、アプリケーションサーバ54の機能要素について説明する。
アプリケーションマネージャ541は、サービスを提供するWebアプリケーション55のオリジナルであるWebアプリケーションのファイルApp.earから、現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.ear及びリクエストスイッチ544(App.war)をメモリまたは記憶装置上のファイルシステム56上に生成する。なお、現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.earは、図2に示したWebアプリケーション55として機能する。また、リクエストスイッチApp.warは、図中リクエストスイッチ544として機能する。以下の説明では、Webアプリケーション55を現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.earとして説明する。
リクエストスイッチ544は、ファイルシステム56上でApp.warとして生成されるもので、Webサーバ4からの処理要求を現用系WebアプリケーションApp1.earに転送する。そしてリクエストスイッチ544は、後述するリプレースマネージャ543から所定の指令があった場合は、Webサーバ4からの処理要求を代替系WebアプリケーションApp2.earへ転送するように切り替える処理を実行する。
デプロイア548は、前記従来例と同様にWebアプリケーション(App1、App2)をアプリケーションサーバ54に配備(デプロイ)したり、配備解除(アンデプロイ)する。配備解除の際には、配備済みアプリケーションが使用していたメモリ領域は未使用状態となり、その後発生するゴミ集め処理(ガーベージコレクション処理)により、回収されて、再利用可能となる。
Nデプロイア545は、前記デプロイア548とは異なり、現用系Webアプリケーションと代替系Webアプリケーションの間でセッション情報を共有するために、セッション共有モードで現用系や代替系のWebアプリケーションを配備する。
リプレースマネージャ543は、後述するように現用系WebアプリケーションApp1と代替系WebアプリケーションApp2の入れ替えを制御する。
デプロイツール547は、後述するように管理者が使用する管理端末7へのユーザインターフェースとWebアプリケーションの配備などの操作を実現する。
状態保持部(State Store)546は、実行するアプリケーションのセッション情報等の状態を保持する。現用系WebアプリケーションApp1から代替系WebアプリケーションApp2に入れ替えられたとき、App1で使用していた状態はApp2でも使用できないと処理ができない。そこで、State Storeは、後述するように、現用系と代替系Webアプリケーションの間でセッション情報の共有を実現している。
図3のメモリ上のファイルシステム56は、ひとつのWebアプリケーション55のオリジナルApp.earから現用系WebアプリケーションApp1と代替系WebアプリケーションApp2及びリクエストスイッチ544を生成した例を示す。なお、図3においては、代替系WebアプリケーションApp2がひとつの例を示すが、アプリケーションマネージャ541は複数の代替系WebアプリケーションApp2〜nを生成することができ、これら複数の代替系WebアプリケーションApp2〜nに対応するリクエストスイッチ544(App.war)を生成することができる。
図4は、デプロイツール547の機能の一例を示すブロック図である。
デプロイツール547は、管理端末7にアプリケーションサーバ54で実行するWebアプリケーション55の入れ替えに関連する情報の提供と、入れ替えに関する指令の受付を行うユーザインターフェース5472と、ユーザインターフェース5472が受け付けた指令を実行するコントローラ5471を備える。ユーザインターフェース5472は、後述の図5、図6のようにデプロイ操作画面とアプリケーションリスト画面を提供する。
図5は、ユーザインターフェース5472が管理端末7に提供するデプロイ操作画面1601の一例を示す説明図である。
デプロイ操作画面1601に示すファイルパス1602には、オリジナルのWebアプリケーションのファイル名が格納される。なお、このファイルの指定は管理者などが設定する。デプロイボタン1603は、ファイルパス1602で指定したオリジナルWebアプリケーション55をデプロイ(配備)する。
リプレースチェックボックス1604は、ファイルパス1602で指定したオリジナルのアプリケーションApp.earから、リクエストスイッチApp.warや現用系WebアプリケーションApp1.earや代替系WebアプリケーションApp2.earを生成し、現用系WebアプリケーションApp1.earから代替系WebアプリケーションApp2.earへ入れ替え(リプレース)を行うか否かを設定する。図示のように、リプレースチェックボックス1604をチェックすることで、リプレースの実施を指令することができる。なお、この指令はリプレースマネージャ543に対して行われる。
リプレース条件1605は、現用系WebアプリケーションApp1.earから代替系WebアプリケーションApp2.earへの入れ替え条件の種類と、入れ替え条件の値を設定することができる。図示の例では、入力されたインターバル(秒)1606または空きヒープ(JAVA(登録商標)仮想マシンのヒープメモリ領域のうちの空き容量を指定)1607のいずれかのチェックボックスにチェックを入れ、入力欄に入れ替え条件の値を設定する。図示の例では、リプレースの条件の種類としてインターバル(時間間隔)が選択され、600秒の値が設定された場合を示している。これら各設定値は、後述するリプレースマネージャ543へ格納され、Webアプリケーション55は、現用系WebアプリケーションApp1.earが実行を開始してから600秒を経過すると、後述するように代替系WebアプリケーションApp2.earへ入れ替えられる。上述のリプレース条件は、インターバルと空きヒープ以外の条件であっても良い。
上記デプロイ操作画面1601の各設定は、リプレースマネージャ543の入れ替え条件テーブル5430(図27参照)へ格納される。
図6は、ユーザインターフェース5472が管理端末7へ提供するアプリケーションリスト画面611の一例を示す説明図である。管理端末7で表示するアプリケーションリスト画面611には、現在、アプリケーションサーバ54で操作可能なWebアプリケーション55の状態が表示され、これらのWebアプリケーション55の開始、停止、アンデプロイ(配備解除)を制御することができる。
コンテキスト612には、ファイルパス1602で指定されたアプリケーションのコンテキスト名が表示される。ファイル名613には、ファイルパス1602で指定されたアプリケーションのファイル名が拡張子とともに表示される。
状態614は、アプリケーションの実行状態が表示され、「run」は実行中を示し、「stop」は停止中を示している。
リプレース状態615は、「on」であれば現用系Webアプリケーションから代替系Webアプリケーションへの入れ替えを行うことを意味し、「off」の場合には、入れ替えしない。開始ボタン616は、メモリ上にデプロイ(配備)したWebアプリケーション55の開始を指令し、停止ボタン617は実行中のWebアプリケーション55の停止を指令する。アンデプロイボタン618は、実行を停止したWebアプリケーション55をメモリからアンデプロイ(配備解除)する。
コンテキスト612、ファイル名613、状態614、リプレース状態615は、コントローラ5471に記録された設定情報と実行情報をユーザインターフェース5472に提供したものである。
図7は、デプロイツール547のコントローラ5471で実行されるデプロイ処理の一例を示すフローチャートである。
この処理は、管理者などが管理端末7で図5のデプロイ操作画面1601を表示し、ファイルパス1602等を入力してから、デプロイボタン1603をクリックした場合に実行される。
S1では、リプレースチェックボックス1604がチェックされているかを判断する。リプレースチェックボックス1604がチェックされている場合にはS2に進み、チェックされていない場合にはS5へ進む。
S2では、コントローラ5471がアプリケーションマネージャ541を起動し、デプロイ操作画面1601のファイルパス1602に入力されたWebアプリケーション55のオリジナルであるWebアプリケーションApp.earを読み込んで、現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.ear及びリクエストスイッチApp.warを生成する。なお、これらアプリケーションやリクエストスイッチの生成については後述する。
S3では、コントローラ5471がNデプロイア545を起動して、上記生成した現用系WebアプリケーションApp1.earをメモリ上に配備する。このとき、Nデプロイア545は、現用系WebアプリケーションApp1.earをセッション共有モードでメモリ上に配備する。なお、セッション共有モードは、現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.earの間でセッション情報を共有するモードである。
S4では、コントローラ5471がデプロイア548に上記生成したリクエストスイッチApp.warをメモリ上に配備させ、処理を終了する。
上記S1の判定で、リプレースチェックボックス1604がチェックされていないS5では、Webアプリケーション55を単体で実行させればよいので、コントローラ5471がデプロイア548を起動してWebアプリケーション55のオリジナルである実行アプリケーションApp.earを配備させる。
図8は、デプロイツール547のコントローラ5471で実行されるアプリケーションの開始処理の一例を示すフローチャートである。
この処理は、管理者が管理端末7で図6のアプリケーションリスト画面611を表示し、選択したコンテキスト612に対応する開始ボタン616をクリックした場合に実行される。
S11では、図5のデプロイ操作画面1601で入力されるリプレースチェックボックス1604がチェックされているかを判断する。リプレースチェックボックス1604がチェックされていればS12へ進む一方、チェックされていなければS15に進む。
S12では、コントローラ5471が、図6のアプリケーションリスト画面611で操作された開始ボタン616に対応するWebアプリケーション55(App1.ear)の設定情報に従い、リプレース条件1605をリプレースマネージャ543に設定する。リプレースマネージャ543は取得したリプレース条件1605をリプレース対象のWebアプリケーション55(App1.ear)に対応付けて設定する。
S13ではコントローラ5471が現用系WebアプリケーションApp1.earの開始を指示し、現用系WebアプリケーションApp1.earのサービスを開始させる。
S14ではコントローラ5471がリクエストスイッチApp.warの開始を指示し、リクエストスイッチApp.warのサービスを開始する。
上記S11の判定で、アプリケーションのデプロイ設定時に設定したデプロイ操作画面1601のリプレースチェックボックス1604がチェックされていない場合には、S15に進んで、コントローラ5471はアプリケーションApp.earのサービスを開始させる。
図9は、デプロイツール547のコントローラ5471で実行されるアプリケーションの停止処理の一例を示すフローチャートである。
この処理は、管理者が管理端末7の図6のアプリケーションリスト画面611を表示し、選択したコンテキスト612に対応する停止ボタン617をクリックした場合に実行される。
S21では、コントローラ5471がデプロイ操作画面1601のリプレースチェックボックス1604がチェックされているかを判定し、チェックされていればS22へ進み、チェックされていない場合にはS25へ進む。
S22においてコントローラ5471は、停止ボタン617に対応するアプリケーション(ここでは現用系WebアプリケーションApp1.earとする)のリクエストスイッチApp.warのサービスを停止させる。つまり、リクエストスイッチApp.earによるWebサーバ4からの処理要求の転送を停止させる。
S23では、上記S22で停止したリクエストスイッチApp.warに関連する現在実行中またはメモリに配備された現用系WebアプリケーションApp1.earまたはApp2.ear(入れ替えが発生すると代替系App2.earは現用系となり、現用系App1.earは代替系となるため)のサービスを停止させる。
S24では、コントローラ5471が、リプレースマネージャ543のリプレース条件をクリアする。
上記S21の判定で、リプレースチェックボックス1604がチェックされていないS25では、コントローラ5471が、実行アプリケーションApp.earを停止するように指令する。
以上の処理によって、コントローラ5471は、まず、リクエストスイッチApp.warのサービスを停止させて処理要求の転送を止めてから、実行中のWebアプリケーション55(App1.earまたはApp2.ear)のサービスを停止するよう指令する。
図10は、デプロイツール547のコントローラ5471で実行されるアプリケーションのアンデプロイ(配備解除)処理の一例を示すフローチャートである。
この処理は、管理者が管理端末7で図6のアプリケーションリスト画面611を表示し、選択したコンテキスト612に対応するアンデプロイボタン618をクリックした場合に実行される。
S31では、Webアプリケーション55に関するデプロイ設定をデプロイ操作画面1601にて設定する際に、リプレースチェックボックス1604がチェックされているかを判定する。リプレースチェックボックス1604がチェックされていればS32へ進み、チェックされていない場合にはS34へ進む。
S32では、コントローラ5471が、デプロイア548にリクエストスイッチApp.warをアンデプロイ(配備解除、メモリ上からの解放)するよう指令する。
S33では、上記S32で解放したリクエストスイッチApp.warに関連する現在実行中または配備された現用系WebアプリケーションApp1またはApp2をアンデプロイするよう、コントローラ5471はNデプロイアに指示する。
上記S31の判定で、リプレースチェックボックス1604がチェックされていない場合には、S34に進んで、コントローラ5471は実行アプリケーションApp.earのアンデプロイを指示してメモリ上から解放する。
図11は、図7のS2で実行されるアプリケーションマネージャ541の処理の詳細を示すブロック図である。
アプリケーションマネージャ541は、デプロイ操作画面1601で管理者が指定したアプリケーションのファイル名1602で識別されるアプリケーションAppから現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.ear及びリクエストスイッチApp.warを生成する変換処理部5412と、現用系Webアプリケーション、代替系Webアプリケーション及びリクエストスイッチのアプリケーション名を変換するためのID変数5411を備える。
アプリケーションマネージャ541は、変換処理部5412がデプロイツール547のコントローラ5471から起動の指示を受けると、リプレースを実施するアプリケーションApp.earをファイルシステム56から取得して、予め設定したリクエストスイッチ雛形5441と識別子定義ファイル5442を読み込む。なお、ファイルシステム56はアプリケーションサーバ計算機5のストレージ装置またはメモリに設定された記憶域である。
ID変数5411は、実行アプリケーションの名称(ファイル名)に代わって、現用系Webアプリケーション、代替系Webアプリケーション及びリクエストスイッチの名称とする所定のID変数を格納する。本実施形態では、名称として設定するID変数として実行アプリケーションApp.earを読み込んだ時点のタイムスタンプを所定のフォーマット(例えば、「YYMMDDHHMM」=年月時分)で取得したものをID変数として設定する。
変換処理部5412は、読み込んだ識別子定義ファイル5442と上記ID変数に基づいて、現用系Webアプリケーション、代替系Webアプリケーション及びリクエストスイッチの名称を設定する。図示の例では、現用系Webアプリケーションに「−1」を付加し、代替系Webアプリケーションに「−2」を付加し、リクエストスイッチ544のコンテキスト名(またはファイル名)に「−rs」を付加する例を示す。
図示の例では、ID変数5411は、実行アプリケーションAPP.earをファイルシステム56から読み込んだ年月時分「YYMMDDHH」に設定され、変換処理部5412は取得したID変数に、識別子定義ファイル5442に基づく添え字をアプリケーションのファイル名「App」に付加して「AppYYMMDDHH−X」に変換する。なお、変換処理部5412は、現用系Webアプリケーションと代替系Webアプリケーションの拡張子をそのまま(.ear)とし、リクエストスイッチの拡張子を「.war」に設定する。
図12は識別子定義ファイル5442の一例を示す。
図12の例では、現用系WebアプリケーションにはID変数に加えて第1の識別子「−1」を付加し、代替系WebアプリケーションにはID変数に加えて第2の識別子「−2」を付加し、リクエストスイッチにはID変数に加えて所定の識別子「−RS」を付加することが定義されている。
これにより、アプリケーションマネージャ541は、図11において、「App.ear」というオリジナルの実行アプリケーションが指定されると、そのときの時刻をID変数に設定し、例えばこの「ID」が「0612051750」のときには、現用系Webアプリケーションの名称を「App0612051750−1.ear」として設定し、代替系Webアプリケーションの名称を「App0612051750−2.ear」として設定し、リクエストスイッチの名称を「App0612051750−rs.ear」として設定する。
ここで、現用系WebアプリケーションApp0612051750−1.earと代替系WebアプリケーションApp0612051750−2.earは、同一機能のプログラムであるがファイル名とコンテキスト名が異なるため、アプリケーションサーバ54上で並列的に実行できる。
また、リクエストスイッチApp0612051750−rs.warは、リクエストスイッチ雛形5441のプログラムをベースとし、現用系WebアプリケーションApp0612051750−1.earから代替系WebアプリケーションApp0612051750−2.earへWebサーバ4からの処理要求を切り替える記述を付加したものである。
アプリケーションマネージャ541は、現用系Webアプリケーション、代替系Webアプリケーション及びリクエストスイッチを生成すると、ファイルシステム56上に現用系Webアプリケーションと代替系Webアプリケーションの間で共有するセッション情報に関する設定である共有情報5443と、アプリケーション「App.ear」から生成した現用系Webアプリケーション、代替系Webアプリケーション及びリクエストスイッチの構成を示す構成管理ファイル5444を生成する。
セッション共有情報5443は図13で示すように正規表現を用いて例えばXMLで記述され、「App0612051750」の添え字「−1」と「−2」を同等に扱うことが記述される。
構成管理ファイル5444は、図14で示すように例えばXMLで記述され、実行するアプリケーションのリクエストスイッチのファイル名が「App0612051750−rs.war」であり、コンテキストが「App」であることを示し、現用系Webアプリケーションのファイル名が「App0612051750−1.ear」であり、コンテキスト名が「App0612051750−1」であることを示し、代替系Webアプリケーションのファイル名が「App0612051750−2.ear」であり、コンテキスト名が「App0612051750−2」であることを示す。
ここで、ファイルの拡張子が「ear」であるアプリケーションファイルは、そのアプリケーションに関連した各種の設定情報を記述したデプロイメントデスクリプタ群と、所定の処理を記述したプログラム群をパッケージングしたものである。デプロイメントデスクリプタはXML等で記述されており、例えば、図15に示す「Application.xml」である。図15の「Application.xml」5445の<context−root>タグの部分にはアプリケーションのコンテキスト名を指定する。本例のApplication.xmlは、第1のアプリケーション(現用系Webアプリケーション)ファイルApp0612051750−1.earのデプロイメントデスクリプタの例であり、コンテキスト名が「App0612051750−1」に設定されている。
アプリケーションマネージャ541は、オリジナルアプリケーションのファイルが指示されると、そのパッケージを展開し、Application.xmlなどのデプロイメントデスクリプタ群と、プログラム群に分解し、Application.xmlの<context−root>タグに第1のアプリケーションの識別子(例えば、App0612051750−1)を書き込み、それをプログラム群と合わせてパッケージングして第1のアプリケーションのファイルApp0612051750−1.earを生成する。
アプリケーションマネージャ541は、同様にして、Application.xmlの<context−root>に第2のアプリケーション(代替系Webアプリケーション)のコンテキスト名を書き込み、それをプログラム群と合わせてパッケージングし第2のアプリケーションを生成する。
図16は、アプリケーションマネージャ541の変換処理部5412で実行されるアプリケーションの生成処理の一例を示すフローチャートである。
アプリケーションマネージャ541は、オリジナルアプリケーションAPP.earをファイルシステム56から読み込むと、まず、S41にて現在時刻を取得し、その値をID変数に設定する。なお、本実施形態では、ID変数に日時を用いる例を示したが、他のアプリケーションの名称と名称が重複せずに名称を一意に特定できる値であればなんでもよい。
S42では、実行アプリケーションAPP.earの名称「App」に、ID変数の値と、識別子定義ファイル5442から読み込んだ第1の識別子である「−1」を付加したものを第1のアプリケーション(現用系Webアプリケーション)として生成する。
S43では、同様に、ID変数の値と、識別子定義ファイル5442から読み込んだ第2の識別子である「−2」をアプリケーションの名称に付加したものを第2のアプリケーション(代替系Webアプリケーション)として生成する。
S44では、同様に、ID変数の値と、識別子定義ファイル5442から読み込んだ所定の識別子である「−RS」を付加したものを名称とし、リクエストスイッチ雛形5441に第1及び第2のアプリケーションの名称を加えたファイルをリクエストスイッチとして生成する。そして、リクエストスイッチの情報を構成管理ファイル5444に格納し、また、第1及び第2アプリケーションの識別子を設定する。
以上の処理により、現用系Webアプリケーションと代替系Webアプリケーション及びリクエストスイッチが生成される。
図17は、上記図16のS42,S43で行われる第1及び第2アプリケーションの生成処理の詳細を示すフローチャートで、変換処理部5412が実行する処理を示す。
変換処理部5412は、オリジナルアプリケーションのファイルAPP.earを読み込むと、S51で、パッケージを解凍し、デプロイメントデスクリプタ群とプログラム群を取り出す。
次に、変換処理部5412はS52で、デプロイメントデスクリプタの一つであるApplication.xmlの<context−root>に、オリジナルアプリケーションのコンテキスト名とID変数の値と第一のアプリケーションの識別子とを結合した文字列を設定し、S53では、更新したデプロイメントデスクリプタ群とプログラム群をパッケージ化して第1のアプリケーションのファイルApp0612051750−1.earを生成する。
なお、第2のアプリケーションも上記の処理を実行することで生成する。
図18は、図16のS44で行われるリクエストスイッチの生成処理の詳細を示すフローチャートである。変換処理部5412はS61にて、構成管理ファイル5444におけるリクエストスイッチのコンテキスト名を参照し、その値をデプロイメントデスクリプタ雛形の<context−root>に設定してリクエストスイッチ用のデプロイメントデスクリプタを生成する。なお、warファイルのデプロイメントデスクリプタはweb.xmlである。web.xmlの雛形は図19で示すように、<url−pattern>タグに「/*」が設定されており、これは全てのリクエストをクライアントから受け付けることを意味している。
S62では、リクエストスイッチ雛形5441と生成したデプロイメントデスクリプタを合わせてパッケージングし、リクエストスイッチファイルをパッケージングして、上記図16のID変数の値と、識別子定義ファイル5442の所定の識別子とを読み込んで生成されたファイル名のファイル、例えばApp0612051750−RS.warを生成する。
図20は、図7のS3においてNデプロイア545が実行するアプリケーションのデプロイ処理の一例を示すフローチャートである。
Nデプロイア545は、S71にて、Webアプリケーションのデプロイ時に、操作者がデプロイ操作画面1601でリプレース実施チェックボックス1604をチェックしたか否かを判定する。リプレース実施であればS72へ進み、実施でなければS77へ進む。
S72では、図13に示したセッション共有情報5443に記述された正規表現のいずれかと、指定された現用系または代替系のWebアプリケーションのコンテキスト情報が一致しているか否かを判定する。この判定では、一致していれば現用系Webアプリケーションと代替系Webアプリケーションでセッションの共有を行うためS73へ進み、一致していなければセッションの共有は行わずに、S77へ進む。
次に、S73では指定されたWebアプリケーションのコンテキスト情報が既に共有コンテキストマップ5461(図21参照)に登録されているか否かを判定する。この判定は、Nデプロイア545が共有コンテキストマップ5461のコンテキスト正規表現列を参照し、指定されたコンテキスト情報と一致するエントリが存在するか否かにより判定を行う。共有コンテキストマップ5461にマッチするエントリが登録されていなければ、S74に進む。
S74では、状態保持部546内に新しいセッションマップ5462を生成して、コンテキスト名と、生成したセッションマップ5462の組を共有コンテキストマップ5461に登録するすると共に、そのセッションマップを指定されたWebアプリケーションのセッションマップとして設定する。
一方、S73で既に指定されたWebアプリケーションのコンテキスト名が共有コンテキストマップ5461に登録されている場合には、S75へ進み、登録されているセッションマップ5462を当該Webアプリケーションのセッションマップとして設定する。
最後に、S77でデプロイア548に、指定されたWebアプリケーションのファイル(例えば、App0612051750−1.ear)をメモリ上に配備させる。
以上の処理により、Nデプロイア545は、Webアプリケーションをメモリ上に配備する。現用系のWebアプリケーションは、操作者が図5のデプロイ操作画面1601からWebアプリケーションのデプロイを指示した際に、Nデプロイアを呼び出して配備される。一方、代替系Webアプリケーションのデプロイは、後述するように、リプレースマネージャ543の入れ替え制御部5435からの指令があったときにNデプロイア545がメモリ上に配備する。
図21は、状態保持部(State Store)546の内容の一部を示すブロック図で、状態保持部546に格納される共有コンテキストマップ5461と、セッションマップ5462の関係を示す。
共有コンテキストマップ5461には、Webアプリケーションのコンテキスト名の正規表現と、このコンテキスト名の正規表現に対応しセッション情報を蓄える5462のセッションマップへのポインタを組としたテーブルである。セッションマップ5462は、セッションIDと、このセッションIDに対応するセッションオブジェクトへのポインタを組としたマップである。
図22は、リクエストスイッチ544の機能要素を示すブロック図である。
リクエストスイッチ544は、上述のようにApp0612051750−rs.warなどとしてメモリ上に配備され、Webサーバ4からの処理要求をWebアプリケーション55に転送し、Webアプリケーション55を現用系Webアプリケーションから代替系Webアプリケーションへ入れ替える際には、処理要求の転送先を現用系Webアプリケーションから代替系Webアプリケーションに切り替える。
このため、リクエストスイッチ544には、処理要求の転送先Webアプリケーションのコンテキスト名を格納する現コンテキスト601と、切り替え前に現用系Webアプリケーションとして使用していたWebアプリケーションのコンテキスト名を格納する旧コンテキスト602と、Webアプリケーションで現在処理中の処理要求の数を管理する処理中管理テーブル603と、現用系WebアプリケーションにWebサーバ4からの処理要求を転送するリクエスト転送制御部604と、現コンテキスト601と旧コンテキスト602を入れ替えて処理要求の転送先を切り替える切り替え処理部605と、旧コンテキスト602のWebアプリケーションの処理が完了したか否かを判定する処理状態取得部606と、から構成される。なお、上記各部の詳細については後述する。
図23は、リクエストスイッチ544の処理中管理テーブル603の一例を示す説明図である。処理中管理テーブル603は、リクエストスイッチ544が処理要求の転送を行うWebアプリケーション55の識別子を格納するkeyと、処理中の処理要求の数を格納するvalueの2つのフィールドを備える。なお。keyにはWebアプリケーション55の識別子としてコンテキスト名などを設定することができる。
処理中管理テーブル603は、主にリクエスト転送制御部604が管理するもので、Webサーバ4からの処理要求をWebアプリケーション55へ転送すると、該当するWebアプリケーション55の識別子のvalueの値を1だけインクリメントし、Webアプリケーション55で処理要求の処理が完了するとvalueの値を1だけデクリメントする。すなわち、valueの値が正の整数となるkeyに対応するWebアプリケーション55が処理を実行していることを示す。
図24は、リクエストスイッチ544のリクエスト転送制御部604で行われる処理の一例を示すフローチャートである。この処理は、Webサーバ4から処理要求を受け付ける度に起動する。
S81では、リクエストスイッチ544は、Webサーバ4からの処理要求を受け付けると、リクエスト転送制御部604で処理を開始する。リクエスト転送制御部604は、S82で現コンテキスト601から取得した現在使用中のWebアプリケーションのコンテキスト名を取得し、変数contextへ代入する。
次にS83では、Webサーバ4からの処理要求に含まれるリクエストURLのコンテキスト部分を、S82で取得したコンテキスト名=変数contextの値に書き換えて、リクエスト転送先のURLを生成する。
次に、S84でリクエスト転送制御部604は、処理中管理テーブル603のkeyの値が、変数contextと一致するエントリのvalueの値を1インクリメントする。S85では、S83で変更したURLに対し、Webサーバ4から受け付けた処理要求を転送する。すなわち、処理要求は現コンテキスト601で指定されたWebアプリケーション55へ転送される。
次に、S86にてリクエスト転送制御部604は、処理要求を転送したWebアプリケーション55から処理要求に対する結果を受け付ける。S87では、処理中管理テーブル603のkeyのうち、変数contextに格納されたコンテキスト名と一致するエントリのvalueの値を1デクリメントする。
S88では、使用中のWebアプリケーション55から得られた処理要求に対する結果をWebサーバ4を介してクライアントへ返送する。
以上の処理により、現コンテキスト1に設定されたWebアプリケーション55に対してWebサーバ4からの処理要求が転送され、処理中管理テーブル603が更新されていく。
図25は、リクエストスイッチ544の切り替え処理部605で行われる処理の一例を示すフローチャートである。リクエスト転送制御部604は、Webアプリケーション55を現用系Webアプリケーションから代替系Webアプリケーションへ入れ替える処理の要求をリプレースマネージャ543から受けると、切り替え処理部605を起動する。
S91では、切り替え処理部605はリプレースマネージャ543から入れ替える処理の要求を受け付けると、その処理要求の引数に含まれる代替系Webアプリケーションのコンテキスト名を取得する。
S92では、切り替え処理部605が、現コンテキスト601に格納されていたコンテキスト名を旧コンテキスト602へコピーする。次に、S93では、切り替え処理部605がリプレースマネージャ543から取得した代替系Webアプリケーションのコンテキスト名を現コンテキスト601へ格納する。
S94では、切り替え処理部605が処理中管理テーブル603のkeyを検索し、現コンテキスト601と一致するkeyのエントリが存在すればそのvalueの値を0に設定する。
以上の処理により、Webサーバ4からの処理要求の転送先は現用系Webアプリケーションから代替系Webアプリケーションへ切り替えられて、代替系Webアプリケーションが処理の主体となる。
例えば、現用系WebアプリケーションApp1.earのコンテキスト名がApp0612051750−1、代替系WebアプリケーションApp2.earのコンテキスト名がApp0612051750−2の場合、初期状態では現コンテキスト601にApp0612051750−1が設定され、初期状態なので旧コンテキスト602には値は設定されていない。この状態で、リクエスト転送制御部604は、処理要求をコンテキスト名App0612051750−1のWebアプリケーションに転送する。ここで、切り替え制御部605が代替系WebアプリケーションApp2.earのコンテキスト名App0612051750−2を引数として切り替え処理を要求すると、切り替え処理部605は現コンテキスト601の値App0612051750−1を旧コンテキスト602にコピーし、現コンテキスト601にコンテキスト名App0612051750−2を設定する。従って、リクエスト転送制御部604は以後Webサーバ4から送られてきた処理要求をコンテキスト名App0612051750−2のWebアプリケーション、すなわち代替系に転送して処理することになる。
図26は、リクエストスイッチ544の処理状態取得部606で行われる処理の一例を示すフローチャートである。処理状態取得部606は、リプレースマネージャがWebアプリケーションのリクエスト処理の完了を調査する際に起動される。
S101では、処理状態取得部606が、処理中管理テーブル603のkeyが旧コンテキスト602と一致するvalueのエントリが存在しかつその値が0、つまり全ての処理要求が完了した状態、であるか否かを判定する。valueの値が0であれば旧コンテキスト602のWebアプリケーション55は転送された処理要求を全て完了したので、処理状態取得部606は「処理完了」を示すステータスを返す。一方、上記valueの値が0でない場合には、旧コンテキスト602のWebアプリケーション55にはまだ処理が完了していない処理要求があるため、処理状態取得部606は「処理未完了」のステータスを返す。
図27は、所定の条件となったときに、Webアプリケーションを現用系から代替系に入れ替える指示をするリプレースマネージャ543の構成を示すブロック図である。
リプレースマネージャ543は、管理端末7が設定したWebアプリケーション55の入れ替え条件を格納する入れ替え条件テーブル5430と、現用系Webアプリケーションから代替系Webアプリケーションへの入れ替えを指令する入れ替え制御部5435とを含んで構成される。
入れ替え条件テーブル5430は、Webアプリケーション55のコンテキスト名を格納するアプリケーションコンテキスト5431と、リプレースの条件を格納する入れ替え条件5432と、現用系WebアプリケーションのIDを格納する現用系アプリケーションID5433と、代替系WebアプリケーションのIDを格納する代替系アプリケーションID5434を有する。
入れ替え条件5432には、図5のデプロイ操作画面で示した、インターバルや空きヒープなど条件の種類と、それに対応したインターバルの時間や空きヒープのバイト数が格納される。図示の例では、コンテキスト名が「app」の入れ替え条件5432は、空きヒープが100MBより小さくなったらWebアプリケーションの入れ替えを実施することを示す。現用系、及び代替系アプリケーションのIDとは、図14の構成管理ファイルの<application−id>タグに指定された文字列を示す。本例では、現用系アプリケーションIDにapp.app1が指定されており、これは構成管理ファイル5444に記載されたWebアプリケーション、すなわち、Webアプリケーションのファイルがapp0612051750−1.ear、コンテキスト名がapp0612051750−1であることを示す。また、代替系アプリケーションIDにapp.app2が指定されており、これは構成管理ファイル5444に記載されたWebアプリケーション、すなわちWebアプリケーションのファイルがapp0612051750−2.ear、コンテキスト名がapp0612051750−2であることを示す。入れ替え制御部5435は、各アプリケーションコンテキスト5431毎に入れ替え条件5432を監視して、入れ替え条件5432が成立したときにはWebアプリケーション55の入れ替えを実施する。
図28は、リプレースマネージャ543の入れ替え制御部5435で行われる処理の一例を示すフローチャートで、入れ替え条件5432がインターバルの場合を示す。なお、この処理は、入れ替え条件テーブル5430の各エントリ毎に起動される。
S111では、入れ替え制御部5435が図6のアプリケーションリスト画面のリプレース実施欄615、すなわち当該Webアプリケーションにおいて入れ替えをするかどうかの設定を読み込み、入れ替えを実施する設定になっていればS112へ進み、実施する設定になっていなければ処理を終了する。
S112では、入れ替え条件テーブル5430に設定されたインターバルの設定時間だけ休止(Sleep)し、所定時間を経過するとS113へ進む。S113では、入れ替え制御部5435は、入れ替え条件テーブル5430の代替系WebアプリケーションID5434に設定されたWebアプリケーションをデプロイするようにNデプロイア545へ指令する。
次に、S114で、入れ替え制御部5435は、デプロイを指令した代替系Webアプリケーションに対してアクセスが可能になったか否かを判定し、Nデプロイア545によるデプロイが完了し、Webアプリケーションのサービスが利用可能になるまで待つ。代替系Webアプリケーションへアクセスが可能になるとS115に進む。
S115では、入れ替え制御部5435は、リクエストスイッチ544に対してアプリケーションコンテキスト5431を引数として、クライアントの処理要求の転送先を現用系Webアプリケーションから代替系Webアプリケーションへ切り替えを指令する。
S116では、入れ替え制御部5435はリクエストスイッチ544に対してデプロイ対象のアプリケーション(現用系アプリケーション)の処理が完了したか否かを判定する。すなわち、リクエストスイッチ図22の処理状態取得部606を呼び出し、図26の現用系Webアプリケーションで処理中のすべての処理要求が完了しているかチェックし、処理完了のステータスが返った場合は、S117へ進み、処理未完了のステータスが返った場合は、再びS116を実行する。これによって、現用系Webアプリケーションにおけるすべての処理要求の処理が完了するまで待ってから、S117が実行されることになる。S117では、入れ替え制御部5435は、入れ替え条件テーブル5430の現用系WebアプリケーションID5433で識別されるアプリケーションをアンデプロイするようNデプロイア545に指令する。
そして、S118で入れ替え制御部5435は、現用系WebアプリケーションID5433の欄に格納されている値と、代替系WebアプリケーションID5434の欄に格納されている値を入れ替える。
以上の処理により、入れ替え制御部5435は、所定のインターバルの設定時間毎に代替系Webアプリケーションをデプロイさせてからリクエストスイッチ544へ処理要求の転送先の切り替えを指令し、現用系アプリケーションの処理が完了するまで待ってから、現用系Webアプリケーションをアンデプロイさせる。
また、リクエストスイッチ544の処理状態取得部は、現用系Webアプリケーションから代替系Webアプリケーションへ切り替えを指定した時刻から所定時間(例えば、数秒)経過したときに、処理完了ステータスを通知するようにしてもよい。この場合、現用系Webアプリケーションの処理が非常に長い場合でも、強制的に現用系Webアプリケーションを停止させることができ、従って、確実に現用系Webアプリケーションから代替系Webアプリケーションへの入れ替えを実施でき、リソースリークによる障害の発生を予防できる。
図29は、リプレースマネージャ543の入れ替え制御部5435で行われる処理の一例を示し、入れ替えの条件が空きヒープの場合のフローチャートである。なお、この処理は、図28と同様に、入れ替え条件テーブル5430のアプリケーションコンテキスト5431毎に起動される。
S121では、上記図28と同様にリプレースを実施する設定になっている場合にはS121以降を実施し、そうでない場合には終了する。
S122では、入れ替え制御部5435は、空きヒープサイズを確認し、空きヒープが、入れ替え条件テーブル5430に設定された値以下になるまで待機する。空きヒープが所定の値以下になると、S123へ進む。S123〜S128では、上記図28と同様である。
以上の処理により、入れ替え制御部5435は、ヒープサイズが所定の価以下になる度に、代替系Webアプリケーションをデプロイさせてからリクエストスイッチ544へ処理要求の転送先の切り替えを指令し、現用系アプリケーションの処理が完了するまで待ってから、現用系Webアプリケーションをアンデプロイさせる。
以上のように、本実施形態では、ひとつのWebアプリケーション55のオリジナル(App.ear)から、ひとつの現用系Webアプリケーション(App1.ear)と少なくともひとつの代替系WebアプリケーションApp2.earを生成し、さらに、現用系Webアプリケーションや代替系WebアプリケーションへWebサーバやクライアントからの処理要求を転送するためのリクエストスイッチ544(App.war)を生成し、現用系Webアプリケーションを代替系Webアプリケーションへ入れ替える入れ替え条件をリプレースマネージャ543に設定しておく。
リプレースマネージャ543は、各Webアプリケーション55毎に入れ替え条件テーブル5430に設定された入れ替え条件5432を監視し、条件が成立するとNデプロイア545に代替系Webアプリケーションをデプロイさせてから、リクエストスイッチ544に切り替えを指令する。リクエストスイッチ544は、Webサーバ4からの処理要求の転送先を現用系Webアプリケーションから代替系Webアプリケーションへ切り替える。リプレースマネージャ543は、旧現用系Webアプリケーションの処理が全て完了したことを確認してから、旧現用系Webアプリケーションをアンデプロイして、旧現用系Webアプリケーションが使用していたメモリを解放する。
このように、Webアプリケーション55を実行するOS,JVM,アプリケーションサーバ、Webアプリケーションというソフトウェア階層のうち、リソースのリークが最も発生する恐れのあるWebアプリケーションの部分のみのメモリを解放することで、障害の発生を抑制し、さらに、OSやJVMやアプリケーションサーバはメモリやキャッシュに残っていることによって、キャッシュのヒット率の減少を最小限に抑え、従って、性能の低下を最小限に抑えることが可能となる。
さらに、代替系Webアプリケーションをデプロイしてからリクエストスイッチ544を機能させて、現用系Webアプリケーションへの処理要求を、代替系Webアプリケーションへ転送して処理させるため、Webサーバ4は処理要求の結果を遅滞なく受け取ってクライアントへ転送できる。これにより、リソースリークを防ぐためのWebアプリケーションの入れ替え時に、前記従来例のように処理要求の受け付け中断などを行うことなく円滑にWebアプリケーションの入れ替えを実現することができるのである。
なお、上記第1実施形態では、リクエストスイッチ544とリプレースマネージャ543を別のモジュールとして構成した例を示したが、図30で示すように、リクエストスイッチ544とリプレースマネージャ543をひとつのモジュールにまとめても良い。この場合入れ替え条件テーブルは、単一のWebアプリケーション55、つまり自アプリケーションについてのみ管理すればよく、上記と同様の作用効果を得ることができる。
<第2実施形態>
図31、図32は第2の実施形態を示し、前記第1実施形態ではリクエストスイッチ544をApp−rs.warというファイルで構成したのに対し、本第2実施形態ではリクエストスイッチ544をアプリケーションサーバ54へ組み込んだ例を示し、その他の構成は前記第1実施形態と同様である。
図31、図32は第2の実施形態を示し、前記第1実施形態ではリクエストスイッチ544をApp−rs.warというファイルで構成したのに対し、本第2実施形態ではリクエストスイッチ544をアプリケーションサーバ54へ組み込んだ例を示し、その他の構成は前記第1実施形態と同様である。
図31において、アプリケーションマネージャ541は、サービスを提供するWebアプリケーション55のオリジナルであるアプリケーションApp.earから、現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.earをメモリ(または記憶装置)上のファイルシステム56上に生成する。
なお、リクエストスイッチ544Aは予めアプリケーションサーバ54に設定されたモジュールとして構成され、アプリケーションマネージャ541が生成した現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.earへ選択的にWebサーバ4からの処理要求を転送するように設定される。リクエストスイッチ544Aの機能は、前記第1実施形態と同様である。
図32は、アプリケーションマネージャ541が、現用系WebアプリケーションApp1と代替系WebアプリケーションApp2.earを生成する様子を示す図である。前記第1実施形態の図11と同様に、アプリケーションマネージャ541は与えられたWebアプリケーション55であるApp.earからID変数の値と識別子定義ファイル5442を取得し、現用系WebアプリケーションApp1と代替系WebアプリケーションApp2のコンテキスト名を生成する。本第2実施形態では、アプリケーションマネージャ541は、現用系Webアプリケーションと代替系Webアプリケーションのみを生成する。
そして、リクエストスイッチ544Aはアプリケーションサーバ54に組み込まれているので、Nデプロイア545ではリクエストスイッチ544Aのデプロイを行わない点が前記第1実施形態と相違する。その他の構成は前記第1実施形態と同様である。
この場合も、前記第1実施形態と同様にWebサーバ4からの処理要求の転送先を現用系Webアプリケーションから代替系Webアプリケーションへ切り替えて、作用、効果を得ることができる。
<第3実施形態>
図33〜図38は、第3の実施形態を示し、前記第第2実施形態に、Webアプリケーション55(App.ear)のバージョン変更をオンラインで行うオンラインバージョン変更機能を加えたもので、その他の構成は前記第1実施形態または第2実施形態と同様である。
図33〜図38は、第3の実施形態を示し、前記第第2実施形態に、Webアプリケーション55(App.ear)のバージョン変更をオンラインで行うオンラインバージョン変更機能を加えたもので、その他の構成は前記第1実施形態または第2実施形態と同様である。
Webアプリケーション55などでは、プログラムの開発者がバグフィックスや新機能の追加などで、バージョン(またはリビジョン)を変更(新しいものに置き換える場合と、古いものに戻す場合がある)することが一般的に行われている。本実施形態では、使用中のWebアプリケーション55のバージョンをオンラインにて更新する例を示す。
図33は、前記第1実施形態の図5に示したデプロイ操作画面1601を変更したもので、リプレースの実施に関する情報の入力欄をすべて省略したもので、その他の構成は、前記第1実施形態と同様である。
図34は、アプリケーションサーバ54が管理端末7へ提供するWebアプリケーション55のバージョン変更操作画面620を示す。バージョン変更操作画面620では、バージョン変更の際に、現在実行中のWebアプリケーションの代わりに実行するWebアプリケーションのファイル名を入力するファイル名621と、バージョン変更の実施を指示するバージョン変更ボタン622を備える。
管理者などが管理端末7から、ファイル名621を指定し、バージョン変更ボタン622をクリックすると、アプリケーションサーバ54のアプリケーションマネージャ541へバージョン変更の指令が送信される。
図35は、アプリケーションマネージャ541の動作を示すブロック図である。アプリケーションマネージャ541は、前記第1実施形態の図11に示した変換処理部5412とID変数取得部5411に加え、Webアプリケーション55のバージョン番号を管理するバージョン番号管理部5413を備える。
バージョン番号管理部5413は、Webアプリケーション55(App.ear)毎にバージョン番号を管理しており、アプリケーションを生成する際には、コンテキスト名にバージョン(またはリビジョン)番号を加えたものをWebアプリケーション55の識別子として生成する。例えば、図中アプリケーションApp.earのバージョン番号が0の場合、アプリケーションApp−rev0.earとして生成する。なお、図35ではID変数を省略したが、前記第1実施形態の図11に示したように、アプリケーションのコンテキスト名にID変数を付加するものとする。
図36は、アプリケーションサーバ54がバージョン変更の指令を受けたときの処理の一例を示すフローチャートである。
S131では、アプリケーションマネージャ541を起動して、上記図35で示したように、指定されたアプリケーションのコンテキスト名にバージョン番号(revX)を付加したものを、実行するアプリケーションApp−revX.earとして生成する。
S132では、アプリケーションサーバ54がNデプロイア545を起動して、アプリケーションマネージャ541が生成したアプリケーションApp−revX.earをメモリ上に配備する。そして、S133では、アプリケーションサーバ54がリクエストスイッチ544AにWebサーバ4からの処理要求を転送するアプリケーションApp−revX.earを設定し、処理を終了する。
なお、前記第1実施形態に適用する場合では、Webサーバ4がリクエストスイッチApp.warにアプリケーションApp−revX.earを設定すればよい。
図37は、上記図34に示すバージョン変更操作画面620でバージョン変更の指令があったときに、アプリケーションサーバ54で行われる処理の一例を示すフローチャートである。
S141では、アプリケーションサーバ54は、バージョン変更操作画面620から受け付けたバージョン変更指令に基づいて、アプリケーションマネージャ541を起動して、新しいバージョン番号の付いたアプリケーションのコンテクストを持つアプリケーションを上記図36で示したように生成する。
次に、S142ではNデプロイア545を起動して、アプリケーションマネージャ541が生成した新しいバージョン番号のアプリケーションApp−revX.earをメモリ上に配備する。
次に、アプリケーションサーバ54は、現用系WebアプリケーションとしてのApp.earを、代替系WebアプリケーションとしてのApp−revX.earへ入れ替えるようリクエストスイッチ544Aに対して指令する。リクエストスイッチ544Aでは、前記第1実施形態の図25で示した処理を実行し、現コンテキスト601に格納されていたアプリケーションApp.earを旧コンテキスト602へコピーし、現コンテキスト601に S144では、前記第1実施形態の図29に示したS126と同様にして、旧コンテキスト602へ移動したアプリケーションの処理が完了するのを待つ。
S145では、旧コンテキスト602のアプリケーションApp.earの処理が全て完了すると、アプリケーションサーバ54は、Nデプロイア545に旧コンテキスト602のアプリケーションをアンデプロイするよう指令する。
以上の処理により、実行中のWebアプリケーション55を異なるバージョンのアプリケーションに入れ替えることが可能となり、Webアプリケーション55を停止さえることなく、かつ、Webサーバ4からの処理要求を受け付けながらバージョン変更を実現することが可能となる。
なお、上記第3実施形態では、第2実施形態に適用した例を示したが、リクエストスイッチ544をWebアプリケーション55であるApp.earから生成する第1実施形態に適用しても同様である。
以上のように、第1実施形態〜第3実施形態をまとめると、図38〜図41で示すようになる。まず、アプリケーションマネージャ541が第1のアプリケーションと第2のアプリケーションを作成しておく。そして、図38で示すように、アプリケーションサーバ54では第1のアプリケーション(App1)を実行し、リクエストスイッチ544(544A)はクライアント3からの処理要求をWebサーバ4から受け付け、カウンタ(value)値をインクリメントしてから第1のアプリケーションへ転送し(1)、(2)、第1のWebアプリケーションが処理要求を実行する。第1のWebアプリケーションは処理要求の実行結果をリクエストスイッチ544へ返し(3)、リクエストスイッチ544はカウンタ(value)の値をデクリメントしてからWebサーバ4を介してクライアント3へ結果を返す。
次に、図39で示すように、リプレースマネージャ543はNデプロイア545に指示して第2のWebアプリケーションをメモリ上に配備して、第2のWebアプリケーションのサービスが利用可能になるまで待つ。そして、図40で示すように、第2のWebアプリケーションが完全に配備されたら、リプレースマネージャ543はリクエストスイッチ544に指示して処理要求の転送先を第1のWebアプリケーションから第2のWebアプリケーションへ切り替えると共に、第1のWebアプリケーションの処理が全て完了するのを待つ。
そして、第1のWebアプリケーションにおける処理要求の処理が完了した後には、図41で示すように、リプレースマネージャ543はNデプロイア545に指示し、第1のWebアプリケーションを配備解除(アンデプロイ)する。これにより、リークした不要メモリを開放して障害の発生を予防できる。また、Webアプリケーション55の実行環境のうち、OS,JVM,アプリケーションサーバ、リクエストスイッチ544やリプレースマネージャ543等の実行環境を残しておくことで、第2のWebアプリケーションへ入れ替えた直後のCPUキャッシュのヒット率低下による性能低下を抑制できる。また、リクエストスイッチ544により、処理要求の受付を停止することなくシームレスに第1のWebアプリケーションから第2のWebアプリケーションへ移行することができる。
<第4実施形態>
図42、図43は、第4の実施形態を示し、前記第1〜第3実施形態のリクエストスイッチ544に代わってWebアプリケーション55(図中App1)が直接処理結果をWebサーバ4からクライアント3へ返すもので、その他の構成は前記第1〜第3実施形態と同様である。
図42、図43は、第4の実施形態を示し、前記第1〜第3実施形態のリクエストスイッチ544に代わってWebアプリケーション55(図中App1)が直接処理結果をWebサーバ4からクライアント3へ返すもので、その他の構成は前記第1〜第3実施形態と同様である。
すなわち、図42において、WebアプリケーションApp1は、Webサーバ4からの処理要求をリクエストスイッチ544から受け取る(1)、(2)。WebアプリケーションApp1は、処理要求の実行結果をWebサーバ4からクライアント3へ返す。ここで、WebアプリケーションApp1は、直接Webサーバ4へ処理結果を返すので、リクエストスイッチ544は、WebアプリケーションApp1の処理が完了したことを検知することができない。
そこで、WebアプリケーションApp1には現在実行中の処理要求の数をカウントし、リクエストスイッチ544に全処理要求の処理が完了したことを通知する完了フィルタ(Completion Filter)549を設ける。完了フィルタ549は、図43で示すように、リクエストスイッチ544からの処理要求をWebアプリケーションApp1へ転送するリクエスト転送制御部5491と、WebアプリケーションApp1へ投入した処理要求と、WebアプリケーションApp1が出力した処理結果とをそれぞれカウントして、WebアプリケーションApp1における処理の完了を判定する処理中管理部5492と、を備える。処理中管理部5492は、前記第1実施形態の処理状態取得部606と同様に構成されて、WebアプリケーションApp1へ投入した処理が完了したこと(ステータス)をリクエストスイッチ544やリプレースマネージャ543に通知することができる。
このように、Webアプリケーション55が、直接Webサーバ4へ処理結果を返すような場合では、Webアプリケーション55に完了フィルタ549を付加することで、前記第1〜第3実施形態と同様に、第1のアプリケーションでの処理が完全に完了してから、当該第1のアプリケーションをアンデプロイすることができる。
Webアプリケーション55に付加するフィルタは、例えば、Servlet Filter等として実現できる。
Servlet Filterはアプリケーションコードに手をいれることなく、アプリケーションの出入り口に処理を付加するための仕組みであり、この機能を利用して、リクエストの処理完了を検知する。上記完了フィルタ549は特定のアプリケーションに依存しないため、アプリケーションマネージャ541は、指定されたWebアプリケーションから、現用系(App1.ear)と代替系(App2.ear)の2つのアプリケーションを生成する際に、現用系WebアプリケーションApp1.earと代替系WebアプリケーションApp2.earにそれぞれ完了フィルタ549を挿入する。
また、図42に示したリクエストスイッチ544は、前記第1実施形態の図22に示したリクエストスイッチ544は、処理状態取得部606を実行せず、各Webアプリケーションの完了フィルタ549と連携して処理中の処理要求の数を管理する。
なお、上記各実施形態においては、アプリケーションマネージャ541がオリジナルのWebアプリケーション55から第1のアプリケーション(現用系Webアプリケーション)と第2のアプリケーション(代替系Webアプリケーションまたは現用系Webアプリケーションとはバージョンの異なるWebアプリケーション)及びリクエストスイッチApp.warを生成する例を示したが、第1及び第2のアプリケーション及びリクエストスイッチ544は、予めファイルシステム56上に作成しておいても良い。本形態を採ることによる効果は、第1〜第3実施形態の効果に加えて、処理結果がリクエストスイッチを経由しないため、応答性能が向上するという特徴がある。
<補足>
1.
処理要求を受け付ける第1のアプリケーションと第2のアプリケーションを入れ替えるアプリケーションの高可用制御方法であって、
前記処理要求を第1のアプリケーションへ転送する手順と、
所定の条件を満たしたときには、前記第2のアプリケーションを起動し、新たな処理要求を当該第2のアプリケーションへ転送する手順と、
前記第2のアプリケーションが起動した後に、前記第1のアプリケーションで前記処理要求を完了すると、当該第1のアプリケーションを終了する手順と、
を含むことを特徴とするアプリケーションの高可用制御方法。
1.
処理要求を受け付ける第1のアプリケーションと第2のアプリケーションを入れ替えるアプリケーションの高可用制御方法であって、
前記処理要求を第1のアプリケーションへ転送する手順と、
所定の条件を満たしたときには、前記第2のアプリケーションを起動し、新たな処理要求を当該第2のアプリケーションへ転送する手順と、
前記第2のアプリケーションが起動した後に、前記第1のアプリケーションで前記処理要求を完了すると、当該第1のアプリケーションを終了する手順と、
を含むことを特徴とするアプリケーションの高可用制御方法。
2.
予め設定したアプリケーションから識別子の異なる前記第1のアプリケーションと、前記第2のアプリケーションを生成する手順を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
予め設定したアプリケーションから識別子の異なる前記第1のアプリケーションと、前記第2のアプリケーションを生成する手順を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
3.
前記識別子の異なる第1のアプリケーションと、第2のアプリケーションを生成する手順は、
前記処理要求の転送先を第1のアプリケーションから第2のアプリケーションへ切り替えるリクエスト転送部を生成する手順を含み、
前記リクエスト転送部が新たな処理要求を前記第2のアプリケーションへ転送する手順を実行することを特徴とする上記2.に記載のアプリケーションの高可用制御方法。
前記識別子の異なる第1のアプリケーションと、第2のアプリケーションを生成する手順は、
前記処理要求の転送先を第1のアプリケーションから第2のアプリケーションへ切り替えるリクエスト転送部を生成する手順を含み、
前記リクエスト転送部が新たな処理要求を前記第2のアプリケーションへ転送する手順を実行することを特徴とする上記2.に記載のアプリケーションの高可用制御方法。
4.
前記識別子の異なる第1のアプリケーションと、第2のアプリケーションを生成する手順は、
前記予め設定したアプリケーションから識別子を含む第1の部分と、所定の処理を記述したプログラムを含む第2の部分を抽出する手順と、
前記第1の部分の識別子に第1のアプリケーションを示す新たな識別子を付加し、当該第1の部分と前記第2の部分を結合したものを第1のアプリケーションとして生成する手順と、
前記第1の部分の識別子に第2のアプリケーションを示す新たな識別子を付加し、当該第1の部分と前記第2の部分を結合したものを第2のアプリケーションとして生成する手順と、
を含むことを特徴とする上記2.に記載のアプリケーションの高可用制御方法。
前記識別子の異なる第1のアプリケーションと、第2のアプリケーションを生成する手順は、
前記予め設定したアプリケーションから識別子を含む第1の部分と、所定の処理を記述したプログラムを含む第2の部分を抽出する手順と、
前記第1の部分の識別子に第1のアプリケーションを示す新たな識別子を付加し、当該第1の部分と前記第2の部分を結合したものを第1のアプリケーションとして生成する手順と、
前記第1の部分の識別子に第2のアプリケーションを示す新たな識別子を付加し、当該第1の部分と前記第2の部分を結合したものを第2のアプリケーションとして生成する手順と、
を含むことを特徴とする上記2.に記載のアプリケーションの高可用制御方法。
5.
処理要求を受け付けて当該処理要求を前記予め設定したアプリケーションへ転送する処理を、さらに含み、
前記処理要求を前記予め設定したアプリケーションへ転送する処理は、
前記転送した処理要求に対する処理が完了したか否かを監視して、予め設定した時点以前に転送した処理要求に対する処理が全て完了しときに、完了を通知する手順と、
を含むことを特徴とする上記2.に記載のアプリケーションの高可用制御方法。
処理要求を受け付けて当該処理要求を前記予め設定したアプリケーションへ転送する処理を、さらに含み、
前記処理要求を前記予め設定したアプリケーションへ転送する処理は、
前記転送した処理要求に対する処理が完了したか否かを監視して、予め設定した時点以前に転送した処理要求に対する処理が全て完了しときに、完了を通知する手順と、
を含むことを特徴とする上記2.に記載のアプリケーションの高可用制御方法。
6.
処理要求を受け付けて当該処理要求を前記予め設定したアプリケーションへ転送する処理を、さらに含み、
前記転送した処理要求に対する処理が完了したか否かを監視して、予め設定した時点以前に転送した処理要求を記録する手順と、
前記予め設定した時点から所定時間経過したときに、前記記録した処理要求を消去する手順と、
前記記録した処理要求を消去した後に、完了を通知する手順と、
を含むことを特徴とする上記2.に記載のアプリケーションの高可用制御方法。
処理要求を受け付けて当該処理要求を前記予め設定したアプリケーションへ転送する処理を、さらに含み、
前記転送した処理要求に対する処理が完了したか否かを監視して、予め設定した時点以前に転送した処理要求を記録する手順と、
前記予め設定した時点から所定時間経過したときに、前記記録した処理要求を消去する手順と、
前記記録した処理要求を消去した後に、完了を通知する手順と、
を含むことを特徴とする上記2.に記載のアプリケーションの高可用制御方法。
7.
前記第1のアプリケーションは、受け付けた処理要求を処理し、この処理結果を中継する手順と、
前記中継した処理結果を前記処理要求の送信元へ転送する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
前記第1のアプリケーションは、受け付けた処理要求を処理し、この処理結果を中継する手順と、
前記中継した処理結果を前記処理要求の送信元へ転送する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
8.
前記第1のアプリケーションは、受け付けた処理要求を処理し、この処理結果を前記処理要求の送信元へ転送する手順と、
前記処理結果を転送したときには、前記処理要求を完了することを判定する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
前記第1のアプリケーションは、受け付けた処理要求を処理し、この処理結果を前記処理要求の送信元へ転送する手順と、
前記処理結果を転送したときには、前記処理要求を完了することを判定する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
9.
前記第2のアプリケーションを起動し、新たな処理要求を当該第2のアプリケーションへ転送する手順は、
前記第2のアプリケーションが実行可能となるまで待機する手順と、
前記第2のアプリケーションが実行可能となった後に、前記新たな処理要求を前記第2のアプリケーションへ転送する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
前記第2のアプリケーションを起動し、新たな処理要求を当該第2のアプリケーションへ転送する手順は、
前記第2のアプリケーションが実行可能となるまで待機する手順と、
前記第2のアプリケーションが実行可能となった後に、前記新たな処理要求を前記第2のアプリケーションへ転送する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
10.
前記第1のアプリケーションで前記処理要求を完了すると、当該第1のアプリケーションを終了する手順は、
前記第1のアプリケーションへ転送された全ての処理が完了するまで待機する手順と、
前記第1のアプリケーションが全ての処理を完了した後に、当該第1のアプリケーションを破棄する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
前記第1のアプリケーションで前記処理要求を完了すると、当該第1のアプリケーションを終了する手順は、
前記第1のアプリケーションへ転送された全ての処理が完了するまで待機する手順と、
前記第1のアプリケーションが全ての処理を完了した後に、当該第1のアプリケーションを破棄する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
11.
前記第1のアプリケーションを起動して、前記処理要求を第1のアプリケーションへ転送する手順は、
前記第1のアプリケーションを計算機のメモリに配備する手順と、
前記第1のアプリケーションに処理要求を転送するリクエスト転送部を前記メモリへ配備する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
前記第1のアプリケーションを起動して、前記処理要求を第1のアプリケーションへ転送する手順は、
前記第1のアプリケーションを計算機のメモリに配備する手順と、
前記第1のアプリケーションに処理要求を転送するリクエスト転送部を前記メモリへ配備する手順と、
を含むことを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
12.
前記第1のアプリケーションと第2のアプリケーションは同一の機能を有し、前記第2のアプリケーションのバージョンが、前記第1のアプリケーションのバージョンと異なることを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
前記第1のアプリケーションと第2のアプリケーションは同一の機能を有し、前記第2のアプリケーションのバージョンが、前記第1のアプリケーションのバージョンと異なることを特徴とする上記1.に記載のアプリケーションの高可用制御方法。
13.
処理要求を受け付ける旧アプリケーションから新アプリケーションへ入れ替えるアプリケーションのオンラインバージョン変更方法であって、
前記新アプリケーションを起動して、前記処理要求を新アプリケーションへ転送する手順と、
所定の条件を満たしたときに、前記旧アプリケーションを起動し、新たな処理要求を当該新アプリケーションへ転送する手順と、
前記新アプリケーションが起動した後に、前記旧アプリケーションで前記処理要求を完了すると、当該旧アプリケーションを終了する手順と、
を含むことを特徴とするアプリケーションのオンラインバージョン変更方法。
処理要求を受け付ける旧アプリケーションから新アプリケーションへ入れ替えるアプリケーションのオンラインバージョン変更方法であって、
前記新アプリケーションを起動して、前記処理要求を新アプリケーションへ転送する手順と、
所定の条件を満たしたときに、前記旧アプリケーションを起動し、新たな処理要求を当該新アプリケーションへ転送する手順と、
前記新アプリケーションが起動した後に、前記旧アプリケーションで前記処理要求を完了すると、当該旧アプリケーションを終了する手順と、
を含むことを特徴とするアプリケーションのオンラインバージョン変更方法。
14.
メモリ上に第1のアプリケーションと第2のアプリケーションを配備する配備部と、
受け付けた処理要求を前記第1のアプリケーションと第2のアプリケーションのいずれか一方に転送するリクエスト転送部と、を備えた計算機システムにおいて、
前記第1のアプリケーションと第2のアプリケーションを切り替えるリプレース管理部を有し、
前記リプレース管理部は、
前記配備部に第2のアプリケーションを起動させた後に、処理要求の転送先を前記第1のアプリケーションから前記第2のアプリケーションに切り替える指令を前記リクエスト転送部へ送出し、
前記第1のアプリケーションの処理が完了した後に、前記第1のアプリケーションを破棄するよう前記配備部へ指令することを特徴とする計算機システム。
メモリ上に第1のアプリケーションと第2のアプリケーションを配備する配備部と、
受け付けた処理要求を前記第1のアプリケーションと第2のアプリケーションのいずれか一方に転送するリクエスト転送部と、を備えた計算機システムにおいて、
前記第1のアプリケーションと第2のアプリケーションを切り替えるリプレース管理部を有し、
前記リプレース管理部は、
前記配備部に第2のアプリケーションを起動させた後に、処理要求の転送先を前記第1のアプリケーションから前記第2のアプリケーションに切り替える指令を前記リクエスト転送部へ送出し、
前記第1のアプリケーションの処理が完了した後に、前記第1のアプリケーションを破棄するよう前記配備部へ指令することを特徴とする計算機システム。
15.
前記第1のアプリケーションで使用されるセッション情報を保存するセッション保存部を、さらに含み、
前記第2のアプリケーションがセッション情報を読み出すと、前記セッション保存部に保存された第1のアプリケーションが書き込んだセッション情報が得られることを特徴とする2.に記載のアプリケーションの高可用制御方法。
前記第1のアプリケーションで使用されるセッション情報を保存するセッション保存部を、さらに含み、
前記第2のアプリケーションがセッション情報を読み出すと、前記セッション保存部に保存された第1のアプリケーションが書き込んだセッション情報が得られることを特徴とする2.に記載のアプリケーションの高可用制御方法。
以上のように、本発明は、Webアプリケーションでサービスを提供する計算機システムやWebアプリケーションを制御するプログラムに適用することがえきる。
3 クライアント
4 Webサーバ
54 アプリケーションサーバ
55 Webアプリケーション
543 リプレースマネージャ
544 リクエストスイッチ
541 アプリケーションマネージャ
545 Nデプロイア
548 デプロイア
546 状態保持部
547 デプロイツール
App1 現用系Webアプリケーション
App2 代替系Webアプリケーション
4 Webサーバ
54 アプリケーションサーバ
55 Webアプリケーション
543 リプレースマネージャ
544 リクエストスイッチ
541 アプリケーションマネージャ
545 Nデプロイア
548 デプロイア
546 状態保持部
547 デプロイツール
App1 現用系Webアプリケーション
App2 代替系Webアプリケーション
Claims (1)
- 処理要求を受け付ける第1のアプリケーションと第2のアプリケーションを入れ替えるアプリケーションの高可用制御方法であって、
前記処理要求を第1のアプリケーションへ転送する手順と、
所定の条件を満たしたときには、前記第2のアプリケーションを起動し、新たな処理要求を当該第2のアプリケーションへ転送する手順と、
前記第2のアプリケーションが起動した後に、前記第1のアプリケーションで前記処理要求を完了すると、当該第1のアプリケーションを終了する手順と、
を含むことを特徴とするアプリケーションの高可用制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012148803A JP2012212462A (ja) | 2012-07-02 | 2012-07-02 | アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012148803A JP2012212462A (ja) | 2012-07-02 | 2012-07-02 | アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007124311A Division JP5052955B2 (ja) | 2007-05-09 | 2007-05-09 | アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012212462A true JP2012212462A (ja) | 2012-11-01 |
Family
ID=47266306
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012148803A Pending JP2012212462A (ja) | 2012-07-02 | 2012-07-02 | アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012212462A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015068217A1 (ja) * | 2013-11-06 | 2015-05-14 | 株式会社日立製作所 | 管理システム及び方法 |
US9654560B2 (en) | 2013-06-27 | 2017-05-16 | Hitachi, Ltd. | Management system and method |
-
2012
- 2012-07-02 JP JP2012148803A patent/JP2012212462A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9654560B2 (en) | 2013-06-27 | 2017-05-16 | Hitachi, Ltd. | Management system and method |
WO2015068217A1 (ja) * | 2013-11-06 | 2015-05-14 | 株式会社日立製作所 | 管理システム及び方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5052955B2 (ja) | アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム | |
US11829742B2 (en) | Container-based server environments | |
EP2815311B1 (en) | Using an application cache to update resources of installed applications | |
US10713183B2 (en) | Virtual machine backup using snapshots and current configuration | |
JP5298763B2 (ja) | 仮想システム制御プログラム、方法及び装置 | |
EP1679602B1 (en) | Shared memory based monitoring for application servers | |
US8307058B2 (en) | Apparatus, method, and computer program product for processing information | |
CN104040525B (zh) | 通过网络连接访问覆盖介质 | |
MX2014009761A (es) | Generacion y guardado en memoria cache de codigo de software. | |
US9189223B2 (en) | Connecting method and apparatus for connecting a component included in an application with an external service | |
WO2012050224A1 (ja) | コンピュータリソース制御システム | |
US20110078673A1 (en) | Persisting the changes for managed components in an application server | |
JP2014170515A (ja) | 機器、情報記録プログラム、及び情報記録方法 | |
JPWO2008152967A1 (ja) | 情報処理装置、実行環境転送方法及びそのプログラム | |
JP4717426B2 (ja) | 情報処理装置及びその方法 | |
JP2008123303A (ja) | 情報処理装置、情報処理方法、およびプログラム | |
JP2018055481A (ja) | ログ監視装置、ログ監視方法及びログ監視プログラム | |
KR102337962B1 (ko) | 마이크로서비스 아키텍처 애플리케이션 실행 시스템과 방법 및 이를 위한 컴퓨터 프로그램 | |
JP5013999B2 (ja) | 画像形成装置、プログラム制御方法、及び制御プログラム | |
JP2012212462A (ja) | アプリケーションの高可用運用方法、オンラインバージョン変更方法及び計算機システム | |
JP3986721B2 (ja) | ソフトウェア・モジュール動的交換方法及びソフトウェア・モジュール動的交換プログラム記録媒体 | |
JP2012242988A (ja) | 情報処理装置及びプログラム | |
JP4976329B2 (ja) | 追加プログラムを実行可能な装置、障害解析支援方法、及び障害解析支援プログラム | |
US20080141262A1 (en) | System, apparatus, and method for managing a service | |
JP5798973B2 (ja) | 処理状態が遷移する複数のプログラムを実行する装置及び方法 |