(57)【特許請求の範囲】
【請求項１】
マスター状態の１つの制御装置と、スレーブ状態の１つ以上の制御装置と、を備えるマスター／スレーブシステムであって、
前記マスター状態の制御装置は、
前記スレーブ状態の制御装置の１つ以上からマスター交代要求を受信すると、マスター交代要求を送信した制御装置のいずれかを所定の基準により新たなマスター装置として決定するマスター決定手段と、
少なくとも１つのスレーブ状態の制御装置が存在しなくなった場合に自制御装置の状態をマスター状態から特殊なスレーブ状態に遷移させる遷移手段と、を備え、
前記スレーブ状態の制御装置は、
他の全ての制御装置から、各制御装置自身の状態がマスター状態かスレーブ状態かを示す状態情報、各制御装置自身が所定のマスター条件を満たしてマスター可能状態であるか当該マスター条件を満たさずマスター不可状態であるかを示すマスター適否情報、および、各制御装置自身が他のどの制御装置と通信可能であるかを示す通信可否情報を含む、各制御装置自身に関する情報を取得する情報取得手段と、
他の全ての制御装置から取得した状態情報に基づいて、マスター状態の制御装置が１つ存在すると判定した場合に、
前記マスター状態の制御装置から取得したマスター適否情報がマスター不可状態であるならば、自身の前記マスター適否情報が前記マスター可能状態であるか否かに基づき、自制御装置が新たなマスター候補であるか否かを判定し、新たなマスター候補であるときは前記マスター状態の制御装置にマスター交代要求を送信し、
他の全ての制御装置から取得した状態情報に基づいて、マスター状態の制御装置が存在しないと判定した場合に、
他の全ての制御装置から取得した通信可否情報に基づいて、特殊なスレーブ装置以外の全ての制御装置と相互通信できない制御装置があると判定したときは、マスター候補を、特殊なスレーブ装置と相互通信可能なスレーブ装置と決定し、
特殊なスレーブ装置以外の全ての制御装置と相互通信できない制御装置がないと判定したときは、マスター候補を、特殊なスレーブ装置以外の全ての制御装置と決定し、
自制御装置が保持する全ての制御装置の重みを示す重み情報に基づいて、マスター候補のうち自制御装置の重みが最大であるか否かを判定し、最大である場合、自制御装置が新たなマスター装置となるべきであると決定し、他の制御装置にマスター昇格通知を送信する判定手段と、
マスター昇格通知の送信時にスレーブ状態からマスター状態に遷移させる遷移手段と、
を備え、
前記特殊なスレーブ状態の制御装置は、
前記マスター昇格通知を受信すると、特殊なスレーブ状態からスレーブ状態に遷移させる遷移手段を備える
ことを特徴とするマスター／スレーブシステム。
【請求項２】
請求項１に記載のマスター／スレーブシステムにおける制御装置。
【請求項３】
マスター状態の１つの制御装置と、スレーブ状態の１つ以上の制御装置と、を備えるマスター／スレーブシステムのマスター／スレーブ切替方法であって、
前記マスター状態の制御装置は、
前記スレーブ状態の制御装置の１つ以上からマスター交代要求を受信すると、マスター交代要求を送信した制御装置のいずれかを所定の基準により新たなマスター装置として決定し、
少なくとも１つのスレーブ状態の制御装置が存在しなくなった場合に自制御装置の状態をマスター状態から特殊なスレーブ状態に遷移させ、
前記スレーブ状態の制御装置は、
他の全ての制御装置から、各制御装置自身の状態がマスター状態かスレーブ状態かを示す状態情報、各制御装置自身が所定のマスター条件を満たしてマスター可能状態であるか当該マスター条件を満たさずマスター不可状態であるかを示すマスター適否情報、および、各制御装置自身が他のどの制御装置と通信可能であるかを示す通信可否情報を含む、各制御装置自身に関する情報を取得し、
他の全ての制御装置から取得した状態情報に基づいて、マスター状態の制御装置が１つ存在すると判定した場合に、
前記マスター状態の制御装置から取得したマスター適否情報がマスター不可状態であるならば、自身の前記マスター適否情報が前記マスター可能状態であるか否かに基づき、自制御装置が新たなマスター候補であるか否かを判定し、新たなマスター候補であるときは前記マスター状態の制御装置にマスター交代要求を送信し、
他の全ての制御装置から取得した状態情報に基づいて、マスター状態の制御装置が存在しないと判定した場合に、
他の全ての制御装置から取得した通信可否情報に基づいて、特殊なスレーブ装置以外の全ての制御装置と相互通信できない制御装置があると判定したときは、マスター候補を、特殊なスレーブ装置と相互通信可能なスレーブ装置と決定し、
特殊なスレーブ装置以外の全ての制御装置と相互通信できない制御装置がないと判定したときは、マスター候補を、特殊なスレーブ装置以外の全ての制御装置と決定し、
自制御装置が保持する全ての制御装置の重みを示す重み情報に基づいて、マスター候補のうち自制御装置の重みが最大であるか否かを判定し、最大である場合、自制御装置が新たなマスター装置となるべきであると決定し、他の制御装置にマスター昇格通知を送信し、
マスター昇格通知の送信時にスレーブ状態からマスター状態に遷移させ、
前記特殊なスレーブ状態の制御装置は、
前記マスター昇格通知を受信すると、特殊なスレーブ状態からスレーブ状態に遷移させる
ことを特徴とするマスター／スレーブ切替方法。
【請求項４】
請求項３に記載のマスター／スレーブ切替方法を、前記マスター状態または前記スレーブ状態をとる制御装置としてのコンピュータに実行させるためのマスター／スレーブ切替プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスター状態の１つの制御装置（以下、「マスター装置」とも称する。）と、スレーブ状態の１つ以上の制御装置（以下、「スレーブ装置」とも称する。）とを備えるマスター／スレーブ構成のシステムにおいて、マスター状態の制御装置とスレーブ状態の制御装置とを切替える技術に関する。
【背景技術】
【０００２】
１つのマスター装置と、１つ以上のスレーブ装置と、を備えるマスター／スレーブ構成のシステムがある。スレーブ装置は、例えば、マスター装置が有するデータベースのコピーを保有し、運用する。
【０００３】
このようなシステムにおいては、マスター装置が故障した場合、いずれかのスレーブ装置を新たなマスター装置へと役割変更し、その他のスレーブ装置は新しいマスター装置に追随して動作する。特許文献１には、マスター装置に障害が発生した場合の可用性の確率を高めるシステムが記載されている。
【０００４】
しかし、特許文献１では、マスター装置がスレーブ装置から見て障害であると判断できなければマスター装置とスレーブ装置の切替えが行われない。例えば、マスター装置が二重化構成の場合に片系が故障していても、スレーブ装置はマスター装置の故障とは認識せず、マスター装置の両系が故障となってから、マスター装置の切替えが行われることになる。
【０００５】
また、マスター装置が故障ではないがスレーブ装置と接続するネットワーク（システム）から一時的に分離した後に復活して、マスター装置が複数存在するようになってしまった場合や、マスター装置が断続的に不具合になる等の性能低下を起こしていてマスター装置とスレーブ装置の切替えを行うべき場合などにおいても、スレーブ装置が必ずしもマスター装置を障害と判断できない場合があり、一貫性、信頼性の面で問題がある。
【０００６】
そこで、特許文献２の技術では、この問題を解決する手段を講じている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２７７４６７号公報
【特許文献２】特開２０１３−２５７６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献２の技術では、例えば、マスター装置が二重化構成の場合に片系が故障した場合にはマスター装置とスレーブ装置の切替えを行うことで信頼性を向上させているが、マスター装置が予兆なく故障した場合（両系同時故障など）や、マスター装置がネットワークから分離した場合に、マスター装置をシステム自律で決定できない問題がある。
【０００９】
そこで、本発明は、上記事情に鑑みてなされたものであり、マスター／スレーブ構成のシステムにおいて、従来技術以上の一貫性、信頼性を保ちつつ、マスター装置とスレーブ装置の切替えを適切に行えるケースをさらに増やすことを課題とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明は、マスター状態の１つの制御装置と、スレーブ状態の１つ以上の制御装置と、を備えるマスター／スレーブシステムであって、前記マスター状態の制御装置は、前記スレーブ状態の制御装置の１つ以上からマスター交代要求を受信すると、マスター交代要求を送信した制御装置のいずれかを所定の基準により新たなマスター装置として決定するマスター決定手段と、少なくとも１つのスレーブ状態の制御装置が存在しなくなった場合に自制御装置の状態をマスター状態から特殊なスレーブ状態に遷移させる遷移手段と、を備え、前記スレーブ状態の制御装置は、他の全ての制御装置から、各制御装置自身の状態がマスター状態かスレーブ状態かを示す状態情報、各制御装置自身が所定のマスター条件を満たしてマスター可能状態であるか当該マスター条件を満たさずマスター不可状態であるかを示すマスター適否情報、および、各制御装置自身が他のどの制御装置と通信可能であるかを示す通信可否情報を含む、各制御装置自身に関する情報を取得する情報取得手段と、他の全ての制御装置から取得した状態情報に基づいて、マスター状態の制御装置が１つ存在すると判定した場合に、前記マスター状態の制御装置から取得したマスター適否情報がマスター不可状態であるならば、自身の前記マスター適否情報が前記マスター可能状態であるか否かに基づき、自制御装置が新たなマスター候補であるか否かを判定し、新たなマスター候補であるときは前記マスター状態の制御装置にマスター交代要求を送信し、他の全ての制御装置から取得した状態情報に基づいて、マスター状態の制御装置が存在しないと判定した場合に、他の全ての制御装置から取得した通信可否情報に基づいて、特殊なスレーブ装置以外の全ての制御装置と相互通信できない制御装置があると判定したときは、マスター候補を、特殊なスレーブ装置と相互通信可能なスレーブ装置と決定し、特殊なスレーブ装置以外の全ての制御装置と相互通信できない制御装置がないと判定したときは、マスター候補を、特殊なスレーブ装置以外の全ての制御装置と決定し、自制御装置が保持する全ての制御装置の重みを示す重み情報に基づいて、マスター候補のうち自制御装置の重みが最大であるか否かを判定し、最大である場合、自制御装置が新たなマスター装置となるべきであると決定し、他の制御装置にマスター昇格通知を送信する判定手段と、マスター昇格通知の送信時にスレーブ状態からマスター状態に遷移させる遷移手段と、を備え、前記特殊なスレーブ状態の制御装置は、前記マスター昇格通知を受信すると、特殊なスレーブ状態からスレーブ状態に遷移させる遷移手段を備えることを特徴とする。
【００１１】
このようにして、いずれかの制御装置が故障や離脱などによりシステムに存在しなくなった場合でも、マスター状態の制御装置を特殊なスレーブ状態に遷移させた後に、残りの制御装置のいずれかを新たなマスター状態とすることで、従来技術以上の一貫性、信頼性を保ちつつ、マスター装置とスレーブ装置の切替えを適切に行えるケースを増やすことができる。
また、より具体的に、状態情報とマスター適否情報を用いてマスター候補を判定することができる。
【００１４】
また、本発明は、マスター／スレーブ切替方法を、マスター状態またはスレーブ状態をとる制御装置としてのコンピュータに実行させるためのマスター／スレーブ切替プログラムとしても実現することができる。
【発明の効果】
【００１５】
本発明によれば、マスター／スレーブ構成のシステムにおいて、従来技術以上の一貫性、信頼性を保ちつつ、マスター装置とスレーブ装置の切替えを適切に行えるケースを増やすことができる。
【図面の簡単な説明】
【００１６】
【図１】本発明の実施形態に係るマスター／スレーブシステムの全体構成図である。
【図２】制御装置の構成を示すブロック図である。
【図３】制御装置の問合せ処理を説明する図である。
【図４】各制御装置の重みの一例を示す図である。
【図５】現マスター装置がマスター条件を満たしていない場合の処理を示す図である。
【図６】マスター交代要求に対する応答を示す図である。
【図７】スレーブ状態の制御装置の処理を示すフローチャートである。
【図８】スレーブ状態の制御装置の処理を示すフローチャートである。
【図９】マスター装置とスレーブ装置とを切替える例を示す図である。（ａ）は、マスター装置不在時、かつ、スレーブ装置’が存在する場合を示す。（ｂ）は、マスター装置不在時、かつ、スレーブ装置’のみ不在の場合を示す。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態について、図面を参照して説明する。まず、図９を参照して本実施形態の概要について説明し、その後、図１〜図７を参照して本実施形態の詳細について説明する。なお、各図では、マスター装置、スレーブ装置を、それぞれ、「マスター」、「スレーブ」と表記している。
【００１８】
図９を参照して、本実施形態の概要について説明する。図９の（ａ）（ｂ）は、マスター装置とスレーブ装置とを切替える例を示す図である。ここで、前提条件として、システム離脱指示を受けたマスター装置以外の装置（スレーブ装置と、後記するスレーブ装置’（特殊なスレーブ装置））は、すぐにシステムから離脱するものとする。また、マスター装置は、スレーブ装置が１台でもいなくなった場合、スレーブ装置’に遷移するものとする（マスター装置不在状態となる）。また、スレーブ装置’は、新マスター装置の決定後、スレーブ装置に遷移するものとする。
【００１９】
図９（ａ）に示すように、まず、（ａ１）は、マスター装置（Ｍ）が１台（符号１０１）で、スレーブ装置（Ｓ）が３台（符号１０２〜１０４）の状態である。
そこで、符号１０３のスレーブ装置が故障した場合、それを検知した符号１０１のマスター装置はスレーブ装置’に遷移する（ａ２）。このとき、マスター装置が不在で、かつ、スレーブ装置’が存在する、という状態になるので、スレーブ装置’およびスレーブ装置’と相互通信可能な全てのメンバ（スレーブ装置）で合意形成を行い、スレーブ装置’以外から新マスター装置を決定する。
【００２０】
符号１０４のスレーブ装置を新マスター装置にすると決定した場合、（ａ３）に示すように、符号１０４のスレーブ装置は、マスター装置に遷移し、符号１０１のスレーブ装置’と符号１０２のスレーブ装置にマスター昇格通知を行う。また、符号１０１のスレーブ装置’、符号１０２のスレーブ装置、および、符号１０４のマスター装置は、それぞれ、符号１０３のスレーブ装置に対して、システム離脱指示を送り（Ｎｏｎｅ化）、システムを再構築する。（ａ４）に示すように、再構築されたシステムでは、マスター装置が１台（符号１０４）で、スレーブ装置が２台（符号１０１、１０２）の正しい構成となっている。なお、故障が検知された符号１０３のスレーブ装置は、その直後に自動的に復旧する場合もあるが、動作が不安定として、とりあえずシステムから離脱させるのが好ましいので、このような扱いとしている（図９（ｂ）の場合も同様）。
【００２１】
次に、図９（ｂ）に示すように、まず、（ｂ１）は、（ａ１）と同様、マスター装置（Ｍ）が１台（符号１０１）で、スレーブ装置が３台（符号１０２〜１０４）の状態である。
そこで、符号１０１のマスター装置が故障したか、あるいは、システムから分離した場合、（ｂ２）に示すように、マスター装置はスレーブ装置’に遷移するが、残りのスレーブ装置（符号１０２〜１０４）から見ると、その時点ではスレーブ装置’を認識しないため、マスター装置が不在で、かつ、スレーブ装置’のみ不在、という状態になるので、残りのスレーブ装置（符号１０２〜１０４）で合意形成を行い、スレーブ装置’以外から新マスター装置を決定する。
【００２２】
符号１０３のスレーブ装置を新マスター装置にすると決定した場合、（ｂ３）に示すように、符号１０３のスレーブ装置は、マスター装置に遷移し、符号１０２、１０４のスレーブ装置にマスター昇格通知を行う。また、符号１０３のマスター装置、符号１０２、１０４のスレーブ装置は、それぞれ、符号１０１のスレーブ装置’に対して、システム離脱指示を送り（Ｎｏｎｅ化）、システムを再構築する。（ｂ４）に示すように、再構築されたシステムでは、マスター装置が１台（符号１０３）で、スレーブ装置が２台（符号１０２、１０４）の正しい構成となっている。
【００２３】
このようにして、マスター／スレーブ構成のシステムにおいて、従来技術以上の一貫性、信頼性を保ちつつ、マスター装置とスレーブ装置の切替えを適切に行えるケースを増やすことができる。
【００２４】
なお、上記アルゴリズムによれば、スレーブ装置’が分離（故障）して孤立し、かつ、残りのスレーブ装置のうち１台以上も分離（故障）して、システムが３つ以上に分割された状態になった場合には対応できず、その場合には、保守者によって対応することになるが、そのような場面の発生確率は低いので、本発明の有効性に大きな影響はない。
【００２５】
また、前提条件として、マスター装置は、スレーブ装置が１台でもいなくなった場合、スレーブ装置’に遷移するものとしたが、これは、マスター装置とスレーブ装置が１台ずつしかない場合を考慮してのアルゴリズムである。これによって、例えば、マスター装置がシステムから分離した直後に復旧した場合に、マスター装置が２台になってしまう事態を回避できる。したがって、このようなアルゴリズムであれば、マスター装置が１台で、スレーブ装置が１台の場合でも２台以上の場合でも、共通に適用可能である。
【００２６】
次に、図１〜図７を参照して、本実施形態の詳細について説明する。図１は、本実施形態に係るマスター／スレーブシステムの全体構成図である。本実施形態のシステムは、マスター状態の１つの制御装置１０Ａと、スレーブ状態の１つ以上の制御装置１０Ｂと、を備えるマスター／スレーブ構成のシステムである。
【００２７】
本実施形態の全ての制御装置１０（１０Ａ、１０Ｂ）（以下、符号を省略して単に「制御装置」と記載する場合がある。）は、ネットワーク９を介して相互に通信可能であり、マスター状態の制御装置１０Ａのデータベース２０と、スレーブ状態の制御装置１０Ｂのデータベース２０とを同期させるための情報を送受信する。
【００２８】
マスター状態の制御装置１０Ａとスレーブ状態の制御装置１０Ｂとが同じデータを保有することにより、図示しない端末や他装置は、近い位置に配置された制御装置１０にアクセスすることが可能となり、制御装置１０の負荷の分散、制御装置１０との通信時間の短縮、制御装置１０の可用性（信頼性）の向上などが可能となる。
【００２９】
なお、マスター状態またはスレーブ状態の各制御装置１０は、信頼性を高めるため、個々に二重化構成（現用系、待機系）であってもよい。
【００３０】
図２は、制御装置１０（１０Ａ、１０Ｂ）の構成を示すブロック図である。制御装置１０は、情報取得部１１と、判定部１２と、マスター決定部１３と、監視部１４と、情報送信部１５と、記憶部１６と、マスター条件記憶部１７と、重み情報記憶部１８と、を備える。
【００３１】
情報取得部１１は、ネットワーク９（図１参照）を介して他の全ての制御装置１０に問合せ要求を送信し、各制御装置１０自身に関する情報（詳細は後記）を取得する。また、情報取得部１１は、新たにマスター装置になった制御装置１０からマスター昇格通知を受信する。
【００３２】
判定部１２は、他の全ての制御装置１０から取得した情報に基づいてマスター候補（マスター装置の候補）を抽出したり、自制御装置が新たなマスター候補であるか否かを判定したりする。判定部１２は、自身の制御装置１０（以下、「自制御装置」とも称する。）が新たなマスター候補であれば、システムを構成する他の全ての制御装置１０にマスター昇格通知を送信する。
【００３３】
マスター決定部１３は、自制御装置がマスター装置の場合に動作し、スレーブ状態の複数の制御装置１０からマスター交代要求を受信すると、マスター交代要求を送信したいずれかの制御装置１０を所定の基準により新たなマスター装置として決定し（決定方法は後記）、その決定したスレーブ状態の制御装置１０にＯＫ（承諾）を通知し、他のスレーブ状態の制御装置１０にＮＧ（否定）を通知する。
【００３４】
監視部１４は、自制御装置の状態を監視し、記憶部１６に記憶する。本実施形態では、「状態情報」、「通信可否情報」および「マスター適否情報」が、自制御装置の情報として記憶部１６に記憶される（各情報の詳細は後記）。
【００３５】
情報送信部１５は、他の制御装置１０から問合せ要求を受信すると、記憶部１６に記憶された情報を要求元の制御装置１０に送信する。
【００３６】
マスター条件記憶部１７および重み情報記憶部１８については、後記する。データベース２０は、前記のとおり、マスター状態の制御装置１０のデータベース２０と同期したデータが記憶される。
【００３７】
上記説明した制御装置１０は、例えば、ＣＰＵ（Central Processing Unit）と、メモリと、ＨＤＤ（Hard Disk Drive）等の外部記憶装置と、入力装置と、出力装置とを備えた汎用的なコンピュータシステムによって実現できる。このコンピュータシステムにおいて、ＣＰＵがメモリ上にロードされた制御装置用のプログラムを実行することにより、制御装置１０の各機能が実現される。また、制御装置用のプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc - Read Only Memory）、ＭＯ（Magneto-Optical disk）、ＤＶＤ（Digital Versatile Disk）−ＲＯＭなどのコンピュータ読取り可能な記録媒体に記憶することも、ネットワークを介して配信することもできる。
【００３８】
次に、上記説明した本実施形態の動作について説明する。図３から図６は、制御装置１０の動作を説明するための説明図である。図３から図６では、最初に着目するスレーブ状態の制御装置１０を「制御装置０」（自制御装置）と表記し、他の制御装置（他制御装置）を「制御装置１」〜「制御装置ｎ」と表記している。なお、理解しやすいように、図３から図６を用いて（図２も合わせて参照して）各ケースでの制御装置の処理内容を説明した後、図７、図８を用いてスレーブ装置の処理の全体について説明する。
【００３９】
まず、スレーブ状態の制御装置０の動作について説明する。図３では、スレーブ状態の制御装置０（自制御装置）の情報取得部１１が、他の全ての制御装置１〜ｎに対して、問合せ要求を送信し、他の全ての制御装置１〜ｎから各制御装置自身に関する情報として、後記する３つの情報（情報１〜３）を取得する。問い合わせ要求を受信した各制御装置１〜ｎの情報送信部１５は、記憶部１６に記憶された情報を読み出し、その読み出した情報を要求元の制御装置０に送信する。記憶部１６には、監視部１４が監視している、自制御装置の現時点の状態を示す情報（情報１〜３）が記憶されている。
【００４０】
「状態情報（情報１）」：問合せ要求を受信した制御装置自身の状態を示す情報であって、マスター状態であるかスレーブ状態であるかを示す情報である。例えば、本実施形態では、状態情報として、「マスター状態」、「スレーブ状態」、「マスター状態に切替中の状態」、「特殊なスレーブ状態」の４つの状態を用いるものとするが、これに限定されるものではない。例えば、状態情報に、さらに「不定状態（制御装置の立上げ時、システム離脱時など）」を加えてもよい。
【００４１】
「通信可否情報（情報２）」：問合せ要求を受信した制御装置が、他のどの制御装置と通信可能であるか否かを表す情報である。監視部１４は、他の全ての制御装置との接続状態をそれぞれ監視し、通信できない状態の制御装置を検知すると、記憶部１６の当該制御装置の通信可否情報を「通信不可状態」に設定・更新する。なお、通信が可能な制御装置の場合には、記憶部１６の当該制御装置の通信可否情報には「通信可能状態」が設定されている。
【００４２】
「マスター適否情報（情報３）」：問合せ要求を受信した制御装置がマスター条件記憶部１７にあらかじめ記憶されたマスター条件を満たしているか否かを表す情報である。監視部１４は、自制御装置を監視し、マスター条件を満たしていないことを検知すると、記憶部１６のマスター適否情報を「マスター不可状態」に設定・更新する。なお、マスター条件を満たしている場合には、記憶部１６のマスター適否情報には「マスター可能状態」が設定されている。
【００４３】
マスター条件記憶部１７に記憶されるマスター条件は、マスター装置となるべき所定の条件（マスター装置として適した（必要な）状態であること）であって、例えば、制御装置１０が二重化構成（現用系、待機系）の場合に両方の系の動作が正常（良好）であること、制御装置１０が断続的に不具合などにより性能が低下していないこと、などが考えられる。
【００４４】
なお、図３などに示すように、制御装置０による、他の全ての制御装置１〜ｎに対して問合せを行って各制御装置から情報を取得する問合せ処理、および、以下に説明する判定処理は、制御装置０だけでなく、スレーブ装置の状態にある他の全ての制御装置（制御装置１〜ｎのうちマスター装置以外）も実施する。
【００４５】
そして、スレーブ状態の制御装置０の判定部１２は、他の全ての制御装置１〜ｎから取得した情報と記憶部１６の情報とを用いて以下の判定を行う。
【００４６】
図３に示すように、まず、制御装置０は、各制御装置１〜ｎから取得した「状態情報（情報１）」を用いて、他の全ての制御装置１〜ｎが「マスター状態」と「マスター状態に切替中の状態」のいずれでもないか否かを判断する。
【００４７】
他の全ての制御装置１〜ｎが「マスター状態」と「マスター状態に切替中の状態」のいずれでもない場合、制御装置０は、各制御装置１〜ｎから取得した「通信可否情報（情報２）」を用いて、他の全ての制御装置と相互通信できない（相互通信できない相手制御装置が１つでもある）制御装置があるか否かを判定する。
【００４８】
他の全ての制御装置と相互通信できない制御装置がある場合、制御装置０は、各制御装置１〜ｎのうち特殊なスレーブ状態の制御装置（直近までマスター装置だった制御装置）以外の全ての制御装置と相互通信できない（相互通信できない相手制御装置が１つでもある）制御装置があるか否かを判定する。
【００４９】
特殊なスレーブ状態の制御装置以外の全ての制御装置と相互通信できない制御装置がない場合、制御装置０は、特殊なスレーブ状態の制御装置以外の全ての各制御装置の重み（優先度）に基づいて、新たなマスター装置を決定する。
【００５０】
また、特殊なスレーブ状態の制御装置以外の全ての制御装置と相互通信できない制御装置がある場合、制御装置０は、各制御装置１〜ｎのうち特殊なスレーブ状態の制御装置と相互通信可能な制御装置のうち、特殊なスレーブ状態の制御装置を除く各制御装置の重み（優先度）に基づいて、新たなマスター装置を決定する。
【００５１】
図４は、各制御装置の重みの一例を示す。図４では、重みが最も大きい（優先度が高い）のは制御装置ｋであり、制御装置ｋが新たなマスター装置となる。制御装置０は、自己を含めた全ての制御装置の中で自己の重みが最大か否かを判定し、図４の例では自己の重み「２」が最大ではないため、自己は新たなマスター装置ではないと判定する。
【００５２】
各制御装置の重みについては、重み情報記憶部１８に全ての制御装置の重みをあらかじめ保持しておくことが考えられる。または、重み情報記憶部１８には、自己の制御装置の重みのみを格納しておき、問合せ要求に対する応答として相手の制御装置の重み情報（情報４）を受信することとしてもよい。
【００５３】
なお、スレーブ状態の全ての制御装置において、同じ情報が取得されるため、各制御装置が自律的に判定しても同じ結果となり制御装置間で矛盾しない。また、「状態情報（情報１）」が「不定状態」の制御装置については、新たなマスター装置の対象外としてもよい。
【００５４】
また、制御装置０は、各制御装置１〜ｎから取得した「状態情報（情報１）」に基づいて、マスター状態またはマスター状態に切替中の他の制御装置が１つ存在すると判定した場合、マスター状態またはマスター状態に切替中の他の制御装置から取得した「マスター適否情報（情報３）」がマスター装置となる条件を満たしているか否かを判定する。すなわち、「マスター適否情報（情報３）」が、「マスター可能状態」か、あるいは「マスター不可状態」かを判定する。
【００５５】
マスター装置となる条件を満たしている場合（「マスター可能状態」の場合）、マスター状態またはマスター状態に切替中の他の制御装置を、そのままマスター装置と判定する。なお、スレーブ状態の全ての制御装置において、同じ情報が取得されるため、各制御装置が自律的に判定しても同じ結果となり制御装置間で矛盾しない。
【００５６】
一方、図５に示すように、制御装置１がマスター状態であるものとして、制御装置０は、そのマスター状態の制御装置１から、「マスター適否情報（情報３）」として「マスター不可状態」を受信した場合、自制御装置がマスター条件を満たしている（記憶部１６のマスター適否情報が「マスター可能状態」になっている）ときは、マスター状態の制御装置１に対してマスター交代要求を送る。
【００５７】
同様に、制御装置０のほかにも、マスター状態の制御装置１以外の制御装置は、自制御装置がマスター条件を満たしているときは、マスター状態の制御装置１に対してマスター交代要求を送る。
【００５８】
ここで、マスター状態にある制御装置の動作について説明する。図６に示すように、マスター状態の制御装置１は、複数の制御装置からのマスター交代要求に対して、マスター決定部１３が１つの制御装置をマスター装置に選定し（ここでは制御装置ｎを選定）、選定した制御装置ｎにＯＫ（承諾）を応答し、それ以外の制御装置にＮＧ（否定）を応答する。マスター装置の選定方法としては、例えば、最も早くマスター交代要求を届けた（送信した）制御装置を新たなマスター装置とするなどの方法がある。
【００５９】
また、マスター状態の制御装置は、監視部１４が自身の故障等を検知し、早急な切替を必要とする場合、マスター決定部１３が、いずれかのスレーブ状態の制御装置を選定し、選定した制御装置にマスター装置を交代する指示を行う。例えば、マスター決定部１３は、最も重みの大きい制御装置を選定し、選定した制御装置に新たなマスター装置として切替わるよう指示を送信する。
【００６０】
一方で、マスター状態の制御装置の情報取得部１１が、ネットワーク９を介して他の全ての制御装置に問合せ要求を送信し、各制御装置自身に関する情報を取得した際に、１つ以上のスレーブ状態の制御装置から応答がなかった場合（予期せぬ異常な信号を受信した場合も含む）、マスター状態の制御装置は、判定部１２によって特殊なスレーブ状態へと遷移する。
【００６１】
特殊なスレーブ状態にある制御装置は、スレーブ状態の制御装置と同じ動作を行うが、記憶部１６のマスター適否情報は「マスター不可状態」に設定される。また、特殊なスレーブ状態にある制御装置が情報取得部１１で他の制御装置からマスター昇格通知を受信した場合、判定部１２は、記憶部１６の状態情報を「スレーブ状態」に遷移させるとともに、記憶部１６のマスター適否情報を「マスター可能状態」に更新する。
【００６２】
次に、スレーブ状態の制御装置の処理について、図７を参照して説明する。図７は、スレーブ状態の制御装置の処理を示すフローチャートである。なお、この図７の処理は、スレーブ状態にある各制御装置が行う処理であって、スレーブ状態の各制御装置が自律的に実施するものである。また、スレーブ状態にある各制御装置は、所定のタイミング（所定の時間間隔）で、この図７のフローチャートの処理を繰り返し行うものとする。
【００６３】
スレーブ状態の制御装置の情報取得部１１は、全ての他制御装置に問合せ要求を送信して、各制御装置自身に関する情報を取得し（Ｓ１）、Ｓ２に進む。取得する情報には、前記した「状態情報（情報１）」、「通信可否情報（情報２）」、「マスター適否情報（情報３）」が含まれる。
【００６４】
Ｓ２において、判定部１２は、「状態情報（情報１）」に基づいて、他の全ての制御装置の中にマスター状態またはマスター状態に切替中の制御装置が１つだけあるか否かを判定し、Ｙｅｓの場合はＳ３に進み、Ｎｏ（１）の場合（マスター状態またはマスター状態に切替中の制御装置が１つも存在しない場合）はＳ７に進み、Ｎｏ（２）の場合（マスター状態またはマスター状態に切替中の制御装置が２つ以上の場合）はＳ１６に進む。
【００６５】
Ｓ３において、判定部１２は、マスター状態またはマスター状態に切替中の制御装置から取得した「マスター適否情報（情報３）」に基づいて、その制御装置がマスター条件を満たしているか否かを判定し、Ｙｅｓの場合は処理を終了し（マスター装置は不変）、Ｎｏの場合はＳ４に進む。
【００６６】
Ｓ４において、判定部１２は、記憶部１６のマスター適否情報を参照し、自制御装置がマスター条件を満たすか否かを判定し、Ｙｅｓの場合はＳ５に進み、Ｎｏの場合は処理を終了する。
【００６７】
Ｓ５において、判定部１２は、現時点でマスター状態またはマスター状態に切替中の他の制御装置に、マスター交代要求を送信し、Ｓ６に進む。ここで、現時点でマスター状態またはマスター状態に切替中の制御装置は、複数の制御装置からマスター交代要求を受信した場合、１つの制御装置を新たなマスター装置に選定し、新たなマスター装置に選定した制御装置にＯＫ（承諾）を、それ以外の制御装置にＮＧ（否定）を応答する。新たなマスター装置を選定する方法としては、例えばマスター装置に最も早く交代要求を送った制御装置を選定することが考えられる。
【００６８】
Ｓ６において、判定部１２は、Ｓ５でのマスター装置への交代要求の送信に対する応答がＯＫ（承諾）であったか否かを判定し、Ｙｅｓの場合はＳ１３に進み、Ｎｏの場合は他の制御装置が新たなマスター装置となるため処理を終了する。Ｓ１３、Ｓ１４の処理については、後記する。
【００６９】
Ｓ７において、判定部１２は、他の制御装置から取得した「通信可否情報（情報２）」と自制御装置の通信可否情報に基づいて、他の全て制御装置と相互通信できない（相互通信できない相手制御装置が１つでもある）制御装置があるか否かを判定し、Ｙｅｓの場合はＳ９に進み、Ｎｏの場合はＳ８に進む。
【００７０】
Ｓ８において、判定部１２は、マスター候補を全制御装置とし、Ｓ１２に進む。
Ｓ９において、判定部１２は、特殊なスレーブ装置以外の全ての制御装置と相互通信できない制御装置があるか否かを判定し、Ｙｅｓの場合（図９の（ａ）の場合）はＳ１１に進み、Ｎｏの場合（図９の（ｂ）の場合）はＳ１０に進む。
【００７１】
Ｓ１０において、判定部１２は、マスター候補を、特殊なスレーブ装置以外の全ての制御装置に決定する。
Ｓ１１において、判定部１２は、マスター候補を、特殊なスレーブ装置と相互通信可能なスレーブ装置に決定する。
【００７２】
Ｓ８、Ｓ１０、Ｓ１１の後、Ｓ１２において、判定部１２は、マスター候補のうち、自制御装置の重みが最大か否かを判定し、Ｙｅｓの場合はＳ１３に進み、Ｎｏの場合はＳ１５に進む。なお、各制御装置の重みについては、重み情報記憶部１８に全ての制御装置の重みをあらかじめ保持しておいてもよいし、あるいは、重み情報記憶部１８には自制御装置の重みのみを格納しておき、問合せ要求（Ｓ１）に対する応答として重み情報（情報４）を他の制御装置から取得するようにしてもよい。また、「状態情報（情報１）」が「不定状態」の制御装置については、新たなマスター装置の対象外としてもよい。
【００７３】
Ｓ１３において、判定部１２は、システム内で動作している他の全ての制御装置に、自制御装置が新たなマスター装置となったことを示すマスター昇格通知を送信し、Ｓ１４に進む。
Ｓ１４において、判定部１２は、記憶部１６の状態情報に関し自制御装置を「マスター状態」に書き換え、Ｓ１５に進む。
【００７４】
Ｓ１５において、判定部１２は、分離（故障）したスレーブ装置（特殊なスレーブ装置）にシステム離脱指示を送信し、処理を終了する。
なお、Ｓ２でＮｏ（２）の場合、Ｓ１６において、判定部１２は、異常状態と判定し、システム管理者等にエラーを通知し、処理を終了する。
【００７５】
このように、本実施形態によれば、マスター／スレーブ構成のシステムにおいて、従来技術以上の一貫性、信頼性を保ちつつ、マスター装置とスレーブ装置の切替えを適切に行えるケースを増やすことができる。より具体的には、次の通りである。
【００７６】
スレーブ状態の各制御装置が、他の制御装置に問合せ要求を送信し、各制御装置自身に関する情報を制御装置間で自律的に相互に交換・取得する。例えば、各制御装置がマスター装置となる条件を満たしているかの情報を制御装置間で自律的に相互交換することにより、二重化構成のマスター装置の片系故障の場合、マスター装置が断続的に不具合になり性能低下が生じている場合などであっても、自律的に新たなマスター装置を決定することができ、システム管理者の人手による介在を極力少なくし、可用性の高いシステムを実現することができる。
【００７７】
また、マスター装置が予兆なく故障した場合や、マスター装置がネットワークから分離された場合でも、残りの制御装置が、自制御装置の重みがそのとき稼働中の制御装置の中で最大か否かを判定し、最大の場合に自制御装置を新たなマスター装置とすることを自律的に決定することができ、システム管理者の人手による介在を極力少なくし、可用性の高いシステムを実現することができる。
【００７８】
なお、本発明は上記実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
【符号の説明】
【００７９】
９  ：ネットワーク
１０、１０Ａ、１０Ｂ：制御装置
１１：情報取得部（情報取得手段）
１２：判定部（判定手段、遷移手段）
１３：マスター決定部（マスター決定手段）
１４：監視部
１５：情報送信部
１６：記憶部
１７：マスター条件記憶部
１８：重み情報記憶部
２０：データベース
【図１】
0006040180.tif 000002
【図２】
0006040180.tif 000003
【図３】
0006040180.tif 000004
【図４】
0006040180.tif 000005
【図５】
0006040180.tif 000006
【図６】
0006040180.tif 000007
【図７】
0006040180.tif 000008
【図８】
0006040180.tif 000009
【図９】
0006040180.tif 000010