(57)【要約】【課題】二重化されたネットワークにおいて、どちらの系で障害が発生したのかを容易に判断することが可能な二重化ネットワーク制御システムおよび二重化ネットワーク制御方法を提供する。【解決手段】マスタノードおよびスレーブノードは、互いに第２のネットワークを介してアクセスが可能であることを確認する監視部と、監視部による監視の結果、相手ノードからアクセスに対する応答を受信したか否かを判定し、相手ノードからアクセスに対する応答を受信していないと判定した場合、第２のネットワークを介して他のノードに対してアクセスをしてその実行結果を互いに第１のネットワークを介して送受信し、送受信した実行結果を比較することによりマスタノードまたはスレーブノードのいずれに障害があるかを判別する障害判断部と、他のノードは、マスタノードおよびスレーブノードからアクセスを受けた場合にアクセスに対する実行結果を送信する処理部と、を備える。【選択図】図６Ａ
2014072631.tif 000002
【特許請求の範囲】
【請求項１】
マスタノードと、前記マスタノードに第１のネットワークを介して接続されたスレーブノードと、前記マスタノードと前記スレーブノードと間で通信する他のノードと、が第２のネットワークで接続された二重化ネットワーク制御システムであって、
前記マスタノードおよび前記スレーブノードは、
互いに前記第２のネットワークを介してアクセスが可能であることを確認する監視部と、
前記監視部による監視の結果、相手ノードから前記アクセスに対する応答を受信したか否かを判定し、前記相手ノードから前記アクセスに対する応答を受信していないと判定した場合、前記第２のネットワークを介して前記他のノードに対して前記アクセスをしてその実行結果を互いに前記第１のネットワークを介して送受信し、送受信した前記実行結果を比較することにより前記マスタノードまたは前記スレーブノードのいずれに障害があるかを判別する障害判断部と、
前記他のノードは、
前記マスタノードおよび前記スレーブノードから前記アクセスを受けた場合に前記アクセスに対する実行結果を送信する処理部と、
を備えることを特徴とする二重化ネットワーク制御システム。
【請求項２】
前記マスタノードおよび前記スレーブノードは、
自らのノードで行われた処理のログ情報を記憶する記憶部をさらに備え、
前記障害判断部は、前記他のノードから前記実行結果を正常に受信できた場合には、さらに前記ログ情報を比較することにより、前記マスタノードまたは前記スレーブノードのいずれに障害があるかを判別する、
ことを特徴とする請求項１に記載の二重化ネットワーク制御システム。
【請求項３】
前記障害判断部は、マスタノードまたは前記スレーブノードは、前記他のノードから受信した前記実行結果が前記マスタノードまたは前記スレーブノードのいずれかがタイムアウトで受信できない場合、そのノードに異常があると判別する、
ことを特徴とする請求項１または２に記載の二重化ネットワーク制御システム。
【請求項４】
前記障害判断部は、前記監視部による監視の結果、前記相手ノードから前記アクセスできないと判定した場合、前記他のノードに対して前記アクセスをすることなく自らのノードが異常であると判別する、
ことを特徴とする請求項１〜３のいずれか１項に記載の二重化ネットワーク制御システム。
【請求項５】
前記障害判断部は、前記第２のネットワークに接続されている前記他のノードのなかで最小値ノードに対して前記アクセスをして前記実行結果を受信する、
ことを特徴とする請求項１〜４のいずれか１項に記載の二重化ネットワーク制御システム。
【請求項６】
前記障害判断部は、前記第２のネットワークに接続されている前記他のノードのなかで最も高スペックのノードに対して前記アクセスをして前記実行結果を受信する、
ことを特徴とする請求項１〜５のいずれか１項に記載の二重化ネットワーク制御システム。
【請求項７】
マスタノードと、前記マスタノードに第１のネットワークを介して接続されたスレーブノードと、前記マスタノードと前記スレーブノードと間で通信する他のノードと、が第２のネットワークで接続された二重化ネットワーク制御システムで行われる二重化ネットワーク制御方法であって、
互いに前記第２のネットワークを介してアクセスが可能であることを確認する監視ステップと、
前記監視ステップにおける監視の結果、相手ノードから前記アクセスに対する応答を受信したか否かを判定する判定ステップと、
前記判定ステップにおいて前記相手ノードから前記アクセスに対する応答を受信していないと判定した場合、前記第２のネットワークを介して前記他のノードに対して前記アクセスをする第１アクセスステップと、
前記第１アクセスステップにおいて前記マスタノードおよび前記スレーブノードから前記アクセスを受けた場合に前記アクセスに対する実行結果を送信する処理ステップと、
前記処理ステップにおいて前記実行結果を受信した場合にその実行結果を互いに前記第１のネットワークを介して送受信する第２アクセスステップと、
前記第２アクセスステップにおいて送受信した前記実行結果を比較することにより前記マスタノードまたは前記スレーブノードのいずれに障害があるかを判別する障害判断ステップと、
を含むことを特徴とする二重化ネットワーク制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二重化されたネットワークを制御する技術に関するものである。
【背景技術】
【０００２】
従来、二重化されたネットワーク構成を有するシステムにおいては、一方の系のネットワークに障害が発生した場合に他の系のネットワークに切り替える様々な技術が存在する。例えば、特許文献１では、ネットワークを構成する各系の装置から取得した通信状態情報からその装置の通信状態を評価・数値化し、その値が小さい系のネットワークの方が、より運用リスクが低いネットワークであると判断し、ネットワークの系を切り替えている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第４６４１１８８号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述した特許文献１では、各装置から一定時間内に応答があった場合には通信状態が正常であると判断する一方、一定時間内に応答がなかった場合には通信状態が正常でないと判断し、正常ではないと判断された装置の数によって系の切替を判断している。しかしながら、特許文献１では各系の装置について通信状態を集約して判断する必要があるため、どちらの系に異常があるか否か容易に判別できないという問題があった。
【０００５】
本発明は、上記に鑑みてなされたものであって、二重化されたネットワークにおいて、どちらの系で障害が発生したのかを容易に判断することが可能な二重化ネットワーク制御システムおよび二重化ネットワーク制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するために、本発明にかかる二重化ネットワーク制御システムは、マスタノードと、前記マスタノードに第１のネットワークを介して接続されたスレーブノードと、前記マスタノードと前記スレーブノードと間で通信する他のノードと、が第２のネットワークで接続された二重化ネットワーク制御システムであって、前記マスタノードおよび前記スレーブノードは、互いに前記第２のネットワークを介してアクセスが可能であることを確認する監視部と、前記監視部による監視の結果、相手ノードから前記アクセスに対する応答を受信したか否かを判定し、前記相手ノードから前記アクセスに対する応答を受信していないと判定した場合、前記第２のネットワークを介して前記他のノードに対して前記アクセスをしてその実行結果を互いに前記第１のネットワークを介して送受信し、送受信した前記実行結果を比較することにより前記マスタノードまたは前記スレーブノードのいずれに障害があるかを判別する障害判断部と、前記他のノードは、前記マスタノードおよび前記スレーブノードから前記アクセスを受けた場合に前記アクセスに対する実行結果を送信する処理部と、を備えることを特徴とする。
【０００７】
また、本発明は、上記二重化ネットワーク制御システムで行われる二重化ネットワーク制御方法である。
【発明の効果】
【０００８】
本発明によれば、二重化されたネットワークにおいて、どちらの系で障害が発生したのかを容易に判断することが可能な二重化ネットワーク制御システムおよび二重化ネットワーク制御方法を提供することができる。
【図面の簡単な説明】
【０００９】
【図１】本発明に係る二重化ネットワーク制御システムの構成例を示す図である。
【図２】ノードの機能的な構成を示すブロック図である。
【図３】マスタノードの機能的な構成を示すブロック図である。
【図４】記憶部が記憶するネットワークが有するノードの構成情報の例を示す図である。
【図５】本発明に係る二重化ネットワーク制御システムの構成例を示す図である（アクセス処理実行時）。
【図６Ａ】障害判定処理の処理手順を示すフローチャートである。
【図６Ｂ】障害判定処理の処理手順を示すフローチャートである。
【図７】ログ出力設定情報の例を示す図である。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、本発明にかかる二重化ネットワーク制御システムおよび二重化ネットワーク制御方法の実施の形態を詳細に説明する。
【００１１】
図１は、本発明に係る二重化ネットワーク制御システムの構成例を示す図である。図１に示すように、二重化ネットワーク制御システム１０００は、複数のノード１００と、マスタノード２００と、スレーブノード３００と、ネットワークＮ１、Ｎ２およびＮ３とを有して構成されている。なお、ネットワークＮ１およびＮ２は、例えば、ＷＡＮ（Wide  Area  Network）あるいはＬＡＮ（Local  Area  Network）等の一般的な通信網であり、ネットワークＮ３は、マスタノード２００とスレーブノード３００との間を接続する専用ＬＡＮである。まず、ノード１００について説明する。
【００１２】
ノード１００は、例えば、ＰＣ（Personal  Computer）やサーバ等の情報処理装置から構成される。後述するように、ノード１００は、ネットワークＮ１およびＮ２を介したマスタノード２００とスレーブノード３００との間のアクセスが不可能となり、これらのノードでその原因が判別できず、マスタノード２００およびスレーブノード３００で実行されている他ノードへのアクセス処理（例えば、スレーブノード３００の共有メモリをリードする処理）が、第三のノードであるいずれかのノード１００（基本的には、マスタノード２００またはスレーブノード３００に近いノード）に対して実行された場合に、そのアクセス処理の実行結果を、マスタノード２００およびスレーブノード３００にフィードバックする。
【００１３】
図２は、ノード１００の機能的な構成を示すブロック図である。図２に示すように、ノード１００は、通信部１０１と、障害時処理部１０２と、制御部１０３とを有して構成されている。
【００１４】
通信部１０１は、例えば、ＮＩＣ（Network  Interface  Card）等の通信機器であり、自身のノードと他のノード１００、マスタノード２００、スレーブノード３００との間で通信するための種々の情報を送受信する。
【００１５】
障害時処理部１０２は、マスタノード２００およびスレーブノード３００からアクセス処理の実行を受けて、その結果をマスタノード２００およびスレーブノード３００に通信部１０１を介して送信する。
【００１６】
制御部１０３は、例えば、ＣＰＵ（Central  Processing  Unit）であり、上述したノード１００の各部の動作を制御する。また、制御部１０３の内部には、不図示のメモリを有しており、自ノードを識別するための識別情報（例えば、ＩＰアドレス、ＭＡＣアドレス等のアドレス情報）を記憶している。続いて、マスタノード２００について説明する。なお、以下ではマスタノード２００についてのみ説明しているが、スレーブノード３００についても同様の構成を有している。
【００１７】
図３は、マスタノード２００の機能的な構成を示すブロック図である。図３に示すように、マスタノード２００は、通信部２０１と、監視部２０２と、障害判断部２０３と、記憶部２０４と、制御部２０５とを有して構成されている。
【００１８】
通信部２０１は、例えば、ＮＩＣ等の通信機器であり、自ノードとスレーブノード３００、および自ノードとノード１００との間で通信するための種々の情報を送受信する。
【００１９】
監視部２０２は、ネットワークＮ３を介して、自ノードとの間の接続が有効な状態であるか否かを確認するためのアライブ情報（例えば、キーアライブパケット）をスレーブノード３００から定期的に取得することにより、相手先ノードであるスレーブノード３００の接続状態を確認する。例えば、監視部２０２は、２００ｍｓごとにキーアライブパケットを受信しないことを確認した場合、スレーブノード３００が有効な状態ではないと判断し、スレーブノード３００との接続を切断する。スレーブノード３００が有する監視部についても、これと同様に、ネットワークＮ３を介して、アライブ情報をマスタノード２００から定期的に取得し、マスタノード２００との間の接続状態を確認している。
【００２０】
なお、図１においては特に明示していないが、マスタノード２００およびスレーブノード３００は、不図示のバスにより接続され、監視部２０２は、互いの起動・停止状態を監視している。例えば、監視部２０２は、スレーブノード３００の電源がＯＮ状態となっているか否か、ＣＰＵが起動している状態であるか否かを監視している。
【００２１】
また、監視部２０２は、ネットワークＮ１またはＮ２を介して、スレーブノード３００に対するアクセス処理を定期的に監視し、そのアクセス処理に異常が発生しているか否かを判定する。例えば、監視部２０２は、ネットワークＮ１またはＮ２を介して２００ｍｓごとにスレーブノード３００の共有メモリにアクセスし、記憶されているデータのリードが可能か否かを判断する。スレーブノード３００が有する監視部についても、これと同様に、ネットワークＮ１またはＮ２を介して、マスタノード２００に対するアクセスを定期的に監視し、そのアクセスに異常が発生しているか否かを判定している。
【００２２】
また、監視部２０２は、ネットワークＮ１またはＮ２を介してサイクリック通信を行い、自ノードが有する共有メモリが記憶するデータを定期的にスレーブノード３００に送信し、互いの共有メモリに記憶されているデータの同期性を監視する。スレーブノード３００が有する監視部についても、これと同様に、ネットワークＮ１またはＮ２を介してサイクリック通信を行い、自ノードが有する共有メモリのデータを周期的にマスタノード２００に送信し、互いの共有メモリに記憶されているデータの同期性を監視している。
【００２３】
また、監視部２０２は、ネットワークＮ１またはＮ２に接続されるノードを定期的に監視し、これらのネットワークに接続される最新のノードのノード構成情報（後述）を記憶部２０４に記憶させる。
【００２４】
障害判断部２０３は、監視部２０２が監視しているスレーブノード３００の接続状態や起動・停止状態を確認し、マスタノード２００とスレーブノード３００との間で接続が可能な状態であるか否か、スレーブノード３００の電源がＯＮ状態であるかＣＰＵが起動している状態であるか否かを判断し、その状態となっている原因を切り分ける処理（障害判定処理）およびアクセス処理を実行する。障害判断部２０３が行う処理の具体的な内容については、フローチャートを用いて後述する。
【００２５】
記憶部２０４は、例えば、一般的なメモリであり、スレーブノード３００やノード１００との間の通信に必要な各種の情報を記憶する。
【００２６】
図４は、記憶部２０４が記憶するネットワークＮ１またはＮ２が有するノードの構成情報（例えば、リングマップのようなノード構成情報）の例を示す図である。図４に示すように、ノード構成情報は、ノードを識別するためのノード識別情報と、そのノードのアドレス情報と、そのノードの構成スペック（ＣＰＵ、メモリ、ディスク容量）とが対応付けて記憶されている。図４では、ネットワークＮ１のノードとして、ノード識別情報が「Ｎ１０１」で識別されるノードがあり、そのノードのＩＰアドレスは「１２３．４５６．０１２」であり、ＣＰＵ、メモリ、ディスク容量はそれぞれ、３．４ＧＨｚ、２ＧＢ、１００ＧＢであることを示している。このノード構成情報は、監視部２０２によって定期的に最新の状態に更新される。
【００２７】
また、記憶部２０４は、共有メモリとしての役割を有し、上述したノード構成情報のほか、マスタノード２００とスレーブノード３００との間で同期して記憶すべき各種の情報を記憶する。後述するように、マスタノード２００とスレーブノード３００との間でアクセスができない状態となった場合、障害判断部２０３は、図５に示すように、上述したノード構成情報の中から、その時点でマスタノード２００またはスレーブノード３００に最も近いＩＰアドレスを有したノード１００（最小値ノード）に対してアクセス処理を実行することとなる。
【００２８】
制御部２０５は、例えば、ＣＰＵ（Central  Processing  Unit）であり、マスタノード２００の各部の動作を制御する。続いて、二重化ネットワーク制御システム１０００で行われる障害判定処理について説明する。
【００２９】
図６Ａ、６Ｂは、上述した障害判定処理の処理手順を示すフローチャートである。以下では、マスタノード２００における障害判定処理について説明しているが、スレーブノード３００でもこれと同様の処理を行っているものとする。
【００３０】
図６Ａに示すように、まず、マスタノード２００の監視部２０２は、スレーブノード３００から受信したアライブ情報を参照し、スレーブノード３００に接続可能な状態か否かを確認し、通信判断部２０３は、監視部２０２がスレーブノード３００に接続可能な状態と確認したか否かを判定する（ステップＳ６０１）。
【００３１】
そして、障害判断部２０３は、監視部２０２がスレーブノード３００に接続可能な状態と確認したと判定した場合（ステップＳ６０１；Ｙｅｓ）、さらに監視部２０２がスレーブノード３００の電源がＯＮ状態であってＣＰＵが起動している状態を確認したか否かを判定する（ステップＳ６０２）。
【００３２】
障害判断部２０２は、監視部２０２がスレーブノード３００に接続可能な状態と確認していないと判定した場合（ステップＳ６０１；Ｎｏ）、または監視部２０２がスレーブノード３００の電源がＯＮ状態であってＣＰＵが起動している状態を確認していないと判定した場合（ステップＳ６０２；Ｎｏ）、スレーブノード３００は停止中であるか、またはネットワークから孤立した状態であり、二重化されたネットワークの構成で運用されていないと判断し、ステップＳ６０１に戻ってそのまま待機する。
【００３３】
一方、障害判断部２０３は、監視部２０２がスレーブノード３００に接続可能な状態と確認したと判定し（ステップＳ６０１；Ｙｅｓ）、かつ監視部２０２がスレーブノード３００の電源がＯＮ状態であってＣＰＵが起動している状態を確認したと判定した場合（ステップＳ６０２；Ｙｅｓ）、さらにネットワークＮ１またはＮ２を介して監視部２０２がスレーブノード３００の共有メモリに対してアクセス処理を実行し（ステップＳ６０３）、その実行が成功したか否かを判定する（ステップＳ６０４）。例えば、障害判断部２０３は、監視部２０２によるスレーブノード３００が有する共有メモリのリード処理の実行が成功したか否かを判定する。
【００３４】
そして、障害判断部２０３は、監視部２０２によるアクセス処理の実行が成功したと判定した場合（ステップＳ６０４；Ｙｅｓ）、さらにスレーブノード３００が実行したアクセス処理の実行が成功した旨を示す応答を受信したか否かを判定する（ステップＳ６０６）。すなわち、マスタノード２００およびスレーブノード３００の各ノードが、それぞれ互いにスレーブノード３００およびマスタノード２００に対してアクセス処理の実行が成功した旨の応答を受信する。
【００３５】
一方、障害判断部２０３は、監視部２０２によるアクセス処理の実行が成功していないと判定した場合（ステップＳ６０４；Ｎｏ）、アクセス処理を行うためのコマンドの送信（例えば、共有メモリをリードするためのコマンドの送信）が出来ない、あるいはマスタノード２００のソフトウェアの起動が出来ない等、マスタノード２００の異常が原因でアクセス処理が実行出来ないと判断し、ログを出力する等のエラー処理を実行し、マスタノード２００を停止させ（ステップＳ６０５）、障害判定処理を終了させる。この段階で以降の処理を行わずに処理を終了させることにより、より速やかに障害の切り分けを行うことができる。
【００３６】
障害判断部２０３は、スレーブノード３００が実行したアクセス処理の実行が成功した旨を示す応答を受信したと判定した場合（ステップＳ６０６；Ｙｅｓ）、ネットワークＮ１およびＮ２を介した通信は正常であると判断し、ステップＳ６０１に戻って待機する。すなわち、ネットワークＮ１またはＮ２を介して、マスタノード２００およびスレーブノード３００の双方でアクセス処理の実行が成功した場合、二重化ネットワーク制御システム１０００での通信障害はないと判断し、そのまま待機する。
【００３７】
一方、障害判断部２０３は、スレーブノード３００が実行したアクセス処理の実行が成功した旨を示す応答を受信していないと判定した場合（ステップＳ６０６；Ｎｏ）、ネットワークＮ３を介して、その応答を受信していない旨の通信失敗メッセージをスレーブノード３００に送信してその旨を報告し（ステップＳ６０７）。スレーブノード３００が、マスタノード２００からその応答を受信していない場合も同様に、通信失敗メッセージをマスタノード２００に送信してその旨を報告する。例えば、マスタノード２００およびスレーブノード３００は、その応答を一定時間内に受信しない場合には、タイムアウトと判断して通信失敗メッセージを送信する。
【００３８】
そして、障害判断部２０３は、記憶部２０４に記憶されているノード構成情報を参照し、ネットワークＮ１またはＮ２に他のノード１００が存在するか否かを判定し（ステップＳ６０８）、ネットワークＮ１またはＮ２に他のノード１００が存在しないと判定した場合（ステップＳ６０８；Ｎｏ）、障害を判別することが困難であると判断し、ログを出力する等のエラー処理を実行し（ステップＳ６０９）、障害判定処理を中断させる。この場合、一定時間が経過した後にあらためてステップＳ６０１に戻って障害判定処理を再実行させたり、あるいは管理者にその旨を通報し、原因を調査させることとしてもよい。
【００３９】
一方、障害判断部２０３は、ネットワークＮ１またはＮ２に他のノード１００が存在すると判定した場合（ステップＳ６０８；Ｙｅｓ）、図４に示したノード構成情報を参照し、その他のノード１００のうちの最小値ノードに対してアクセス処理を実行し、その実行結果を受信する（ステップＳ６１０）。このとき、スレーブノード３００も同様に、他のノード１００に対してアクセス処理を実行し、その実行結果を受信する。例えば、マスタノード２００およびスレーブノード３００は、アクセス処理の対象となっていた相手方のノード（例えば、マスタノード２００の場合には相手方のノードであるスレーブノード３００）のＩＰアドレスを、他のノード１００のＩＰアドレスや、その他のノード１００と通信するためのプロトコルを変換した上で、他のノード１００に対してアクセス処理を実行し、その実行結果を受信する。このように、最小値ノードに対してアクセス処理を行うことにより、効率よく速やかに障害判定処理を実行することができる。
【００４０】
なお、本実施例においては、障害判断部２０３は、最小値ノードに対してアクセス処理を実行しているが、アクセス処理が複雑で処理時間がかかる場合には、さらにノード構成情報を参照して、構成スペックが高いノード１００を選択してアクセス処理を実行させることとしてもよい。この場合、通常であれば処理時間がかかる場合でも迅速にアクセス処理の結果を受信することができ、障害判定処理全体の処理を速やかに実行することができる。
【００４１】
そして、障害判断部２０３は、他のノード１００から受信した実行結果を、ネットワークＮ３を介してスレーブノード３００に送信し（ステップＳ６１１）、また、スレーブノード３００も同様に、他のノード１００から受信した実行結果を、ネットワークＮ３を介してマスタノード２００に送信する（ステップＳ６１２）。
【００４２】
障害判断部２０３は、自ノード（マスタノード２００）が他のノード１００から受信した実行結果の内容、およびスレーブノード３００から受信した実行結果の内容を確認し、自ノードの実行結果のみ異常があったか否か（例えば、アクセス処理が実行できずにタイムアウトとなったか否か）を判定し（ステップＳ６１３）、自ノードの実行結果のみ異常があったと判定した場合（ステップＳ６１３；Ｙｅｓ）、マスタノード２００の異常が原因でアクセス処理が実行出来ないと判断し、ログを出力する等のエラー処理を実行し、マスタノード２００を停止させ（ステップＳ６１４）、障害判定処理を終了させる。
【００４３】
一方、障害判断部２０３は、自ノードの実行結果のみ異常がなかったと判定した場合（ステップＳ６１３；Ｎｏ）、さらに他ノード（スレーブノード３００）の実行結果のみ異常があったか否かを判定し（ステップＳ６１５）、他ノードの実行結果のみ異常があったと判定した場合（ステップＳ６１５；Ｙｅｓ）、スレーブノード３００の異常が原因でアクセス処理が実行出来ないと判断し、ログを出力する等のエラー処理を実行し、スレーブノード３００を停止させ（ステップＳ６１６）、障害判定処理を終了させる。
【００４４】
一方、障害判断部２０３は、他ノードの実行結果のみ異常がなかったと判定した場合（ステップＳ６１５；Ｎｏ）、自ノードであるマスタノード２００および他ノードであるスレーブノード３００の双方において、正常に実行結果の受信が成功したか否かを判定する（ステップＳ６１７）。
【００４５】
そして、障害判断部２０３は、双方のノードにおいて正常に実行結果の受信が成功していないと判定した場合（ステップＳ６１７；Ｎｏ）、ネットワークＮ１またはＮ２全体の障害であると判断し、ログを出力する等のエラー処理を実行し（ステップＳ６１８）、障害判定処理を中断させる。この場合、管理者にその旨を通報し、原因を調査させることとしてもよい。
【００４６】
障害判断部２０３は、双方のノードにおいて正常に実行結果の受信が成功したと判定した場合（ステップＳ６１７；Ｙｅｓ）、ネットワークＮ１またはＮ２における通信障害はないと判断し、さらにマスタノード２００およびスレーブノード３００の各ノードで取得されるログ情報の内容を読み取り、いずれのノードで障害が発生しているかを判定し、その原因を判別する（ステップＳ６１９）。
【００４７】
例えば、障害判断部２０３は、通信部２０１がスレーブノード３００やノード１００との間で通信した際のログ情報を読み取り、エラーが記録されているか否かを判別する。ログ情報として記録される内容およびエラーとして記録される内容（エラー名称、コードナンバー等）は、あらかじめログ出力設定情報として定められている。
【００４８】
図７は、ログ出力設定情報の例を示す図である。図７に示すように、ログ出力設定情報は、エラーコードを識別するためのコードナンバーと、そのエラーコードの名称と、そのエラーコードによってエラーとされる基準値とが対応付けられている。図７に示す例では、コードナンバー「１」のエラーは、スレーブノード３００から正常にフレームを受信した回数が、１分間あたり１０回以下である場合にはエラーとする設定であり、コードナンバー「２」のエラーは、スレーブノード３００から正常にフレームを受信できなかった回数が、１分間あたり１回以上である場合にはエラーとする設定等であることを示している。なお、このログ出力設定情報は、例えば、記憶部２０４にあらかじめ記憶されている。
【００４９】
このように、障害判断部２０３は、ログ情報に記録されているエラーを参照し、マスタノード２００に障害が発生しているか否かを判定し、そのエラー名称あるいはコードナンバーによって、その原因を判別する。スレーブノード３００もこれと同様に、ログ情報に記録されているエラーを参照し、自ノードであるスレーブノード３００に障害が発生しているか否かを判定し、そのエラー名称あるいはコードナンバーによって、その原因を判別する。したがって、アクセス処理の実行結果による障害の判別が出来ない場合でも、障害の切り分けが可能となる。なお、その判別結果は、マスタノード２００およびスレーブノード３００との間で送受信され、互いに情報が共有される。
【００５０】
なお、本実施例では、上述のようにエラーコードを参照して障害の原因を判別しているが、マスタノード２００およびスレーブノード３００は互いに同期をとっており、正常な状態であれば同じ内容のログ情報が出力されるため、所定の時間（例えば、１分間）におけるログ情報の出力量に違いがあるか否かを判定することによって、マスタノード２００かスレーブノード３００かのどちらに障害が発生しているかを判断することも可能である。これにより、具体的な障害の原因まで特定する必要がない場合において、速やかに障害が発生しているノードの特定が可能となる。
【００５１】
そして、障害判断部２０３は、自ノードであるマスタノード２００が出力したログ情報と、他ノードであるスレーブノード３００から受信したログ情報とを比較し、マスタノード２００にのみエラーが記録され、異常となっているか否かを判定し（ステップＳ６２０）、マスタノード２００にのみエラーが記録され、異常となっていると判定した場合（ステップＳ６２０；Ｙｅｓ）、そのエラーが原因でマスタノード２００の異常が生じていると判断し、ログを出力する等のエラー処理を実行し、マスタノード２００を停止させ（ステップＳ６２１）、障害判定処理を終了させる。
【００５２】
一方、障害判断部２０３は、マスタノード２００にエラーが記録されておらず、異常となっていないと判定した場合（ステップＳ６２０；Ｎｏ）、さらにスレーブノード３００にのみエラーが記録され、異常となっているか否かを判定し（ステップＳ６２２）、スレーブノード３００にのみエラーが記録され、異常となっていると判定した場合（ステップＳ６２２；Ｙｅｓ）、そのエラーが原因でスレーブノード３００の異常が生じていると判断し、ログを出力する等のエラー処理を実行し、スレーブノード３００を停止させ（ステップＳ６２３）、障害判定処理を終了させる。
【００５３】
そして、障害判断部２０３は、マスタノード２００にエラーが記録されておらず、異常となっていない場合であって、かつスレーブノード３００にもエラーが記録されておらず、異常となっていないと判定した場合（ステップＳ６２２；Ｎｏ）、ステップＳ６１８の場合と同様に、ネットワークＮ１またはＮ２全体の障害であると判断し、ログを出力する等のエラー処理を実行し（ステップＳ６２４）、障害判定処理を終了させる。この場合、管理者にその旨を通報し、原因を調査させることとしてもよい。このステップＳ６２４の処理が終了すると、図６Ａ、６Ｂに示した障害判定処理の全ての処理が終了する。
【００５４】
そして、ステップＳ６０５、Ｓ６１４、Ｓ６２１の各処理を行った場合には、マスタノード２００に異常があるため、スレーブノード３００側でマスタノード２００と同じＩＰアドレスを引き継ぐ等の切替処理を行って、系がスレーブノード３００側に切り替えられることとなる。
【００５５】
一方、ステップＳ６１６、Ｓ６２３の各処理を行った場合には、スレーブノード３００に異常があり、ステップＳ６０９、Ｓ６１８、Ｓ６２４の各処理を行った場合には、マスタノード２００およびスレーブノード３００以外のネットワークで異常があるため、障害判定処理を中断させたり、ログを出力する等のエラー処理を実行して障害判定処理を終了させ、その後、管理者等によって障害の対応が行われることとなる。
【００５６】
このように、マスタノード２００と、マスタノード２００にネットワークＮ３を介して接続されたスレーブノード３００と、マスタノード２００とスレーブノード３００と間で通信する他のノード１００と、がネットワークＮ１またはＮ２で接続された二重化ネットワーク制御システムにおいて、マスタノード２００およびスレーブノード３００が、互いにネットワークＮ１またはＮ２を介してアクセスが可能であることを確認する監視部２０２と、監視部２０２による監視の結果、相手ノードからアクセスに対する応答を受信したか否かを判定し、相手ノードからアクセスに対する応答を受信していないと判定した場合、ネットワークＮ１またはＮ２を介して他のノード１００に対してアクセスをしてその実行結果を互いにネットワークＮ３を介して送受信し、送受信した実行結果を比較することによりマスタノード２００またはスレーブノード３００のいずれに障害があるかを判別する障害判断部と、を有し、他のノード１００が、マスタノード２００およびスレーブノード３００からアクセスを受けた場合にアクセスに対する実行結果を送信する障害時処理部１０２を有しているので、二重化されたネットワークにおいて、どちらの系で障害が発生したのかを容易に判断することが可能となる。また、従来技術のように、二重化されたネットワークの各系に接続された各装置の通信状態を把握する必要がなくなるため、簡易な構成で障害判断の切り分けができる。
【００５７】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【００５８】
１０００      二重化ネットワーク制御システム
１００        ノード
１０１        通信部
１０２        障害時処理部
１０３        制御部
２００        マスタノード
２０１        通信部
２０２        監視部
２０３        障害判断部
２０４        記憶部
２０５        制御部
３００        スレーブノード
Ｎ１〜Ｎ３    ネットワーク
【図１】
2014072631.tif 000003
【図２】
2014072631.tif 000004
【図３】
2014072631.tif 000005
【図４】
2014072631.tif 000006
【図５】
2014072631.tif 000007
【図６Ａ】
2014072631.tif 000008
【図６Ｂ】
2014072631.tif 000009
【図７】
2014072631.tif 000010