JP5416863B2 - 計算機システム、データ処理方法、及びデータ処理プログラム - Google Patents

計算機システム、データ処理方法、及びデータ処理プログラム Download PDF

Info

Publication number
JP5416863B2
JP5416863B2 JP2013505722A JP2013505722A JP5416863B2 JP 5416863 B2 JP5416863 B2 JP 5416863B2 JP 2013505722 A JP2013505722 A JP 2013505722A JP 2013505722 A JP2013505722 A JP 2013505722A JP 5416863 B2 JP5416863 B2 JP 5416863B2
Authority
JP
Japan
Prior art keywords
computer
node
access
computer node
follower
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2013505722A
Other languages
English (en)
Other versions
JPWO2012127652A1 (ja
Inventor
有時 高田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Application granted granted Critical
Publication of JP5416863B2 publication Critical patent/JP5416863B2/ja
Publication of JPWO2012127652A1 publication Critical patent/JPWO2012127652A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1675Temporal synchronisation or re-synchronisation of redundant processing components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/815Virtual

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、計算機システム技術に関し、特にフォールトトレラントシステムの技術に関する。
システムの一部に問題が生じても全体が機能停止することなく動作し続けるように設計された計算機システムは、フォールトトレラントシステム(以下「FTシステム」という)と呼ばれる(特許文献1)。FTシステムは、一般的に複数の計算機によって構成され、各計算機に同じ動作をさせることにより耐障害性を高めている。
FTシステムを実現する技術として「クロック同期方式」がある。「クロック同期方式」では、動作ステップごとに、各計算機間で情報を交換する。これにより、各計算機間で動作ステップを同期させることができる。
また、FTシステムを実現する別の技術として「仮想計算機同期方式」がある。「仮想計算機同期方式」では、一方の仮想計算機上でオペレーティングシステム(以下「OS」という)を実行させる。そのOSから他方の仮想計算機に、一方の仮想計算機上の仮想デバイス等へのアクセス情報を転送する。これにより、各仮想計算機を全く同じように動作させる(特許文献2)。
FTシステムを実現するさらに別の技術に「タスク同期方式」がある。「タスク同期方式」では、アプリケーションソフトウェア(以下「アプリケーション」という)をタスク(例えば、プロセス又はスレッド)という単位に分割する。そして、各計算機で同じタスクを同期して実行させる(特許文献3)。
なお、各計算機の出力が一致しない場合、多数決に従って出力を選択して外部に出力することも知られている(特許文献1)。
特開平8−314744号公報 US2010/0107158 特開2009−217503号公報
「クロック同期方式」は、各プロセッサの動作ステップを同期させる必要がある。したがって、専用ハードウェアによって、各プロセッサの動作ステップを観測し、制御する必要がある。しかし、近年、プロセッサが高集積化され、周辺チップの機能もプロセッサに統合されている。このような複雑な構成のプロセッサの動作ステップを観測し、制御することは困難である。「クロック同期方式」は、プロセッサの動作ステップのたびに同期処理を行う必要があるため、動作クロックの高いプロセッサでは、同期処理のオーバーヘッドが大きい。
「仮想計算機同期方式」は、仮想計算機が複数の仮想プロセッサを備える場合に問題が発生する。例えば、一方の仮想計算機における各仮想プロセッサ間の動作ステップの関係と、他方の仮想計算機における他の各仮想プロセッサ間の動作ステップの関係とを、完全に一致させなければならない。しかし、これを完全に一致させることは困難である。
「タスク同期方式」も、計算機が複数のプロセッサを備える場合に問題が発生する。例えば、各計算機において、第1のプロセッサでタスクAが実行され、第2のプロセッサでタスクBが実行されていると仮定する。そして、一方の計算機のタスクAの実行タイミングが、他方の計算機のタスクAの実行タイミングよりも早いと仮定する。この場合、一方の計算機では、タスクAがメモリにデータを書き込んだ後にタスクBがメモリからデータを読み出す。これに対し、他方の計算機では、タスクAがメモリにデータを書き込む前にタスクBがメモリからデータを読み出してしまう。従って、一方の計算機と他方の計算機において、タスクBの実行結果が異なり、これにより計算機間で出力が異なってしまう恐れがある。
そこで、本発明の目的は、複数の計算機で複数のタスクを同期して実行させることのできる計算機システムを提供することにある。
本発明の一実施態様に従う計算機システムは、複数の計算機ノードが通信ネットワークを介して接続される計算機システムであって、複数の計算機ノードのうち1台の計算機ノードがリーダ計算機ノードとなり、複数の計算機ノードのうち前記リーダ計算機ノード以外の他の計算機ノードがフォロワ計算機ノードとなり、リーダ計算機ノードと前記フォロワ計算機ノードとでそれぞれ同一のタスクを実行するようになっており、リーダ計算機ノードと、フォロワ計算機ノードはそれぞれ、通信ネットワークを介して他の計算機ノードと通信する通信インタフェース部と、データを記憶する記憶部と、タスクから前記記憶部へのアクセス要求を実行するアクセス実行部と、前記アクセス要求が端末への出力である場合に、出力データが正しいか否かを判定する出力判定部と、を備え、リーダ計算機ノードは、自ノードの外部アクセス実行部において、第1のタスクから要求された第1のアクセス要求に基づいて第1の出力データを生成し、自ノードの出力判定部において、第1の出力データが正しいか否かを、フォロワ計算機ノードに問い合わせ、所定の数の前記フォロワ計算機ノードから正しい旨の回答を得たとき、第1の出力データは正しいと判断し、フォロワ計算機ノードは、自ノードの外部アクセス実行部において、第1のタスクと同様の処理を行う第2のタスクから要求された第2のアクセス要求に基づいて第2の出力データを生成し、自ノードの出力判定部において、リーダ計算機ノードからの問い合わせを受け、第1の出力データと第2の出力データが同様の結果であるか否かを判定し、判定結果が肯定的である場合、第1の出力データは正しい旨の回答をリーダ計算機ノードに送信する。
これにより、複数の計算機ノードで複数のタスクを同期して実行させることのできる計算機システムを実現できる。
第1の実施形態に係るFTシステムの構成の一例を示す図である。 タスク要求情報のデータ構造の一例を示す図である。 アクセス情報のデータ構造の一例を示す図である。 アクセス情報管理テーブルのデータ構造の一例を示す図である。 入力情報のデータ構造の一例を示す図である。 出力管理テーブルのデータ構造の一例を示す図である。 出力情報のデータ構造の一例を示す図である。 出力正否情報のデータ構造の一例を示す図である。 タスクが実行されるときのフローチャートの一例である。 各計算機ノードのタスクがアクセス実行部を介してデータ記憶部にアクセスするときのシーケンスを示す図の一例である。 リーダである計算機ノードが外部の端末からデータを受信するときのシーケンスを示す図の一例である。 リーダである計算機ノードが外部の端末にデータを送信するときのシーケンスを示す図の一例である。 アクセス実行部の処理の一例を示すフローチャートである。 外部アクセス実行部が外部の端末からデータを受信する処理フローの一例を示す図である。 外部アクセス実行部が外部の端末にデータを送信する処理フローの一例を示す図である。 追従可否情報のデータ構造の一例を示す図である。 第2の実施形態に係るアクセス情報管理テーブルの一例を示す図である。 第2の実施形態に係るフォロワのアクセス実行部の処理フローの一例を示す図である。 障害の可能性がある計算機ノードをFTシステムから切り離す処理フローを示す図である。 第3の実施形態に係る外部アクセス実行部の処理フローの一例を示す図である。 第4の実施形態に係るリーダの出力データの正否判定の処理フローの一例を示す図である。
(第1の実施形態)
本実施形態では、以下に述べるように、リーダとなる計算機と、フォロワとなる計算機とは、それぞれ同一タスクを実行する。リーダの計算機は、自身でのタスク出力データについて、フォロワの計算機に問い合わせる。リーダの計算機の実行結果とフォロワの計算機の出力データを比較して、出力の可否を判断する。
図1は、FTシステム1の構成の一例を示す図である。FTシステム1は、複数の(例えば3台の)計算機ノード10A、10B、10Cから構成されている。計算機ノードの数は3に限らず、2または4以上でもよい。
FTシステム1は、そのFTシステム1を構成する計算機ノード10のうち一台をリーダ、その他の計算機ノード10をフォロワとする。FTシステム1が正常稼働中は、リーダの計算機ノード10とフォロワの計算機ノード10が入れ替わることはない。しかし、例えば、リーダの計算機ノード10に何らかの障害が発生した可能性があるときは、フォロワの計算機ノード10のうち一台が新たにリーダとなり、FTシステム1は処理を継続する。また、何らかの障害が発生した可能性のある計算機ノード10は、FTシステム1から切り離される。これにより、耐障害性の高いFTシステム1が実現される。
なお、本実施形態では、計算機ノード10Aをリーダとし、計算機ノード10B及び10Cをフォロワとする。以下において、計算機ノード10Aを「リーダ10A」、計算機ノード10B及び10Cをそれぞれ「フォロワ10B」及び「フォロワ10C」と略す。フォロワ10Bとフォロワ10Cをまとめて「フォロワ10」という場合もある。
FTシステム1は、例えば、LAN(Local Area Newtork)又はインターネット等の通信ネットワーク16を介して、1台以上の端末2と接続される。そして、FTシステム1は、端末2とデータの送受信を行う。ここで、データとは、例えば、各々の端末2の状態を表す情報の通知、又は相手に対する動作の要求などである。
計算機ノード10は、メモリ11と、1つ以上のプロセッサ12と、外部通信インタフェース(以下「I/F」という)14、及びノード通信I/F15を備える。
メモリ11は、データの読み出し及び書き込みが可能な揮発性記憶媒体であり、プロセッサ12からアクセスされる。メモリ11は、例えば、DRAM(Dynamic Random Access Memory)等で構成される。
プロセッサ12は、記憶装置13等からアプリケーション20及び基盤ソフトウェア30等のプログラムを読み出し、メモリ11に展開して、そのプログラムを実行する。なお、一つの計算機ノード10が複数のプロセッサ12を備えてもよい。
外部通信I/F14は、計算機ノード10が、通信ネットワーク16を介して、端末2とデータの送受信を行うためのI/Fである。ノード通信I/F15は、計算機ノード10同士がデータを送受信するためのI/Fである。なお、外部通信I/F14とノード通信I/F15は、必ずしも個別に備えられる必要はなく、一つの通信I/Fが外部通信とノード通信I/Fの両方の通信を行うようにしてもよい。外部通信I/F14及びノード通信I/Fは、例えばイーサネット(登録商標)規格に準拠したI/F等で構成される。
記憶装置13は、データの記憶が可能な不揮発性記憶媒体であり、プロセッサ12等からアクセスされる。記憶装置13には、計算機ノード10で実行されるアプリケーション20及び基盤ソフトウェア30等の各種プログラム及びデータが記憶される。記憶装置13は、例えば、HDD(Hard Disk Drive)又はフラッシュメモリ等で構成される。
次に、プロセッサ12で実行されるアプリケーション20と基盤ソフトウェア30について説明する。
アプリケーション20は、FTシステム1が提供する機能を実現するためのコンピュータプログラムである。アプリケーション20は、一つ以上のタスク21から構成される。タスク21は、基盤ソフトウェア30又は他のタスク21から参照されない、固有の記憶領域を備えてもよい。そして、FTシステム1を構成する計算機ノード10は、それぞれ同じアプリケーション20を有する。すなわち、同じアプリケーション20が、FTシステム1を構成する複数の計算機ノード10でそれぞれ実行される。
基盤ソフトウェア30は、マルチタスク処理が可能なOSであり、複数のタスク21を並列に実行することができる。基板ソフトウェア30は、タスク21に対して、記憶装置13へのアクセス機能と、外部通信I/F14を介した端末2との通信機能と、メモリ30の所定の領域の確保及び解放機能等を、提供する。基盤ソフトウェア30は、例えば、スケジューラ31と、タスク要求受付部32と、出力判定部33と、追従判定部34と、アクセス情報管理テーブル35と、アクセス実行部36と、データ記憶処理部37と、外部アクセス実行部38と、出力管理テーブル39とを備える。
図2は、タスク要求情報40のデータ構造の一例を示す図である。タスク要求受付部32は、図2に示すようなタスク要求情報40をタスク21から受け取り、その要求内容をアクセス実行部36に伝える。タスク要求情報40には、タスク21がデータ記憶部37にアクセスする際の要求が記載される。タスク要求情報40には、例えば図2に示すように、アクセス対象情報41と、アクセス種別42と、データサイズ43、及びデータ内容44が記載される。
アクセス対象情報41は、タスク21のアクセス対象(すなわち、データの読み出し先、又はデータの書き込み先)を識別するための情報である。例えば、アクセス対象情報41は、メモリ11の所定の記憶領域を示すアドレスであってもよいし、アクセス対象となる記憶装置の識別子であってもよいし、記憶装置の所定の記憶領域を示す識別子であってもよいし、又はその組み合わせであってもよい。また、アクセス対象が通信ネットワーク16を介した端末2であるときは、アクセス対象情報41は、端末2を示すIPアドレス及びポート番号であってもよいし、計算機ノード10内においてIPアドレスとポート番号の組み合わせを一意に識別するためのセッション識別子であってもよい。
アクセス種別42は、タスクの要求が、データの読み出し(read)であるか、書き込み(write)であるかを識別するための情報である。アクセス種別42が「write」であるときは、データサイズ43及びデータ内容44に、それぞれ書き込みデータのデータサイズ及びデータの内容が記載される。
図3は、アクセス情報50のデータ構造の一例を示す図である。アクセス実行部36は、タスク要求情報40を他の計算機ノード10に伝えるためのアクセス情報50を生成する。さらに、アクセス実行部36は、データ記憶部37のデータにアクセスする。アクセス情報50には、例えば図3に示すように、アクセス対象識別子51と、計算機ノード識別子52と、タスク識別子53と、シーケンス番号54と、状態変化フラグ55、及び検証用情報56が記載される。
アクセス対象識別子51は、タスク要求情報40が有するアクセス対象情報41及びデータサイズ43から一意に定まる識別子である。アクセス対象識別子51は、例えば、アクセス対象情報41に含まれるアクセス対象の記憶装置名、記憶領域名、又はアクセス対象である通信先の装置の識別子(例えば、ホスト名、又はIPアドレス等)から決定されてもよい。また、アクセス対象の記憶領域が複数に分割されているときは、アクセス対象識別子51は、分割されたそれぞれの記憶領域に付与された識別子から決定されてもよい。
計算機ノード識別子52は、アクセス情報50を生成した計算機ノード10を一意に識別するための識別子である。例えば、図3に示す計算機ノード識別子52は「A」なので、そのアクセス情報50はリーダ10Aで生成されたものであることがわかる。
タスク識別子53は、アクセス情報50の実行の主体であるタスク21を一意に識別するための識別子である。例えば、図3に示すタスク識別子53は「T1」なので、そのアクセス情報50は、タスクT1により実行されることがわかる。
シーケンス番号54は、アクセス情報50が自己の計算機ノード10において実行される順番を示すための値である。基本的に、シーケンス番号の小さいアクセス情報50から順番に実行される。例えば、図3に示すシーケンス番号54は「93」なので、基本的に、これよりも小さいシーケンス番号のアクセス情報50が先に実行される。
状態変化フラグ55は、アクセス情報50の実行が、アクセス対象の状態を変化させるか否かを示す情報である。例えば、データ記憶部37からデータを読み出すリードアクセスの場合、データ記憶部37のデータは変化しないので、状態変化フラグ55は「無」である。これに対し、データ記憶部37にデータを書き込むライトアクセスの場合、もしくは、端末2にデータを送信するアクセスである場合、状態変化フラグ55は「有」である。
検証用情報56には、各計算機ノード10において、同じタスク21から渡されるタスク要求情報40が同一であることを検証するためのデータが記載される。例えば、タスク要求情報40が「書き込み」を要求するものであった場合、検証用情報56には、タスク要求情報40のデータ内容44、もしくは、データ内容44の誤り検出符号データ等が記載される。
図4は、アクセス情報管理テーブル35のデータ構造の一例を示す図である。アクセス情報管理テーブル35は、リーダアクセス情報52Aと、フォロワアクセス情報52Bとを対応付けて管理する。リーダアクセス情報52Aとは、リーダ10Aのアクセス実行部36から送信されたアクセス情報である。フォロワアクセス情報52Bとは、フォロワ10のアクセス実行部36にて生成されたアクセス情報である。
リーダアクセス情報52Aは、例えば、タスク識別子53Aと、シーケンス番号54Aと、状態変化フラグ55Aと、検証用情報56Aと、自己ノード実行情報57とを備える。フォロワアクセス情報52Bは、例えば、タスク識別子53Bと、シーケンス番号54Bと、状態変化フラグ55Bと、検証用情報56Bとを備える。
アクセス情報管理テーブル35は、リーダ10Aとフォロワ10B(又はフォロワ10C)とについて、同じタスク21から生成されたアクセス情報50を、対応付けて管理する。例えば、図4はフォロワ10Bのアクセス情報管理テーブル35の一例である。同じ行に記載の、リーダアクセス情報52Aとフォロワアクセス情報52Bとは対応関係にあることがわかる。
対応関係は、アクセス対象識別子51とタスク識別子52が共に同じか否かで判断する。例えば、図4において、アクセス対象識別子51が「R1」、かつ、タスク識別子53Aが「T1」のリーダアクセス情報52Aと、フォロワアクセス情報52Bとは対応関係にある。
アクセス情報管理テーブル35は、リーダアクセス情報52A及びフォロワアクセス情報52Bを、同じアクセス対象識別子51ごとにグループ化して管理する。さらに、アクセス情報管理テーブル35は、アクセス対象識別子51のグループ内において、リーダアクセス情報52のシーケンス番号の小さい順に並べて管理する。
自己ノード実行情報57には、その行に記載のフォロワアクセス情報52Bが実行済みであるか否かが記載される。例えば図4に示すような、フォロワアクセス情報52Bのシーケンス番号「38」の実行が完了されたとき、同行の自己ノード実行情報57には、そのシーケンス番号「38」が記載される。アクセス実行部36は、自己ノード実行情報57を参照することで、どのフォロワアクセス情報52Bが実行済みであるかを知ることができる。
リーダアクセス情報52Aがシーケンス番号の小さい順に並べられるので、それと対応関係にあるフォロワアクセス情報52Bもそれと同じ順番に並べられる。そのため、アクセス実行部36は、自己ノード実行情報57を参照することで、シーケンスのどの段階のフォロワアクセス情報52Bまで実行済みかを知ることができる。
図5は、入力情報60のデータ構造の一例を示す図である。外部アクセス実行部38は、リーダ10Aが端末2からデータの受信を試みたとき、その実行結果と受信したデータの内容をフォロワ10に伝える入力情報60を生成する。
入力情報60には、例えば図5に示すように、アクセス対象識別子51と、外部アクセスシーケンス番号62と、入力結果フラグ63と、データサイズ64、及びデータ内容65が記載される。外部アクセス実行部38は、入力情報60の入力結果フラグ63に、データの受信に成功した場合は「成功」を、失敗した場合は「失敗」を、記載する。外部アクセス実行部38は、データの受信に成功した場合は、受信したデータのデータサイズ及びデータ内容をそれぞれデータサイズ64及びデータ内容65に記載する。
外部アクセス実行部38は、端末2にデータを送信するとき、図7に示す出力情報70を、図6に示す出力管理テーブル39に格納する。出力情報70には、例えば図7に示すように、アクセス対象識別子51と、外部アクセスシーケンス番号62、及び照合データ74が記載される。アクセス対象識別子51、及び外部アクセスシーケンス番号62は、図5と同じなので説明を省略する。照合データ74には、例えば、リーダ10Aの出力データが記載される。
図6は、出力管理テーブル39のデータ構造の一例を示す図である。出力管理テーブル39には、例えば、図6に示すように、アクセス対象識別子51と、外部アクセスシーケンス番号62と、データサイズ64と、データ内容65とが記載される。リーダ10Aの出力管理テーブル39には、リーダ10Aの出力データに対するフォロワ10の正否判定を示す正否フラグ81がさらに記載される。フォロワの出力管理テーブル39には、正否フラグは含まれない。
図7は、出力情報70のデータ構造の一例を示す図である。図8は、出力正否情報80のデータ構造の一例を示す図である。
リーダ10Aの出力判定部33は、出力管理テーブル39に記載の所定の出力データを端末2に送信する前に、フォロワ10に出力情報70を送信する。リーダ10Aの出力判定部33は、フォロワ10から、例えば図8に示すような、出力情報70の検証結果である出力正否情報80を受信し、その検証結果に基づいて、上記の所定の出力データを端末2に送信するか否かを判定する。
図1に戻る。データ記憶部37は、アクセス実行部36からの要求に基づき、メモリ11、または、記憶装置13の所定の領域にデータを書き込んだり、メモリ11、または、記憶装置13の所定の領域からデータを読み出したりする。データ記憶部37は、キャッシュメモリとしての役割を果たしてもよい。
スケジューラ31は、複数のタスク21の実行順序を制御する。スケジューラ31は、例えば、所定の時間間隔で、実行するタスク21を切り替える。スケジューラ31は、実行中のタスクよりも優先度の高いタスク21が発生したときは、その優先度の高いタスク21を先に実行させたりする。
追従判定部34は、フォロワ10B又は10Cがリーダ10Aに追従可能か否かを判定する。例えば、フォロワ10Bの出力データがリーダ10Aの出力データと異なるとき、フォロワ10Bは、リーダ10Aに対して、追従できない旨を示す情報を通知する。
リーダ10Aの追従判定部34は、少数のフォロワから追従不可を示す情報を受け取ったときは、その少数のフォロワに何らかの障害が発生している可能性があると判定することができる。これに対し、リーダ10Aの追従判定部34は、多数のフォロワから追従不可を示す情報を受け取ったときは、リーダ10A自身に何らかの障害が発生している可能性があると判定可能である。
図9は、タスク21が実行される処理を示すフローチャートの一例である。スケジューラ31は、実行するタスク21を選択する(S101)。選択されたタスク21は、実行を開始する(S102)。タスク21の実行中に記憶装置13又は端末2へのアクセス要求が発生したときは、タスク21は、タスク要求受付部32にタスク要求情報40を渡し、アクセス処理の実行を要求する(S103)。
ここで、タスク要求受付部32が、タスク要求情報40を受け取っていないときは(S104:NO)、ステップS106に進む。
タスク要求受付部32が、タスク21からタスク要求情報40を受け取った場合(S104:YES)、スケジューラ31は、タスク要求情報40に記載された処理を所定の時間内に完了できるか否かを判断する(S105)。
スケジューラ31が、その処理を所定の時間内に完了できると判断した場合は(S105:YES)、ステップ106に進む。
一方、スケジューラ31が、その処理を所定の時間内に完了できないと判断した場合は(S105:NO)、スケジューラ31はこの処理を一時中断する。そして、スケジューラ31は、ステップS101に戻り、他のタスク21を選択し、実行する。
タスク要求受付部32がタスク要求情報40を受け取っていない場合(S104:NO)、又は、スケジューラ31が、タスク要求情報40に記載された処理を所定の時間内に完了できると判断した場合(S105:YES)について説明する。このとき、スケジューラ31は、現在実行中のタスク21が最優先のタスクであるか否かを判断する(S106)。
現在実行中のタスク21が最優先のタスクであるときは(S106:YES)、ステップS103に戻り、この処理を継続する。
現在実行中のタスク21が最優先のタスクでないときは(S106:NO)、ステップS101に戻り、他のタスク21を選択し、実行する。現在実行中のタスク21が最優先でなくなる場合とは、例えば、現在実行中のタスク21の連続実行時間が所定時間以上となった場合、又は、現在実行中のタスクよりも優先度の高いタスクが実行可能となった場合などである。
なお、これらの動作は、計算機ノード10が複数のプロセッサ12を備える場合は、各プロセッサ12において各々実行される。
各プロセッサ12がスケジューラ31を実行するタイミングは同一とは限らない。したがって、計算機ノード10の間で「クロック同期」を行わない限り、各計算機ノード10の間で各プロセッサ12の動作を完全に一致させることができない。例えば、各計算機ノード10のプロセッサ内のキャッシュ動作が異なると、同じタスク21の開始タイミングがずれることがある。また、各計算機ノード10の基盤ソフトウェア30の内部状態が異なると、タスク21の実行結果が一致しなかったりすることがある。
しかし、FTシステム1を実現するにあたって、それぞれの計算機ノード10で実行されるタスク21が、致命的な、実行結果の不一致を引き起こすことは許されない。
致命的な実行結果の不一致とは、例えば、複数の計算機ノード10の間で同一のタスク21を実行したにもかかわらず、各計算機ノード10で異なる判定がなされ、それぞれ異なる実行結果となり、異なる出力が行われる場合等である。そこで、本実施形態では、複数の計算機ノード10で同一のタスク21が実行されたとき、致命的な実行結果の不一致を引き起こさないようにする。
図10は、各計算機ノード10のタスク21がデータ記憶部37にアクセスするときのシーケンス例を示す。本例では、リーダ10Aにおいて、タスク21Aの後にタスク21aがデータ記憶部37にアクセスしないと、データに不整合が生じることとする。なお、フォロワ10B及び10Cにおいても同様であるとする。
まず、リーダ10Aで実行されるタスク21A及び21aのタスク要求情報40に基づくアクセス実行部36Aの処理について説明する。タスク21Aから第1のタスク要求情報40を受け付けたアクセス実行部36Aは、第1のタスク要求情報40に対応する第1のアクセス情報50を生成する(S10a)。アクセス実行部36Aは、その第1のアクセス情報50を、フォロワ10Bのアクセス実行部36Bと、フォロワ10Cのアクセス実行部36Cに送信する(S11a、S12a)。次にアクセス実行部36Aは、そのタスク要求情報40に基づき、データ記憶部37Aの所定のデータにアクセスする(S13a)。
その後、タスク21aから第2のタスク要求情報40を受け付けたアクセス実行部36Aは、第2のタスク要求情報40に対応する第2のアクセス情報50を生成する(S20a)。以降は、上記のタスク21Aで述べたS11a〜S13aと同様に、アクセス実行部36Aは、記憶装置13にアクセスする(S21a〜S23a)。
すなわち、リーダ10Aで実行されているアクセス実行部36Aは、フォロワ10Bのアクセス実行部36B及びフォロワ10Cのアクセス実行部36Cに、同一の処理を実行させるためのアクセス情報50を送信する。
次に、フォロワ10Bで実行されるタスク21B及び21bのタスク要求情報40に基づくアクセス実行部36Bの処理について説明する。ここでは、フォロワ10Bのアクセス実行部をアクセス実行部36Bと、フォロワ10Bのデータ記憶部をデータ記憶部37Bと、呼ぶ。なお、フォロワ10Cについて述べる場合も、同様に、36C、37Cの符号を付けて説明する。タスク21Bから第1のタスク要求情報40を受け付けたアクセス実行部36Bは、処理を開始するが、リーダ10Aのアクセス実行部36Aからアクセス情報50を受け取っていないので、待機する(S10b)。待機している様子を、図10では点線で示す。
アクセス実行部36Bは、アクセス実行部36Aから第1のアクセス情報50を受け取ると(S11a)、その第1のアクセス情報50に対応するタスク要求情報40に基づき、データ記憶部37Bの所定のデータにアクセスする(S11b)。
その後、タスク21bがアクセス実行部36Bに第2のタスク要求情報40を発行する。このとき、アクセス実行部36Bは、リーダ10Aのアクセス実行部36Aから第2のアクセス情報50を受信済みである(S21a)。従って、アクセス実行部36Bは、すぐに、その第2のアクセス情報50に対応するタスク要求情報40に基づき、データ記憶部37Bの所定のデータにアクセスする(S21b)。
次に、フォロワ10Cで実行されるタスク21C及び21cのタスク要求情報40に基づくアクセス実行部36Bの処理について説明する。タスク21Cは処理を開始する。タスク21Cからタスク要求情報40を受け付けたアクセス実行部36Cは、リーダ10Aのアクセス実行部36Aから既に第1のアクセス情報50を受信しているので(S12a)、すぐに、タスク要求情報40に基づき、データ記憶部37Cの所定のデータにアクセスする(S11c)。
一方、タスク21cは、タスク21Cよりも早く処理を開始している(S20c)。しかし、アクセス実行部36Cは、まだ、リーダ10Aのアクセス実行部36Aから第2のアクセス情報50を受信していないので、待機する。
アクセス実行部36Cは、アクセス実行部36Aから第2のアクセス情報50を受信する(S22a)。しかし、この時点ではまだ、第1のアクセス情報50に対応するアクセス処理が完了していないので、アクセス実行部36Cは、第1のアクセス情報50に対応するアクセス処理が完了するまで待機する。
アクセス実行部36Cは、第1のアクセス情報50に対応するアクセス処理が完了した後で、タスク要求情報40に基づき、データ記憶部37Cの所定のデータにアクセスする(S21c)。
以上の処理により、リーダ10Aにおけるタスクの起動順序と、フォロワ10Bにおけるタスクの起動順序及びフォロワ10Cにおけるタスクの起動順序が一致しない場合でも、各計算機ノードにおいて、各タスクがデータにアクセスする順序を同一にすることができる。すなわち、各計算機ノードにおいて同じ処理を行うタスクが、異なる実行結果となってしまうことを防ぐことができる。
図11は、リーダである計算機ノード10Aが外部の端末2からの外部アクセス要求を受信するときのシーケンスを示す図の一例である。
まず、リーダ10Aで実行されるアクセス実行部36Aの処理について説明する。アクセス実行部36AのステップS30a〜S31aについては、図10におけるステップS20a〜S21aと同様の処理なので説明を省略する。
次に、アクセス実行部36Aは、外部アクセス実行部38Aに、端末2から送信されるデータを受信するよう指示する(S33a)。
外部アクセス実行部38Aは、端末2から送信されたデータを受信すると(S34a)、その旨をアクセス実行部36Aに通知する(S35a)。このとき、外部アクセス実行部38Aは、入力情報60を、フォロワ10Bの外部アクセス実行部38Bと、フォロワ10Cの外部アクセス実行部38Cとに転送する(S36a、S37a)。
次に、フォロワ10Bで実行されるアクセス実行部36Bの処理について説明する。アクセス実行部36Bは処理開始時、リーダ10Aのアクセス実行部36Aから既にアクセス情報50を受信している(S31a)。そこで、アクセス実行部36Bは、外部アクセス実行部38Bに、リーダ10Aの外部アクセス実行部38Aから転送される入力情報60を受けるよう指示する(S31b)。
外部アクセス処理部38Bは、リーダ10Aから入力情報60を受信すると(S36a)、浄心データ情報60に含まれる入力結果フラグ63、データサイズ64、データ内容65をアクセス実行部36Bに通知する(S32b)。なお、フォロワ10Cのアクセス実行部36Cも上記と同様の処理を行う(S30c〜S32c)。
以上の通り、外部の端末2等からFTシステム1に送信されたデータは、リーダ10Aが代表して受信し、それをフォロワに転送する。そして、リーダ10Aとフォロワ10B及び10Cでそれぞれ同じ処理を実行する。これにより、フォロワもリーダと同じ入力結果を得ることができ、入力結果を利用するタスクが同じ動作を行うことができる。
図12は、リーダである計算機ノード10Aが端末2にデータを送信するときのシーケンスを示す図の一例である。
まず、リーダ10Aで実行されるアクセス実行部36Aの処理について説明する。アクセス実行部36AのステップS40a〜S42aについては、図11におけるステップS30a〜S32aと同様の処理なので説明を省略する。アクセス実行部36Aは、外部アクセス実行部38Aに対して、データを端末2に送信するよう指示する(S43a)。外部アクセス実行部38Aは、アクセス実行部36Aから渡されたデータを出力情報70に記載し、それをフォロワ10Bの外部アクセス実行部38B及びフォロワ10Cの外部アクセス実行部38Cにそれぞれ転送する(S44a、S45a)。外部アクセス実行部38Aは、フォロワ10Bの外部アクセス実行部38B及びフォロワ10Cの外部アクセス実行部38Cから、リーダ10Aの出力データが正しいか否かを示す出力正否情報14を受信する(S42b、S42c)。外部アクセス実行部38Aは、多数(例えば、半数以上)のフォロワから結果が正しい旨の通知を受けた場合、リーダ10Aの出力データを端末2に送信する(S46a)。
フォロワ10Bで実行されるアクセス実行部36Bの処理について説明する。アクセス実行部36Bは、処理開始時に、リーダ10Aのアクセス実行部36Aから既にアクセス情報50を受信している(S40b)。そこで、アクセス実行部Bは、出力データを外部アクセス実行部38Bに渡す。外部アクセス実行部38Bは、アクセス実行部36Bから受け取った出力データと、リーダ10Aのタスク21Aから受信した出力情報70を比較する。出力データが一致する場合、外部アクセス実行部38Bは、出力正否情報80の正否フラグ81に、一致する旨を示す「正」の情報を記載し、リーダ10Aの外部アクセス実行部38Aに送信する(S42b)。一方、出力データが一致しない場合、外部アクセス実行部38Bは、出力正否情報80の正否フラグ81に、一致しない旨の「否」を示す情報を記載し、リーダAの外部アクセス実行部38Aに送信する(S42b)。なお、フォロワ10Cで実行されるタスク21Cも上記と同様の処理を行う(S40c〜S42c)。
以上の処理により、もしリーダ10Aの出力データが何らかの不具合によって誤っていたとしても、端末2に誤った出力データを送信することを防ぐことができる。
図13は、タスク要求情報の処理を示すフローチャートである。アクセス実行部36は、タスク要求情報40に基づき、アクセス情報50を生成する(S201)。アクセス実行部33は、自分の属する計算機ノード10がリーダであるか、フォロワであるかを判定する(S202)。以下では、自分の属する計算機ノードを自ノードと呼ぶ。
自ノードがリーダである場合の処理について説明する(S202:リーダ)。アクセス実行部36は、アクセス情報50をフォロワ10B及び10Cに送信する(S203)。
アクセス実行部36は、タスク要求情報40が、自ノード内部の記憶装置13へのアクセスを要求するものであるか、外部の端末2へのアクセスを要求するものであるかを判定する(S210)。
アクセス要求情報40が自ノード内部のデータ記憶部37へのアクセスを要求するものであった場合(S210:内部)、アクセス実行部36は、データ記憶部37のデータにアクセスする(S211)。
一方、端末2へのアクセスを要求するものであった場合(S210:外部)、外部アクセス実行部38が、端末2とデータの送受信を行う(S212)。
次に、ステップS202に戻り、自己の計算機10がフォロワである場合の処理について説明する(S202:NO)。
アクセス実行部36は、ステップS201で生成したフォロワアクセス情報50をアクセス情報管理テーブル35に格納する(S204)。アクセス実行部36は、リーダ10Aから受信したリーダアクセス情報50をアクセス情報管理テーブル35に格納する(S205)。アクセス実行部36は、アクセス情報管理テーブル35から、フォロワアクセス情報52Bとリーダアクセス情報52Aとの対応関係を照合する(S206)。すなわち、例えば図4において、フォロワアクセス情報52Bと同じ行に記載のリーダアクセス情報52Aを照合する。
アクセス実行部36は、照合したフォロワアクセス情報52Bがすぐに実行可能か否かを判定する(S207)。同じアクセス対象識別子53のグループ内において、照合したフォロワアクセス情報52Bよりもシーケンス番号が小さいフォロワアクセス情報52Bが全て実行済みである場合は、すぐに実行可能と判定する。まだ未実行のものがある場合は、まだ実行不可能であると判定する。実行済みか否かは、自己ノード実行情報57を参照することでわかる。
フォロワアクセス情報52Bが全て実行済みの場合(S207:YES)、アクセス実行部36は、アクセス情報管理テーブル35において、照合したフォロワアクセス情報52Bに対応する自己ノード実行情報57に、フォロワアクセス情報52Bのシーケンス番号を記入する(S208)。アクセス実行部36は、上記のステップS210からS212と同様、タスク要求情報40に基づき、データ記憶部37の所定のデータにアクセスする。
一方、まだ未実行のものが残っているときは(S207:NO)、アクセス実行部36は、このアクセス処理をいったん保留にし(S209)、ステップS205に戻る。
なお、アクセス情報管理テーブル35に状態変化フラグ55を備えるようにしてもよい。例えば、アクセス情報管理テーブル35に、実行されるアクセス処理よりもシーケンス番号が小さい未実行のアクセス処理が残っていたとする。上記の処理であれば、ステップS207において、未実行のアクセス処理が残っているので、アクセス処理は実行できないと判断される。
状態変化フラグ55を備えた場合を説明する。あるフォロワアクセス情報52Bに対応するリーダアクセス情報52A及びこれよりシーケンス番号が小さいリーダアクセス情報52Aの全ての状態変化フラグ55が「無」であり、かつ、対応するフォロワアクセス情報51Bの全ての状態変化フラグ55も「無」である場合は、ステップS207の判定をYESとしてもよい。状態変化フラグ55を管理することで、ステップS207の条件が成立する可能性が高くなる。従って、アクセス処理の実行が保留される頻度を減らすことができる。
図14は、外部アクセス実行部38が端末2から外部アクセス要求を受信する処理フローの一例を示す図である。
外部アクセス実行部38は、自ノードがリーダであるかフォロワであるかを判定する(S301)。自ノードがリーダである場合の処理について説明する(S301:リーダ)。
外部アクセス実行部38は、外部通信I/F14を介して、端末2等から外部アクセス要求10を受信し、その要求を実行する(S302)。
外部アクセス実行部38は、入力データを含む入力情報60を生成する(S303)。
外部アクセス実行部38は、生成した入力情報60をフォロワ10B及び10Cに送信する(S304)。
外部アクセス実行部38は、アクセス実行部36に入力結果を通知する(S305)。
ステップS301に戻り、自ノードがフォロワである場合の処理について説明する(S301:フォロワ)。
外部アクセス実行部38は、リーダから入力情報60を受信する(S306)。
外部アクセス実行部38は、入力情報60に基づいてリーダの入力結果を再現し(S307)、アクセス実行部36に再現した入力結果を通知する。(S305)。
以上の処理により、フォロワもリーダと同じ入力結果を得ることができ、入力結果を利用するタスクが同じ動作を行うことができる。
図15は、外部アクセス実行部38が端末2に出力データを送信する処理フローの一例を示す図である。
外部アクセス実行部38は、出力データを出力管理テーブル39に格納する(S401)。
外部アクセス実行部38は、自ノードがリーダであるかフォロワであるかを判定する(S402)。
まず、自ノードがリーダである場合の処理について説明する(S402:リーダ)。
外部アクセス実行部38は、フォロワ10B及び10Cに出力情報を送信する(S403)。
外部アクセス実行部38は、各フォロワから出力正否情報80を受信する(S404)。
そして、外部アクセス実行部38は、受信した出力正否情報80を、出力判定部33に渡し、出力データが正しいか否かを判定させる。出力判定部33は、正否フラグ81が「正」の出力正否情報80と、正否フラグが「否」の出力正否情報80の数をそれぞれ集計する。そして、「正」の数が多数(例えば、半数以上)であるか否かを判定する(S405)。
この判定が「真」の場合(S405:YES)、出力判定部33は、出力データは正しい旨の判定を外部アクセス実行部38に返す。外部アクセス実行部38は、これを受けて、リーダ10Aの出力データを端末2に送信する。
一方、この判定が「偽」の場合(S405:NO)、出力判定部33は、リーダ10Aの出力データは正しくない可能性がある旨の判定を外部アクセス実行部38に返す。外部アクセス実行部38は、これを受けて、リーダ10Aで実行された出力データは端末2に送信しない。リーダ10Aは、自ノードに何らかの障害が発生している可能性があると想定し、自己のリーダ機能を停止し、フォロワたちに、新たなリーダを選出するよう要請する(S407)。
次に、ステップS402に戻り、自ノードがフォロワである場合の処理について説明する(S402:フォロワ)。
外部アクセス実行部38は、リーダから出力情報70を受信する(S408)。
外部アクセス実行部38は、出力判定部33に、リーダから受信した出力情報70と自己の出力データを比較させる(S409)。
出力判定部33は、その比較結果が一致しているか否かを判定する(S410)。一致する場合(S410:YES)、出力判定部33は、正否フラグ81に「正」を記載した出力正否情報80を、リーダ10Aに送信する(S411)。一方、一致しない場合(S410:NO)、出力判定部33は、正否フラグ81に「否」を記載した出力正否情報80を、リーダ10Aに送信する(S412)。
以上の処理により、リーダの出力データとフォロワの出力データを比較することにより、より信頼性の高い出力を行うことができる。
(第2の実施形態)
第2の実施形態は、第1の実施形態に、何らかの異常が発生したリーダ10A、フォロワ10B又は10CをFTシステム1から切り離す処理を追加したものである。
図16は、追従可否情報90のデータ構造の一例を示す図である。追従可否情報90は、フォロワ10が、リーダ10Aと同じように処理を実行できているか(すなわち、リーダ10Aに追従できているか)否かを、リーダ10Aに伝えるための情報である。追従可否情報90は、例えば図16に示すように、計算機ノード識別子52と、追従可否フラグ91、及び追従可否詳細情報92を有する。
追従可否フラグ91は、フォロワ10がリーダ10Aに追従できているか否かを示すフラグである。正常に追従できているときは「可」が、何らかの障害により追従できないときは「不可」が記載される。
追従可否詳細情報92は、追従しているアクセス情報50を示すための情報である。例えば、追従可否詳細情報92は、アクセス対象識別子51と、タスク識別子53、及びシーケンス番号54の組み合わせでもよい。追従可否詳細情報92は、追従が「不可」となった理由を示す情報であってもよい。
図17は、第2の実施形態に係るアクセス情報管理テーブル35の一例を示す図である。リーダ10Aの追従判定部34は、フォロワから受信した追従可否情報90の追従可否フラグが「可」の場合、アクセス情報管理テーブル35の対応する追従可否フラグ58の項目に「可」と記載する。一方、追従可否情報90を受信できないときは、追従判定部34は、アクセス情報管理テーブル35の対応する追従可否フラグ91の項目に何も記載しない。追従可否フラグ91が「不可」のときは、追従判定部34は、アクセス情報管理テーブル35の対応する追従可否フラグ91の項目に「不可」と記載する。リーダ10Aの追従判定部34は、アクセス情報管理テーブル35の同じ行の追従可否フラグ91に「可」が多数(例えば、半数以上)のときは、「不可」を送信したフォロワには何らかの障害が発生している可能性があると判断する。追従判定部34は、そのフォロワをFTシステム1から切り離す。一方、可否フラグに「不可」が多数(例えば、半数以上)のときは、追従判定部34は、リーダ自身に何らかの障害が発生している可能性が高いと判断する。追従判定部34は、リーダ機能を停止し、フォロワたちに新しいリーダを選出するよう要請する。
図18は、第2の実施形態に係るフォロワのアクセス実行部36の処理を示すフローチャートである。
FTシステム1を構成する計算機ノード10は、ハートビート等の既知の手段により、基盤ソフトウェア30が正常に実行されていることを相互に確認する。リーダ10Aが無応答状態となったとき、フォロワ10は、その旨を追従可否詳細情報92に記載した追従可否情報90を、互いに送信する。
図18の処理フローは、図13のS204〜S208の処理フローに該当する。よって、図18のステップS204とS205の説明は省略し、ステップS220から説明する。
アクセス実行部36は、アクセス情報管理テーブル35から、一番古い未実行のアクセス処理を照合する(S220)。アクセス実行部36は、フォロワアクセス情報52Bのタスク識別子53Bと、リーダアクセス情報52Aのタスク識別子53Aを比較する(S221)。
タスク識別子53が一致する場合(S221:YES)、アクセス実行部36は、他の計算機ノード10に依存しない他の項目、例えば、アクセス対象識別子51、状態変化フラグ55、及び検証用情報56について比較する(S222)。
他の項目も一致する場合(S222:YES)、アクセス実行部36は、リーダのアクセスに追従が可能と判断し、追従可否フラグ91を「可」とした追従可否情報90をリーダ10Aに送信する(S223)。追従可否詳細情報92には、リーダ10Aのアクセス情報50のシーケンス番号54等を含める。その後、図13のステップS208以降のフローを実行する。
一方、他の項目が一致しない場合(S222:NO)、アクセス実行部34は、追従可否フラグ91を「不可」とした追従可否情報90を、リーダ10Aに送信する(S227)。その後、図13のステップS209以降のフローを実行する。
次に、ステップS221に戻り、タスク識別子53が一致しない場合について説明する。タスク識別子53が一致しない場合(S221:NO)、アクセス実行部34は、アクセス対象識別子51を比較する(S224)。
アクセス対象識別子51が一致する場合(S224:YES)、自己のアクセス情報50に対応するタスク要求情報40の実行が保留されている時間が所定のタイムアウト時間を超えているか否かを判定する(S226)。なお、リーダ10Aのアクセス情報50を受信してから所定のタイムアウト時間が過ぎているか否かによって判定してもよい。
所定のタイムアウト時間が過ぎている場合は(S226:YES)、アクセス実行部36は、追従可否フラグを「不可」とした追従可否情報90をリーダに送信し(S227)、図13のステップS209以降の処理フローを実行する。
一方、所定のタイムアウト時間が過ぎていない場合は(S226:NO)、アクセス実行部36は、そのまま図13のステップS209以降の処理フローを実行する。
次に、ステップS224に戻り、アクセス対象識別子51が一致しない場合(S224:NO)について説明する。未照合のアクセス情報50があるか否かを判定する(S225)。
未照合のアクセス情報50がある場合は(S224:YES)、次のアクセス情報50を参照し(S228)、ステップS205に戻る。
一方、未照合のアクセス情報がない場合は(S224:NO)、ステップS226に進む。
図19は、障害の可能性がある計算機ノード10をFTシステム1から切り離す処理フローを示す図である。
リーダ10Aの追従判定部34は、各フォロワから追従可否情報90を受信する(S501)。追従判定部34は、一つのアクセス処理について、追従可否フラグ91を「可」としたフォロワの数と、「不可」としたフォロワの数をそれぞれ集計する(S502)。
追従可否フラグ91を「可」としたフォロワの数が多数(例えば、半数以上)の場合(S502:「可」が多い)の場合は、追従可否フラグ91を「不可」としたフォロワには何らかの障害が発生している可能性がある。そこで、リーダ10Aの追従判定部34は、そのフォロワをFTシステム1から切り離す(S503)。
一方、追従可否フラグ91を「不可」としたフォロワの数が多数(例えば、半数以上)の場合(S502:「不可」が多数)、リーダ10Aには何らかの障害が発生している可能性がある。そこで、リーダ10Aの追従判定部34は、フォロワたちに対して新たなリーダを選出するよう要請すると共に、リーダ10A自身をFTシステム1から切り離す(S504)。
以上の処理により、何らかの障害が発生している可能性がある計算機ノード10をFTシテム1から切り離すことができる。そして、FTシステム1全体では、正しい処理を継続することができる。
(第3の実施形態)
第3の実施形態では、第1の実施形態のように各フォロワが出力の正否判定を行うのではなく、リーダ10Aが各フォロワの出力の正否判定を行う。
図20は、第3の実施形態に係る外部アクセス実行部の処理フローの一例を示す図である。まず、各フォロワの処理フローについて説明する。ステップS401〜S402は、図15の処理フローと同じなので説明を省略する。
自ノードがフォロワである場合(S402:フォロワ)、フォロワ自身の出力データを出力情報70に記載して、リーダ10Aに送信する(S421)。
次に、自ノードがリーダの場合を説明する(S402:リーダ)。リーダ10Aは、出力情報70を受信する(S420)。出力データ比較部33は、リーダ自身の出力データと各フォロワの出力データを照合する(S422)。
リーダ10Aと同じ出力データのフォロワの数が多数(例えば、半数以上)の場合(S423:YES)、出力判定部33は、リーダ10Aの出力データは正しいと判断し、その出力データを端末2に送信する(S406)。
一方、出力データの異なるフォロワの数が多数(例えば、半数以上)の場合(S423:NO)、出力判定部33は、リーダ10A自身に何らかの障害が発生している可能性があると判断する。そこで、出力判定部33は、リーダの機能を停止し、フォロワたちに新たなリーダを選出するよう要請する(S407)。
以上の処理によれば、リーダ10Aは、図15の処理フローのように、出力正否情報80をフォロワに送信する必要がない。したがって、計算機ノード間の通信トラフィックを軽減することができる。
(第4の実施形態)
第4の実施形態は、フォロワからの追従可否情報90の可否を、リーダ10Aの出力の正否の検証に利用する。
図21は、第4の実施形態に係るリーダ10Aの出力の正否判定処理を示すフローチャートである。ステップS600〜S602の処理は、図19のステップS500〜S502と同様の処理なので、説明を省略する。
追従判定部34は、追従可否情報90の追従可否フラグ91を集計し、「可」の追従可否フラグ91が多数の場合(S602:「可」が多い)、リーダ10Aの出力データは正しいと判断して、その出力データを端末2に送信する(S603)。「不可」と判定したフォロワには、何らかの障害が発生している可能性があると判断する。そこで、追従判定部34は、そのフォロワをFTシステム1から切り離す(S604)。
一方、「不可」の追従可否フラグ91が多数の場合(S602:「不可」が多い)、リーダ10Aの出力データは正しくない可能性があると判断される。リーダ10Aの出力データは、端末2に送信されない。追従判定部34は、フォロワたちに新しいリーダを選出するように要請すると共に、自ノードであるリーダ10AをFTシステム1から切り離す(S605)。
以上の処理では、各フォロワは、出力情報70をリーダ10Aに送信する必要がないので、計算機ノード間の通信トラフィックを軽減することができる。
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
本実施形態は、例えば以下のように表現できる。
複数の計算機ノードから構成される計算機システムであって、
前記複数の計算機ノードのうち1台の計算機ノードが第1の計算機ノードとなり、
前記第1の計算機ノードは、
所定の要求を実行して出力データを生成する実行部と、
前記出力データが正しいか否かを他の計算機ノードに問い合わせ、所定の数の他の計算機ノードから正しい旨の回答を得たとき、前記出力データは正しいと判断する出力判定部と、
を備える計算機システム。
また、本実施形態は、例えば以下のようにも表現できる。
複数の計算機ノードから構成される計算機システムであって、
前記複数の計算機ノードのうち1台の計算機ノードが第1の計算機ノードとなり、
前記複数の計算機ノードのうち前記第1の計算機ノード以外の他の計算機ノードが第2の計算機ノードとなり、
前記第1の計算機ノードと、前記第2の計算機ノードはそれぞれ、
所定の処理を実行して出力データを生成する実行部と、
出力が正しいか否かを判定する出力判定部と、
を備え、
前記第1の計算機ノードは、
自ノードの前記実行部において、所定の処理を実行して第1の出力データを生成し、
自ノードの出力判定部において、前記第1の出力データが正しいか否かを、前記第2の計算機ノードに問い合わせ、所定の数の前記第2の計算機ノードから正しい旨の回答を得たとき、前記第1の出力データは正しいと判断し、
前記第2の計算機ノードは、
自ノードの前記実行部において、前記第1の計算機ノードで実行された所定の処理と同じ処理を実行して第2の出力データを生成し、
自ノードの出力判定部において、前記第1の計算機ノードからの問い合わせを受け、前記第1の出力データと前記第2の出力データが同様の結果であるか否かを判定し、判定結果が肯定的である場合、前記第1の出力データは正しい旨の回答を前記第1の計算機ノードに伝える
計算機システム。
1:フォールトトレラントシステム、2:端末、10:計算機ノード、10A:リーダ、10B、10C:フォロワ

Claims (7)

  1. 複数の計算機ノードが通信ネットワークを介して接続される計算機システムであって、
    前記複数の計算機ノードのうち1台の計算機ノードがリーダ計算機ノードとなり、
    前記複数の計算機ノードのうち前記リーダ計算機ノード以外の他の計算機ノードがフォロワ計算機ノードとなり、
    前記リーダ計算機ノードと前記フォロワ計算機ノードとでそれぞれ同一のタスクを実行するようになっており、
    前記リーダ計算機ノードと、前記フォロワ計算機ノードはそれぞれ、
    通信ネットワークを介して他の計算機ノードと通信する通信インタフェース部と、
    データを記憶する記憶部と、
    前記タスクから前記記憶部へのアクセス要求を実行するアクセス実行部と、
    前記アクセス実行部で実行された実行結果が正しいか否かを判定する実行結果判定部と、
    を備え、
    前記リーダ計算機ノードは、
    自ノードのアクセス実行部において、第1のタスクから要求された第1のアクセス要求に基づいて第1の出力データを生成し、
    自ノードの出力判定部において、前記第1の出力データが正しいか否かを、前記フォロワ計算機ノードに問い合わせ、所定の数の前記フォロワ計算機ノードから正しい旨の回答を得たとき、前記第1の出力データは正しいと判断し、
    前記フォロワ計算機ノードは、
    自ノードのアクセス実行部において、前記第1のタスクと同様の処理を行う第2のタスクから要求された第2のアクセス要求に基づいて第2の出力データを生成し、
    自ノードの出力データ判定部において、前記リーダ計算機ノードからの問い合わせを受け、前記第1の出力データと前記第2の出力データが同様のデータであるか否かを判定し、判定結果が肯定的である場合、前記第1の出力データは正しい旨の回答を前記リーダ計算機ノードに送信する
    計算機システム。
  2. 前記複数の計算機ノードは、前記通信インタフェース部を介して外部装置から入力データを受信する外部アクセス実行部をさらに有し、
    前記リーダ計算機ノードは、
    自ノードの外部アクセス実行部において、受信した入力データを前記フォロワ計算機ノードに送信し、
    前記フォロワの計算機ノードは、
    自ノードのアクセス実行部において、前記リーダ計算機ノードから送信された入力データをタスクに通知する、
    請求項1記載の計算機システム。
  3. 前記リーダ計算機ノードのアクセス実行部が複数のアクセス要求を所定の順序で実行するとき、前記フォロワ計算機ノードのアクセス実行部は、前記リーダ計算機ノードのアクセス実行部が実行したアクセス要求と同様の処理を行うアクセス要求を、前記リーダ計算機ノードのアクセス実行部と同じ順序で実行する、
    請求項1及び2のいずれかに記載の計算機システム。
  4. 前記リーダ計算機ノードの出力判定部は、半数以上の前記フォロワ計算機ノードから出力データが正しい旨の回答を得たとき、当該リーダ計算機ノードのアクセス実行部が生成した出力データは正しいと判断する、
    請求項1及び2のいずれかに記載の計算機システム。
  5. 前記複数の計算機ノードは、前記フォロワ計算機ノードのアクセス実行部が前記リーダ計算機ノードのアクセス実行部と同様の処理を実行できているか否かを判定する追従判定部をさらに有し、
    前記フォロワ計算機ノードの追従判定部は、前記フォロワ計算機ノードで実行されるアクセス要求が、前記リーダ計算機ノードで実行されるアクセス要求のいずれかと対応関係であるか否かを判定し、判定結果が肯定的であるときは、前記リーダ計算機ノードに追従可能である旨の通知を送信し、判定結果が否定的であるときは、前記リーダ計算機ノードに追従不可能である旨の通知を送信する、
    請求項1記載の計算機システム。
  6. 複数の計算機ノードが通信ネットワークを介して接続されており、
    前記複数の計算機ノードのうち1台の計算機ノードがリーダ計算機ノードとなり、
    前記複数の計算機ノードのうち前記リーダ計算機ノード以外の他の計算機ノードがフォロワ計算機ノードとなり、
    前記リーダ計算機ノードと前記フォロワ計算機ノードとでそれぞれ同一のタスクを実行するようになっており、
    前記リーダ計算機ノードは、
    自ノードにおいて、第1のタスクから要求された第1のアクセス要求に基づいて第1の出力データを生成するステップと、
    自ノードにおいて、前記第1の出力データが正しいか否かを、前記フォロワ計算機ノードに問い合わせ、所定の数の前記フォロワ計算機ノードから正しい旨の回答を得たとき、前記第1の実行結果は正しいと判断するステップと、を有し、
    前記フォロワ計算機ノードは、
    自ノードにおいて、前記第1のタスクと同様の処理を行う第2のタスクから要求された第2のアクセス要求に基づいて第2の出力データを生成するステップと、
    自ノードにおいて、前記リーダ計算機ノードからの問い合わせを受け、前記第1の出力データと前記第2の出力データが同様のデータであるか否かを判定し、判定結果が肯定的である場合、前記第1の出力データは正しい旨の回答を前記リーダ計算機ノードに送信するステップと、を有する、
    データ処理方法。
  7. 複数の計算機ノードが通信ネットワークを介して接続されており、
    前記複数の計算機ノードのうち1台の計算機ノードがリーダ計算機ノードとなり、
    前記複数の計算機ノードのうち前記リーダ計算機ノード以外の他の計算機ノードがフォロワ計算機ノードとなり、
    前記リーダ計算機ノードと前記フォロワ計算機ノードとでそれぞれ同一のタスクを実行するようになっており、
    前記リーダ計算機ノードで実行されるコンピュータプログラムは、
    自ノードにおいて、第1のタスクから要求された第1のアクセス要求に基づいて第1の出力データを生成するステップと、
    自ノードにおいて、前記第1の出力データが正しいか否かを、前記フォロワ計算機ノードに問い合わせ、所定の数の前記フォロワ計算機ノードから正しい旨の回答を得たとき、前記第1の出力データは正しいと判断するステップと、を有し、
    前記フォロワ計算機ノードで実行されるコンピュータプログラムは、
    自ノードにおいて、前記第1のタスクと同様の処理を行う第2のタスクから要求された第2のアクセス要求に基づいて第2の出力データを生成するステップと、
    自ノードにおいて、前記リーダ計算機ノードからの問い合わせを受け、前記第1の出力データと前記第2の出力データが同様のデータであるか否かを判定し、判定結果が肯定的である場合、前記第1の出力データは正しい旨の回答を前記リーダ計算機ノードに送信するステップと、を有する、
    データ処理プログラム。
JP2013505722A 2011-03-23 2011-03-23 計算機システム、データ処理方法、及びデータ処理プログラム Expired - Fee Related JP5416863B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2011/056972 WO2012127652A1 (ja) 2011-03-23 2011-03-23 計算機システム、データ処理方法、及びデータ処理プログラム

Publications (2)

Publication Number Publication Date
JP5416863B2 true JP5416863B2 (ja) 2014-02-12
JPWO2012127652A1 JPWO2012127652A1 (ja) 2014-07-24

Family

ID=46878845

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013505722A Expired - Fee Related JP5416863B2 (ja) 2011-03-23 2011-03-23 計算機システム、データ処理方法、及びデータ処理プログラム

Country Status (4)

Country Link
EP (1) EP2690557B1 (ja)
JP (1) JP5416863B2 (ja)
CN (1) CN103180832B (ja)
WO (1) WO2012127652A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6100135B2 (ja) * 2013-09-26 2017-03-22 株式会社日立製作所 フォールトトレラントシステム及びフォールトトレラントシステム制御方法
JP2017027092A (ja) * 2013-12-03 2017-02-02 三菱電機株式会社 データ処理装置およびデータ処理プログラム

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121490A (ja) * 1993-08-31 1995-05-12 Toshiba Corp 多重処理システムおよびプログラム実行制御方法
JPH07306794A (ja) * 1994-05-12 1995-11-21 Mitsubishi Electric Corp 分散システム及び分散システムの高信頼化方法
JPH08314744A (ja) * 1995-05-18 1996-11-29 Hitachi Ltd フォールトトレラントシステム
JPH1040227A (ja) * 1996-04-30 1998-02-13 Internatl Business Mach Corp <Ibm> 分散コンピューティング環境におけるグループ・リーダ回復のためのシステム
JP2003067214A (ja) * 2001-08-27 2003-03-07 Nippon Telegr & Teleph Corp <Ntt> サーバシステム、仲介装置、クライアントサーバ型システムにおける誤り隠蔽方法
JP2003140704A (ja) * 2001-11-06 2003-05-16 Yamatake Sangyo Systems Co Ltd プロセス制御装置
JP2004046356A (ja) * 2002-07-09 2004-02-12 Fujitsu Ltd 高信頼性クラスタシステムおよびそれを実現するプログラム
JP2004355233A (ja) * 2003-05-28 2004-12-16 Nec Corp 耐障害システム、プログラム並列実行方法、耐障害システムの障害検出装置およびプログラム
JP2005196763A (ja) * 2003-12-30 2005-07-21 Microsoft Corp 簡略化されたpaxos
JP2009217503A (ja) * 2008-03-10 2009-09-24 Hitachi Ltd 計算機システム、計算機制御方法及び計算機制御プログラム
US20100107158A1 (en) * 2008-10-28 2010-04-29 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2500038B2 (ja) * 1992-03-04 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセッサ・コンピュ―タ・システム、フォ―ルト・トレラント処理方法及びデ―タ処理システム
JP4345334B2 (ja) * 2003-03-28 2009-10-14 日本電気株式会社 耐障害計算機システム、プログラム並列実行方法およびプログラム
JP2011039798A (ja) * 2009-08-12 2011-02-24 Hitachi Ltd 多重化コンピュータシステム、コンピュータおよびコンピュータ間処理同期化方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07121490A (ja) * 1993-08-31 1995-05-12 Toshiba Corp 多重処理システムおよびプログラム実行制御方法
JPH07306794A (ja) * 1994-05-12 1995-11-21 Mitsubishi Electric Corp 分散システム及び分散システムの高信頼化方法
JPH08314744A (ja) * 1995-05-18 1996-11-29 Hitachi Ltd フォールトトレラントシステム
JPH1040227A (ja) * 1996-04-30 1998-02-13 Internatl Business Mach Corp <Ibm> 分散コンピューティング環境におけるグループ・リーダ回復のためのシステム
JP2003067214A (ja) * 2001-08-27 2003-03-07 Nippon Telegr & Teleph Corp <Ntt> サーバシステム、仲介装置、クライアントサーバ型システムにおける誤り隠蔽方法
JP2003140704A (ja) * 2001-11-06 2003-05-16 Yamatake Sangyo Systems Co Ltd プロセス制御装置
JP2004046356A (ja) * 2002-07-09 2004-02-12 Fujitsu Ltd 高信頼性クラスタシステムおよびそれを実現するプログラム
JP2004355233A (ja) * 2003-05-28 2004-12-16 Nec Corp 耐障害システム、プログラム並列実行方法、耐障害システムの障害検出装置およびプログラム
JP2005196763A (ja) * 2003-12-30 2005-07-21 Microsoft Corp 簡略化されたpaxos
JP2009217503A (ja) * 2008-03-10 2009-09-24 Hitachi Ltd 計算機システム、計算機制御方法及び計算機制御プログラム
US20100107158A1 (en) * 2008-10-28 2010-04-29 Vmware, Inc. Low overhead fault tolerance through hybrid checkpointing and replay

Also Published As

Publication number Publication date
CN103180832B (zh) 2016-01-13
EP2690557A1 (en) 2014-01-29
EP2690557B1 (en) 2015-05-13
JPWO2012127652A1 (ja) 2014-07-24
WO2012127652A1 (ja) 2012-09-27
CN103180832A (zh) 2013-06-26
EP2690557A4 (en) 2014-08-20

Similar Documents

Publication Publication Date Title
US7747897B2 (en) Method and apparatus for lockstep processing on a fixed-latency interconnect
US9240937B2 (en) Fault detection and recovery as a service
WO2018107772A1 (zh) 写入请求处理方法、装置及设备
JP2019516171A (ja) サービス処理方法、デバイス、及びシステム
US11070979B2 (en) Constructing a scalable storage device, and scaled storage device
JP2009116392A (ja) ライセンス管理装置、ライセンス管理方法及びライセンス認証プログラム
US20180081776A1 (en) Automated System-Level Failure and Recovery
JP6183931B2 (ja) クラスタシステム、サーバ装置、クラスタシステムの管理方法、及びプログラム。
US8015432B1 (en) Method and apparatus for providing computer failover to a virtualized environment
KR20220013846A (ko) 블록체인 네트워크의 블록 합의 방법 및 장치
WO2013027649A1 (ja) 仮想データセンタシステム
JP5366858B2 (ja) クラスタシステム、および、クラスタシステムにおける系切替え方法
JP5416863B2 (ja) 計算機システム、データ処理方法、及びデータ処理プログラム
EP2913771A1 (en) Cluster license server
JP2006178659A (ja) フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法
US9172584B1 (en) Method and system for high-availability cluster data protection
US20190124145A1 (en) Method and apparatus for availability management
CN111488247A (zh) 一种管控节点多次容错的高可用方法及设备
CN102841895A (zh) 一种处理数据库状态转移的方法和系统
CN112882771A (zh) 应用系统的服务器切换方法及装置、存储介质及电子设备
JP2020095322A (ja) 分散ファイル装置、フェイルオーバ方法、プログラム及び記録媒体
JP2018206233A (ja) 情報処理装置、プロセス切り替え方法及びプログラム
WO2024004485A1 (ja) ブロックチェーンネットワークの構成方法及びその方法を実施するためのコンピュータソフトウエアプログラム
JP2008287512A (ja) 計算機及び分散データ処理システム及びデータ処理方法及びプログラム
JP2012133622A (ja) 計算機切替システム、計算機切替プログラム、および計算機切替方法

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131105

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131115

R150 Certificate of patent or registration of utility model

Ref document number: 5416863

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees