情報処理プログラム、制御方法および情報処理装置
【課題】障害の発生した装置を容易に検出可能とすること。
【解決手段】実行手段2aは、情報処理装置3に対して排他的な処理を実行する。実行手段2aは、情報処理装置2の識別情報と当該処理の進捗を示す情報とを含む制御情報D1を情報処理装置3に格納する。実行手段2aは、当該処理を実行するとともに当該処理の進捗を示す情報を更新する。監視手段1bは、情報処理装置3に格納された制御情報D1を監視し、制御情報D1に含まれる識別情報および処理の進捗を示す情報が所定時間以上同じであることを検出する。すると、監視手段1bは、当該識別情報に基づいて情報処理装置2で障害が発生したと判断する。
【解決手段】実行手段2aは、情報処理装置3に対して排他的な処理を実行する。実行手段2aは、情報処理装置2の識別情報と当該処理の進捗を示す情報とを含む制御情報D1を情報処理装置3に格納する。実行手段2aは、当該処理を実行するとともに当該処理の進捗を示す情報を更新する。監視手段1bは、情報処理装置3に格納された制御情報D1を監視し、制御情報D1に含まれる識別情報および処理の進捗を示す情報が所定時間以上同じであることを検出する。すると、監視手段1bは、当該識別情報に基づいて情報処理装置2で障害が発生したと判断する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は排他的な処理を行う情報処理プログラム、制御方法および情報処理装置に関する。
【背景技術】
【0002】
現在、複数の情報処理装置をネットワークで接続した情報処理システムが利用されている。このような情報処理システムでは、例えば、複数のサーバ装置が1つのデータベース装置にアクセスして処理を行うことがある。その場合、同時に発生した複数のアクセスにより、データの整合性が損なわれるおそれがある。そこで、排他制御を行うことがある。
【0003】
例えば、共有するファイルに使用中かどうかを示す排他制御レコードを設け、オンライン処理またはバッチ処理で使用中の場合には、当該レコードに使用中状態をセットして、当該ファイルへのアクセスの排他制御を行う提案がある(例えば、特許文献1参照)。また、共有するファイルが使用されるときは占有中が表示されるロックファイルを設けて、当該ロックファイルを参照することで、当該ファイルへのアクセスの排他制御を行う提案がある(例えば、特許文献2参照)。
【0004】
なお、実行中の処理が共有データに対するアクセスを排他されると、処理状態をサスペンドし、その後、中断した地点から当該処理を再開する提案がある(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平5−134914号公報
【特許文献2】特開平10−247158号公報
【特許文献3】特開2011−76304号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、あるサーバ装置がデータベース装置に排他的にアクセスしている際に、当該サーバ装置に障害が発生することがある。その場合、当該障害への対策を迅速に行うため、当該障害がどのサーバ装置で発生したかを把握したいことがある。このとき、障害のあったサーバ装置を容易に特定する仕組みをどのようにして実現するかが問題となる。例えば、各サーバ装置に監視用のソフトウェアを導入して、障害を検出することが考えられる。しかし、各サーバ装置に監視用のソフトウェアを導入するためのコストが生じてしまう。
【0007】
本発明はこのような点に鑑みてなされたものであり、障害の発生した装置を容易に検出することができる情報処理プログラム、制御方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
コンピュータが実行する情報処理プログラムであって、複数のコンピュータの何れかが情報処理装置に対して排他的な処理を行うシステムに用いられる情報処理プログラムが提供される。この情報処理プログラムは、コンピュータに、他のコンピュータによる処理が実行されていない場合、自装置の識別情報と処理の進捗を示す情報とを含む制御情報を情報処理装置に格納して、情報処理装置に対する処理を実行するとともに処理の進捗を示す情報を更新し、他のコンピュータによる処理が実行されている場合、情報処理装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて他のコンピュータで障害が発生したと判断する、処理を実行させる。
【0009】
複数の情報処理装置の何れかが処理対象装置に対して排他的な処理を行うシステムで実行される制御方法が提供される。この制御方法では、情報処理装置が、他の情報処理装置による処理が実行されていない場合、自装置の識別情報と処理の進捗を示す情報とを含む制御情報を処理対象装置に格納して、処理対象装置に対する処理を実行するとともに処理の進捗を示す情報を更新する。情報処理装置が、他の情報処理装置による処理が実行されている場合、処理対象装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて他の情報処理装置で障害が発生したと判断する。
【0010】
複数の情報処理装置の何れかが処理対象装置に対して排他的な処理を行うシステムに用いられる情報処理装置が提供される。この情報処理装置は実行手段と監視手段とを有する。実行手段は、他の情報処理装置による処理が実行されていない場合、自装置の識別情報と処理の進捗を示す情報とを含む制御情報を処理対象装置に格納して、処理対象装置に対する処理を実行するとともに処理の進捗を示す情報を更新する。監視手段は、他の情報処理装置による処理が実行されている場合、処理対象装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて他の情報処理装置で障害が発生したと判断する。
【発明の効果】
【0011】
障害の発生した装置を容易に検出できる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態の情報処理システムを示す図である。
【図2】第2の実施の形態の情報処理システムを示す図である。
【図3】APサーバのハードウェア例を示す図である。
【図4】情報処理システムのソフトウェア例を示す図である。
【図5】ロック制御テーブルおよび比較テーブルの例を示す図である。
【図6】タイムアウト時間テーブルの例を示す図である。
【図7】日付変更処理の例を示すフローチャートである。
【図8】監視処理の例を示すフローチャートである。
【図9】日付変更処理の具体例を示す図である。
【図10】日付変更処理の具体例を示す図(続き)である。
【図11】日付変更処理の具体例を示す図(続き)である。
【図12】日付変更処理の他の例を示す第1の図である。
【図13】日付変更処理の他の例を示す第2の図である。
【発明を実施するための形態】
【0013】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、情報処理装置1,2,3を有する。情報処理装置1,2,3は、CPU(Central Processing Unit)などのプロセッサとRAM(Random Access Memory)などのメモリとを備えてもよく、メモリに記憶されたプログラムをプロセッサが実行するコンピュータであってもよい。情報処理装置3は記憶手段3aを有する。第1の実施の形態の情報処理システムでは、情報処理装置1,2が情報処理装置3に対する排他的な処理を行う。情報処理装置3は、情報処理装置1,2に対する処理対象装置である。当該処理中は、情報処理装置1,2の何れかが情報処理装置3を占有する。例えば、情報処理装置2が当該処理を行っている場合、記憶手段3aに格納されたデータの情報処理装置1による当該処理の実行は行えない(排他制御)。情報処理装置1は、実行手段1aおよび監視手段1bを有する。情報処理装置2は、実行手段2aおよび監視手段2bを有する。
【0014】
実行手段1aは、当該処理の実行指示の入力を受け付ける。実行手段1aは、情報処理装置2による当該処理が実行されていない場合、自装置(情報処理装置1)の識別情報と当該処理の進捗を示す情報とを含む制御情報を情報処理装置3に格納する。
【0015】
ここで、識別情報とは、装置を識別するための情報である(例えば、ホスト名)。例えば、情報処理装置1にホスト名“ノードA1”が、情報処理装置2にホスト名“ノードA2”が付与されている場合、これらホスト名を情報処理装置1,2の識別情報とする。
【0016】
また、処理の進捗を示す情報とは、情報処理装置3に対して実行している処理が、現在どの段階であるかを示す情報である。例えば、処理を開始した段階、前処理の段階、1段階目、2段階目、後処理の段階などの処理段階を識別するための情報であって、情報処理装置1,2間で予め合意されたものを格納する。
【0017】
実行手段1aは、情報処理装置3に対する当該処理を実行するとともに当該処理の進捗を示す情報を更新する。
監視手段1bは、情報処理装置2による当該処理が実行されている場合、情報処理装置3に格納された制御情報D1を監視する。ここで、制御情報D1は、記憶手段3aに格納されている。制御情報D1は実行手段2aによって格納されたものである。制御情報D1には、情報処理装置2のホスト名“ノードA2”が識別情報として登録されている。また、制御情報D1には、“処理段階2”が処理の進捗を示す情報として登録されている。実行手段2aは、情報処理装置3に対する処理を実行するとともに、その処理の進捗に応じて、制御情報D1に含まれる処理の進捗を示す情報を更新する。
【0018】
監視手段1bは、制御情報D1に含まれる識別情報および処理の進捗を示す情報が所定時間TH以上同じであることを検出すると、当該識別情報に基づいて情報処理装置2で障害が発生したと判断する。所定時間THは、例えば、当該処理のタイムアウト時間である。タイムアウト時間以上処理の進捗がない場合に障害と判断するのは、その場合に情報処理装置2上で当該処理に係るアプリケーションや通信で障害が発生している可能性が高いからである。
【0019】
例えば、監視手段1bはあるタイミングで処理の進捗を示す情報の更新を検出する(ステップT1)。監視手段1bは、ステップT1のタイミングから時間TA経過後のタイミングで、処理の進捗を示す情報の更新を検出する(ステップT2)。時間TAは所定時間THより短い時間である。監視手段1bは、ステップT2のタイミングから時間TB経過後のタイミングで、識別情報および処理の進捗を示す情報が更新されていない(ステップT2のときと同じである)ことを検出する(ステップT3)。時間TBは、所定時間THと同じか、あるいは所定時間THよりも長い時間である。すると、監視手段1bは、当該識別情報に基づいて、情報処理装置2で障害が発生したと判断する。
【0020】
監視手段1bは、障害検知後、情報処理装置2が実行していた処理を実行手段1aに代わりに実行させてもよい。処理を代替する場合、実行手段1aは情報処理装置2が実行済の段階から当該処理を継続してもよい。また、監視手段1bは、障害検知後、情報処理装置2で障害が発生した旨を情報処理システムの管理者に通知してもよい。
【0021】
情報処理装置1によれば、情報処理装置2による情報処理装置3に対する(排他的な)処理が実行されていない場合、実行手段1aにより、自装置の識別情報と処理の進捗を示す情報とを含む制御情報が情報処理装置3に格納される。実行手段1aにより、情報処理装置3が占有され、情報処理装置3に対する処理が実行されるとともに、制御情報に含まれる処理の進捗を示す情報が更新される。情報処理装置2による情報処理装置3に対する(排他的な)処理が実行されている場合、監視手段1bにより、情報処理装置3に格納された制御情報D1が監視される。監視手段1bにより、制御情報D1に含まれる識別情報および処理の進捗を示す情報が所定時間同じであることが検出されると、当該識別情報に基づいて情報処理装置2で障害が発生したと判断される。
【0022】
これにより、障害の発生した装置を容易に検出できる。具体的には、実行手段1a,2aは、情報処理装置3に対する処理を行うとともに、自身の識別情報を含む制御情報を情報処理装置3に格納する。このため、監視手段1b,2bは当該制御情報に含まれる識別情報を参照して、障害の発生した装置を容易に特定できる。このため、例えば、管理者に対して、障害の発生した装置を指定した障害対応の指示を迅速に行える。また、例えば、情報処理装置2で障害が発生した場合にも、情報処理装置2が実行していた処理を情報処理装置1で容易に代替できる。特に、当該制御情報には、処理の段階を示す情報が含まれる。例えば、実行手段1aは、当該処理の段階を示す情報に基づき、実行済の段階を省いて、情報処理装置2による処理を継続してもよい。このようにすれば、同じ処理の二重実行を抑制できる。このため、引き継いだ処理を効率的に実行できる。
【0023】
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、金融機関の窓口業務の運用に利用される。第2の実施の形態の情報処理システムは、AP(APplication)サーバ100,100a,100b、DB(DataBase)サーバ200,200a、ホスト装置300および管理端末装置400を含む。APサーバ100,100a,100b、DBサーバ200,200aおよび管理端末装置400は、ネットワーク10に接続されている。ネットワーク10は、例えばLAN(Local Area Network)である。APサーバ100,100a,100bおよびホスト装置300は、ネットワーク20に接続されている。ネットワーク20は、例えばLANやWAN(Wide Area Network)である。ネットワーク10,20は、この情報処理システムのために設けられた専用のネットワークでもよい。
【0024】
APサーバ100,100a,100bは、DBサーバ200,200aに格納されたデータを用いた処理を行うサーバコンピュータである。以下の説明において、APサーバ100のホスト名を“AP01”、APサーバ100aのホスト名を“AP02”、APサーバ100bのホスト名を“AP03”とする。例えば、APサーバ100,100a,100bは、ネットワーク10を介して、窓口業務を行う窓口端末装置(図示を省略)と接続される。APサーバ100,100a,100bは、窓口端末装置で入力された振込や引出の内容を示す業務データを取得し、DBサーバ200,200aに格納する。
【0025】
DBサーバ200,200aは、APサーバ100,100a,100bの処理に用いるデータを記憶するサーバコンピュータである。DBサーバ200,200aは、所定の関係データベース管理システム(RDBMS:Relational DB Management System)によりデータを管理している。
【0026】
ホスト装置300は、APサーバ100,100a,100bにオンラインバッチ処理(以下、バッチ処理ということがある)の実行を指示するホストコンピュータである。
管理端末装置400は、情報処理システムの運用管理を行う管理者が利用するクライアントコンピュータである。
【0027】
ここで、第2の実施の形態では、バッチ処理として、運用日付などの変更処理(以下、日付変更処理ということがある)を例示する。
運用日付とは、当該情報処理システム内で共通に利用する日付であり、各サーバ装置で管理する日付(各サーバ装置のOS(Operating System)で管理されるカレンダー日付)とは異なるものである。運用日付は、一日のうちの所定のタイミング(例えば、午前0時になるタイミング)で変更される。具体的には、ホスト装置300は、APサーバ100,100a,100bに日付変更を通知する。当該通知を受けると、APサーバ100,100a,100bは、DBサーバ200,200aに対する日付変更処理を実行する。例えば、APサーバ100は、DBサーバ200に対する日付変更処理として、次の処理を順次行う(他のAPサーバの他のDBサーバに対する日付変更処理も同様)。
【0028】
(1)APサーバ100は、DBサーバ200の運用状態を解除する(以下の一連の処理を実行可能な状態となる)。これを“処理段階1”とする。
(2)APサーバ100は、DBサーバ200に格納されたデータを参照して、業務データを更新する(過去日付の不要な業務データの削除、当日未処理分の業務データの翌日への繰越など)。これを“処理段階2”とする。
【0029】
(3)APサーバ100は、DBサーバ200に登録された運用日付の変更を行う。これを“処理段階3”とする
(4)APサーバ100は、DBサーバ200を窓口業務の運用が可能な状態に戻す。これを“処理段階4”とする。
【0030】
1つのDBサーバに対する日付変更処理は、上記所定のタイミングごとに1度行われればよい。当該情報処理システムではDBサーバ200,200aの2台に対して日付変更処理を行うので、APサーバ100,100a,100bの何れか1つまたは2つがDBサーバ200,200aに対する日付変更処理を行えばよい。
【0031】
ここで、上記(1)〜(4)の一連の処理(日付変更処理)は、APサーバ100,100a,100bの何れかが、例えばDBサーバ200を占有して行う。例えば、APサーバ100がDBサーバ200を占有している場合には、APサーバ100a,100bからDBサーバ200内の(占有箇所の)データ変更を行うことは禁止される(排他制御)。すなわち、DBサーバ200を先着で占有したAPサーバが当該DBサーバ200に対する日付変更処理を実行することとなる。
【0032】
図3は、APサーバのハードウェア例を示す図である。APサーバ100は、CPU101、RAM102、HDD(Hard Disk Drive)103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信部107を有する。各ユニットがAPサーバ100のバスに接続されている。APサーバ100a,100b、DBサーバ200,200a、ホスト装置300および管理端末装置400もAPサーバ100と同様のハードウェアを用いて実装できる。
【0033】
CPU101は、OSプログラムやアプリケーションプログラムを実行して、APサーバ100全体を制御する。
RAM102は、CPU101が実行するOSプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、CPU101の処理に用いられるデータの少なくとも一部を一時的に記憶する。
【0034】
HDD103は、OSプログラムやアプリケーションプログラムを記憶する。また、HDD103は、CPU101の処理に用いられるデータを記憶する。なお、HDD103に代えて(または、HDD103と併せて)、SSD(Solid State Drive)など他の種類の不揮発性の記憶装置を用いてもよい。
【0035】
画像信号処理部104は、CPU101の命令に従って、APサーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、例えば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイを用いることができる。
【0036】
入力信号処理部105は、APサーバ100に接続された入力デバイス12から入力信号を取得し、CPU101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【0037】
ディスクドライブ106は、記録媒体13に格納されたデータを読み取る読取装置である。記録媒体13には、例えば、APサーバ100に実行させるプログラムが記録されている。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。CPU101は、例えば、当該プログラムを実行することで、後述するような機能を実現できる。当該プログラムは、コンピュータ読み取り可能な記録媒体13に記録して配布可能である。
【0038】
記録媒体13としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、HDD、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、CD−R(Recordable)/RW(ReWritable)、DVD(Digital Versatile Disc)、DVD−R/RW/RAMなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。半導体メモリには、USB(Universal Serial Bus)メモリなどのフラッシュメモリがある。
【0039】
通信部107は、ネットワーク10を介してDBサーバ200,200aおよび管理端末装置400と通信を行う通信インタフェースである。通信部108は、ネットワーク20を介してホスト装置300と通信を行う通信インタフェースである。通信部107,108は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【0040】
図4は、情報処理システムのソフトウェア例を示す図である。図4に示すユニットの一部または全部は、APサーバ100,100a,100bおよびDBサーバ200,200aが実行するプログラムのモジュールであってもよい。また、図4に示すユニットの一部または全部は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などの電子回路であってもよい。APサーバ100a,100bもAPサーバ100と同様のユニットを用いて実装できる。DBサーバ200aもDBサーバ200と同様のユニットを用いて実装できる。また、以下では、APサーバ100がDBサーバ200に対して処理を行う場合を想定して説明するが、他のAPサーバおよびDBサーバに関しても同様である。
【0041】
APサーバ100は、日付変更実行部110、制御情報DB120、監視部130および通知部140を有する。
日付変更実行部110は、ホスト装置300の日付変更の通知に応じて、DBサーバ200に対する日付変更処理を実行する。日付変更実行部110は、日付変更処理を実行する前に、DBサーバ200に制御情報を登録する。日付変更実行部110は、制御情報を登録することでDBサーバ200を占有する。制御情報には、自装置(APサーバ100)のホスト名と日付変更処理の進捗を示す情報(以下、処理進捗ということがある)とが含まれる。日付変更実行部110は、日付変更処理の進捗に応じて、DBサーバ200に格納された制御情報にアクセスし、処理進捗を更新する。
【0042】
ここで、日付変更実行部110は、日付変更処理を実行する前に、DBサーバ200の所定の制御情報DB(後述する)に対するロック状況を確認することで、DBサーバ200の占有状態を判断する。DBサーバ200が他のAPサーバにより占有されている場合、日付変更実行部110は、DBサーバ200に対して日付変更処理を行えない。その場合、日付変更実行部110は、DBサーバ200に格納された制御情報の監視を監視部130に指示する。DBサーバ200が他のAPサーバにより占有されていない場合、日付変更実行部110は、DBサーバ200の制御情報DBをロックし、制御情報DBに制御情報を登録できる。
【0043】
制御情報DB120は、監視部130がDBサーバ200から読み出した比較用の制御情報を記憶する。
監視部130は、DBサーバ200に対する他のAPサーバの日付変更処理の状況を監視する。具体的には、監視部130は、DBサーバ200に格納された制御情報を参照して、制御情報に含まれる識別情報および処理進捗が所定時間以上同じであるかを判断する。より具体的には、監視部130は、あるタイミングでDBサーバ200から読み出した制御情報を制御情報DB120に格納しておく。監視部130は、所定周期でDBサーバ200上の制御情報と内容を比較することで、制御情報の更新の有無を判断する。なお、制御情報に含まれる識別情報および処理進捗が所定時間以上同じである、とは、制御情報が所定時間以上同じである(更新されていない)ことを意味する。監視部130は、制御情報が所定時間以上同じである場合、次の処理を行う。すなわち、(1)監視部130は、通知部140に障害通知を行うよう指示する。(2)監視部130は、日付変更実行部110に処理の代替を指示する。
【0044】
通知部140は、監視部130からの指示に応じて、管理端末装置400に障害通知のメッセージを送信する。通知部140は、障害通知のための電子メールを生成し、管理者の電子メールアドレスに送信してもよい。通知部140には、当該メッセージや電子メールの宛先となる、管理端末装置400のIP(Internet Protocol)アドレスや管理者の電子メールアドレスが予め設定される。
【0045】
DBサーバ200は、アクセス制御部210、業務DB220、制御情報DB230および運用日付管理部240を有する。
アクセス制御部210は、APサーバ100,100a,100bからのアクセスを制御する。アクセス制御部210は、APサーバ100,100a,100bからの要求(ロック要求)に応じて制御情報DB230をロックする。ロックの単位は、レコード単位、テーブル単位およびDB単位とすることが考えられる。制御情報DB230がロックされると、アクセス制御部210は、ロックしたAPサーバからの書き込み要求のみを許容し、他のAPサーバからの書き込み要求を禁止する。アクセス制御部210の機能は、RDBMSにより実現できる。ロック要求は、制御情報DB230に格納された制御情報を更新できるかの問い合わせということができる。
【0046】
アクセス制御部210は、APサーバ100からの書き込み要求に応じて、業務DB220や制御情報DB230にデータを書き込む。アクセス制御部210は、APサーバ100からの読み出し要求に応じて、業務DB220や制御情報DB230からデータを読み出す。アクセス制御部210は、APサーバ100から日付変更処理の指示を受信すると、当該指示を運用日付管理部240に出力する。このように、APサーバ100,100a,100bは、アクセス制御部210を介して、業務DB220、制御情報DB230および運用日付管理部240にアクセスする。更に、アクセス制御部210は、所定のタイミング(受付中の処理がタイムアウトしたタイミングあるいは、当該タイムアウトから所定時間経過したタイミング)で制御情報DB230のロック状態を解除する。
【0047】
業務DB220は、金融機関の窓口業務に用いる業務データを記憶する。業務データは、APサーバ100,100a,100bにより取得され業務DB220に格納される。
制御情報DB230は、制御情報を記憶する。制御情報は、APサーバ100,100a,100bによって格納される。制御情報DB230をロックし、制御情報DB230に制御情報を書き込んだAPサーバが、DBサーバ200を占有するAPサーバである。
【0048】
運用日付管理部240は、運用日付を管理する。運用日付管理部240は、アクセス制御部210から日付変更処理の指示を受信すると、運用日付を変更する。
図5は、ロック制御テーブルおよび比較テーブルの例を示す図である。図5(A)はロック制御テーブル231を例示している。ロック制御テーブル231は、制御情報DB230に格納される。ロック制御テーブル231は、制御情報を格納するためのテーブルの一例である。ロック制御テーブル231は、APサーバ名および処理進捗の項目を含む。
【0049】
APサーバ名の項目には、APサーバのホスト名が登録される。ホスト名は、FQDN(Fully Qualified Domain Name)、FQDNの一部またはIPアドレスなどで指定できる。処理進捗の項目には、日付変更処理の進捗が登録される。例えば、APサーバ100aがDBサーバ200を占有している場合、APサーバ名の項目には、APサーバ100aのホスト名“AP02”が登録される。そのとき、DBサーバ200に対する日付変更処理が、“処理段階2”の段階であれば、処理進捗の項目には、“処理段階2”が登録される。処理進捗の項目の設定がどの処理段階を示すものであるかは、APサーバ100,100a,100bで予め合意される。
【0050】
図5(B)は比較テーブル121を例示している。比較テーブル121は、制御情報DB120に格納される。比較テーブル121は、比較用の制御情報を格納するためのテーブルの一例である。比較テーブル121は、ロック制御テーブル231と同様に、APサーバ名および処理進捗の項目を含む。各項目に登録される内容は、ロック制御テーブル231と同様である。
【0051】
図6は、タイムアウト時間テーブルの例を示す図である。タイムアウト時間テーブル122は、制御情報DB120に格納される。タイムアウト時間テーブル122は、処理段階名およびタイムアウト時間の項目を含む。
【0052】
処理段階名の項目には、日付変更処理の各処理段階を示す名称が登録される。タイムアウト時間の項目には、当該処理段階において障害と判断するまでの時間が登録される。例えば、処理段階名“処理段階1”に対して、タイムアウト時間“3秒”が登録される。
【0053】
タイムアウト時間テーブル122と同様の管理情報は、DBサーバ200,200aの制御情報DB230にも格納される。
次に、以上の構成の情報処理システムの処理手順を説明する。なお、以下では、APサーバ100がDBサーバ200に対して日付変更処理を行う場合を想定する。APサーバ100がDBサーバ200aに対して日付変更処理を行う場合や、APサーバ100a,100bがDBサーバ200,200aに対して日付変更処理を行う場合も同様である。
【0054】
図7は、日付変更処理の例を示すフローチャートである。以下、図7に示す処理をステップ番号に沿って説明する。
(ステップS11)日付変更実行部110は、ホスト装置300から日付変更通知を受信する。
【0055】
(ステップS12)日付変更実行部110は、DBサーバ200の占有を試みる。具体的には、日付変更実行部110は、制御情報DB230に記憶されたロック制御テーブル231のロックをアクセス制御部210に要求する。アクセス制御部210は、ロック制御テーブル231のロックが解除されていれば、ロック制御テーブル231をロックし、日付変更実行部110にロックした旨を応答する(ロック成功)。アクセス制御部210は、他のAPサーバによりロック制御テーブル231がロックされていれば、ロックできない旨を日付変更実行部110に応答する(ロック失敗)。
【0056】
(ステップS13)日付変更実行部110は、ロックに成功したか否かを判定する。ロックに成功した場合、処理をステップS14に進める。ロックに成功しなかった場合(ロック失敗の場合)、日付変更実行部110は監視部130に監視開始を指示して処理をステップS15に進める。
【0057】
(ステップS14)日付変更実行部110は、ロック制御テーブル231への制御情報の書き込み要求を、アクセス制御部210に送信する。アクセス制御部210は、受信した書き込み要求に応じて、ロック制御テーブル231に制御情報を登録する。制御情報には、APサーバ100の識別情報(“AP01”)および処理進捗(“処理段階1”)の情報が含まれる。
【0058】
(ステップS15)監視部130は、日付変更実行部110からの指示に応じて、制御情報DB230の監視を行う(詳細は後述する)。
(ステップS16)日付変更実行部110は、日付変更が完了済であるか否かを運用日付管理部240に問い合わせる。日付未変更である場合、処理をステップS17へ進める。日付変更済である場合、処理をステップS18に進める。例えば、運用日付管理部240は、日付変更が直近の所定時間内(例えば、1時間以内)に行われたか否かを記録しておけば、日付変更実行部110からの当該問い合わせに対して、日付変更済/未変更を応答できる。
【0059】
(ステップS17)日付変更実行部110は、日付変更処理の各処理段階を“処理段階1”から順次実行する。その際、日付変更実行部110は、各処理段階に進むたびに、制御情報DB230に記憶されたロック制御テーブル231の処理進捗の項目を更新する。例えば、“処理段階2”に進めば、ロック制御テーブル231の処理進捗の項目を“処理段階1”から“処理段階2”に更新する。
【0060】
(ステップS18)日付変更実行部110は、DBサーバ200の占有を解除する。具体的には、日付変更実行部110は、ロック制御テーブル231のロック解除をアクセス制御部210に要求する。アクセス制御部210は、ロック制御テーブル231のロックを解除し(ロック制御テーブル231の設定をクリアする)、日付変更実行部110に解除完了を応答する。ロック制御テーブル231の各項目の設定がクリアされて設定なしとなった状態を初期状態と呼ぶこととする。
【0061】
このようにして、APサーバ100はDBサーバ200に対する日付変更処理を実行する。なお、DBサーバ200,200aの両方の日付変更の完了を確認すると、APサーバ100,100a,100bは、DBサーバ200,200aに格納された業務データを用いた通常の業務処理に移行する。
【0062】
APサーバ100は、DBサーバ200の占有に失敗した場合には、DBサーバ200に格納された制御情報の監視を行う。次に、当該監視処理(ステップS15)の手順を説明する。
【0063】
図8は、監視処理の例を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
(ステップS21)監視部130は、制御情報DB120に記憶された比較テーブル121を初期化する。また、監視部130は、自身が備えるタイマを初期化する(タイマ値=0)。
【0064】
(ステップS22)監視部130は、アクセス制御部210を介してロック制御テーブル231を参照し、設定内容を取得する。なお、ロック制御テーブル231の各項目の設定内容がクリアされて初期状態になっている場合、監視部130は設定内容を取得できない。その場合、監視部130は日付変更処理が他のAPサーバにより正常終了されたと判断して、監視処理を終了する。
【0065】
(ステップS23)監視部130は、ステップS22で取得した設定内容と、比較テーブル121の設定内容を比較して、両設定内容が一致するか否かを判定する。一致する場合、処理をステップS26に進める。一致しない場合、処理をステップS24に進める。ここで、一致する場合とは、各テーブルのAPサーバ名の項目および処理進捗の項目の両方の設定内容が同一である場合である。一致しない場合とは、各テーブルのAPサーバ名の項目および処理進捗の項目の何れか一方または両方の設定内容が同一でない場合である。なお、比較テーブル121を初期化した直後は、比較テーブル121の各項目の設定は“null”(設定なし)である。この場合、本ステップS23の判定では、比較テーブル121とロック制御テーブル231の設定内容は一致しないと判断されることになる。
【0066】
(ステップS24)監視部130は、ステップS22で取得した設定内容(APサーバ名および処理進捗)を比較テーブル121に設定する。
(ステップS25)監視部130は、自身が備えるタイマをリセットする。監視部130は、当該タイマをスタートする。そして、処理をステップS22に進める。
【0067】
(ステップS26)監視部130は、制御情報DB120に記憶されたタイムアウト時間テーブル122を参照して、タイムアウト時間が経過したか否かを判定する。タイムアウト時間テーブル122によれば、処理段階ごとにタイムアウト時間が定義されている。監視部130は、現処理段階のタイムアウト時間を抽出し、タイマのカウントと比較することで、タイムアウト時間が経過したか否かの判断を行える。タイムアウト時間を経過した場合、処理をステップS27に進める。タイムアウト時間を経過していない場合、処理をステップS22に進める。
【0068】
(ステップS27)監視部130は、比較テーブル121のAPサーバ名の項目を参照して、何れのAPサーバによる処理でタイムアウトとなったかを特定する。監視部130は、特定したAPサーバで障害が発生したと判断し、障害通知を行うよう通知部140に指示する。通知部140は、障害通知のメッセージを生成し、管理端末装置400に送信する。監視部130は、処理の代替を日付変更実行部110に指示する。監視部130は監視を停止する。なお、当該処理段階でタイムアウトとなった場合(あるいはタイムアウト後、更に所定時間経過した後に)、アクセス制御部210はそれを検出して、ロック制御テーブル231のロックを解除する(他のAPサーバによってロック可能な状態となる)。
【0069】
(ステップS28)日付変更実行部110は、監視部130から処理の代替の指示を受け付けると、DBサーバ200の占有を試みる。具体的には、日付変更実行部110は、制御情報DB230に記憶されたロック制御テーブル231のロックをアクセス制御部210に要求する。アクセス制御部210は、ロック制御テーブル231のロックが解除されていれば、ロック制御テーブル231をロックし、日付変更実行部110にロックした旨を応答する(ロック成功)。アクセス制御部210は、他のAPサーバによりロック制御テーブル231がロックされていれば、ロックできない旨を日付変更実行部110に応答する(ロック失敗)。
【0070】
(ステップS29)日付変更実行部110は、ロックに成功したか否かを判定する。ロックに成功した場合、処理をステップS30に進める。ロックに成功しなかった場合(ロック失敗の場合)、日付変更実行部110は監視部130に監視の再開を指示して処理をステップS22に進める。
【0071】
(ステップS30)日付変更実行部110は、ロック制御テーブル231への制御情報の書き込み要求を、アクセス制御部210に送信する。アクセス制御部210は、受信した書き込み要求に応じて、ロック制御テーブル231に制御情報を登録する。制御情報には、APサーバ100の識別情報(ホスト名)および処理進捗(例えば、“処理段階1”)の情報が含まれる。そして、処理を図7のステップS16に進める。
【0072】
このようにして、監視部130は制御情報DB230に記憶された制御情報を監視する。そして、監視部130は同一のAPサーバがある処理段階でタイムアウトとなったときに、当該APサーバで障害が発生したと判断する。すると、通知部140は障害通知のメッセージを管理端末装置400に送信する。通知部140は、障害通知のメッセージを記述した電子メールを所定の電子メールアドレスに送信してもよい。なお、ステップS27で示した障害通知メッセージの送信処理は、ステップS29またはステップS30の直後に実行されてもよい。
【0073】
また、日付変更実行部110は、障害と判断されたAPサーバの代わりに日付変更処理を実行する。日付変更実行部110は、当該処理を代替する際、図7のステップS17で示したように、日付変更処理の最初の段階(“処理段階1”)から順次実行することが考えられる。一方、途中まで処理段階が進んでいる場合には、日付変更実行部110は途中の処理段階から処理を引き継いでもよい。実行済の処理段階を省き、処理の効率化を図るためである。
【0074】
この場合、ステップS27で、監視部130は処理の代替の指示とともに、ロック制御テーブル231に設定された処理段階(例えば、“処理段階3”)を、日付変更実行部110に通知する。すると、ステップS30で、日付変更実行部110は通知された処理段階を、ロック制御テーブル231に設定する。その後、図7で示したステップS17では、日付変更実行部110は当該処理段階(例えば、“処理段階3”)から順次処理を実行していけばよい。このようにすれば、他のAPサーバによって、日付変更処理が“処理段階2”まで完了しているとき、日付変更実行部110は“処理段階1”および“処理段階2”を省いて“処理段階3”から日付変更処理を引き継げる。
【0075】
次に、以上で示した日付変更処理の具体例を説明する。以下では、APサーバ100,100a,100bとDBサーバ200との間の処理を説明するが、APサーバ100,100a,100bとDBサーバ200aとの間の処理も同様である。
【0076】
図9は、日付変更処理の具体例を示す図である。以下、図9に示す処理をステップ番号に沿って説明する。
(ステップST101)APサーバ100,100a,100bは、ホスト装置300から日付変更の通知を受ける。すると、APサーバ100,100a,100bは、DBサーバ200の占有を試みる。すなわち、APサーバ100,100a,100bは、制御情報DB230に格納されたロック制御テーブル231のロックをDBサーバ200に要求する。このとき、APサーバ100がロックに成功したとする。すると、APサーバ100a,100bからロック制御テーブル231に対するデータ更新は禁止される(APサーバ100bはロックに失敗する)。
【0077】
(ステップST102)APサーバ100は、自身のAPサーバ名“AP01”および処理進捗“処理段階1”を、ロック制御テーブル231に登録する。以後、APサーバ100は、次の処理段階に進むたびに、ロック制御テーブル231の処理進捗の項目を“処理段階2”、“処理段階3”、・・・と順次更新する。一方、APサーバ100a,100bは、ロック制御テーブル231の監視を行う。そして、図10のステップST103,103aの何れかに進む。
【0078】
図10は、日付変更処理の具体例を示す図(続き)である。以下、図10に示す処理をステップ番号に沿って説明する。ここで、ステップST103は、ステップST102の次の状態を示しており、APサーバ100による日付変更処理が正常に終了する場合を例示している(APサーバ100bは図示を省略)。
【0079】
(ステップST103)APサーバ100は、DBサーバ200の占有を解除する。具体的には、APサーバ100は、DBサーバ200にロック解除の要求を送信する。すると、DBサーバ200は、ロック制御テーブル231の設定をクリアし、初期状態(設定なしの状態)に戻す。すると、APサーバ100,100a,100bは、DBサーバ200に格納された業務データを用いた業務処理を開始可能となる。これにより、日付変更処理は正常に終了する。
【0080】
一方、ステップST103aは、ステップST102の次の状態を示しており、APサーバ100で障害が発生した場合を例示している(APサーバ100bは図示を省略)。
(ステップST103a)APサーバ100は、障害により、日付変更処理を続行できない状態となる。すると、DBサーバ200を監視していたAPサーバ100aは、ロック制御テーブル231に設定されたAPサーバ名および処理進捗の情報が更新されないまま、タイムアウト時間が経過したことを検出する。そして、APサーバ100aは、ロック制御テーブル231に設定されたAPサーバ名“AP01”に基づいてAPサーバ100で障害が発生したと判断する。APサーバ100aは、APサーバ100で障害が発生した旨を通知するメッセージを管理端末装置400に送信する。そして、図11のステップST104に進む。
【0081】
図11は、日付変更処理の具体例を示す図(続き)である。以下、図11に示す処理をステップ番号に沿って説明する。
(ステップST104)DBサーバ200は、タイムアウト時間(あるいはタイムアウト時間に所定時間を加算した時間)を経過したことにより、ロック制御テーブル231のロックを解除する。APサーバ100aは、DBサーバ200の占有を試みる。すなわち、APサーバ100aは、制御情報DB230に格納されたロック制御テーブル231のロックをDBサーバ200に要求する。APサーバ100aは当該ロックに成功したとする。この場合、APサーバ100bはDBサーバ200にロック要求をしても、既にAPサーバ100aによりロック済のため、ロックは失敗する。
【0082】
(ステップST105)APサーバ100aは、自身のAPサーバ名“AP02”および処理進捗“処理段階1”を、ロック制御テーブル231に登録する。以後、APサーバ100aは、次の処理段階に進むたびに、ロック制御テーブル231の処理進捗の項目を“処理段階2”、“処理段階3”、・・・と順次更新する。一方、APサーバ100bは、ロック制御テーブル231の監視を行う。以降の処理は、ステップST103,ST103aで説明した処理と同様である。
【0083】
なお、ステップST105において、APサーバ100aがAPサーバ100の処理を途中から引き継ぐ場合には、ロック制御テーブル231の処理進捗の項目に“処理段階3”を登録する。そして、APサーバ100aは、“処理段階3”から順次処理を行う。
【0084】
このようにして、APサーバ100,100a,100bは、DBサーバ200に対する日付変更処理を行う。
次に、日付変更処理を行うための他のシステム例を示し、第2の実施の形態の日付変更処理と対比する。
【0085】
図12は、日付変更処理の他の例を示す第1の図である。図12(A)は第1のシステム例を示す。第1のシステム例では、1つのAPサーバに対し、日付変更処理の対象とする1つのDBサーバを対応付ける。第1のシステム例は、ホスト装置510、APサーバ520,520a,520bおよびDBサーバ530,530aを含む。
【0086】
APサーバ520は、DBサーバ530に対して日付変更処理を行う。APサーバ520aは、DBサーバ530aに対して日付変更処理を行う。しかし、この場合、APサーバ520,520aで障害が発生すると、DBサーバ530,530aに対する日付変更処理を行うのが困難となる。
【0087】
図12(B)は第2のシステム例を示す。第2のシステム例では、APサーバがDBサーバ上のアプリケーションに対して、日付変更の指示を行う。第2のシステム例は、ホスト装置610、APサーバ620,620a,620bおよびDBサーバ630,630a,630b,630cを含む。
【0088】
DBサーバ630,630aはクラスタ構成であり、DBサーバ630aの運用日付はDBサーバ630に同期される。また、DBサーバ630b,630cはクラスタ構成であり、DBサーバ630cの運用日付はDBサーバ630bに同期される。DBサーバ630,630a,630b,630cは、それぞれ運用日付を管理するためのアプリケーションである運用日付管理アプリ631,631a,631b,631cを備えている。
【0089】
この場合、APサーバ620,620a,620bは、運用日付管理アプリ631,631bに運用日付の変更指示を行えばよい。しかし、例えば、運用日付管理アプリ631,631a間で同期を行う際に、DBサーバ630,630a間で日付変更処理のための通信が発生し、DBサーバ630,630a間の高可用性機能(死活監視やレプリケーションなど)に悪影響を及ぼす可能性がある。また、何れかのDBサーバ間で運用日付変更を行えなかった場合に、当該日付変更を確実に完了することが困難になる。
【0090】
図13は、日付変更処理の他の例を示す第2の図である。図13は第3のシステム例を示す。第3のシステム例では、複数のAPサーバ間で協調してどのAPサーバがどのDBサーバに対する日付変更処理を行うかを決定する。第3のシステム例は、ホスト装置710、APサーバ720,720a,720bおよびDBサーバ730,730aを含む。
【0091】
APサーバ720,720a,720bは、相互に通信して、何れのAPサーバが何れのDBサーバに対して日付変更処理を行うかを決定する。しかし、この場合、APサーバ間の通信量が増大して制御が煩雑になり、APサーバの数が増加するとAPサーバおよびネットワークの負荷が増大する可能性がある。また、制御が複雑化して、当該制御を記述するプログラムのバグが増大する可能性もある。
【0092】
このように、図12,13で示した何れのシステム例においても、DBサーバに対して日付変更処理を確実に行うことが困難となり得る。
一方、図11までで説明した第2の実施の形態の情報処理システムにおける日付変更処理では、障害の発生したAPサーバを検出して、DBサーバに対する日付変更処理を確実に完了させることができる。
【0093】
具体的には、APサーバ100,100a,100bは、DBサーバ200,200aに格納した制御情報によって、他のAPサーバが実行する日付変更処理の状況を監視できる。このため、APサーバ間での制御が発生せず、例えば第3のシステム例に比べてネットワークに対する負荷の増大を抑えられ、また、制御を簡易化することができる。特に、排他制御にRDBMSの機能を利用することで、実装に要する作業コストを軽減できる。
【0094】
APサーバ100,100a,100bは、当該制御情報に基づいて、APサーバの障害を検出できる。このとき、制御情報に含まれるAPサーバ名によって、障害の検出されたAPサーバを特定できる。したがって、情報処理システムの管理者に障害対象を的確に通知でき、当該通知による迅速な障害対応が可能となる。
【0095】
更に、あるAPサーバによって日付変更処理を続行できなくなった場合でも、他のAPサーバにより処理を代替できる。これにより、各DBサーバに対する日付変更処理を確実に完了させることができる。特に、他のAPサーバで日付変更処理を代替する場合、制御情報に含まれる処理進捗を参照して、それまでに実行済の処理段階を省いて、途中の段階から処理を引き継ぐこともできる。これにより、引き継ぎ後の処理を効率化することができる。また、このように自動的に他のAPサーバで日付変更を継続できるので、万一何れかのAPサーバによる日付変更で障害が発生しても、運用への影響を軽減できる。
【0096】
なお、第2の実施の形態では、DBサーバ200,200aの運用日付を変更する処理を例示して説明したが、当該例に限られず、APサーバがDBサーバを占有して行う他の処理に対しても適用することができる。
【0097】
以上、本発明の情報処理プログラム、制御方法および情報処理装置を説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や行程が付加されてもよい。また、本発明は前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0098】
1,2,3 情報処理装置
1a,2a 実行手段
1b,2b 監視手段
3a 記憶手段
D1 制御情報
【技術分野】
【0001】
本発明は排他的な処理を行う情報処理プログラム、制御方法および情報処理装置に関する。
【背景技術】
【0002】
現在、複数の情報処理装置をネットワークで接続した情報処理システムが利用されている。このような情報処理システムでは、例えば、複数のサーバ装置が1つのデータベース装置にアクセスして処理を行うことがある。その場合、同時に発生した複数のアクセスにより、データの整合性が損なわれるおそれがある。そこで、排他制御を行うことがある。
【0003】
例えば、共有するファイルに使用中かどうかを示す排他制御レコードを設け、オンライン処理またはバッチ処理で使用中の場合には、当該レコードに使用中状態をセットして、当該ファイルへのアクセスの排他制御を行う提案がある(例えば、特許文献1参照)。また、共有するファイルが使用されるときは占有中が表示されるロックファイルを設けて、当該ロックファイルを参照することで、当該ファイルへのアクセスの排他制御を行う提案がある(例えば、特許文献2参照)。
【0004】
なお、実行中の処理が共有データに対するアクセスを排他されると、処理状態をサスペンドし、その後、中断した地点から当該処理を再開する提案がある(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平5−134914号公報
【特許文献2】特開平10−247158号公報
【特許文献3】特開2011−76304号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、あるサーバ装置がデータベース装置に排他的にアクセスしている際に、当該サーバ装置に障害が発生することがある。その場合、当該障害への対策を迅速に行うため、当該障害がどのサーバ装置で発生したかを把握したいことがある。このとき、障害のあったサーバ装置を容易に特定する仕組みをどのようにして実現するかが問題となる。例えば、各サーバ装置に監視用のソフトウェアを導入して、障害を検出することが考えられる。しかし、各サーバ装置に監視用のソフトウェアを導入するためのコストが生じてしまう。
【0007】
本発明はこのような点に鑑みてなされたものであり、障害の発生した装置を容易に検出することができる情報処理プログラム、制御方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
コンピュータが実行する情報処理プログラムであって、複数のコンピュータの何れかが情報処理装置に対して排他的な処理を行うシステムに用いられる情報処理プログラムが提供される。この情報処理プログラムは、コンピュータに、他のコンピュータによる処理が実行されていない場合、自装置の識別情報と処理の進捗を示す情報とを含む制御情報を情報処理装置に格納して、情報処理装置に対する処理を実行するとともに処理の進捗を示す情報を更新し、他のコンピュータによる処理が実行されている場合、情報処理装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて他のコンピュータで障害が発生したと判断する、処理を実行させる。
【0009】
複数の情報処理装置の何れかが処理対象装置に対して排他的な処理を行うシステムで実行される制御方法が提供される。この制御方法では、情報処理装置が、他の情報処理装置による処理が実行されていない場合、自装置の識別情報と処理の進捗を示す情報とを含む制御情報を処理対象装置に格納して、処理対象装置に対する処理を実行するとともに処理の進捗を示す情報を更新する。情報処理装置が、他の情報処理装置による処理が実行されている場合、処理対象装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて他の情報処理装置で障害が発生したと判断する。
【0010】
複数の情報処理装置の何れかが処理対象装置に対して排他的な処理を行うシステムに用いられる情報処理装置が提供される。この情報処理装置は実行手段と監視手段とを有する。実行手段は、他の情報処理装置による処理が実行されていない場合、自装置の識別情報と処理の進捗を示す情報とを含む制御情報を処理対象装置に格納して、処理対象装置に対する処理を実行するとともに処理の進捗を示す情報を更新する。監視手段は、他の情報処理装置による処理が実行されている場合、処理対象装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて他の情報処理装置で障害が発生したと判断する。
【発明の効果】
【0011】
障害の発生した装置を容易に検出できる。
【図面の簡単な説明】
【0012】
【図1】第1の実施の形態の情報処理システムを示す図である。
【図2】第2の実施の形態の情報処理システムを示す図である。
【図3】APサーバのハードウェア例を示す図である。
【図4】情報処理システムのソフトウェア例を示す図である。
【図5】ロック制御テーブルおよび比較テーブルの例を示す図である。
【図6】タイムアウト時間テーブルの例を示す図である。
【図7】日付変更処理の例を示すフローチャートである。
【図8】監視処理の例を示すフローチャートである。
【図9】日付変更処理の具体例を示す図である。
【図10】日付変更処理の具体例を示す図(続き)である。
【図11】日付変更処理の具体例を示す図(続き)である。
【図12】日付変更処理の他の例を示す第1の図である。
【図13】日付変更処理の他の例を示す第2の図である。
【発明を実施するための形態】
【0013】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報処理システムを示す図である。第1の実施の形態の情報処理システムは、情報処理装置1,2,3を有する。情報処理装置1,2,3は、CPU(Central Processing Unit)などのプロセッサとRAM(Random Access Memory)などのメモリとを備えてもよく、メモリに記憶されたプログラムをプロセッサが実行するコンピュータであってもよい。情報処理装置3は記憶手段3aを有する。第1の実施の形態の情報処理システムでは、情報処理装置1,2が情報処理装置3に対する排他的な処理を行う。情報処理装置3は、情報処理装置1,2に対する処理対象装置である。当該処理中は、情報処理装置1,2の何れかが情報処理装置3を占有する。例えば、情報処理装置2が当該処理を行っている場合、記憶手段3aに格納されたデータの情報処理装置1による当該処理の実行は行えない(排他制御)。情報処理装置1は、実行手段1aおよび監視手段1bを有する。情報処理装置2は、実行手段2aおよび監視手段2bを有する。
【0014】
実行手段1aは、当該処理の実行指示の入力を受け付ける。実行手段1aは、情報処理装置2による当該処理が実行されていない場合、自装置(情報処理装置1)の識別情報と当該処理の進捗を示す情報とを含む制御情報を情報処理装置3に格納する。
【0015】
ここで、識別情報とは、装置を識別するための情報である(例えば、ホスト名)。例えば、情報処理装置1にホスト名“ノードA1”が、情報処理装置2にホスト名“ノードA2”が付与されている場合、これらホスト名を情報処理装置1,2の識別情報とする。
【0016】
また、処理の進捗を示す情報とは、情報処理装置3に対して実行している処理が、現在どの段階であるかを示す情報である。例えば、処理を開始した段階、前処理の段階、1段階目、2段階目、後処理の段階などの処理段階を識別するための情報であって、情報処理装置1,2間で予め合意されたものを格納する。
【0017】
実行手段1aは、情報処理装置3に対する当該処理を実行するとともに当該処理の進捗を示す情報を更新する。
監視手段1bは、情報処理装置2による当該処理が実行されている場合、情報処理装置3に格納された制御情報D1を監視する。ここで、制御情報D1は、記憶手段3aに格納されている。制御情報D1は実行手段2aによって格納されたものである。制御情報D1には、情報処理装置2のホスト名“ノードA2”が識別情報として登録されている。また、制御情報D1には、“処理段階2”が処理の進捗を示す情報として登録されている。実行手段2aは、情報処理装置3に対する処理を実行するとともに、その処理の進捗に応じて、制御情報D1に含まれる処理の進捗を示す情報を更新する。
【0018】
監視手段1bは、制御情報D1に含まれる識別情報および処理の進捗を示す情報が所定時間TH以上同じであることを検出すると、当該識別情報に基づいて情報処理装置2で障害が発生したと判断する。所定時間THは、例えば、当該処理のタイムアウト時間である。タイムアウト時間以上処理の進捗がない場合に障害と判断するのは、その場合に情報処理装置2上で当該処理に係るアプリケーションや通信で障害が発生している可能性が高いからである。
【0019】
例えば、監視手段1bはあるタイミングで処理の進捗を示す情報の更新を検出する(ステップT1)。監視手段1bは、ステップT1のタイミングから時間TA経過後のタイミングで、処理の進捗を示す情報の更新を検出する(ステップT2)。時間TAは所定時間THより短い時間である。監視手段1bは、ステップT2のタイミングから時間TB経過後のタイミングで、識別情報および処理の進捗を示す情報が更新されていない(ステップT2のときと同じである)ことを検出する(ステップT3)。時間TBは、所定時間THと同じか、あるいは所定時間THよりも長い時間である。すると、監視手段1bは、当該識別情報に基づいて、情報処理装置2で障害が発生したと判断する。
【0020】
監視手段1bは、障害検知後、情報処理装置2が実行していた処理を実行手段1aに代わりに実行させてもよい。処理を代替する場合、実行手段1aは情報処理装置2が実行済の段階から当該処理を継続してもよい。また、監視手段1bは、障害検知後、情報処理装置2で障害が発生した旨を情報処理システムの管理者に通知してもよい。
【0021】
情報処理装置1によれば、情報処理装置2による情報処理装置3に対する(排他的な)処理が実行されていない場合、実行手段1aにより、自装置の識別情報と処理の進捗を示す情報とを含む制御情報が情報処理装置3に格納される。実行手段1aにより、情報処理装置3が占有され、情報処理装置3に対する処理が実行されるとともに、制御情報に含まれる処理の進捗を示す情報が更新される。情報処理装置2による情報処理装置3に対する(排他的な)処理が実行されている場合、監視手段1bにより、情報処理装置3に格納された制御情報D1が監視される。監視手段1bにより、制御情報D1に含まれる識別情報および処理の進捗を示す情報が所定時間同じであることが検出されると、当該識別情報に基づいて情報処理装置2で障害が発生したと判断される。
【0022】
これにより、障害の発生した装置を容易に検出できる。具体的には、実行手段1a,2aは、情報処理装置3に対する処理を行うとともに、自身の識別情報を含む制御情報を情報処理装置3に格納する。このため、監視手段1b,2bは当該制御情報に含まれる識別情報を参照して、障害の発生した装置を容易に特定できる。このため、例えば、管理者に対して、障害の発生した装置を指定した障害対応の指示を迅速に行える。また、例えば、情報処理装置2で障害が発生した場合にも、情報処理装置2が実行していた処理を情報処理装置1で容易に代替できる。特に、当該制御情報には、処理の段階を示す情報が含まれる。例えば、実行手段1aは、当該処理の段階を示す情報に基づき、実行済の段階を省いて、情報処理装置2による処理を継続してもよい。このようにすれば、同じ処理の二重実行を抑制できる。このため、引き継いだ処理を効率的に実行できる。
【0023】
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、金融機関の窓口業務の運用に利用される。第2の実施の形態の情報処理システムは、AP(APplication)サーバ100,100a,100b、DB(DataBase)サーバ200,200a、ホスト装置300および管理端末装置400を含む。APサーバ100,100a,100b、DBサーバ200,200aおよび管理端末装置400は、ネットワーク10に接続されている。ネットワーク10は、例えばLAN(Local Area Network)である。APサーバ100,100a,100bおよびホスト装置300は、ネットワーク20に接続されている。ネットワーク20は、例えばLANやWAN(Wide Area Network)である。ネットワーク10,20は、この情報処理システムのために設けられた専用のネットワークでもよい。
【0024】
APサーバ100,100a,100bは、DBサーバ200,200aに格納されたデータを用いた処理を行うサーバコンピュータである。以下の説明において、APサーバ100のホスト名を“AP01”、APサーバ100aのホスト名を“AP02”、APサーバ100bのホスト名を“AP03”とする。例えば、APサーバ100,100a,100bは、ネットワーク10を介して、窓口業務を行う窓口端末装置(図示を省略)と接続される。APサーバ100,100a,100bは、窓口端末装置で入力された振込や引出の内容を示す業務データを取得し、DBサーバ200,200aに格納する。
【0025】
DBサーバ200,200aは、APサーバ100,100a,100bの処理に用いるデータを記憶するサーバコンピュータである。DBサーバ200,200aは、所定の関係データベース管理システム(RDBMS:Relational DB Management System)によりデータを管理している。
【0026】
ホスト装置300は、APサーバ100,100a,100bにオンラインバッチ処理(以下、バッチ処理ということがある)の実行を指示するホストコンピュータである。
管理端末装置400は、情報処理システムの運用管理を行う管理者が利用するクライアントコンピュータである。
【0027】
ここで、第2の実施の形態では、バッチ処理として、運用日付などの変更処理(以下、日付変更処理ということがある)を例示する。
運用日付とは、当該情報処理システム内で共通に利用する日付であり、各サーバ装置で管理する日付(各サーバ装置のOS(Operating System)で管理されるカレンダー日付)とは異なるものである。運用日付は、一日のうちの所定のタイミング(例えば、午前0時になるタイミング)で変更される。具体的には、ホスト装置300は、APサーバ100,100a,100bに日付変更を通知する。当該通知を受けると、APサーバ100,100a,100bは、DBサーバ200,200aに対する日付変更処理を実行する。例えば、APサーバ100は、DBサーバ200に対する日付変更処理として、次の処理を順次行う(他のAPサーバの他のDBサーバに対する日付変更処理も同様)。
【0028】
(1)APサーバ100は、DBサーバ200の運用状態を解除する(以下の一連の処理を実行可能な状態となる)。これを“処理段階1”とする。
(2)APサーバ100は、DBサーバ200に格納されたデータを参照して、業務データを更新する(過去日付の不要な業務データの削除、当日未処理分の業務データの翌日への繰越など)。これを“処理段階2”とする。
【0029】
(3)APサーバ100は、DBサーバ200に登録された運用日付の変更を行う。これを“処理段階3”とする
(4)APサーバ100は、DBサーバ200を窓口業務の運用が可能な状態に戻す。これを“処理段階4”とする。
【0030】
1つのDBサーバに対する日付変更処理は、上記所定のタイミングごとに1度行われればよい。当該情報処理システムではDBサーバ200,200aの2台に対して日付変更処理を行うので、APサーバ100,100a,100bの何れか1つまたは2つがDBサーバ200,200aに対する日付変更処理を行えばよい。
【0031】
ここで、上記(1)〜(4)の一連の処理(日付変更処理)は、APサーバ100,100a,100bの何れかが、例えばDBサーバ200を占有して行う。例えば、APサーバ100がDBサーバ200を占有している場合には、APサーバ100a,100bからDBサーバ200内の(占有箇所の)データ変更を行うことは禁止される(排他制御)。すなわち、DBサーバ200を先着で占有したAPサーバが当該DBサーバ200に対する日付変更処理を実行することとなる。
【0032】
図3は、APサーバのハードウェア例を示す図である。APサーバ100は、CPU101、RAM102、HDD(Hard Disk Drive)103、画像信号処理部104、入力信号処理部105、ディスクドライブ106および通信部107を有する。各ユニットがAPサーバ100のバスに接続されている。APサーバ100a,100b、DBサーバ200,200a、ホスト装置300および管理端末装置400もAPサーバ100と同様のハードウェアを用いて実装できる。
【0033】
CPU101は、OSプログラムやアプリケーションプログラムを実行して、APサーバ100全体を制御する。
RAM102は、CPU101が実行するOSプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、CPU101の処理に用いられるデータの少なくとも一部を一時的に記憶する。
【0034】
HDD103は、OSプログラムやアプリケーションプログラムを記憶する。また、HDD103は、CPU101の処理に用いられるデータを記憶する。なお、HDD103に代えて(または、HDD103と併せて)、SSD(Solid State Drive)など他の種類の不揮発性の記憶装置を用いてもよい。
【0035】
画像信号処理部104は、CPU101の命令に従って、APサーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、例えば、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイを用いることができる。
【0036】
入力信号処理部105は、APサーバ100に接続された入力デバイス12から入力信号を取得し、CPU101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【0037】
ディスクドライブ106は、記録媒体13に格納されたデータを読み取る読取装置である。記録媒体13には、例えば、APサーバ100に実行させるプログラムが記録されている。ディスクドライブ106は、例えば、CPU101の命令に従って、記録媒体13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。CPU101は、例えば、当該プログラムを実行することで、後述するような機能を実現できる。当該プログラムは、コンピュータ読み取り可能な記録媒体13に記録して配布可能である。
【0038】
記録媒体13としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリを使用できる。磁気記録装置には、HDD、フレキシブルディスク(FD)、磁気テープなどがある。光ディスクには、CD(Compact Disc)、CD−R(Recordable)/RW(ReWritable)、DVD(Digital Versatile Disc)、DVD−R/RW/RAMなどがある。光磁気記録媒体には、MO(Magneto-Optical disk)などがある。半導体メモリには、USB(Universal Serial Bus)メモリなどのフラッシュメモリがある。
【0039】
通信部107は、ネットワーク10を介してDBサーバ200,200aおよび管理端末装置400と通信を行う通信インタフェースである。通信部108は、ネットワーク20を介してホスト装置300と通信を行う通信インタフェースである。通信部107,108は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【0040】
図4は、情報処理システムのソフトウェア例を示す図である。図4に示すユニットの一部または全部は、APサーバ100,100a,100bおよびDBサーバ200,200aが実行するプログラムのモジュールであってもよい。また、図4に示すユニットの一部または全部は、FPGA(Field Programmable Gate Array)やASIC(Application Specific Integrated Circuit)などの電子回路であってもよい。APサーバ100a,100bもAPサーバ100と同様のユニットを用いて実装できる。DBサーバ200aもDBサーバ200と同様のユニットを用いて実装できる。また、以下では、APサーバ100がDBサーバ200に対して処理を行う場合を想定して説明するが、他のAPサーバおよびDBサーバに関しても同様である。
【0041】
APサーバ100は、日付変更実行部110、制御情報DB120、監視部130および通知部140を有する。
日付変更実行部110は、ホスト装置300の日付変更の通知に応じて、DBサーバ200に対する日付変更処理を実行する。日付変更実行部110は、日付変更処理を実行する前に、DBサーバ200に制御情報を登録する。日付変更実行部110は、制御情報を登録することでDBサーバ200を占有する。制御情報には、自装置(APサーバ100)のホスト名と日付変更処理の進捗を示す情報(以下、処理進捗ということがある)とが含まれる。日付変更実行部110は、日付変更処理の進捗に応じて、DBサーバ200に格納された制御情報にアクセスし、処理進捗を更新する。
【0042】
ここで、日付変更実行部110は、日付変更処理を実行する前に、DBサーバ200の所定の制御情報DB(後述する)に対するロック状況を確認することで、DBサーバ200の占有状態を判断する。DBサーバ200が他のAPサーバにより占有されている場合、日付変更実行部110は、DBサーバ200に対して日付変更処理を行えない。その場合、日付変更実行部110は、DBサーバ200に格納された制御情報の監視を監視部130に指示する。DBサーバ200が他のAPサーバにより占有されていない場合、日付変更実行部110は、DBサーバ200の制御情報DBをロックし、制御情報DBに制御情報を登録できる。
【0043】
制御情報DB120は、監視部130がDBサーバ200から読み出した比較用の制御情報を記憶する。
監視部130は、DBサーバ200に対する他のAPサーバの日付変更処理の状況を監視する。具体的には、監視部130は、DBサーバ200に格納された制御情報を参照して、制御情報に含まれる識別情報および処理進捗が所定時間以上同じであるかを判断する。より具体的には、監視部130は、あるタイミングでDBサーバ200から読み出した制御情報を制御情報DB120に格納しておく。監視部130は、所定周期でDBサーバ200上の制御情報と内容を比較することで、制御情報の更新の有無を判断する。なお、制御情報に含まれる識別情報および処理進捗が所定時間以上同じである、とは、制御情報が所定時間以上同じである(更新されていない)ことを意味する。監視部130は、制御情報が所定時間以上同じである場合、次の処理を行う。すなわち、(1)監視部130は、通知部140に障害通知を行うよう指示する。(2)監視部130は、日付変更実行部110に処理の代替を指示する。
【0044】
通知部140は、監視部130からの指示に応じて、管理端末装置400に障害通知のメッセージを送信する。通知部140は、障害通知のための電子メールを生成し、管理者の電子メールアドレスに送信してもよい。通知部140には、当該メッセージや電子メールの宛先となる、管理端末装置400のIP(Internet Protocol)アドレスや管理者の電子メールアドレスが予め設定される。
【0045】
DBサーバ200は、アクセス制御部210、業務DB220、制御情報DB230および運用日付管理部240を有する。
アクセス制御部210は、APサーバ100,100a,100bからのアクセスを制御する。アクセス制御部210は、APサーバ100,100a,100bからの要求(ロック要求)に応じて制御情報DB230をロックする。ロックの単位は、レコード単位、テーブル単位およびDB単位とすることが考えられる。制御情報DB230がロックされると、アクセス制御部210は、ロックしたAPサーバからの書き込み要求のみを許容し、他のAPサーバからの書き込み要求を禁止する。アクセス制御部210の機能は、RDBMSにより実現できる。ロック要求は、制御情報DB230に格納された制御情報を更新できるかの問い合わせということができる。
【0046】
アクセス制御部210は、APサーバ100からの書き込み要求に応じて、業務DB220や制御情報DB230にデータを書き込む。アクセス制御部210は、APサーバ100からの読み出し要求に応じて、業務DB220や制御情報DB230からデータを読み出す。アクセス制御部210は、APサーバ100から日付変更処理の指示を受信すると、当該指示を運用日付管理部240に出力する。このように、APサーバ100,100a,100bは、アクセス制御部210を介して、業務DB220、制御情報DB230および運用日付管理部240にアクセスする。更に、アクセス制御部210は、所定のタイミング(受付中の処理がタイムアウトしたタイミングあるいは、当該タイムアウトから所定時間経過したタイミング)で制御情報DB230のロック状態を解除する。
【0047】
業務DB220は、金融機関の窓口業務に用いる業務データを記憶する。業務データは、APサーバ100,100a,100bにより取得され業務DB220に格納される。
制御情報DB230は、制御情報を記憶する。制御情報は、APサーバ100,100a,100bによって格納される。制御情報DB230をロックし、制御情報DB230に制御情報を書き込んだAPサーバが、DBサーバ200を占有するAPサーバである。
【0048】
運用日付管理部240は、運用日付を管理する。運用日付管理部240は、アクセス制御部210から日付変更処理の指示を受信すると、運用日付を変更する。
図5は、ロック制御テーブルおよび比較テーブルの例を示す図である。図5(A)はロック制御テーブル231を例示している。ロック制御テーブル231は、制御情報DB230に格納される。ロック制御テーブル231は、制御情報を格納するためのテーブルの一例である。ロック制御テーブル231は、APサーバ名および処理進捗の項目を含む。
【0049】
APサーバ名の項目には、APサーバのホスト名が登録される。ホスト名は、FQDN(Fully Qualified Domain Name)、FQDNの一部またはIPアドレスなどで指定できる。処理進捗の項目には、日付変更処理の進捗が登録される。例えば、APサーバ100aがDBサーバ200を占有している場合、APサーバ名の項目には、APサーバ100aのホスト名“AP02”が登録される。そのとき、DBサーバ200に対する日付変更処理が、“処理段階2”の段階であれば、処理進捗の項目には、“処理段階2”が登録される。処理進捗の項目の設定がどの処理段階を示すものであるかは、APサーバ100,100a,100bで予め合意される。
【0050】
図5(B)は比較テーブル121を例示している。比較テーブル121は、制御情報DB120に格納される。比較テーブル121は、比較用の制御情報を格納するためのテーブルの一例である。比較テーブル121は、ロック制御テーブル231と同様に、APサーバ名および処理進捗の項目を含む。各項目に登録される内容は、ロック制御テーブル231と同様である。
【0051】
図6は、タイムアウト時間テーブルの例を示す図である。タイムアウト時間テーブル122は、制御情報DB120に格納される。タイムアウト時間テーブル122は、処理段階名およびタイムアウト時間の項目を含む。
【0052】
処理段階名の項目には、日付変更処理の各処理段階を示す名称が登録される。タイムアウト時間の項目には、当該処理段階において障害と判断するまでの時間が登録される。例えば、処理段階名“処理段階1”に対して、タイムアウト時間“3秒”が登録される。
【0053】
タイムアウト時間テーブル122と同様の管理情報は、DBサーバ200,200aの制御情報DB230にも格納される。
次に、以上の構成の情報処理システムの処理手順を説明する。なお、以下では、APサーバ100がDBサーバ200に対して日付変更処理を行う場合を想定する。APサーバ100がDBサーバ200aに対して日付変更処理を行う場合や、APサーバ100a,100bがDBサーバ200,200aに対して日付変更処理を行う場合も同様である。
【0054】
図7は、日付変更処理の例を示すフローチャートである。以下、図7に示す処理をステップ番号に沿って説明する。
(ステップS11)日付変更実行部110は、ホスト装置300から日付変更通知を受信する。
【0055】
(ステップS12)日付変更実行部110は、DBサーバ200の占有を試みる。具体的には、日付変更実行部110は、制御情報DB230に記憶されたロック制御テーブル231のロックをアクセス制御部210に要求する。アクセス制御部210は、ロック制御テーブル231のロックが解除されていれば、ロック制御テーブル231をロックし、日付変更実行部110にロックした旨を応答する(ロック成功)。アクセス制御部210は、他のAPサーバによりロック制御テーブル231がロックされていれば、ロックできない旨を日付変更実行部110に応答する(ロック失敗)。
【0056】
(ステップS13)日付変更実行部110は、ロックに成功したか否かを判定する。ロックに成功した場合、処理をステップS14に進める。ロックに成功しなかった場合(ロック失敗の場合)、日付変更実行部110は監視部130に監視開始を指示して処理をステップS15に進める。
【0057】
(ステップS14)日付変更実行部110は、ロック制御テーブル231への制御情報の書き込み要求を、アクセス制御部210に送信する。アクセス制御部210は、受信した書き込み要求に応じて、ロック制御テーブル231に制御情報を登録する。制御情報には、APサーバ100の識別情報(“AP01”)および処理進捗(“処理段階1”)の情報が含まれる。
【0058】
(ステップS15)監視部130は、日付変更実行部110からの指示に応じて、制御情報DB230の監視を行う(詳細は後述する)。
(ステップS16)日付変更実行部110は、日付変更が完了済であるか否かを運用日付管理部240に問い合わせる。日付未変更である場合、処理をステップS17へ進める。日付変更済である場合、処理をステップS18に進める。例えば、運用日付管理部240は、日付変更が直近の所定時間内(例えば、1時間以内)に行われたか否かを記録しておけば、日付変更実行部110からの当該問い合わせに対して、日付変更済/未変更を応答できる。
【0059】
(ステップS17)日付変更実行部110は、日付変更処理の各処理段階を“処理段階1”から順次実行する。その際、日付変更実行部110は、各処理段階に進むたびに、制御情報DB230に記憶されたロック制御テーブル231の処理進捗の項目を更新する。例えば、“処理段階2”に進めば、ロック制御テーブル231の処理進捗の項目を“処理段階1”から“処理段階2”に更新する。
【0060】
(ステップS18)日付変更実行部110は、DBサーバ200の占有を解除する。具体的には、日付変更実行部110は、ロック制御テーブル231のロック解除をアクセス制御部210に要求する。アクセス制御部210は、ロック制御テーブル231のロックを解除し(ロック制御テーブル231の設定をクリアする)、日付変更実行部110に解除完了を応答する。ロック制御テーブル231の各項目の設定がクリアされて設定なしとなった状態を初期状態と呼ぶこととする。
【0061】
このようにして、APサーバ100はDBサーバ200に対する日付変更処理を実行する。なお、DBサーバ200,200aの両方の日付変更の完了を確認すると、APサーバ100,100a,100bは、DBサーバ200,200aに格納された業務データを用いた通常の業務処理に移行する。
【0062】
APサーバ100は、DBサーバ200の占有に失敗した場合には、DBサーバ200に格納された制御情報の監視を行う。次に、当該監視処理(ステップS15)の手順を説明する。
【0063】
図8は、監視処理の例を示すフローチャートである。以下、図8に示す処理をステップ番号に沿って説明する。
(ステップS21)監視部130は、制御情報DB120に記憶された比較テーブル121を初期化する。また、監視部130は、自身が備えるタイマを初期化する(タイマ値=0)。
【0064】
(ステップS22)監視部130は、アクセス制御部210を介してロック制御テーブル231を参照し、設定内容を取得する。なお、ロック制御テーブル231の各項目の設定内容がクリアされて初期状態になっている場合、監視部130は設定内容を取得できない。その場合、監視部130は日付変更処理が他のAPサーバにより正常終了されたと判断して、監視処理を終了する。
【0065】
(ステップS23)監視部130は、ステップS22で取得した設定内容と、比較テーブル121の設定内容を比較して、両設定内容が一致するか否かを判定する。一致する場合、処理をステップS26に進める。一致しない場合、処理をステップS24に進める。ここで、一致する場合とは、各テーブルのAPサーバ名の項目および処理進捗の項目の両方の設定内容が同一である場合である。一致しない場合とは、各テーブルのAPサーバ名の項目および処理進捗の項目の何れか一方または両方の設定内容が同一でない場合である。なお、比較テーブル121を初期化した直後は、比較テーブル121の各項目の設定は“null”(設定なし)である。この場合、本ステップS23の判定では、比較テーブル121とロック制御テーブル231の設定内容は一致しないと判断されることになる。
【0066】
(ステップS24)監視部130は、ステップS22で取得した設定内容(APサーバ名および処理進捗)を比較テーブル121に設定する。
(ステップS25)監視部130は、自身が備えるタイマをリセットする。監視部130は、当該タイマをスタートする。そして、処理をステップS22に進める。
【0067】
(ステップS26)監視部130は、制御情報DB120に記憶されたタイムアウト時間テーブル122を参照して、タイムアウト時間が経過したか否かを判定する。タイムアウト時間テーブル122によれば、処理段階ごとにタイムアウト時間が定義されている。監視部130は、現処理段階のタイムアウト時間を抽出し、タイマのカウントと比較することで、タイムアウト時間が経過したか否かの判断を行える。タイムアウト時間を経過した場合、処理をステップS27に進める。タイムアウト時間を経過していない場合、処理をステップS22に進める。
【0068】
(ステップS27)監視部130は、比較テーブル121のAPサーバ名の項目を参照して、何れのAPサーバによる処理でタイムアウトとなったかを特定する。監視部130は、特定したAPサーバで障害が発生したと判断し、障害通知を行うよう通知部140に指示する。通知部140は、障害通知のメッセージを生成し、管理端末装置400に送信する。監視部130は、処理の代替を日付変更実行部110に指示する。監視部130は監視を停止する。なお、当該処理段階でタイムアウトとなった場合(あるいはタイムアウト後、更に所定時間経過した後に)、アクセス制御部210はそれを検出して、ロック制御テーブル231のロックを解除する(他のAPサーバによってロック可能な状態となる)。
【0069】
(ステップS28)日付変更実行部110は、監視部130から処理の代替の指示を受け付けると、DBサーバ200の占有を試みる。具体的には、日付変更実行部110は、制御情報DB230に記憶されたロック制御テーブル231のロックをアクセス制御部210に要求する。アクセス制御部210は、ロック制御テーブル231のロックが解除されていれば、ロック制御テーブル231をロックし、日付変更実行部110にロックした旨を応答する(ロック成功)。アクセス制御部210は、他のAPサーバによりロック制御テーブル231がロックされていれば、ロックできない旨を日付変更実行部110に応答する(ロック失敗)。
【0070】
(ステップS29)日付変更実行部110は、ロックに成功したか否かを判定する。ロックに成功した場合、処理をステップS30に進める。ロックに成功しなかった場合(ロック失敗の場合)、日付変更実行部110は監視部130に監視の再開を指示して処理をステップS22に進める。
【0071】
(ステップS30)日付変更実行部110は、ロック制御テーブル231への制御情報の書き込み要求を、アクセス制御部210に送信する。アクセス制御部210は、受信した書き込み要求に応じて、ロック制御テーブル231に制御情報を登録する。制御情報には、APサーバ100の識別情報(ホスト名)および処理進捗(例えば、“処理段階1”)の情報が含まれる。そして、処理を図7のステップS16に進める。
【0072】
このようにして、監視部130は制御情報DB230に記憶された制御情報を監視する。そして、監視部130は同一のAPサーバがある処理段階でタイムアウトとなったときに、当該APサーバで障害が発生したと判断する。すると、通知部140は障害通知のメッセージを管理端末装置400に送信する。通知部140は、障害通知のメッセージを記述した電子メールを所定の電子メールアドレスに送信してもよい。なお、ステップS27で示した障害通知メッセージの送信処理は、ステップS29またはステップS30の直後に実行されてもよい。
【0073】
また、日付変更実行部110は、障害と判断されたAPサーバの代わりに日付変更処理を実行する。日付変更実行部110は、当該処理を代替する際、図7のステップS17で示したように、日付変更処理の最初の段階(“処理段階1”)から順次実行することが考えられる。一方、途中まで処理段階が進んでいる場合には、日付変更実行部110は途中の処理段階から処理を引き継いでもよい。実行済の処理段階を省き、処理の効率化を図るためである。
【0074】
この場合、ステップS27で、監視部130は処理の代替の指示とともに、ロック制御テーブル231に設定された処理段階(例えば、“処理段階3”)を、日付変更実行部110に通知する。すると、ステップS30で、日付変更実行部110は通知された処理段階を、ロック制御テーブル231に設定する。その後、図7で示したステップS17では、日付変更実行部110は当該処理段階(例えば、“処理段階3”)から順次処理を実行していけばよい。このようにすれば、他のAPサーバによって、日付変更処理が“処理段階2”まで完了しているとき、日付変更実行部110は“処理段階1”および“処理段階2”を省いて“処理段階3”から日付変更処理を引き継げる。
【0075】
次に、以上で示した日付変更処理の具体例を説明する。以下では、APサーバ100,100a,100bとDBサーバ200との間の処理を説明するが、APサーバ100,100a,100bとDBサーバ200aとの間の処理も同様である。
【0076】
図9は、日付変更処理の具体例を示す図である。以下、図9に示す処理をステップ番号に沿って説明する。
(ステップST101)APサーバ100,100a,100bは、ホスト装置300から日付変更の通知を受ける。すると、APサーバ100,100a,100bは、DBサーバ200の占有を試みる。すなわち、APサーバ100,100a,100bは、制御情報DB230に格納されたロック制御テーブル231のロックをDBサーバ200に要求する。このとき、APサーバ100がロックに成功したとする。すると、APサーバ100a,100bからロック制御テーブル231に対するデータ更新は禁止される(APサーバ100bはロックに失敗する)。
【0077】
(ステップST102)APサーバ100は、自身のAPサーバ名“AP01”および処理進捗“処理段階1”を、ロック制御テーブル231に登録する。以後、APサーバ100は、次の処理段階に進むたびに、ロック制御テーブル231の処理進捗の項目を“処理段階2”、“処理段階3”、・・・と順次更新する。一方、APサーバ100a,100bは、ロック制御テーブル231の監視を行う。そして、図10のステップST103,103aの何れかに進む。
【0078】
図10は、日付変更処理の具体例を示す図(続き)である。以下、図10に示す処理をステップ番号に沿って説明する。ここで、ステップST103は、ステップST102の次の状態を示しており、APサーバ100による日付変更処理が正常に終了する場合を例示している(APサーバ100bは図示を省略)。
【0079】
(ステップST103)APサーバ100は、DBサーバ200の占有を解除する。具体的には、APサーバ100は、DBサーバ200にロック解除の要求を送信する。すると、DBサーバ200は、ロック制御テーブル231の設定をクリアし、初期状態(設定なしの状態)に戻す。すると、APサーバ100,100a,100bは、DBサーバ200に格納された業務データを用いた業務処理を開始可能となる。これにより、日付変更処理は正常に終了する。
【0080】
一方、ステップST103aは、ステップST102の次の状態を示しており、APサーバ100で障害が発生した場合を例示している(APサーバ100bは図示を省略)。
(ステップST103a)APサーバ100は、障害により、日付変更処理を続行できない状態となる。すると、DBサーバ200を監視していたAPサーバ100aは、ロック制御テーブル231に設定されたAPサーバ名および処理進捗の情報が更新されないまま、タイムアウト時間が経過したことを検出する。そして、APサーバ100aは、ロック制御テーブル231に設定されたAPサーバ名“AP01”に基づいてAPサーバ100で障害が発生したと判断する。APサーバ100aは、APサーバ100で障害が発生した旨を通知するメッセージを管理端末装置400に送信する。そして、図11のステップST104に進む。
【0081】
図11は、日付変更処理の具体例を示す図(続き)である。以下、図11に示す処理をステップ番号に沿って説明する。
(ステップST104)DBサーバ200は、タイムアウト時間(あるいはタイムアウト時間に所定時間を加算した時間)を経過したことにより、ロック制御テーブル231のロックを解除する。APサーバ100aは、DBサーバ200の占有を試みる。すなわち、APサーバ100aは、制御情報DB230に格納されたロック制御テーブル231のロックをDBサーバ200に要求する。APサーバ100aは当該ロックに成功したとする。この場合、APサーバ100bはDBサーバ200にロック要求をしても、既にAPサーバ100aによりロック済のため、ロックは失敗する。
【0082】
(ステップST105)APサーバ100aは、自身のAPサーバ名“AP02”および処理進捗“処理段階1”を、ロック制御テーブル231に登録する。以後、APサーバ100aは、次の処理段階に進むたびに、ロック制御テーブル231の処理進捗の項目を“処理段階2”、“処理段階3”、・・・と順次更新する。一方、APサーバ100bは、ロック制御テーブル231の監視を行う。以降の処理は、ステップST103,ST103aで説明した処理と同様である。
【0083】
なお、ステップST105において、APサーバ100aがAPサーバ100の処理を途中から引き継ぐ場合には、ロック制御テーブル231の処理進捗の項目に“処理段階3”を登録する。そして、APサーバ100aは、“処理段階3”から順次処理を行う。
【0084】
このようにして、APサーバ100,100a,100bは、DBサーバ200に対する日付変更処理を行う。
次に、日付変更処理を行うための他のシステム例を示し、第2の実施の形態の日付変更処理と対比する。
【0085】
図12は、日付変更処理の他の例を示す第1の図である。図12(A)は第1のシステム例を示す。第1のシステム例では、1つのAPサーバに対し、日付変更処理の対象とする1つのDBサーバを対応付ける。第1のシステム例は、ホスト装置510、APサーバ520,520a,520bおよびDBサーバ530,530aを含む。
【0086】
APサーバ520は、DBサーバ530に対して日付変更処理を行う。APサーバ520aは、DBサーバ530aに対して日付変更処理を行う。しかし、この場合、APサーバ520,520aで障害が発生すると、DBサーバ530,530aに対する日付変更処理を行うのが困難となる。
【0087】
図12(B)は第2のシステム例を示す。第2のシステム例では、APサーバがDBサーバ上のアプリケーションに対して、日付変更の指示を行う。第2のシステム例は、ホスト装置610、APサーバ620,620a,620bおよびDBサーバ630,630a,630b,630cを含む。
【0088】
DBサーバ630,630aはクラスタ構成であり、DBサーバ630aの運用日付はDBサーバ630に同期される。また、DBサーバ630b,630cはクラスタ構成であり、DBサーバ630cの運用日付はDBサーバ630bに同期される。DBサーバ630,630a,630b,630cは、それぞれ運用日付を管理するためのアプリケーションである運用日付管理アプリ631,631a,631b,631cを備えている。
【0089】
この場合、APサーバ620,620a,620bは、運用日付管理アプリ631,631bに運用日付の変更指示を行えばよい。しかし、例えば、運用日付管理アプリ631,631a間で同期を行う際に、DBサーバ630,630a間で日付変更処理のための通信が発生し、DBサーバ630,630a間の高可用性機能(死活監視やレプリケーションなど)に悪影響を及ぼす可能性がある。また、何れかのDBサーバ間で運用日付変更を行えなかった場合に、当該日付変更を確実に完了することが困難になる。
【0090】
図13は、日付変更処理の他の例を示す第2の図である。図13は第3のシステム例を示す。第3のシステム例では、複数のAPサーバ間で協調してどのAPサーバがどのDBサーバに対する日付変更処理を行うかを決定する。第3のシステム例は、ホスト装置710、APサーバ720,720a,720bおよびDBサーバ730,730aを含む。
【0091】
APサーバ720,720a,720bは、相互に通信して、何れのAPサーバが何れのDBサーバに対して日付変更処理を行うかを決定する。しかし、この場合、APサーバ間の通信量が増大して制御が煩雑になり、APサーバの数が増加するとAPサーバおよびネットワークの負荷が増大する可能性がある。また、制御が複雑化して、当該制御を記述するプログラムのバグが増大する可能性もある。
【0092】
このように、図12,13で示した何れのシステム例においても、DBサーバに対して日付変更処理を確実に行うことが困難となり得る。
一方、図11までで説明した第2の実施の形態の情報処理システムにおける日付変更処理では、障害の発生したAPサーバを検出して、DBサーバに対する日付変更処理を確実に完了させることができる。
【0093】
具体的には、APサーバ100,100a,100bは、DBサーバ200,200aに格納した制御情報によって、他のAPサーバが実行する日付変更処理の状況を監視できる。このため、APサーバ間での制御が発生せず、例えば第3のシステム例に比べてネットワークに対する負荷の増大を抑えられ、また、制御を簡易化することができる。特に、排他制御にRDBMSの機能を利用することで、実装に要する作業コストを軽減できる。
【0094】
APサーバ100,100a,100bは、当該制御情報に基づいて、APサーバの障害を検出できる。このとき、制御情報に含まれるAPサーバ名によって、障害の検出されたAPサーバを特定できる。したがって、情報処理システムの管理者に障害対象を的確に通知でき、当該通知による迅速な障害対応が可能となる。
【0095】
更に、あるAPサーバによって日付変更処理を続行できなくなった場合でも、他のAPサーバにより処理を代替できる。これにより、各DBサーバに対する日付変更処理を確実に完了させることができる。特に、他のAPサーバで日付変更処理を代替する場合、制御情報に含まれる処理進捗を参照して、それまでに実行済の処理段階を省いて、途中の段階から処理を引き継ぐこともできる。これにより、引き継ぎ後の処理を効率化することができる。また、このように自動的に他のAPサーバで日付変更を継続できるので、万一何れかのAPサーバによる日付変更で障害が発生しても、運用への影響を軽減できる。
【0096】
なお、第2の実施の形態では、DBサーバ200,200aの運用日付を変更する処理を例示して説明したが、当該例に限られず、APサーバがDBサーバを占有して行う他の処理に対しても適用することができる。
【0097】
以上、本発明の情報処理プログラム、制御方法および情報処理装置を説明したが、本発明はこれに限定されるものではなく、各部の構成は同様の機能を有する任意の構成のものに置換することができる。また、本発明に他の任意の構成物や行程が付加されてもよい。また、本発明は前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
【符号の説明】
【0098】
1,2,3 情報処理装置
1a,2a 実行手段
1b,2b 監視手段
3a 記憶手段
D1 制御情報
【特許請求の範囲】
【請求項1】
複数のコンピュータの何れかが情報処理装置に対して排他的な処理を行うシステムに用いられる情報処理プログラムであって、コンピュータに、
他のコンピュータによる前記処理が実行されていない場合、自装置の識別情報と前記処理の進捗を示す情報とを含む制御情報を前記情報処理装置に格納して、前記情報処理装置に対する前記処理を実行するとともに前記処理の進捗を示す情報を更新し、
前記他のコンピュータによる前記処理が実行されている場合、前記情報処理装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および前記処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて前記他のコンピュータで障害が発生したと判断する、
処理を実行させる情報処理プログラム。
【請求項2】
前記他のコンピュータで障害が発生したと判断すると、前記他のコンピュータの代わりに前記処理を実行する、請求項1記載の情報処理プログラム。
【請求項3】
前記他のコンピュータの代わりに前記処理を実行する際に、前記情報処理装置に格納された制御情報に含まれる前記処理の進捗を示す情報に基づいて、前記処理を途中から引き継ぐ、請求項2記載の情報処理プログラム。
【請求項4】
前記所定時間として、前記処理の進捗を示す情報が示す処理段階ごとのタイムアウト時間を用いる、請求項1乃至3の何れか一項に記載の情報処理プログラム。
【請求項5】
前記他のコンピュータで障害が発生したと判断すると、前記他のコンピュータで障害が発生した旨を報知する、請求項1乃至4の何れか一項に記載の情報処理プログラム。
【請求項6】
前記処理の実行指示が入力されると、前記情報処理装置に記憶された制御情報を更新できるかを前記情報処理装置に問い合わせ、当該制御情報を更新できる場合は前記他のコンピュータによる前記処理が実行されていないと判断し、当該制御情報を更新できない場合は前記他のコンピュータによる前記処理が実行されていると判断する、請求項1乃至5の何れか一項に記載の情報処理プログラム。
【請求項7】
前記情報処理装置は、制御情報を格納するためのデータベースを管理するデータベース管理システムを有しており、
当該制御情報を更新できるかの問い合わせに対して、前記データベース管理システムにより当該制御情報が前記他のコンピュータによってロックされていない場合は更新できる旨の応答を前記情報処理装置から受信し、前記データベース管理システムにより当該制御情報が前記他のコンピュータによってロックされている場合は更新できない旨の応答を前記情報処理装置から受信する、
請求項6記載の情報処理プログラム。
【請求項8】
複数の情報処理装置の何れかが処理対象装置に対して排他的な処理を行うシステムが実行する制御方法であって、
情報処理装置が、他の情報処理装置による前記処理が実行されていない場合、自装置の識別情報と前記処理の進捗を示す情報とを含む制御情報を前記処理対象装置に格納して、前記処理対象装置に対する前記処理を実行するとともに前記処理の進捗を示す情報を更新し、
前記情報処理装置が、前記他の情報処理装置による前記処理が実行されている場合、前記処理対象装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および前記処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて前記他の情報処理装置で障害が発生したと判断する、
制御方法。
【請求項9】
複数の情報処理装置の何れかが処理対象装置に対して排他的な処理を行うシステムに用いられる情報処理装置であって、
他の情報処理装置による前記処理が実行されていない場合、自装置の識別情報と前記処理の進捗を示す情報とを含む制御情報を前記処理対象装置に格納して、前記処理対象装置に対する前記処理を実行するとともに前記処理の進捗を示す情報を更新する実行手段と、
前記他の情報処理装置による前記処理が実行されている場合、前記処理対象装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および前記処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて前記他の情報処理装置で障害が発生したと判断する監視手段と、
を有する情報処理装置。
【請求項1】
複数のコンピュータの何れかが情報処理装置に対して排他的な処理を行うシステムに用いられる情報処理プログラムであって、コンピュータに、
他のコンピュータによる前記処理が実行されていない場合、自装置の識別情報と前記処理の進捗を示す情報とを含む制御情報を前記情報処理装置に格納して、前記情報処理装置に対する前記処理を実行するとともに前記処理の進捗を示す情報を更新し、
前記他のコンピュータによる前記処理が実行されている場合、前記情報処理装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および前記処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて前記他のコンピュータで障害が発生したと判断する、
処理を実行させる情報処理プログラム。
【請求項2】
前記他のコンピュータで障害が発生したと判断すると、前記他のコンピュータの代わりに前記処理を実行する、請求項1記載の情報処理プログラム。
【請求項3】
前記他のコンピュータの代わりに前記処理を実行する際に、前記情報処理装置に格納された制御情報に含まれる前記処理の進捗を示す情報に基づいて、前記処理を途中から引き継ぐ、請求項2記載の情報処理プログラム。
【請求項4】
前記所定時間として、前記処理の進捗を示す情報が示す処理段階ごとのタイムアウト時間を用いる、請求項1乃至3の何れか一項に記載の情報処理プログラム。
【請求項5】
前記他のコンピュータで障害が発生したと判断すると、前記他のコンピュータで障害が発生した旨を報知する、請求項1乃至4の何れか一項に記載の情報処理プログラム。
【請求項6】
前記処理の実行指示が入力されると、前記情報処理装置に記憶された制御情報を更新できるかを前記情報処理装置に問い合わせ、当該制御情報を更新できる場合は前記他のコンピュータによる前記処理が実行されていないと判断し、当該制御情報を更新できない場合は前記他のコンピュータによる前記処理が実行されていると判断する、請求項1乃至5の何れか一項に記載の情報処理プログラム。
【請求項7】
前記情報処理装置は、制御情報を格納するためのデータベースを管理するデータベース管理システムを有しており、
当該制御情報を更新できるかの問い合わせに対して、前記データベース管理システムにより当該制御情報が前記他のコンピュータによってロックされていない場合は更新できる旨の応答を前記情報処理装置から受信し、前記データベース管理システムにより当該制御情報が前記他のコンピュータによってロックされている場合は更新できない旨の応答を前記情報処理装置から受信する、
請求項6記載の情報処理プログラム。
【請求項8】
複数の情報処理装置の何れかが処理対象装置に対して排他的な処理を行うシステムが実行する制御方法であって、
情報処理装置が、他の情報処理装置による前記処理が実行されていない場合、自装置の識別情報と前記処理の進捗を示す情報とを含む制御情報を前記処理対象装置に格納して、前記処理対象装置に対する前記処理を実行するとともに前記処理の進捗を示す情報を更新し、
前記情報処理装置が、前記他の情報処理装置による前記処理が実行されている場合、前記処理対象装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および前記処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて前記他の情報処理装置で障害が発生したと判断する、
制御方法。
【請求項9】
複数の情報処理装置の何れかが処理対象装置に対して排他的な処理を行うシステムに用いられる情報処理装置であって、
他の情報処理装置による前記処理が実行されていない場合、自装置の識別情報と前記処理の進捗を示す情報とを含む制御情報を前記処理対象装置に格納して、前記処理対象装置に対する前記処理を実行するとともに前記処理の進捗を示す情報を更新する実行手段と、
前記他の情報処理装置による前記処理が実行されている場合、前記処理対象装置に格納された制御情報を監視し、当該制御情報に含まれる識別情報および前記処理の進捗を示す情報が所定時間以上同じであることを検出すると、当該識別情報に基づいて前記他の情報処理装置で障害が発生したと判断する監視手段と、
を有する情報処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2013−92953(P2013−92953A)
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願番号】特願2011−235592(P2011−235592)
【出願日】平成23年10月27日(2011.10.27)
【出願人】(000237639)富士通フロンテック株式会社 (667)
【Fターム(参考)】
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願日】平成23年10月27日(2011.10.27)
【出願人】(000237639)富士通フロンテック株式会社 (667)
【Fターム(参考)】
[ Back to top ]