(57)【要約】【課題】二重化されたソフトウェア処理装置で、運用系の障害発生時にトランザクションの異常終了やデータベースのロールバック処理を待ち合わせずに運用を継続させ、障害発生時の切り替え速度を向上させること。【解決手段】二重化運用時には待機系で運用系と同期をとって処理を実行し、運用系と待機系のソフトウェアは独立に開発された同一の処理を行うプログラムである。【選択図】図１
2007280270.tif 000002
【特許請求の範囲】
【請求項１】
二重化運用時には待機系で運用系と同期をとって処理を実行し、運用系と待機系のソフトウェアは独立に開発された同一の処理を行うプログラムであることを特徴とするソフトウェア二重化運用システム。
【請求項２】
システム全体を管理して起動、終了及び運用操作を行うメイン管理手段と、
個々に独立して開発され同一の処理を行うソフトウェアを有する複数のソフトウェア処理装置と、
同一形式で作成され、運用時には前記複数のソフトウェア処理装置に割り当てられてデータの参照更新に用いられる複数の運用データベースと、
前記複数のソフトウェア処理装置の起動時の運用形態、前記複数のソフトウェア処理装置と前記複数の運用データベースの割り当て状況、前記複数のソフトウェア処理装置の稼動状況を管理する運用管理テーブルと、
前記複数のソフトウェア処理装置のデータベースへの入出力時に前記運用管理テーブルを確認し、対応するデータベースの参照／更新を行うデータベース入出力手段と、
前記複数の運用データベースの更新箇所と内容、及び更新差分を記録するデータベース更新管理テーブルと、
前記運用管理テーブルで前記複数のソフトウェア処理装置の稼動状況を確認しながら端末との入出力を管理実行する端末入出力手段と、
利用者が処理入力を行う複数の端末と、
障害発生時の情報ログを保持する障害管理テーブルとを備えることを特徴とする請求項１記載のソフトウェア二重化運用システム。
【請求項３】
二重化運用時には待機系で運用系と同期をとって処理を実行し、運用系と待機系のソフトウェアは独立に開発された同一の処理を行うプログラムであることを特徴とするソフトウェア二重化運用方法。
【請求項４】
システム全体を管理して起動、終了及び運用操作を行うメイン管理手段と、
個々に独立して開発され同一の処理を行うソフトウェアを有する複数のソフトウェア処理装置と、
同一形式で作成され、運用時には前記複数のソフトウェア処理装置に割り当てられてデータの参照更新に用いられる複数の運用データベースと、
前記複数のソフトウェア処理装置の起動時の運用形態、前記複数のソフトウェア処理装置と前記複数の運用データベースの割り当て状況、前記複数のソフトウェア処理装置の稼動状況を管理する運用管理テーブルと、
前記複数のソフトウェア処理装置のデータベースへの入出力時に前記運用管理テーブルを確認し、対応するデータベースの参照／更新を行うデータベース入出力手段と、
前記複数の運用データベースの更新箇所と内容、及び更新差分を記録するデータベース更新管理テーブルと、
前記運用管理テーブルで前記複数のソフトウェア処理装置の稼動状況を確認しながら端末との入出力を管理実行する端末入出力手段と、
利用者が処理入力を行う複数の端末と、
障害発生時の情報ログを保持する障害管理テーブルとを備えることを特徴とする請求項３記載のソフトウェア二重化運用方法。
【請求項５】
運用系と待機系のソフトウェアは独立に開発された同一の処理を行うプログラムであって、コンピュータに、二重化運用時には待機系で運用系と同期をとって処理を実行させることを特徴とするプログラム。
【請求項６】
コンピュータを、システム全体を管理して起動、終了及び運用操作を行うメイン管理手段と、
個々に独立して開発され同一の処理を行うソフトウェアを有する複数のソフトウェア処理装置と、
同一形式で作成され、運用時には前記複数のソフトウェア処理装置に割り当てられてデータの参照更新に用いられる複数の運用データベースと、
前記複数のソフトウェア処理装置の起動時の運用形態、前記複数のソフトウェア処理装置と前記複数の運用データベースの割り当て状況、前記複数のソフトウェア処理装置の稼動状況を管理する運用管理テーブルと、
前記複数のソフトウェア処理装置のデータベースへの入出力時に前記運用管理テーブルを確認し、対応するデータベースの参照／更新を行うデータベース入出力手段と、
前記複数の運用データベースの更新箇所と内容、及び更新差分を記録するデータベース更新管理テーブルと、
前記運用管理テーブルで前記複数のソフトウェア処理装置の稼動状況を確認しながら端末との入出力を管理実行する端末入出力手段と、
利用者が処理入力を行う複数の端末と、
障害発生時の情報ログを保持する障害管理テーブルとを備える機能を実現させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、障害発生時に処理を継続する目的で二重化したソフトウェア処理技術に関する。
【背景技術】
【０００２】
障害発生時の処理継続のため、ソフトウェア処理装置を二重化し、且つ二重化された各処理装置で実行されるソフトウェアを独立開発された別ソフトウェアとした構成は幾つか存在する。
【０００３】
例えば、独立開発されたソフトウェアを平行して走らせて実行結果を比較する装置は、特許文献１に記載された事例があるが、この技術では通常運用時の処理結果を比較して結果が一致するものだけを出力する事で信頼性向上を図ったもので、障害発生時の運用切り替え速度の向上については考慮されていない。
【０００４】
また、結果が一致したものしか出力しないため、どちらか一方が正しい結果を出していても、正しい結果が得られないと言う問題がある。
【特許文献１】特開昭６２−１７４８３７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来例においては次のような問題点があった。
【０００６】
ソフトウェア処理装置を二重化して、稼動中に運用系で処理を継続する事が不可能な障害が発生した場合に、待機系のソフトウェア処理装置に、運用を切り替える事で継続して処理を行えるソフトウェア処理装置は存在するが、切り替え時には処理途中のトランザクションは一旦異常終了させ、データベースのロールバック処理を行った後、切り替わったソフトウェア処理装置で再度同じトランザクションの再入力等を行う必要があり、障害発生時の迅速な切り替えと切り替え時の手間軽減が求められていた。
【０００７】
また、切り替わったソフトウェア処理装置が切り替え前と同一のソフトウェアで構築されていた場合、前回の障害要因となったトランザクション処理が再び実行された場合には、同一障害が発生する可能性が高く、耐障害性の向上が求められていた。
【０００８】
本発明は、以上説明した事情に鑑みてなされたものであり、その目的は、二重化されたソフトウェア処理装置で、運用系の障害発生時にトランザクションの異常終了やデータベースのロールバック処理を待ち合わせずに運用を継続させ、障害発生時の切り替え速度を向上させることにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明は、二重化運用時には待機系で運用系と同期をとって処理を実行し、運用系と待機系のソフトウェアは独立に開発された同一の処理を行うプログラムであるソフトウェア二重化運用システムを提供する。
【００１０】
また、本発明は、二重化運用時には待機系で運用系と同期をとって処理を実行し、運用系と待機系のソフトウェアは独立に開発された同一の処理を行うプログラムであるソフトウェア二重化運用方法を提供する。
【００１１】
また、本発明は、運用系と待機系のソフトウェアは独立に開発された同一の処理を行うプログラムであって、コンピュータに、二重化運用時には待機系で運用系と同期をとって処理を実行させるプログラムを提供する。
【発明の効果】
【００１２】
本発明によれば、二重化されたソフトウェア処理装置で、運用系の障害発生時にトランザクションの異常終了やデータベースのロールバック処理を待ち合わせずに運用を継続させ、障害発生時の切り替え速度を向上させることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の第１の実施の形態について図面を参照して詳細に説明する。
【００１４】
図１を参照すると、本実施の形態におけるソフトウェア二重化運用システムは、メイン管理手段１と処理ソフトウェア２、３と、ソフトウェア処理装置２、３と、運用データベース４、５と、運用管理テーブル６と、データベース入出力手段７と、データベース更新管理テーブル８と、端末入出力手段９及び複数の端末と、障害管理テーブル１０とを有する。
【００１５】
メイン管理手段１は装置全体の起動、終了や各手段の起動／応答受付及び管理テーブルの参照更新等を行う。
【００１６】
ソフトウェア処理装置２、３は二重化されており、各ソフトウェア処理装置で動作する処理ソフトウェア２、３は独立して別途作成されたソフトウェアであるがソフトウェア処理手段２、３は同一のデータ処理を行う特徴を持ち、同一原因のソフトウェア障害への耐性を向上させている。
【００１７】
ソフトウェア処理装置２、３には運用データベース４、５のどちらかが割り当てられており、どちらを割り当てるかの情報は運用管理テーブル６が保持している。
【００１８】
運用データベース４、５は同一形式で作成され、データベース入出力手段７を通してデータの参照や更新が行われ、ソフトウェア処理装置の障害発生時には既存のデータベースと同様にロールバック処理が行われる。
【００１９】
運用管理テーブル６はソフトウェア処理装置２、３の情報管理に使用される。
【００２０】
データベース更新管理テーブル８は運用データベース４、５更新時にデータベース入出力手段７から更新箇所と更新データの情報を受け取り、運用データベース４、５の更新を比較して差異の情報を保持する。
【００２１】
障害管理テーブル１０は、障害発生時に、障害発生したソフトウェア処理装置やトランザクションョン等の障害関連情報やログを蓄積する。
【００２２】
運用管理 テーブル６の詳細を図２に示す。運用管理テーブル６は、ソフトウェア処理装置２、３が起動直後の開始形態を示す起動時情報、現時点の稼動状況、割り当てられた運用データベースの情報を持つ。
【００２３】
図２の例では、ソフトウェア処理装置２は起動直後は運用系となり、データベースは運用データベース４が割り当てられている。同様にソフトウェア処理装置３は起動直後待機系となり、運用データベース５が割り当てられている。
【００２４】
稼動状況は停止、起動、稼動、終了の何れかの値を持つ。
【００２５】
次に、本実施の形態の動作について図を用いて説明する。まずは二重化運用時の起動から終了までの流れを図３を参照して以下に示す。
【００２６】
メイン管理手段１が運用管理テーブル６のソフトウェア処理装置２、３の稼動状況
を起動とし、ソフトウェア処理装置２、３を起動する（３−１）。
【００２７】
起動完了前に端末入力があった場合、端末入出力手段９で運用管理テーブル６の稼動状況を確認（３−２）し、稼動状態のソフトウェア処理装置がない場合は入力を拒否する（３−３）。
【００２８】
ソフトウェア処理装置２、３両方が稼動状態になった後、運用管理テーブル６の稼動状況を稼動に変更する（３−４）。
【００２９】
以後、端末からの処理を受け付ける事が出来る（３−５）。
【００３０】
二重化運用中の端末処理受付から応答までの詳細は、後述する。
【００３１】
装置全体停止時にはメイン管理手段１にて運用管理テーブル６のソフトウェア処理装置２、３の稼動状況を終了とし、停止処理を行う（３−６）。
【００３２】
以後の端末入力時、端末入出力手段で運用管理テーブル６の稼動状況を確認し入力を拒否される（３−７）。
【００３３】
各ソフトウェア処理装置の停止後、運用管理テーブル６の稼動状況を停止とし、装置全体が停止する（３−８）。
【００３４】
次に、図３（３−５）の二重化運用中、端末からの入力を受け付けて応答を返すまでの流れを図を用いて以下に記述する。
【００３５】
運用管理テーブル６は、図２のソフトウェア処理装置２、３が稼動の状態とする。
【００３６】
まずは端末入出力手段９とデータベース入出力手段７の動作流れを示す。
【００３７】
端末入出力手段９の動作流れを図４を参照して以下に示す。
【００３８】
端末入力時、運用管理テーブル６の稼動状況を確認（４−１）し、稼動中のソフトウェア処理装置がない場合は入力を拒否して処理を終了する（４−２）。
【００３９】
稼動中のソフトウェア処理装置がある場合は入力を受け付け（４−３）、現在二重化運用か確認する（４−４）。
【００４０】
片系動作中は稼動中のソフトウェア処理装置に入力データを渡し、（４−５）応答があれば端末へ返却して処理を終える（４−６）。
【００４１】
二重化運用の場合、ソフトウェア処理装置２、３両方へ入力データを送付し、両方の応答を待ちあわせる（４−７）。
【００４２】
応答受信後、片方の処理が異常終了し、もう一方が正常終了の場合、端末には正常終了した結果を返す（４−８）。
【００４３】
両方正常終了もしくは異常終了の場合は端末へは運用系の結果を返す（４−１０）。
【００４４】
上記動作流れにより、端末入力は稼動中のソフトウェア処理装置で実行され、両方のソフトウェア処理装置で同時に障害が発生しない限り、正常な処理結果を返す。同時に障害発生した場合は異常終了を返却する。
【００４５】
データベース入出力手段７の動作流れを図５を参照して以下に示す。
【００４６】
ソフトウェア処理装置からの参照／更新要求により起動し、運用管理テーブル６の割り当てデータベースを確認（５−１）し、対応する運用データベースの参照／更新を行い（５−２）、更新の場合は更新箇所、内容をデータベース管理テーブル８に追記する（５−３）。
【００４７】
更にデータベース管理テーブル８のデータベース４、５の最新更新結果の比較を行い（５−５）、更新箇所や内容に差分があれば、差分データとして保持する（５−６）。
【００４８】
上記動作流れにより、運用データベース４、５の更新履歴はデータベース管理テーブル８に記録され運用データベース４、５で差分が発生した場合、データベース更新管理テーブル１０に保持される。
【００４９】
上記手順を使用した通常運用時の動作流れを図６に示す。
【００５０】
端末入出力手段９にて、端末の入出力を両方のソフトウェア処理装置に送付して実際の処理を行う（６−１）。
【００５１】
データベース入出力手段７にて、それぞれに割り当てられた運用データベースの参照更新を行い（６−２）、更新情報をデータ ベース管理テーブル８に通知（６−３）し、運用データベース４、５の更新差分比較を行う（６−４）。
【００５２】
最後に運用系の処理応答を端末に返却する（６−５）。
【００５３】
通常時は単一の端末入力が複数ソフトウェア処理装置で実行される。
【００５４】
二重化運用中、運用系のソフトウェア処理装置のみソフトウェア障害が発生し装置の再起動が必要になった場合の動作流れを図７を用いて記述する。
【００５５】
運用系で障害が発生し、各種障害情報を障害管理テーブル１０に記録する（７−１）。
【００５６】
運用管理テーブル６のソフトウェア処理装置２の稼動状況を起動、起動時形態を待機に変更し、ソフトウェア処理装置２の再起動を行う（７−２）。
【００５７】
あわせてソフトウェア処理装置３の起動時形態を運用に変更する（７−３）。
【００５８】
端末入出力手段９は入力をソフトウェア処理装置３のみに送信し、ソフトウェア処理装置２の再起動完了までソフトウェア処理装置３のみで処理を行う（７−４）。
【００５９】
データベース更新時は運用データベース５の更新箇所、更新内容をデータベース管理テーブル８に通知し、運用データベース５の更新差分を蓄積する（７−５）。
【００６０】
ソフトウェア処理装置２の再起動完了後、データベース更新管理テーブル８の更新差分を運用データベース４に反映し、差分データを消去する（７−６）。
【００６１】
運用管理テーブル６内のソフトウェア処理装置２の稼動状況を稼動に変更する（７−７）。
【００６２】
一連の動作で運用データベース４、５の復旧、及び運用系と待機系が切り替わり二重化処理を再開する。
【００６３】
上記動作での特徴は、運用系で障害が発生して切り替えを行ったが、待機系で同一処理が正常実行されており、処理途中のトランザクションの再入力が不要で端末利用者には障害発生を意識させること無く切り替えが完了する事である。また、待機系のソフトウェア処理装置のみソフトウェア障害が発生した場合も同様であるが、この場合は運用系と待機系は切り替わらない。
【００６４】
次に、本発明の第２の実施の形態について図面を参照して詳細に説明する。本来はソフトウェア処理装置２、３で同じ結果を得るはずだが、ソフトウェアバグ等によりどちらか一方のみで異常が発生する可能性がある。
【００６５】
本実施の形態では、障害管理テーブル１０に障害情報を蓄積し、過去の動作実績で特定トランザクション実行時の障害発生が片系のみであった場合には、該当ソフトウェア処理装置では特定トランザクション処理を行わない事で、障害の発生を抑制する。
【００６６】
本実施の形態では、障害管理テーブル１０内にソフトウェア処理装置２、３で共通に実行されるトランザクション１〜ｎと、ソフトウェア処理装置２、３障害発生件数(初期値：０）、及び両系障害発生時動作を保持する。これを図８に示す。
【００６７】
ソフトウェア処理装置２、３での障害発生件数は初期値は全て０であり、該当トランザクションで障害発生した場合にカウントアップされる。
【００６８】
両系障害発生時動作ははソフトウェア処理装置２、３の障害発生件数の値が両方０でない場合の処理を指定するもので、下記のいずれかから選択する。
１．両方で実行
２．ソフトウェア処理装置２で実行
３．ソフトウェア処理装置３で実行
４．実行しない(トランザクション拒否）
５．発生頻度が低い方で実行(同割合の場合はソフトウェア処理装置２）
【００６９】
本実施の形態の動作の流れを図９に示す。
【００７０】
二重化運用時、端末入力受け付け時に障害管理テーブル１０の上記情報を検索し（９−１）、過去の障害発生がソフトウェア処理装置２、３の両方０回であれば、両方のソフトウェア処理装置へ処理入力する（９−２）。
【００７１】
どちらか一方のみ０であれば、障害発生していないソフトウェア処理装置へ処理入力する（９−３）。
【００７２】
このときデータベース更新時の差分をもう一方の運用データベースに反映し、データベースの更新差分を無くし、（９−4）両方のソフトウェア処理装置で実行されたのと同様な状態にして、端末へ結果を返却する。
【００７３】
なお、これまで両方のソフトウェア処理装置で障害発生している場合は、障害管理テーブル１０で設定した両系障害発生時動作の内容に従うものとする（９−５）。
【００７４】
以上の動作流れにより、障害の局所化、再発抑制を図ることが出来る。
【００７５】
なお、上述する各実施の形態は、本発明の好適な実施の形態であり、本発明の要旨を逸脱しない範囲内において種々変更実施が可能である。例えば、ソフトウェア二重化運用システムの機能を実現するためのプログラムを各装置に読込ませて実行することにより各装置の機能を実現する処理を行ってもよい。さらに、そのプログラムは、コンピュータ読み取り可能な記録媒体であるＣＤ−ＲＯＭまたは光磁気ディスクなどを介して、または伝送媒体であるインターネット、電話回線などを介して伝送波により他のコンピュータシステムに伝送されてもよい。
【００７６】
上述する各実施の形態は、ソフトウェア二重化運用システムが１つのコンピュータシステムとして実現されている構成について説明したが、各機能が別個に接続されている構成や機能毎に複数の装置などが追加された構成にも適用可能であることはもちろんである。
【００７７】
また、本発明は、無停止連続稼動、高信頼性が求められる大規模基幹トランザクションシステム等の分野で、特にソフトウェアの耐障害性向上において、処理の無停止、切り替えの高速化の全てを要求される分野に利用することが可能である。
【図面の簡単な説明】
【００７８】
【図１】本発明の第１の実施の形態におけるソフトウェア二重化運用システムの全体構成を示す図である。
【図２】本発明の第１の実施の形態における運用管理テーブルの構成を示す図である。
【図３】本発明の第１の実施の形態における二重化運用時の起動から終了の流れを示すフローチャートである。
【図４】本発明の第１の実施の形態における端末入出力手段の動作を示すフローチャートである。
【図５】本発明の第１の実施の形態におけるデータベース入出力手段の動作を示すフローチャートである。
【図６】本発明の第１の実施の形態における二重化運用時の通常動作の流れを示すフローチャートである。
【図７】本発明の第１の実施の形態における二重化運用時の通常動作の流れを示すフローチャートである。
【図８】本発明の第１の実施の形態における障害管理テーブルの構成を示す図である。
【図９】本発明の第２の実施の形態における動作の流れを示すフローチャートである。
【符号の説明】
【００７９】
１    メイン管理手段
２、３    ソフトウェア処理装置、処理ソフトウェア
４、５    運用データベース
６    運用管理テーブル
７    データベース入出力手段
８    データベース更新管理テーブル
９    端末入出力手段
１０    障害管理テーブル
【図１】
2007280270.tif 000003
【図２】
2007280270.tif 000004
【図３】
2007280270.tif 000005
【図４】
2007280270.tif 000006
【図５】
2007280270.tif 000007
【図６】
2007280270.tif 000008
【図７】
2007280270.tif 000009
【図８】
2007280270.tif 000010
【図９】
2007280270.tif 000011