(57)【特許請求の範囲】
【請求項１】
ネットワークを介して相互に接続された複数のノードを備え、前記複数のノードの各ノードにおいて同じ処理を独立に並列実行させるフォールトトレラントコンピュータシステムであって、
前記各ノードは、
システム内の稼働中のノード（以下「稼働中ノード」という。）は無停止かつ処理を継続させた状態で、停止状態から再起動したノード（以下「組込みノード」という。）を稼働中ノードとの間で処理タイミングを合わせてシステムへ再度組込む、という再同期稼働化処理を行う駆動管理部と、
稼働中ノードと組込みノードとの間で、データ内容を含むノードの状態を一致させるデータ一致化処理を行うデータ同期処理部とを備え、
前記駆動管理部は、
ノードが稼働中ノードである場合には、ユーザプログラムの処理を実行開始する度に、組込みノードに対して処理開始の通知を行い、
ノードが組込みノードである場合には、稼働中ノードから組込みノードへのデータ一致化用データ送信完了通知を当該稼働中ノードから受信し、かつ、当該完了通知を受信した後に当該組込みノードが当該稼働中ノードから処理開始通知を受信したとき、当該組込みノードが稼働中ノードから受信した処理開始通知を参照して、ユーザプログラムの処理を開始する
ことを特徴とするフォールトトレラントコンピュータシステム。
【請求項２】
ノードが組込みノードである場合には、
稼働中ノードから受信したユーザプログラムの処理開始通知を参照することで当該ユーザプログラムの次の実行タイミングを算出し、
当該稼働中ノードから当該組込みノードへのデータ一致化用データ送信完了通知を当該稼働中ノードから受信したとき、当該完了通知後の前記次の実行タイミングで当該ユーザプログラムの処理を開始する
ことを特徴とする請求項１に記載のフォールトトレラントコンピュータシステム。
【請求項３】
前記駆動管理部は、
入力をトリガーとして処理を実施するユーザプログラムに関して、前記再同期稼働化処理を行う入力駆動管理部を含み、
前記入力駆動管理部は、
ノードが稼働中ノードである場合には、当該ノードにおいて入力を受信し、ユーザプログラムの処理を開始する度に、組込みノードに対して処理開始の通知及び前記入力の転送を行い、
ノードが組込みノードである場合には、稼働中ノードから転送された前記入力、又は、当該組込みノードにて直接受信した入力を用いて、ユーザプログラムの処理を実施する
ことを特徴とする請求項１又は２に記載のフォールトトレラントコンピュータシステム。
【請求項４】
前記入力駆動管理部は、
ノードが組込みノードである場合、当該組込みノードが稼働中ノードからの処理開始通知及び転送された入力を受信した時点又は稼働中ノードから転送された前記入力に対応する入力を直接受信した時点で、前記データ同期処理部による稼働中ノードと組込みノードの間でのデータ一致化処理が完了していない場合には、ユーザプログラムの処理を行わず、次の処理開始タイミングまで待機する
ことを特徴とする請求項３に記載のフォールトトレラントコンピュータシステム。
【請求項５】
前記入力駆動管理部は、
ノードが組込みノードである場合、稼働中ノードから受信した前記入力に対応する入力を当該組込みノードにて直接受信しているか否かを判定し、直接受信していないと判定した場合には、稼働中ノードから転送された前記入力を用いてユーザプログラムの処理を実施する
ことを特徴とする請求項３又は４に記載のフォールトトレラントコンピュータシステム。
【請求項６】
ノードが組込みノードである場合、稼働中ノードから受信した前記入力に対応する入力を当該組込みノードにて直接受信しているか否かを判定し、直接受信していると判定した場合には、稼働中ノードに対して入力の転送の停止を要求するとともに、以後の処理を、当該組込みノードにて直接受信した入力を用いてユーザプログラムの処理を実施する
ことを特徴とする請求項３乃至５のいずれか一項に記載のフォールトトレラントコンピュータシステム。
【請求項７】
前記フォールトトレラントコンピュータシステムは、
前記ネットワークに接続され、かつ、前記ネットワークとは別のネットワークを介して外部システムに接続されるゲートウェイを備え、
前記ゲートウェイは、
外部システムから受け取った入力を前記複数のノードに転送し、前記入力に対する処理を前記複数のノードが並行して同時に実行した処理結果を受信して比較演算し、比較演算の結果として得られた出力を前記外部システムに応答として返す
ことを特徴とする請求項１乃至６のいずれか一項に記載のフォールトトレラントコンピュータシステム。
【請求項８】
前記駆動管理部は、
周期的に処理を実施するユーザプログラムに関して、前記再同期稼働化処理を行う周期駆動管理部を含み、
前記周期駆動管理部は、
ノードが稼働中ノードである場合には、タイマイベントが発生してユーザプログラムの処理を開始する度に、組込みノードに対して処理開始通知の送信を行い、
ノードが組込みノードである場合には、稼働中ノードから受信した処理開始通知を参照して、当該組込みノードにてユーザプログラムの現時点から次の周期における処理開始タイミングを算出し、算出した次の周期の処理開始タイミングに達した際に、稼働中ノードと組込みノードとの間でのデータ一致化処理が完了している場合、組込みノードにてユーザプログラムの処理を開始する
ことを特徴とする請求項１乃至７のいずれか一項に記載のフォールトトレラントコンピュータシステム。
【請求項９】
前記周期駆動管理部は、
前記ノードが組込みノードである場合、前記再同期稼働化処理におけるユーザプログラムの処理開始後に、稼働中ノードと当該組込みノードとの処理開始タイミングの差異を計測し、該差異が所定値より大きい場合は、当該組込みノードにおける処理タイミングを補正することによって、処理開始タイミングの同期を維持する
ことを特徴とする請求項８に記載のフォールトトレラントコンピュータシステム。
【請求項１０】
前記周期駆動管理部は、
ノードが組込みノードである場合、稼働中ノードから受信した処理開始通知を参照して算出した次の周期の処理開始タイミングに達した時点で、前記データ同期処理部による稼働中ノードと組込みノードの間でのデータ一致化処理が完了していない場合には、ユーザプログラムの処理を行わず、次の周期の処理開始タイミングまで待機する
ことを特徴とする請求項８又は９に記載のフォールトトレラントコンピュータシステム。
【請求項１１】
前記周期駆動管理部は、
ノードが組込みノードである場合、稼働中ノードから受信した処理開始通知を参照し、該通知に含まれる周期情報及び該通知の伝送時間を用いて、当該組込みノードにおけるユーザプログラムの次の周期における処理開始タイミングを算出する
ことを特徴とする請求項８乃至１０のいずれか一項に記載のフォールトトレラントコンピュータシステム。
【請求項１２】
ネットワークを介して相互に接続された複数のノードを備え、前記複数のノードの各ノードにおいて同じ処理を独立に並列実行させるフォールトトレラントコンピュータシステムにおいて、システム内の稼働中のノード（以下「稼働中ノード」という。）は無停止かつ処理を継続させた状態で、停止状態から再起動したノード（以下「組込みノード」という。）を稼働中ノードとの間で処理タイミングを合わせてシステムへ再度組込む、という再同期稼働化処理を行うための方法であって、
稼働中ノードが、ユーザプログラムの処理を実行開始する度に、組込みノードに対して処理開始の通知を行うステップと、
組込みノードが、稼働中ノードから組込みノードへのデータ一致化用データ送信完了通知を当該稼働中ノードから受信し、かつ、当該完了通知を受信した後に当該組込みノードが当該稼働中ノードから処理開始通知を受信したとき、稼働中ノードから受信した処理開始通知を参照して、ユーザプログラムの処理を開始するステップと
を備えるフォールトトレラントコンピュータシステムの再同期稼働化処理方法。
【請求項１３】
請求項１２に記載のフォールトトレラントコンピュータシステムの再同期稼働化処理方法を、前記フォールトトレラントコンピュータシステムの備える各ノードに実行させるためのプログラム。
【請求項１４】
ネットワークを介して相互に接続された複数のノードを備え、前記複数のノードの各ノードにおいて同じ処理を実行させるフォールトトレラントコンピュータシステムであって、
前記各ノードは、
システム内へ組込むべきノード（以下「組込みノード」という。）をシステム内の稼働中のノード（以下「稼働中ノード」という。）との間で処理タイミングを合わせてシステム内へ組込む駆動管理部と、
稼働中ノードと組込みノードとの間で、データ内容を含むノードの状態を対応させるデータ同期処理部とを備え、
前記駆動管理部は、
自ノードが稼働中ノードである場合には、自ノードの処理を実行開始する度に、組込みノードに対して処理開始の通知を行い、
自ノードが組込みノードである場合には、稼働中ノードから組込みノードへのデータ一致化用データ送信完了通知を当該稼働中ノードから受信し、かつ、当該完了通知を受信した後に当該組込みノードが当該稼働中ノードから処理開始通知を受信したとき、当該組込みノードが稼働中ノードから受信した処理開始通知を参照して、自ノードの処理を開始する
ことを特徴とするフォールトトレラントコンピュータシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを介して相互接続した、複数の独立したノードにより構成され、構成する各ノードにおいて同じ処理を並列実行させることによるフォールトトレラントコンピュータ（Ｆａｕｌｔ  Ｔｏｌｅｒａｎｔ  Ｃｏｍｐｕｔｅｒ）システムに関し、該システムにて実行、提供されるサービスは無停止であることを保証して、特にソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のためにシステム稼働中に停止させていたノードを再起動し、稼働中の他のノードは無停止、処理継続のまま、稼働中の他のノードと保有するデータ内容、プログラムの実行状態、入出力等を一致させ、実行状態に移行することにより該ノードをシステムに再度組込むという、ノードの再同期稼働化処理に関するものである。
【背景技術】
【０００２】
複数のサブシステムから送出される同一データを二台のホストコンピュータで同時に処理する二重化コンピュータシステムにおいて、二重化運転を開始する際の、処理データの同期合わせ、すなわちマスター系処理データのスレーブ系へのコピー処理（以下、この処理を「スレーブ組み込み処理」という。）を、二台のディスク装置と、系間通信路を用いて行う、ことを特徴とする二重化コンピュータシステムのスレーブ組込方法（特許文献１参照）などが提案されている。
【特許文献１】特開平１１−７３２７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ところで、従来のスレーブ組み込み処理では、ノードの再同期稼働化を行うために、稼働中ノードにおける処理を一時停止させてから、データのコピー処理を行い、コピー処理完了後に、組込みノードも含めた全ノードの処理を一斉に再開させることで、ノード間のデータ内容、プログラムの実行状態、入出力等の一致化を図っている。しかし、稼働中ノードを無停止のままで再同期稼働化を実行しようとすると、たとえあるタイミングで稼働中ノードと組込みノードとの間でデータが一致化していたとしても、同期していない異なるタイミングで各々のノードにてプログラムの処理が実施されると、異なるタイミングでのデータの読み書きが発生し、ノード間でデータ内容に違いが生じてくる。またデータ内容が異なれば、これらを参照して行う処理の結果は、同一処理内容であっても異なる可能性があり、ノード間で出力に不一致が生じる可能性がある。
【０００４】
そこで、本発明は上記課題に鑑みてなされたものであり、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードを再度システムに組込む際に、正常稼働中のノードの処理を中断することなく、該ノードを稼働中ノードと処理タイミングを一致化させ、漏れなく必要な処理を実行することを可能とし、フォールトトレラントコンピュータシステムによる高い信頼性の維持、該システムにより実行ないし提供されるサービスの無停止を保証するような、ノードの再同期稼働化の方法を提供することを主たる目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、本発明によるフォールトトレラントコンピュータシステムは、ネットワークを介して相互に接続された複数のノードを備え、複数のノードの各ノードにおいて同じ処理を独立に並列実行させる。各ノードは、システム内の稼働中のノード（以下「稼働中ノード」という。）は無停止かつ処理を継続させた状態で、停止状態から再起動したノード（以下「組込みノード」という。）を稼働中ノードとの間で処理タイミングを合わせてシステムへ再度組込む、という再同期稼働化処理を行う駆動管理部と、稼働中ノードと組込みノードとの間で、データ内容を含むノードの状態を一致させるデータ一致化処理を行うデータ同期処理部と、を備える。ここで、駆動管理部は、ノードが稼働中ノードである場合には、ユーザプログラムの処理を実行開始する度に、組込みノードに対して処理開始の通知を行い、ノードが組込みノードである場合には、データ同期処理部によって稼働中ノードと当該組込みノードとの間でのデータ一致化処理が完了していた場合に、当該組込みノードが稼働中ノードから受信した処理開始通知を参照して、ユーザプログラムの処理を開始することを特徴とする。
【０００６】
好適には、駆動管理部は、ノードが組込みノードである場合、稼働中ノードから送信されるデータ一致化用データ送信完了通知を受信することによって、稼働中ノードと当該組込みノードとの間でのデータ一致化の完了を判定する。
【０００７】
また、駆動管理部は、入力をトリガーとして処理を実施するユーザプログラムに関して、再同期稼働化処理を行う入力駆動管理部を含むことが好ましい。ここで、入力駆動管理部は、ノードが稼働中ノードである場合には、当該ノードにおいて入力を受信し、ユーザプログラムの処理を開始する度に、組込みノードに対して処理開始の通知及び入力の転送を行い、ノードが組込みノードである場合には、稼働中ノードから転送された入力、又は、当該組込みノードにて直接受信した入力を用いて、ユーザプログラムの処理を実施することを特徴とする。
【０００８】
好適には、入力駆動管理部は、ノードが組込みノードである場合、当該組込みノードが稼働中ノードからの処理開始通知及び転送された入力を受信した時点又は稼働中ノードから転送された入力に対応する入力を直接受信した時点で、データ同期処理部による稼働中ノードと組込みノードの間でのデータ一致化処理が完了していない場合には、ユーザプログラムの処理を行わず、次の処理開始タイミングまで待機する。
【０００９】
また、好適には、入力駆動管理部は、ノードが組込みノードである場合、稼働中ノードから受信した入力に対応する入力を当該組込みノードにて直接受信しているか否かを判定し、直接受信していないと判定した場合には、稼働中ノードから転送された入力を用いてユーザプログラムの処理を実施する。
【００１０】
さらに好適には、ノードが組込みノードである場合、稼働中ノードから受信した入力に対応する入力を当該組込みノードにて直接受信しているか否かを判定し、直接受信していると判定した場合には、稼働中ノードに対して入力の転送の停止を要求するとともに、以後の処理を、当該組込みノードにて直接受信した入力を用いてユーザプログラムの処理を実施する。
【００１１】
加えて、フォールトトレラントコンピュータシステムは、ネットワークに接続され、かつ、ネットワークとは別のネットワークを介して外部システムに接続されるゲートウェイを備えることが好ましい。ここで、ゲートウェイは、外部システムから受け取った入力を複数のノードに転送し、入力に対する処理を複数のノードが並行して略同時に実行した処理結果を受信して比較演算し、比較演算の結果として得られた出力を外部システムに応答として返す。
【００１２】
また、駆動管理部は、周期的に処理を実施するユーザプログラムに関して、再同期稼働化処理を行う周期駆動管理部を含むことが好ましい。ここで、周期駆動管理部は、ノードが稼働中ノードである場合には、タイマイベントが発生してユーザプログラムの処理を開始する度に、組込みノードに対して処理開始通知の送信を行い、ノードが組込みノードである場合には、稼働中ノードから受信した処理開始通知を参照して、当該組込みノードにてユーザプログラムの現時点から次の周期における処理開始タイミングを算出し、算出した次周期の処理開始タイミングに達した際に、稼働中ノードと組込みノードとの間でのデータ一致化処理が完了している場合、組込みノードにてユーザプログラムの処理を開始することを特徴とする。
【００１３】
好適には、周期駆動管理部は、ノードが組込みノードである場合、再同期稼働化処理におけるユーザプログラムの処理開始後に、稼働中ノードと当該組込みノードとの処理開始タイミングの差異を計測し、該差異が所定値より大きい場合は、当該組込みノードにおける処理タイミングを補正することによって、処理開始タイミングの同期を維持する。
【００１４】
また、好適には、周期駆動管理部は、ノードが組込みノードである場合、稼働中ノードから受信した処理開始通知を参照して算出した次の周期の処理開始タイミングに達した時点で、データ同期処理部による稼働中ノードと組込みノードの間でのデータ一致化処理が完了していない場合には、ユーザプログラムの処理を行わず、次の周期の処理開始タイミングまで待機する。
【００１５】
さらに好適には、周期駆動管理部は、ノードが組込みノードである場合、稼働中ノードから受信した処理開始通知を参照し、該通知に含まれる周期情報及び該通知の伝送時間を用いて、当該組込みノードにおけるユーザプログラムの次の周期における処理開始タイミングを算出する。
【００１６】
また、本発明によるフォールトトレラントコンピュータシステムの再同期稼働化処理方法は、ネットワークを介して相互に接続された複数のノードを備え、複数のノードの各ノードにおいて同じ処理を独立に並列実行させるフォールトトレラントコンピュータシステムにおいて、稼働中ノードは無停止かつ処理を継続させた状態で、組込みノードを稼働中ノードとの間で処理タイミングを合わせてシステムへ再度組込む、という再同期稼働化処理を行うための方法である。このフォールトトレラントコンピュータシステムの再同期稼働化処理方法は、稼働中ノードが、ユーザプログラムの処理を実行開始する度に、組込みノードに対して処理開始の通知を行うステップと、組込みノードが、稼働中ノードと当該組込みノードとの間で、データ内容を含むノードの状態を一致させるデータ一致化処理が完了していた場合に、稼働中ノードから受信した処理開始通知を参照して、ユーザプログラムの処理を開始するステップとを備える。
【００１７】
また、本発明に係るプログラムは、フォールトトレラントコンピュータシステムの再同期稼働化処理方法の各処理ステップを、フォールトトレラントコンピュータシステムの備える各ノードコンピュータに実行させることを特徴とする。本発明に係るプログラムは、ＣＤ−ＲＯＭ等の光学ディスク、磁気ディスク、半導体メモリなどの各種の記録媒体を通じて、又は通信ネットワークなどを介してダウンロードすることにより、コンピュータにインストール又はロードすることができる。
【００１８】
なお、本明細書等において、「部」とは、物理的手段のみを意味するものではなく、その部が有する機能をソフトウェアによって実現する場合も含む。また、１つの部が有する機能が２つ以上の物理的手段により実現されても、２つ以上の部の機能が１つの物理的手段により実現されてもよい。
【発明の効果】
【００１９】
本発明によれば、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードを再度システムに組込む際に、正常稼働中のノードの処理を中断することなく、該ノードを稼働中ノードと処理タイミングを一致化させ、漏れなく必要な処理を実行することを可能とし、フォールトトレラントコンピュータシステムによる高い信頼性の維持、該システムにより実行ないし提供されるサービスの無停止を保証できる。
【発明を実施するための最良の形態】
【００２０】
以下、本発明の実施の形態について図面を参照しつつ詳細に説明する。なお、基本的に、同一の要素には同一の符号を付し、重複する説明を省略する。
【００２１】
図１は、本発明の一実施形態に係るフォールトトレラントコンピュータシステムの概要を示す図である。フォールトトレラントコンピュータシステムは、ネットワークを介して相互接続した、複数の独立したノードにより構成され、構成する各ノードにおいて同じ処理を並列に実行させる。
【００２２】
同図に示すように、本フォールトトレラントコンピュータシステム０１０１は、ＬＡＮ０１１２を介して相互に接続される２つ以上の独立したノード０１１１と、広域ネットワーク０１０２に接続され、外部システム０１０３との通信の中継を行うゲートウェイサーバ０１１３とを主な構成要素として備える。
【００２３】
フォールトトレラントコンピュータシステム０１０１は、広域ネットワーク０１０２を介して通信可能な外部システム０１０３からの要求を受け付けて、該要求に対する処理を実施し、処理結果を応答として該外部システム０１０３に返信することによるサービスを提供する。ここでは外部システム０１０３からの要求として入力メッセージ０１３１を受信し、該要求に対する処理結果を格納した出力メッセージ０１４１を外部システム０１０３に対して送信する。
【００２４】
フォールトトレラントコンピュータシステム０１０１の内部では、広域ネットワーク０１０２を介して外部システム０１０３からの要求として入力メッセージ０１３１を中継するゲートウェイサーバ０１１３が、ＬＡＮ０１１２を介して、システム内の全てのノード０１１１に対して、受信した入力メッセージ０１３１を入力メッセージ０１３２として転送する。ここで、ほぼ同時に全てのノード０１１１が該メッセージを受信し、概メッセージに対する処理を開始できるように、ゲートウェイサーバ０１１３は、入力メッセージ０１３２をブロードキャスト送信する。該入力メッセージ０１３２を受信した各ノード０１１１は、各々該入力メッセージ０１３２に対する処理を実行して、処理結果を格納した出力メッセージ０１４２を、ＬＡＮ０１１２を介してゲートウェイサーバ０１１３に対して送信する。各ノード０１１１からの出力メッセージ０１４２を受信したゲートウェイサーバ０１１３は要求元の外部システム０１０３への応答として出力メッセージ０１４１を作成し、外部システム０１０３に対して送信する。ここでゲートウェイサーバ０１１３は、各ノード０１１１から受信した１つ以上の出力メッセージ０１４２のデータ内容の比較照合、正誤判定等を行い、多数決等により決定した最も確からしいメッセージデータを出力メッセージ０１４１として、要求元の外部システム０１０３に送信する。
【００２５】
また、ノード０１１１のハードウェア構成は、処理装置０１２１、記憶装置０１２２、通信装置０１２３を含む。記憶装置０１２２には、フォールトトレラントコンピュータシステム０１０１により外部システム０１０３に対して提供されるサービスを実行する上で必要なデータ、これらサービスに関する外部システム０１０３からの要求に対して処理を実行するためのユーザプログラム、複数のノード０１１１の間での稼働中及び再組込み中の同期を実施するためのソフトウェアプログラム、ＬＡＮ０１１２を介してノード０１１１とゲートウェイサーバ０１１３との間の通信を行うためのソフトウェアプログラム等が格納され、処理装置０１２１により処理される。また通信装置０１２３は、ゲートウェイサーバ０１１３からの入力メッセージ０１３２を受信し、ゲートウェイサーバ０１１３に対して出力メッセージ０１４２を送信するための通信処理、また複数のノード０１１１の間での稼働中及び再組込み中の同期を実施するために必要な通信処理を行う。
【００２６】
なおフォールトトレラントコンピュータシステム０１０１内に２つ以上のノード０１１１を含め、これらで外部システム０１０３からの要求に対する処理を同時に併行して実行させていることで、１つ以上のノードにて障害が発生した場合でも、残りの稼働中のノードが処理を実行することで、システムとして正常動作によるサービス提供を維持することを可能とし、システムの耐障害性、信頼性を高めている。
【００２７】
図２は、本発明の一実施形態における、フォールトトレラントコンピュータシステム０１０１を構成し、外部からの要求に対する処理等を実行するノード０１１１の再同期稼働化の概要を示す図、及び、関連する処理の流れを示すシーケンス図である。ここでは各ノードにて実行するユーザプログラムとして、入力をトリガーとして処理を実施するユーザプログラムが実行される場合を例に挙げている。
【００２８】
なお、図２に示す例は、フォールトトレラントコンピュータシステム０１０１において、ＬＡＮ０１１２を介して相互接続されるノード０１１１のうち、稼働中ノード０２０１と、停止状態からの再同期稼働化を実施する組込みノード０２０２とを示している。
【００２９】
稼働中ノード０２０１では、ユーザプログラム０２１１がデータ０２１２（共有メモリ、ファイル等）等を参照して処理を行っている。組込みノードの再同期稼働化を実施する際には、稼働中ノード０２０１におけるユーザプログラム０２１１等の処理は組込みノード０２０２の状態に関わらず無停止で正常に実行させたまま、データ０２１２のコピー及びユーザプログラム０２１１の実行状態の通知等を行う。組込みノードの再同期稼働化の完了時には、組込みノード０２０２のデータ０２２２は稼働中ノード０２０１のデータ０２１２と一致化し、組込みノードにおけるユーザプログラム０２２１は稼働中ノード０２０１のユーザプログラム０２１１と同じ実行状態となる。
【００３０】
組込みノード０２０２の再同期稼働化に関連する処理のシーケンスとして、稼働中ノード０２０１におけるユーザプログラム０２１１は、入力（０２５１、０２５２、０２５３）に対して処理を行い、出力（０２６１、０２６２、０２６３）を返す。ここで、組込みノード０２０２では、ソフトウェア更新、ハードウェア更改またはメンテナンスや異常発生時の回復作業等のために停止していた状態から再起動すると（０２４１）、稼働中ノード０２０１は該組込みノード０２０２のデータ一致化を行うため、データ０２２２に対してデータ０２１２の書き込みを行う（０２３１）。組込みノード０２０２は、データ一致化完了を検出すると（０２４２）、稼働中ノード０２０１におけるユーザプログラム０２１１と実行状態を一致化させて、ユーザプログラム０２２１の処理を再開する（０２４３）。以降は、稼働中ノード０２０１におけるユーザプログラム０２１１と同様に、入力（０２５３）に対して処理を行い、出力（０２７２、０２７３）を返す。ここで組込みノードの処理が正常に実行されれば、出力０２７２、０２７３はそれぞれ稼働中ノード０２０１の出力０２６２、０２６３と合致するはずである。
【００３１】
図３は、本発明の一実施形態における、フォールトトレラントコンピュータシステム０１０１を構成し、外部からの要求に対する処理等を実行するノード０１１１のモジュール構成を示す図である。
【００３２】
ノード０１１１には、外部システム０１０３からの要求に対する処理を実行し応答を返すユーザプログラム０３０２と、該ユーザプログラムが処理中に読み込み、書き込みを行う共有メモリやファイル等のデータ０３０３と、通信媒体０３０４（図１のＬＡＮ０１１２に相当する。）を介して他のノード０１１１やゲートウェイサーバ０１１３等との通信、ノードの再同期稼働化のためのデータ一致化、ユーザプログラムの処理タイミングの一致化等の処理を行うミドルウェア０３０１とが導入される。
【００３３】
ミドルウェア０３０１は、組込みノードの再同期稼働化の実行時に、入力駆動型ユーザプログラム管理テーブル０３２１及び入力管理テーブル０３２３を参照・更新し、入力をトリガーとして処理を実施するユーザプログラムの起動又は実行状態の監視等を行う入力駆動管理部０３１１、周期駆動型ユーザプログラム管理テーブル０３２２を参照・更新し、周期的に処理を実施するユーザプログラムの起動又は実行状態の監視等を行う周期駆動管理部０３１２、データ一致化のために稼働中ノード０２０１のデータの組込みノード０２０２への書き込み等の処理を行うデータ同期処理部０３１３、データ通信部０３１５を介して外部システム０１０３から送信された入力メッセージもしくは稼働中ノード０２０１から転送された入力メッセージを、入力受信バッファ０３３１もしくは転送受信バッファ０３３２に格納し、入力管理テーブル０３２３を格納メッセージに応じて更新する受信データ管理部０３１４、及び、通信媒体０３０４を介して他のノード０１１１やゲートウェイサーバ０１１３等との間の通信を行うデータ通信部０３１５を主な構成要素として含む。
【００３４】
ここで、組込みノードの再同期稼働化の実行時に、データの書き込みによる稼働中ノード０２０１と組込みノード０２０２とのデータ一致化を行う場合、稼働中ノード０２０１におけるデータ同期処理部０３１３は、書き込み用のデータを稼働中ノード０２０１内のデータ０３０３から抜き出し、データ通信部０３１５を用いて組込みノード０２０２に対して送信する。組込みノード０２０２におけるデータ同期処理部０３１３は、稼働中ノード０２０１から送信される書き込み用データを、データ通信部０３１５を用いて受信し、組込みノード０２０２内のデータ０３０３に対して上書きを許して書き込む。
【００３５】
入力受信バッファ０３３１には、ゲートウェイサーバ０１１３から送信されデータ通信部０３１５により受信した入力メッセージ０１３２を、ユーザプログラム０３０２が該入力メッセージ０１３２を処理対象として使用する時まで格納しておく。転送受信バッファ０３３２には、組込みノード０２０２の再同期稼働化の実行時に、稼働中ノード０２０１より転送されデータ通信部０３１５により受信した入力メッセージを、ユーザプログラム０３０２が該入力メッセージを処理対象として使用する時まで格納しておく。また入力駆動型ユーザプログラム管理テーブル０３２１、周期駆動型ユーザプログラム管理テーブル０３２２、及び、入力管理テーブル０３２３の概略は図７に示す。
【００３６】
図４は、本発明の一実施形態による、フォールトトレラントコンピュータシステム０１０１を対象として実施する、計算機間の再同期稼働化のための処理タイミング一致化方法の概要を示す図である。
【００３７】
ここでは、組込みノードの再同期稼働化を行う際に、組込みノード０２０２において稼働するユーザプログラムを、稼働中ノード０２０１にて稼働するユーザプログラムと処理タイミングを一致化させるための処理の流れの概要を示す。
【００３８】
稼働中ノード０２０１ではユーザプログラム０２１１は、入力メッセージもしくはタイマイベント等を処理開始のトリガー（０４０１、０４０２、０４０３）として、処理（０４１１、０４１２、０４１３）を実施し、処理の過程でデータ０２１２に対して読み込み、書き込みを行う。ここで、ユーザプログラム０２１１に対して処理開始のトリガー（０４０１、０４０２、０４０３）が発生し、処理（０４１１、０４１２、０４１３）が実施される度に、各処理（０４１１、０４１２、０４１３）が開始されるタイミングで、該稼働中ノード０２０１より組込みノード０２０２に対して、処理開始通知（０４２１、０４２２、０４２３）が送信される。
【００３９】
組込みノード０２０２では、稼働中ノード０２０１から組込みノード０２０２へのデータコピーによる該ノード間のデータ一致化が完了したことを、稼働中ノード０２０１から組込みノード０２０２に対して送信されるデータ一致化用データ送信完了通知０４３１を受信することで判定する。ここで稼働中ノード０２０１から送信される処理開始通知を受信し、該通知を参照することで、組込みノード０２０２におけるユーザプログラム０２２１の次の実行タイミングを事前に算出しておく。この方式の詳細は図５、６にて述べる。ただし、次の実行タイミングでユーザプログラム０２２１の処理を実際に開始するのは、該タイミングに達した時点でデータ一致化が完了している場合のみである。図４に示す例では、処理開始通知０４２１を参照して算出した次の実行タイミング０４０４は、データ一致化用データ送信完了通知０４３１を受信しデータ一致化完了を判定した後なので、次の実行タイミング０４０４にて、ユーザプログラム０２２１の処理０４１４を開始する。
【００４０】
これにより、組込みノード０２０２にて稼働中ノード０２０１とタイミングを合わせてユーザプログラム０２２１の処理を開始した後も、稼働中ノード０２０１からの処理開始通知０４２３を受信し比較参照することで、稼働中ノード０２０１における処理０４１３の開始タイミング０４０３と組込みノード０２０２における処理０４１５の処理開始タイミング０４０５とのずれを計測し、ずれが大きい場合は該ずれを補正することで、稼働中ノード０２０１におけるユーザプログラム０２１１と組込みノード０２０２におけるユーザプログラム０２２１との処理タイミングが再びずれることを回避する。
【００４１】
このようにして、組込みノード０２０２の再起動後、稼働中ノード０２０１に合わせることで処理タイミングの一致化を図り（０４４１）、処理タイミングの一致化後は、一度ノード間で一致化した処理タイミングの同期を維持していく（０４４２）。
【００４２】
次に、計算機（ノード０１１１）間の再同期稼働化のための処理タイミング一致化方法に関して、特に入力をトリガーとして処理を実施するユーザプログラムを対象とする場合の概要を図５に、周期的に処理を実施するユーザプログラムを対象とする場合の概要を図６に示す。
【００４３】
図５は、本発明の一実施形態による、フォールトトレラントコンピュータシステム０１０１を対象として実施する、計算機間の再同期稼働化のための処理タイミング一致化方法について、入力をトリガーとして処理を実施するユーザプログラムを対象として実施する場合の概要を示す図である。
【００４４】
稼働中ノード０２０１では、受信バッファ０５０１（図３の入力受信バッファ０３３１に相当する。）を介して渡された外部システム０１０３からの入力メッセージ０５１１（通番＃１０、＃１１、＃１２、＃１３）（図１の入力メッセージ０１３２に対応する。）をトリガーとして、ユーザプログラムの各々の処理（０５２１、０５２２、０５２３、０５２４）が実施される。また各処理（０５２１、０５２２、０５２３、０５２４）が実行開始されるタイミングで、稼働中ノード０２０１から組込みノード０２０２に対して、処理開始の通知及び該処理のトリガーとなる入力メッセージ０５１１の転送を行う（０５４１、０５４２、０５４３）。
【００４５】
組込みノード０２０２では、稼働中ノード０２０１からの処理開始通知及び入力メッセージの転送を受信する度に（０５５１、０５５２、０５５３）、自ノードの直接受信したメッセージを格納する受信バッファ０５０２（図３の入力受信バッファ０３３１に相当する。）を参照し、稼働中ノード０２０１より転送された入力メッセージと通番が一致する入力メッセージが格納されているか否かを判定する。この時点でデータ一致化が完了していれば（図５ではデータ書き込み処理０５６１によりデータ一致化用データの送信が完了済みになるとデータ一致化用データ送信完了通知０５６２が通知される。）、通番が一致する入力メッセージが格納されていない場合（図５では入力メッセージ転送０５４１、０５４２）は、稼働中ノード０２０１より転送された入力メッセージを用いてユーザプログラムの処理を行う（処理０５３１、０５３２）。また稼働中ノード０２０１より転送された入力メッセージと通番が一致する入力メッセージが格納されている場合（図５では入力メッセージ転送０５４３）は、受信バッファ０５０２に格納されている、組込みノード０２０２が直接受信した入力メッセージ０５１２を用いてユーザプログラムの処理を行う（処理０５３３）。またこの時組込みノード０２０２より稼働中ノード０２０１に対して転送停止要求０５４４を送信し、稼働中ノード０２０１からの入力メッセージの転送を停止する。転送の停止後は、受信バッファ０５０２に格納されている、組込みノード０２０２が直接受信した入力メッセージを用いて、ユーザプログラムの処理を行う（処理０５３４）。
【００４６】
なお、この組込みノード０２０２が稼働中ノード０２０１からの処理開始通知及び入力メッセージの転送を受信した時点で、まだデータ一致化が完了していない場合は、ユーザプログラムの処理は行わず、次の稼働中ノード０２０１からの処理開始通知及び入力メッセージの転送を受信するまで待機する。
【００４７】
図６は、本発明の一実施形態による、フォールトトレラントコンピュータシステム０１０１を対象として実施する、計算機間の再同期稼働化のための処理タイミング一致化方法について、周期的に処理を実施するユーザプログラムを対象として実施する場合の概要を示す図である。
【００４８】
稼働中ノード０２０１では、周期的に発生するタイマイベント（０６０１、０６０２、０６０３）に対して、周期毎のユーザプログラムの処理（０６１１、０６１２、０６１３）がそれぞれ実施される。また各処理（０６１１、０６１２、０６１３）が実行開始されるタイミングで、稼働中ノード０２０１から組込みノード０２０２に対して、処理開始の通知（０６３１、０６３２、０６３３）を送信する。
【００４９】
組込みノード０２０２では、稼働中ノード０２０１からの処理開始通知（＃１１）０６３１を受信すると、該通知に含まれる周期時間等の情報を参照して、該通知の受信時点から次周期（＃１２）が開始されるまでの時間を算出する（０６６１）。この間も稼働中ノード０２０１と組込みノード０２０２との間のデータ一致化のための稼働中ノード０２０１から組込みノード０２０２へのデータ書き込みは並行して実施される（０６４１）。
【００５０】
そして、算出した次周期（＃１２）開始までの時間が経過した時点までに、稼働中ノード０２０１よりデータ一致化用データ送信完了通知０６５１を受信済みである場合、ユーザプログラムの処理を開始する（処理（＃１２）０６２２）。稼働中ノード０２０１よりデータ一致化用データ送信完了通知０６５１をまだ受信していない場合、ユーザプログラムの処理は行わず、次周期（＃１３）が開始されるまでの時間を再度算出し、該算出した時間が経過するまで待機する。
【００５１】
組込みノード０２０２にてユーザプログラムの処理再開後は、稼働中ノード０２０１からの処理開始通知（図６では通知（＃１３）０６３３）を受信する度に、組込みノード０２０２における該当する処理（図６では処理（＃１３）０６２３）の開始タイミングとの差異を比較する。タイミングのずれを検出する度に補正の処理を実施する。
【００５２】
図７は、本発明の一実施形態における、フォールトトレラントコンピュータシステム０１０１を構成し、外部からの要求に対する処理等を実行するノード０１１１において管理される管理テーブルの構成を示す図である。図７（Ａ）は、入力をトリガーとして処理を実施するユーザプログラムの実行状態を管理する入力駆動型ユーザプログラム管理テーブル０３２１を示す図である。図７（Ｂ）は、ノードが受信した外部からの入力メッセージを管理する入力管理テーブル０３２３を示す図である。図７（Ｃ）は、周期的に処理を実施するユーザプログラムの実行状態を管理する周期駆動型ユーザプログラム管理テーブル０３２２を示す図である。
【００５３】
図７（Ａ）に示すように、入力駆動型ユーザプログラム管理テーブル０３２１は、処理対象０７１１、ステータス０７１２、メッセージ受信元０７１３、及び、更新時刻０７１４を主な構成要素として備える。
【００５４】
処理対象０７１１には、入力をトリガーとして処理を実施するユーザプログラムの処理対象となる最新の入力メッセージに関する情報が格納され、該メッセージに付与された通番が格納される通番０７４１と、該メッセージの受信時刻が格納される受信時刻０７４２とを含んで構成される。ステータス０７１２には、処理対象０７１１に格納される内容に対応する最新の入力メッセージに対して実行されるユーザプログラムの実行状態が格納される。ここに格納されるステータス値として、“待機中”、“処理中”、“処理終了”等がある。メッセージ受信元０７１３には、処理対象０７１１に格納される内容に対応する最新の入力メッセージを直接受信した受信元ノードの情報が格納される。ここに格納されるのは、“稼働中ノード”、“組込みノード”のいずれかである。更新時刻０７１４には、本テーブルの各行の最新の更新時刻が格納される。上記の入力駆動型ユーザプログラム管理テーブル０３２１の各項目は、組込みノードにて入力メッセージを受信する度に、また該メッセージに対して処理が実行される度に更新される。
【００５５】
図７（Ｂ）に示すように、入力管理テーブル０３２３は、ノード０７２１、通番０７２２、及び、受信時刻０７２３を主な構成要素として備える。
【００５６】
ノード０７２１には、入力メッセージを直接受信するノードの情報が格納される。ここに格納されるのは、“稼働中ノード”、“組込みノード”の２つである。通番０７２２には、稼働中ノードまたは組込みノードが受信する入力メッセージに付与された通番が格納される。受信時刻０７２３には、稼働中ノードまたは組込みノードが受信した入力メッセージの受信時刻が格納される。上記の入力管理テーブル０３２３の各項目は、組込みノードが稼働中ノードから転送された入力メッセージを受信する度に、また組込みノードにて入力メッセージが直接受信される度に更新される。
【００５７】
図７（Ｃ）に示すように、周期駆動型ユーザプログラム管理テーブル０３２２は、ユーザプログラム名称０７３１、周期カウンタ０７３２、周期間隔０７３３、待機時間０７３４、及び、ステータス０７３５を主な構成要素として備える。
【００５８】
ユーザプログラム名称０７３１には、周期的に処理を実施するユーザプログラムの名称が格納される。周期カウンタ０７３２には、ユーザプログラム名称０７３１に格納される名称に対応するユーザプログラムに関してタイマイベント発生の度に加算し付与される連番である周期カウンタが格納される。周期間隔０７３３には、ユーザプログラム名称０７３１に格納される名称に対応するユーザプログラムに関して処理実施のためのタイマイベントが発生する時間間隔が格納される。待機時間０７３４には、ユーザプログラム名称０７３１に格納される名称に対応するユーザプログラムに関して処理終了後、次周期開始までの待機時間が格納される。ステータス０７３５には、ユーザプログラム名称０７３１に格納される名称に対応するユーザプログラムの実行状態が格納される。ここに格納されるステータス値として、“待機中”、“処理中”、“処理終了”等がある。上記の周期駆動型ユーザプログラム管理テーブル０３２２の各項目は、組込みノードにてタイマイベントが発生する度に、また該タイマイベントに対して処理が実行、終了する度に更新される。
【００５９】
図８は、本発明の一実施形態における、フォールトトレラントコンピュータシステム０１０１において、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードの再同期稼働化の実施時において、稼働中ノードと組込みノードとの間で処理タイミングの一致化を行う際の、稼働中ノードにおける処理の流れを示すフローチャートである。
【００６０】
ここで、図８（Ａ）は、入力をトリガーとして処理を実施するユーザプログラムを対象として、稼働中ノード０２０１と組込みノード０２０２との間で処理タイミングの一致化を行う際の、稼働中ノード０２０１における処理の流れを示すフローチャートである。図８（Ｂ）は、周期的に処理を実施するユーザプログラムを対象として、稼働中ノード０２０１と組込みノード０２０２との間で処理タイミングの一致化を行う際の、稼働中ノード０２０１における処理の流れを示すフローチャートである。
【００６１】
図８（Ａ）に示すように、入力をトリガーとして処理を実施する場合、まず、組込みノード０２０２の再起動を検出する（０８１１）。この検出処理は、例えば、稼働中ノード０２０１が組込みノード０２０２の再起動を直接検出するマスターとなるノードより組込みノード再起動の通知を受ける、もしくは、組込みノード０２０２からの問い合わせを受け付ける、等の処理による。次に、外部システムからの入力メッセージを受信し（０８１２）、組込みノード０２０２に対して該入力メッセージに対する処理開始の通知と該入力メッセージデータの転送を行う（０８１３）。そして、該入力メッセージを自ノード（稼働中ノード０２０１）におけるユーザプログラムに引き渡し（０８１４）、該入力メッセージに対するユーザプログラムによる処理が実行される（０８１５）。その後、組込みノード０２０２からの転送停止要求通知を受信したか否かを判断し（０８１６）、組込みノード０２０２からの転送停止要求通知を受信していない場合（０８１６；ＮＯ）、ステップ０８１２から０８１５までの処理を繰り返す。ステップ０８１６において、組込みノードからの転送停止要求通知を受信した場合（０８１６；ＹＥＳ）、終了する。
【００６２】
また、図８（Ｂ）に示すように、周期的に処理を実施する場合、まず、稼働中ノード０２０１におけるタイマイベントの発生を検出する（０８２１）。ここで、タイマイベントは、指定された周期や時刻をノードに搭載されたＯＳのタイマ等を用いることで監視され、指定された周期に達した時点もしくは指定された時刻にて発生するイベントである。次に、組込みノード０２０２に対して周期処理開始の通知を送信する（０８２２）。そして、本周期における自ノード（稼動中ノード０２０１）におけるユーザプログラムの処理が実行される（０８２３）。以後、ステップ０８２１から０８２３までの処理を繰り返す。
【００６３】
図９は、本発明の一実施形態における、フォールトトレラントコンピュータシステム０１０１において、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードの再同期稼働化の実施時において、入力をトリガーとして処理を実施するユーザプログラムを対象として、稼働中ノード０２０１と組込みノード０２０２との間で処理タイミングの一致化を行う際の、組込みノード０２０２における処理の流れを示すフローチャートである。
【００６４】
まず、稼働中ノード０２０１からの処理開始通知及び転送された入力メッセージを受信する（０９０１）。次に、ステップ０９０１にて受信した転送メッセージを参照して、組込みノード０２０２にて管理される入力管理テーブル０３２３の稼働中ノードの項目を更新する（０９０２）。その後、稼働中ノード０２０１からデータ一致化用データ送信完了通知を受信済みか否かを判断し（０９０３）、データ一致化用データ送信完了通知を受信済みではない場合（０９０３；ＮＯ）、処理を終了する。一方、ステップ０９０３において、稼働中ノード０２０１からのデータ一致化用データ送信完了通知を受信済みである場合（０９０３；ＹＥＳ）、組込みノード０２０２にて管理される入力管理テーブル０３２３の稼働中ノードの項目及び自ノード（組込みノード）に関する項目を参照し（０９０４）、その結果、稼働中ノード０２０１からの転送メッセージの通番が、組込みノード０２０２にて直接受信され、受信バッファ０５０２に蓄積されているメッセージのうちの最も古いメッセージの通番よりも小さい場合（０９０５；ＹＥＳ）、ステップ０９０１にて受信した稼働中ノード０２０１からの転送メッセージを自ノード（組込みノード０２０２）のユーザプログラムに引き渡す（０９０６）。そして、ステップ０９０６にて引き渡されたメッセージに対してユーザプログラムが実行される（０９０７）。以降は、ステップ０９０１から０９０７までの処理を繰り返す。一方、ステップ０９０５において、稼働中ノード０２０１からの転送メッセージの通番が、組込みノード０２０２にて直接受信され、受信バッファ０５０２に蓄積されているメッセージのうちのいずれかのメッセージの通番と同じである場合（０９０５；ＮＯ）、組込みノード０２０２にて直接受信され、受信バッファ０５０２に蓄積されているメッセージのうち該当する通番のものを自ノード（組込みノード０２０２）のユーザプログラムに引き渡す（０９０８）。そして、ステップ０９０８にて引き渡されたメッセージに対してユーザプログラムが実行され（０９０９）、稼働中ノード０２０１に対してメッセージ転送の停止要求通知０５４４を送信して（０９１０）、終了する。
【００６５】
図１０は、本発明の一実施形態における、フォールトトレラントコンピュータシステムにおいて、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードの再同期稼働化の実施時において、周期的に処理を実施するユーザプログラムを対象として、稼働中ノード０２０１と組込みノード０２０２との間で処理タイミングの一致化を行う際の、組込みノード０２０２における処理の流れを示すフローチャートである。
【００６６】
まず、稼働中ノード０２０１からの処理開始通知を受信する（１００１）。次に、ステップ１００１にて受信した処理開始通知に含まれる周期に関する情報を参照して、該通知を受信した時点から次周期開始までの時間を算出する（１００２）。ここで、次周期開始までの時間は、ステップ１００２にて受信した稼働中ノード０２０１からの処理開始通知に含まれる周期に関する情報の１つである周期間隔から、稼働中ノード０２０１と組込みノード０２０２の間の通信時間を減算することで算出する。その後、周期駆動型ユーザプログラム管理テーブル０３２２の該当するユーザプログラムに関する周期カウンタ、周期間隔、待機時間の項目を更新し（１００３）、ステップ１００２の結果を基にして、次周期開始までの残り時間を計測する（１００４）。そして、稼働中ノード０２０１においてデータ更新が発生した場合、該データ更新による差分のデータの組込みノード０２０２への書き込みが行われる（１００５）。このとき、ステップ１００４の結果、次周期開始までの時間が経過していない場合（１００６；ＮＯ）、ステップ１００４及び１００５の処理を繰り返す。また、ステップ１００６において、ステップ１００４の結果、次周期開始までの時間が経過した場合（１００６；ＹＥＳ）、稼働中ノード０２０１からデータ一致化用データ送信完了通知を受信済みか否かを判断し（１００７）、データ一致化用データ送信完了通知を受信済みではない場合（１００７；ＮＯ）、ステップ１００１から１００６までの処理を繰り返す。一方、ステップ１００７において、稼働中ノード０２０１からのデータ一致化用データ送信完了通知を受信済みである場合（１００７；ＹＥＳ）、自ノード（組込みノード０２０２）におけるユーザプログラムの処理を開始させる（１００８）。そして、周期駆動型ユーザプログラム管理テーブル０３２２の、ステップ１００８にて処理開始したユーザプログラムに関する周期カウンタ、周期間隔、待機時間、ステータスの項目を更新する（１００９）。それから、稼働中ノード０２０１からの処理開始通知を受信する（１０１０）。該通知は、ステップ１００１にて受信した処理開始通知の次に稼働中ノード０２０１から送信された通知であり、ステップ１００８にて開始したユーザプログラムの周期処理に該当すべきものである。その後、ステップ１００８にて開始したユーザプログラムの周期処理の周期カウンタの値と、ステップ１０１０にて受信した稼働中ノード０２０１からの処理開始通知に含まれる周期カウンタの値とを比較して（１０１１）、これらが合致する場合（１０１１；ＹＥＳ）、処理を終了する。一方、ステップ１０１１において、ステップ１００８にて開始したユーザプログラムの周期処理の周期カウンタの値と、ステップ１０１０にて受信した稼働中ノード０２０１からの処理開始通知に含まれる周期カウンタの値とが合致しない場合（１０１１；ＮＯ）、ステップ１００８にて処理開始したユーザプログラムを強制終了し、組込みノード０２０２内のデータ等を、ステップ１００８にてユーザプログラムが処理開始する以前の状態に戻し（１０１２）、その後、ステップ１００２から１０１１までの処理を繰り返す。
【００６７】
図１１は、本発明の一実施形態における、フォールトトレラントコンピュータシステム０１０１において、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードの再同期稼働化の実施後、周期的に処理を実施するユーザプログラムを対象として、稼働中ノード０２０１と組込みノード０２０２との間で一致化させた処理タイミングを維持するための、組込みノード０２０２における処理の流れを示すフローチャートである。
【００６８】
まず、稼働中ノード０２０１からの処理開始通知を受信する（１１０１）。次に、ステップ１１０１にて受信した通知から抽出した周期カウンタを参照する（１１０２）。そして、ステップ１１０２にて参照した周期カウンタに該当する周期の処理が組込みノード０２０２で開始済みでないか否かを判断し（１１０３）、開始済みである場合（１１０３；ＮＯ）、ステップ１１０１からの処理に戻る。一方、ステップ１１０３において、ステップ１１０２にて参照した周期カウンタに該当する周期の処理が組込みノード０２０２では未開始である場合（１１０３；ＹＥＳ）、この周期カウンタに該当する周期の処理が開始されるまで待機する（１１０４）。周期カウンタに該当する周期の処理が開始されると（１１０４；ＹＥＳ）、該周期の開始までの遅延時間を算出する（１１０５）。ここで、遅延時間は、ステップ１１０１にて稼働中ノード０２０１からの処理開始通知を受信した時点から、ステップ１１０４にて該当周期の処理が開始された時点までの差分時間と、稼働中ノード０２０１と組込みノード０２０２の間の通信時間との和として算出する。そして、該周期の処理の終了後、ステップ１１０５にて算出した遅延時間に基づいて、該周期の処理終了時点から次周期開始までの待機時間の補正を行う（１１０６）。ここで待機時間の補正は、元々の待機時間（当該ユーザプログラムの周期間隔から該周期における実際の処理時間を減算することで算出）からステップ１１０５で算出した遅延時間を減算することに行う。
【００６９】
図１２は、本発明の一実施形態における、フォールトトレラントコンピュータシステムを構成するノードのうち、稼働中ノード０２０１と組込みノードの間で、組込みノードの再同期稼働化の実施時において、処理タイミングの一致化を行うために送受信されるメッセージの形式を示す図である。
【００７０】
図１２（Ａ）は、稼働中ノード０２０１から組込みノード０２０２へと送信されるもので、入力をトリガーとして処理を実施するユーザプログラムに関して、処理開始の通知及びユーザプログラムの処理開始のトリガーとなる入力メッセージデータを含めるメッセージの形式１２０１を示す。
【００７１】
このメッセージ形式１２０１は、ヘッダ情報１２１１、識別情報１２１２、通番１２１３、受信時刻１２１４、ステータス１２１５、及び、入力データ１２１６を主な構成要素として備える。
【００７２】
ヘッダ情報１２１１には、メッセージプロトコル等に関する情報が格納される。識別情報１２１２には、このメッセージが稼働中ノード０２０１からの、入力をトリガーとして処理を実施するユーザプログラムに関する処理開始通知であることを示す識別情報が格納される。通番１２１３には、稼働中ノード０２０１が直接受信し、組込みノード０２０２に対して転送する入力メッセージに付与されている通番が格納される。受信時刻１２１４には、稼働中ノード０２０１が該入力メッセージを直接受信した時刻が格納される。ステータス１２１５には、稼働中ノード０２０１における該入力メッセージに対する処理の実行状態が格納される。本通知は稼働中ノード０２０１にてユーザプログラムによる処理を開始する時点で送信されることから、該ステータス１２１５には通常は“実行中”を示す値が格納される。入力データ１２１６には、稼働中ノード０２０１が直接受信し、組込みノード０２０２に対して転送する入力メッセージのデータ本体が格納される。
【００７３】
図１２（Ｂ）は、稼働中ノード０２０１から組込みノード０２０２へと送信されるもので、周期的に処理を実施するユーザプログラムに関して、処理開始の通知のメッセージの形式１２０２を示す。
【００７４】
このメッセージ形式１２０２は、ヘッダ情報１２２１、識別情報１２２２、ＵＰ名称１２２３、周期カウンタ１２２４、及び、周期間隔１２２５を主な構成要素として備える。
【００７５】
ヘッダ情報１２２１には、メッセージプロトコル等に関する情報が格納される。識別情報１２２２には、このメッセージが稼働中ノード０２０１からの、周期的に処理を実施するユーザプログラムに関する処理開始通知であることを示す識別情報が格納される。ＵＰ名称１２２３には、該当する周期的に処理を実施するユーザプログラムの名称が格納される。周期カウンタ１２２４には、ＵＰ名称１２２３に格納される名称に該当するユーザプログラムのタイマイベント発生の度に加算し付与される連番である周期カウンタが格納される。周期間隔１２２５には、ＵＰ名称１２２３に格納される名称に該当するユーザプログラムの処理実施のためのタイマイベントが発生する時間間隔が格納される。
【００７６】
図１２（Ｃ）は、稼働中ノード０２０１から組込みノード０２０２へと送信される、データ一致化用データ送信完了通知、もしくは組込みノード０２０２から稼働中ノード０２０１へと送信される、転送停止要求通知のメッセージの形式１２０３を示す。
【００７７】
このメッセージ形式１２０３は、ヘッダ情報１２３１及び識別情報１２３２を主な構成要素として備える。
【００７８】
ヘッダ情報１２３１には、メッセージプロトコル等に関する情報が格納される。識別情報１２３２には、このメッセージが稼働中ノード０２０１からのデータ一致化完了通知もしくは転送停止要求通知であることを示す識別情報が格納される。
【００７９】
以上、本発明の実施の形態について、その実施の形態に基づき具体的に説明したが、これに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。このため、上記実施形態はあらゆる点で単なる例示にすぎず、限定的に解釈されるものではない。例えば、上述の各処理ステップは処理内容に矛盾を生じない範囲で任意に順番を変更して又は並列に実行することが可能である。
【図面の簡単な説明】
【００８０】
【図１】本発明の一実施形態に係るフォールトトレラントコンピュータシステムの概要を示す図である。
【図２】本発明の一実施形態における、フォールトトレラントコンピュータシステムを構成し、外部からの要求に対する処理等を実行するノードの再同期稼働化の概要を示す図、及び、関連する処理の流れを示すシーケンス図である。
【図３】本発明の一実施形態における、フォールトトレラントコンピュータシステムを構成し、外部からの要求に対する処理等を実行するノードのモジュール構成を示す図である。
【図４】本発明の一実施形態による、フォールトトレラントコンピュータシステムを対象として実施する、計算機間の再同期稼働化のための処理タイミング一致化方法の概要を示す図である。
【図５】本発明の一実施形態による、フォールトトレラントコンピュータシステムを対象として実施する、計算機間の再同期稼働化のための処理タイミング一致化方法について、入力をトリガーとして処理を実施するユーザプログラムを対象として実施する場合の概要を示す図である。
【図６】本発明の一実施形態による、フォールトトレラントコンピュータシステムを対象として実施する、計算機間の再同期稼働化のための処理タイミング一致化方法について、周期的に処理を実施するユーザプログラムを対象として実施する場合の概要を示す図である。
【図７】本発明の一実施形態における、フォールトトレラントコンピュータシステム０１０１を構成し、外部からの要求に対する処理等を実行するノード０１１１において管理される管理テーブルの構成を示す図である。
【図８】本発明の一実施形態における、フォールトトレラントコンピュータシステムにおいて、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードの再同期稼働化の実施時において、稼働中ノードと組込みノードとの間で処理タイミングの一致化を行う際の、稼働中ノードにおける処理の流れを示すフローチャートである。
【図９】本発明の一実施形態における、フォールトトレラントコンピュータシステムにおいて、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードの再同期稼働化の実施時において、入力をトリガーとして処理を実施するユーザプログラムを対象として、稼働中ノードと組込みノードとの間で処理タイミングの一致化を行う際の、組込みノードにおける処理の流れを示すフローチャートである。
【図１０】本発明の一実施形態における、フォールトトレラントコンピュータシステムにおいて、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードの再同期稼働化の実施時において、周期的に処理を実施するユーザプログラムを対象として、稼働中ノードと組込みノードとの間で処理タイミングの一致化を行う際の、組込みノードにおける処理の流れを示すフローチャートである。
【図１１】本発明の一実施形態における、フォールトトレラントコンピュータシステムにおいて、ソフトウェア更新、ハードウェア更改または障害回復、メンテナンス等のために停止させていたノードの再同期稼働化の実施後、周期的に処理を実施するユーザプログラムを対象として、稼働中ノードと組込みノードとの間で一致化させた処理タイミングを維持するための、組込みノードにおける処理の流れを示すフローチャートである。
【図１２】本発明の一実施形態における、フォールトトレラントコンピュータシステムを構成するノードのうち、稼働中ノードと組込みノードの間で、組込みノードの再同期稼働化の実施時において、処理タイミングの一致化を行うために送受信されるメッセージの形式を示す図である。
【符号の説明】
【００８１】
０１０１ フォールトトレラントコンピュータシステム
０１０２ 広域ネットワーク
０１０３ 外部システム
０１１１ ノード
（０２０１        稼働中ノード）
（０２０２        組込みノード）
０１１２，０３０４         ネットワーク（ＬＡＮ，通信媒体）
０１１３ ゲートウェイサーバ
０１２１ 処理装置
０１２２ 記憶装置
０１２３ 通信装置
０２１１，０２２１，０３０２        ユーザプログラム
０２１２，０２２２，０３０３        データ
０３０１ ミドルウェア
０３１１ 入力駆動管理部
０３１２ 周期駆動管理部
０３１３ データ同期処理部
０３１４ 受信データ管理部
０３１５ データ通信部
０３２１ 入力駆動型ユーザプログラム管理テーブル
０３２２ 周期駆動型ユーザプログラム管理テーブル
０３２３ 入力管理テーブル
０３３１ 入力受信バッファ
０３３２ 転送受信バッファ
０４２１，０４２２，０４２３        処理開始通知
（０５４１，０５４２，０５４３      入力メッセージの転送）
（０６３１，０６３２，０６３３      周期的処理の処理開始通知）
０４３１，０５６２，０６５１        データ一致化用データ送信完了通知
０５４４ 転送停止要求通知
【図１】
0005153310.tif 000002
【図２】
0005153310.tif 000003
【図３】
0005153310.tif 000004
【図４】
0005153310.tif 000005
【図５】
0005153310.tif 000006
【図６】
0005153310.tif 000007
【図７】
0005153310.tif 000008
【図８】
0005153310.tif 000009
【図９】
0005153310.tif 000010
【図１０】
0005153310.tif 000011
【図１１】
0005153310.tif 000012
【図１２】
0005153310.tif 000013