JP2014532921A - 高可用性クラスタにおけるスプリット・ブレイン耐性フェイルオーバ - Google Patents

高可用性クラスタにおけるスプリット・ブレイン耐性フェイルオーバ Download PDF

Info

Publication number
JP2014532921A
JP2014532921A JP2014538959A JP2014538959A JP2014532921A JP 2014532921 A JP2014532921 A JP 2014532921A JP 2014538959 A JP2014538959 A JP 2014538959A JP 2014538959 A JP2014538959 A JP 2014538959A JP 2014532921 A JP2014532921 A JP 2014532921A
Authority
JP
Japan
Prior art keywords
master
current
quorum
candidates
machines
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.)
Granted
Application number
JP2014538959A
Other languages
English (en)
Other versions
JP6084624B2 (ja
Inventor
ダルトン、マイケル・ダブリュー
Original Assignee
ゼッタセット インコーポレイテッド
ゼッタセット インコーポレイテッド
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=48168449&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2014532921(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by ゼッタセット インコーポレイテッド, ゼッタセット インコーポレイテッド filed Critical ゼッタセット インコーポレイテッド
Publication of JP2014532921A publication Critical patent/JP2014532921A/ja
Application granted granted Critical
Publication of JP6084624B2 publication Critical patent/JP6084624B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • 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
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/2028Failover techniques eliminating a faulty processor or activating a spare
    • 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/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Hardware Redundancy (AREA)

Abstract

【課題】ノード間、より詳細には、対応するノードにおけるマスタ候補マシン間のフェイルオーバを提供するように同期ステート・レプリケーションをサポートする方法及びHAクラスタを提供する。【解決手段】HAクラスタには少なくとも2台のマスタ候補(m=2)が存在し、カレント・マスタの選出は、クォーラム・マシン群からのクォーラムベースの多数決によって行われる。クォーラム・マシンの台数nは、少なくとも3でありかつ奇数である(n≧3であり、nは奇数)。カレント・マスタには、カレント・マスタのローカル・クロックで測定することにより求められるカレントの期限付きリースが発行される。リースの持続期間または期間を設定する際、当該持続期間を相対的なクロック・スキューを用いて或る上限に抑制するので、フェイルオーバ・イベント中のスプリット・ブレイン状態への耐性が保証される。【選択図】図1

Description

本発明は、全体として、ネットワーク・クライアントにサービスを提供する複数のマシンから構成される高可用性(ハイ・アベイラビリティ:HA)クラスタにおける障害及びデータ損失を抑制することに関し、より詳細には、マスタ候補のプール内のクラスタ・マシン間のフェイルオーバを提供するとともに、該クラスタ・マシン間でのスプリット・ブレイン状態を回避することに関する。
今日、コンピュータ・クラスタは通常、地理的に同じ場所に配置されている。そのようなクラスタはまた、多数のノードによって構成されている。各ノードは、それに対応するサーバ、コンピュータまたは他のノードデバイス(通常は単にマシンと呼ばれる)に関連付けられている。クラスタは、記憶装置(例えば、ハードディスクまたは他の大容量記憶装置)などのリソース、及び様々な種類の周辺機器リソース(例えば、モニタまたはプリンタ)を有している。加えて、一般的なコンピュータ・クラスタのインフラは、スイッチ、ルータ、ハブなどを含む。このインフラを用いて、クライアント(例えばパーソナル・コンピュータ)は、インターネットなどの広域ネットワーク(WAN)上でクラスタに接続し、クラスタのサービス及びリソースを利用することができる。最も一般的なサービスには、電子メールなどのリモート・アプリケーションが含まれる。
クラスタは、広域ネットワークに接続されているが、通常は、それ自体の別個のローカル・エリア・ネットワーク(LAN)上で実行される。このローカル・ネットワークは、ノード間のプライベート接続を提供する。プライベート接続は、例えば、ノード間の通信及び他の有用な機能のために用いることができる。前記機能には、同期信号(マスタ・クロック)の分配、及び、ノードの状態を確認するためのあるいは様々なクラスタ・リソースに独立的にアクセスするためのノード間でのハートビート信号の授受が含まれる。
最近までは通常、ノード間で、クラスタ・リソース、特に大容量記憶装置(マス・ストレージ)を共有していた。しかし残念なことに、共有ストレージ・リソースは通常、クラスタにおける単一障害点を生じさせる。さらに、共有ストレージ・リソースは、クラスタ・ノードは生きているがノード間のネットワークの接続性が失われるというスプリット・ブレイン状態の影響を受けやすい。スプリット・ブレイン状態では、複数のノードが独立的に競ってクラスタ及びそのリソースの制御を引き継ごうとする。このことは、例えば2つ以上のノードが同時にファイル・システムをマウントして書き込みを行おうとする場合に、非常に有害な結果をもたらすおそれがある。
クラスタのノード群は、ノード障害に対する耐性を確保するために、協調を要する。この理由により、通常は、1つのノードが、アクティブ・ノード、リーダー・ノードまたはマスタ・ノードとして選択される。クラスタのマスタ・ノードに障害(フェイル)が発生した場合、クラスタは自動的に新たなマスタに切り替える(オーバ)。このプロセスは、フェイルオーバと呼ばれる。このフェイルオーバ・プロセスが迅速に行われ、クライアントへのサービス提供の途絶が最小限に抑えられることを確実にすることが望ましいことは明らかである。このことは、特に、多数のクライアントに対して実質的に連続したサービスを提供することを目的とする最近の「HA(ハイ・アベイラビリティ)」クラスタに当てはまる。
当然ながら、コンピュータ・クラスタの出現前に、個々のコンピュータのフォールト・トレランス(耐障害性)は既知の問題であった。具体的には、コンピュータに、冗長な中央演算処理装置(CPU)、電源、バスなどを提供してコンピュータ間でのフェイルオーバを確保するというアイデアが、多くの文献に記載されている。例えば、米国特許第7,441,150号明細書(特許文献1)には、1次系システムと2次系システムとを用いるフォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法が開示されている。
しかし残念ながら、新しいコンテキストにただ単に再適用するには、フォールト・トレラントであるコンピュータとフォールト・トレラントであるクラスタとではシステム間でのフェイルオーバに関わる問題が十分に類似していない。また一方、過去20年間の傾向は、単一のマシンのデザインから、1つ1つの構成要素が冗長化されたメインフレームや個々のサーバではなく、個々のマシンが冗長でありかつ故障が発生してもよいような分散システムに変化してきている。
フォールト・トレランスに対しての様々な従来技術のアプローチの中から、信頼性が低いプロセッサまたはコンピュータのネットワークにおいて合意(コンセンサス)の問題を解決するための様々なプロトコルを見つけることができるであろう。合意は、参加者のグループにおいて、1つの結果、例えばネットワーク・リーダーなどについて合意を得るプロセスである。参加者、すなわち個々のコンピュータまたはプロセッサ、あるいはそれらの通信媒体に障害が発生する可能性がある場合、この問題は困難なものとなる。この問題に対処するための最も効果的な方法の1つは、参加しているコンピュータ群の中でクォーラム(定足数)投票を行ってリーダーを選出・変更することを含む。Paxosプロトコルは、クォーラム投票及び必要な実行ステップについての最もよく知られた従来技術の1つである。このプロトコルの様々な顕著な特徴は、米国特許第5,261,085号明細書(特許文献2)に記載されている。
従来技術には、コンピュータ・クラスタにおいて、フェイルオーバをスピードアップし、かつサービスの途絶を最小限に抑えるための適切な同期アーキテクチャ及び同期方法についての様々な教示も含まれている。例えば、米国特許第7,194,652号明細書(特許文献3)には、或る制御プロセッサが「アクティブ」のときに別の制御プロセッサが「待機(スタンバイ)」モードに保たれる「HA」システムが教示されている。待機中のプロセッサには、アクティブなプロセッサのステート情報が、「待機画像」の形式で連続的に提供される。待機画像はアクティブ画像に同期しているので、アクティブ制御プロセッサに障害が発生した場合に、待機中のプロセッサによるアクティブ・モードへの迅速な移行が可能である。このアプローチはHAクラスタにおけるフェイルオーバに適しているが、特許文献3に教示されている方法及びアーキテクチャは、スプリット・ブレイン問題に対処していない。
米国特許第7,590,886号明細書(特許文献4)もまた、フォールト・トレラントなシステムにおけるデバイスの冗長性を促進する問題を扱っている。このシステムは、アクティブの役割を果たすデバイス及びスタンバイの役割を果たすデバイスを有している。フォールト・トレランスを確実にするために、コンフィギュレーション・シーケンス番号を増加させることによる定期的なアドバタイズメントが、アクティブの役割を果たすデバイス及び冗長グループのデバイスの各々の間で交換される。デバイスのステート変化は、非同期的に伝えられる。この教示は、フォールト・トレラント・システムを可能にするが、多数のノード及びリソース並びに大量のステート情報を有するHAクラスタには適していない。特に、クラスタ用途では、特許文献4の教示は、効率的なフェイルオーバ及びスプリット・ブレイン耐性を可能にしないであろう。
米国特許第7,953,890号明細書(特許文献5)には、新たなクラスタ協調リソースまたはクラスタ・コーディネータ・マシンへの切り替え方法が教示されている。前記コーディネータは、スプリット・ブレイン状態を防止するために、所与の時点で何のサービスを実行することができて何のサービスを実行することができないのかを判断する単一のマシンである。このアプローチにおいて、クラスタの各ノードは、新たなコーディネータ・リソースを使用することをコミットする必要がある。このことは、1以上のノードがオフラインである場合に、クラスタまたはその一部が不能になることを意味する。さらに、このアプローチは、個々のクラスタ・ノードのより低いレベルではなく、クラスタ全体のレベルで適用される。最後に、前記コーディネータは単一のマシンであるので、コーディネータがバックアップされて初めて有効なフェイルオーバが提供される。
クラスタレベルでのスプリット・ブレイン状態の防止を補助しながらのフェイルオーバに関してのさらなる教示は、米国特許第8,001,413号明細書(特許文献6)に見ることができる。この場合、前記教示は、データセンター全体のレベルで適用される。データセンターは、該データセンターのアクティブ化を制御するデータセンタ・アクティブ化コーディネータを登録する。パッシブ/バックアップ・データセンター及び以前はアクティブであったデータセンターが同時に「サービスイン(go live)」することができないことを確実にし、それによってスプリット・ブレイン状態の防止に役立つように、タイムアウトが用いられる。特許文献6の教示は、スプリット・ブレイン状態に対処しており2つのデータセンターが同時にオンラインになることを避けることはできるが、個々のクラスタ・ノード間の自動的なフェイルオーバと、これらのクラスタ・ノード間でのスプリット・ブレイン状態の防止とを同時に行うのには適していない。
要するに、様々な有用な方法及びプロトコルが利用可能であるという事実にもかかわらず、従来技術は、HAクラスタにおけるフェイルオーバを確実にし、かつスプリット・ブレイン状態を防止するための統合された効果的な方法を提供していない。
米国特許第7,441,150号明細書(特開2006−178659) 米国特許第5,261,085号明細書 米国特許第7,194,652号明細書 米国特許第7,590,886号明細書 米国特許第7,953,890号明細書 米国特許第8,001,413号明細書
本発明は、上記の問題点に鑑みてなされたものであり、本発明の目的は、HAクラスタにおいてスプリット・ブレインの起こりにくいフェイルオーバを実現する統合された方法を提供することである。より正確に言えば、本発明の目的は、クォーラムベースの多数決方式と、期限付きリース(time-limited lease)とを組み合わせて、高度にフォールト・トレラントなクラスタの動作を保証することである。
本発明の別の目的は、クォーラムベースの多数決を用いる標準的なネットワーキング・プロトコル、例えば、PaxosプロトコルまたはZAB(ZooKeeper Atomic Broadcast)プロトコルなどを用いて、上記方法を容易に活用できることを保証することである。
本発明のさらに別の目的は、ローカル・ハードディスクに書き込まれるレガシー・アプリケーションの安全なフェイルオーバさえも可能にする同期ステート・レプリケーションを用いて、高速の、スプリット・ブレインの起こりにくいフェイルオーバを提供することである。
本発明のこれらの及び多くの他の目的及び利点は、以下の説明から明らかになるであろう。
本発明の目的及び利点は、HAクラスタのノード間でのフェイルオーバを提供するようにステートを同期的にレプリケートする方法によって獲得される。ノード群には、1つ以上のネットワーク・クライアントにサービスを提供するために、適切なマシン群、例えば、コンピュータ、サーバまたは処理能力を有する他のデバイスなどが含まれる。本方法に従って、クラスタに属するマシン群の中からm台のマスタ候補及びn台のクォーラム・マシンが特定される。フェイルオーバを提供するために、少なくとも2台のマスタ候補が存在していなければならない(m≧2)。意味のあるクォーラム(定足数)を保証するために、少なくとも3台のクォーラム・マシンが存在していなければならず、クォーラム・マシンの台数は奇数でなければならない(n≧3であり、nは奇数)。
マシンが機能を共有することは可能、すなわち、マスタ候補は原理的にはクォーラム・マシンであってもよいが、マスタ候補及びクォーラム・マシンは互いに異なるマシンであることが好ましい。さらに、クォーラム・マシンは、通常は所与のクラスタ内に併置されるが、好適には互いにアイソレートして配置すべきである。
動作中、m台のマスタ候補の各々は同期的に更新(アップデート)され、カレント・ステートが維持される。ステートには、マシン上で実行しているアプリケーション(コード)によって決定的に実行されることになる一連のマシン入力が含まれる。同じマシン入力から始まり同じアプリケーションを実行するマシンの出力は同じになることに留意されたい。マシン間の同期更新は、ローカル・エリア・ネットワーク上で行うことが好ましい。その一方で、提供されるサービスには、通常、広域ネットワーク上での通信が含まれることになり、ネットワーク・クライアントは広域ネットワーク上でクラスタにアクセスする。適切な広域ネットワークには、インターネットが含まれる。
本方法はさらに、m台のマスタ候補の中からカレント・マスタを選出することを必要とする。選出(エレクション)は、クォーラム・マシン群の中からクォーラムベースの多数決(当分野において「クォーラムベースの多数決によるリーダー選出(quorum-based majority vote leadership election)」または「クォーラムベースの多数決による分散合意(quorum-based majority vote distributed consensus)」とも呼ばれる)によって行われる。このようにして選出されたカレント・マスタには、或る期間の、好適には約数秒または数十秒間の期限付きのカレントのリースが発行される。このリースは、カレント・マスタに属するローカル・クロック(局所時計)で測定することにより求められる。リースを保持している間、あるいは別の言い方をすればリースが終わるまで、カレント・マスタは、1つ以上のネットワーク・クライアントによって要求された1つ以上のサービスを実行する。
本発明に従って、カレントの期限付きリース(current time-limited lease)の相対的なクロック・スキューは、或る上限によって抑制(bound)される。相対的なクロック・スキューを抑制するステップは、データ補正(data corrections)間の遅延の比較から相対的なクロック・スキューを推定するステップに基づくことが好ましい。その後、これらの遅延に基づいて上限が調節される。あるいは、前記上限は、ローカル・クロックの物理的特性から決定される。クロックは、様々な因子(本明細書においては全体として物理的特性と呼ぶ)に起因して、ドリフトすることが知られている。本発明の目的のために最も適した物理的特性の中には、熱ドリフト及び発振器ドリフトが含まれる。相対的なクロック・スキューを抑制するさらに別のアプローチは、セントラル・クロックとの比較から実行することができ、セントラル・クロックは、(クラスタ内に)併置されるかまたは外付けであるかのいずれかである。
本方法に従って構成したとき、カレント・マスタに障害が発生した場合に、m台のマスタ候補の中から選出された新たなマスタへのフェイルオーバがトリガされることになる。新たなマスタは、新たな期限付きリースを発行され、最大クロック・スキュー以上の期間待った後、マスタのサービスを開始する。この方法は、マスタ候補がカレント・マスタであろうとなかろうと、マスタ候補間のスプリット・ブレイン状態を効果的に防止する。障害が発生したマスタのリースに時間の制約があるという事実がその主な理由であり、さらなる理由については以下に詳細な説明において説明する。
或る好適実施形態では、本方法はさらに、m台のマスタ候補の中からカレント・バックアップ・マスタを選出することにまで及ぶ。それゆえ、カレント・マスタに障害が発生した場合には、フェイルオーバよりも前に引き継ぎが決定される。今度の場合も、投票はクォーラム・マシン間におけるクォーラムベースの多数決である。カレント・マスタに障害が発生した場合、フェイルオーバはカレント・バックアップ・マスタに向かう。
いくつかの実施形態では、候補マスタ・マシンの台数mが動的に増加または減少される。台数mを増加させる際には、HAクラスタに属する新たな候補マシンが特定され、同期的に更新されて、カレント・ステートが維持される。新たな候補マシンが最大限のカレント・ステートを有するに至ったら、新たな候補マシンがm台のマスタ候補に加えられ、台数mが増加される(m=m+1)。同様に、台数mを減少させる際には、m台のマスタ候補の中から特定の候補マシンが特定され、マスタ候補群の中から除外される。台数mはそれに応じて減少される(m=m−1)。
本発明の方法は、1つ以上のネットワーク・クライアントにレガシー・アプリケーションを供するのに特に良く適している。レガシー・アプリケーションは、HAクラスタの適切なリソース群のうちの任意のリソースに存在することができる。
本発明の方法はまた、1つ以上のネットワーク・クライアントにサービスを提供するHAクラスタを動作させることにまで及ぶ。
本方法は、HAクラスタのノード間においてスプリット・ブレイン状態を生じさせることなくフェイルオーバを提供する。上記したように、先ず、クラスタ・マシン群の中からm台のマスタ候補(m≧2)及びn台のクォーラム・マシン(n≧3であり奇数)が特定される。m台のマスタ候補は同期的に更新されて、カレント・ステートが維持される。m台のマスタ候補の中から、クォーラム・マシン間で決められるクォーラムベースの多数決により、カレント・マスタが選出される。カレント・マスタは、そのローカル・クロックによって測定されることになるカレントの期限付きリースを発行され、この期限付きリースを保持している間に、カレント・マスタは、ネットワーク・クライアントによって要求されたサービスを実行する。
期限付きリースは、相対的なクロック・スキューによって或る上限に抑制される。カレント・マスタに障害が発生したとき、カレント・マスタは新たなマスタへのフェイルオーバをトリガし、新たな期限付きリースが発行される。
本発明はまた、マシン間においてスプリット・ブレイン状態を生じさせることなくフェイルオーバを行う能力を有するHAクラスタに適用される。今度の場合も、クラスタに含まれるマシン群の中からm台のマスタ候補及びn台のクォーラム・マシンが特定される。ここで、m≧2、n≧3であり、nは奇数である。ローカル・ネットワークは、m台のマスタ候補を同期的にレプリケートしかつ更新するために用いられる。
クォーラムベースの多数決プロトコルは、n台のクォーラム・マシンによって、m台のマスタ候補の中からカレント・マスタを選出するために実行される。さらに、カレント・マスタにカレントの期限付きリースを発行するための機構が設けられる。カレントの期限付きリースは、カレント・マスタに属するローカル・クロックで測定することにより求められる。カレントの期限付きリースの相対的なクロック・スキューは、物理パラメータを用いて或る上限に抑制される。
カレント・マスタに障害が発生した場合、新たなマスタへのフェイルオーバがトリガされ、新たなマスタには新たな期限付きリースが発行される。相対的なクロック・スキューから決定される上限を有する期限付きリースを用いることにより、スプリット・ブレイン状態が回避される。そのような状況は、マシン間の接続が失われるなどの障害状態中に、互いに異なるマスタ候補が、当該マスタ候補がカレント・マスタであると仮定したときに発生し得る。
クォーラムベースの多数決プロトコルは、様々な方法で実行することができる。例えば、HAクラスタにおいてPaxosプロトコルまたはZooKeeperクラスタ管理を採用することができる。さらに、本発明に従うHAクラスタは、ドメイン名などの過失による上書きに特に敏感なデータにサービスを提供するのに特によく適している。それゆえ、マスタ候補がネーム・ノード・マスタ候補であるときに、本発明が有利に適用される。
クラスタは、様々なコンフィギュレーション及びアーキテクチャを実装し得る。さらに、ノードは、リソース群がクラスタ全体にわたって分布しているストレージ・システムを利用することが好ましい。例えば、ストレージ・システムは、多数のブロック・ストレージ・デバイス、例えばハードディスク・ドライブで構成される。
本発明について、その好適実施形態を含めて、以下の詳細な説明において添付の図面を参照しながら詳細に説明する。
本発明の主な特徴を示す、HAクラスタを含むネットワーキング・システムの図。 図1のHAクラスタに含まれるクォーラム・マシンのプールの詳細図。 図1のHAクラスタに含まれるマスタ候補のプールの詳細図。 本発明に従い相対的なクロック・スキューによって抑制された期限付きリースの働きを示すタイミング図。 本発明に従う別のHAクラスタであって、相対的なクロック・スキューから決定される始終端を有する期限付きリース及びクォーラムベースの多数決をデプロイするHAクラスタの図。
初めに図1のハイレベル図を参照することにより、本発明が最も良く理解されるであろう。この図は、ネットワーキング・システム100を示しており、ここで、ネットワーク・クライアント102a、102bがHAクラスタ104に接続されている。明確にするために、図1には2台のクライアント102a、102bしか示していない。しかし、当然のことながら、クラスタ104は通常、多数の(例えば、約数千、数万またはそれ以上の)クライアントをサポートする。
ネットワーキング・システム100には、広域ネットワーク106すなわちWAN、例えばインターネット及び/またはさらに他の単数または複数の広域ネットワークが含まれる。WAN106は、HAクラスタ104にデプロイされたサービスが提供される場所において、クライアント102a、102bにアクセス可能であることが重要である。クライアント102a、102b間の物理接続108a、108b及びWAN106は、有線、無線、光導波路などを含む任意の適切な技術によって達成することができる。WAN106は、ネットワーク間インタフェース110(好適には超ハイスループットなパイプ)を介してクラスタ104に接続されている。
クラスタ104は、複数のノード112a、112b、・・・、112qを有するが、明確にするために、そのうちのいくつかのみを図1に明示的に示す。通常、クラスタ104のノード112a〜112qは、地理的に同じ場所に配置(併置)され、さらには同じ建物内に収容されてもよい。さらに、ノード112a〜112qは、ローカル・エリア・ネットワーク116すなわちLANのライン114a〜dによって相互接続されている。それゆえ、ノード112a〜112qは、WAN106ではなくLAN116上で互いに「プライベートに」通信することができる。
各ノード112a〜112qには、対応するプロセッサ、サーバ、コンピュータまたは処理能力を有する他のデバイス(ここでは、全体として、マシン118a〜118qと呼ぶ)が含まれる。加えて、各ノード112a〜112qには、それに関連して、一連のリソース120a〜120q、122a〜122q、124a〜124qが含まれる。省略記号によって示されているように、明示的に符号を付したリソースを超えた追加リソースが各ノード112a〜112qに存在することができる。視覚的な明瞭さのために、図1には全てのマシン118a〜q及び全てのリソース120a〜q、122a〜q、124a〜qを明示的に表示してはいない。
当然のことながら、指定されたリソース120a〜q、122a〜q、124a〜q及び明示的に符号を付されていない任意の追加のリソースは、任意の許容される方法で配分することができる。例えば、任意の所与のノードにおけるリソースは、1つ以上の他のノードにおけるリソースと同じであってもよいし、部分的に異なっていてもよい。実際に、リソースは、完全にクラスタ104の特定のノードに固有のものである場合すらある。例示的なリソース120a〜q、122a〜q及び124a〜qには、プリンタ、モニタ、特定用途向けプロセッサ、ブロック・ストレージ・デバイス、例えばハード・ドライブ・デバイス(例えば、パラレルまたはシリアル、例えばSATA)、フラッシュ・ドライブ及び任意の他のクラスタ・リソースなどが含まれる。実際に、任意の物理的または論理的構成要素であって、オンライン及びオフラインで持ち込まれ、クラスタ104内で管理され、1回にノード112a〜qのうちのたった1つのノードによってホストされることができる構成要素を、一連のリソース120a〜q、122a〜q及び124a〜qの中から代表させることができる。
本発明に従って、クラスタ104に属するマシン118a〜qの中でm台のマスタ候補が特定される。具体的には、図1に示した実施形態において、2台のマシン118a及び118bがマスタ候補として特定される。よって、この場合には台数mは2であり(m=2)、本発明によるマスタ候補の最小許容台数に相当する。
一点鎖線で描かれたボックス126は、マスタ候補のプールを指定する。マスタ候補118a、118bは、プール126に属する。省略記号は、マシン118c〜qの中から選択された追加のマスタ候補をプール126に入れることができることを示している。つまり、m≧2である限り常に、プール126を動的に拡張または縮小させることができる。さらに、プール126に含まれるマスタ候補の台数mには理論上の上限はない。実際には、以下で詳細に説明する理由で、全てのマスタ候補をカレント・マスタのカレント・ステートで更新された状態にしておくために全てのマスタ候補間で書き込みを同期的にレプリケートすることが必要になる。それゆえ、マスタ候補が4台(m=4)より多いコンフィギュレーションの使用は、システムの可用性を比例して向上させることなく書き込み待ち時間を著しく増加させることになる。
点線で描かれたボックス128は、クォーラム・マシンのプールを指定する。クォーラム・マシンもまた、クラスタ104に属するマシン118a〜qの中から特定される。本実施形態では、プール128に含まれるクォーラム・マシンの台数nは3である(n=3)。具体的には、マシン118o、118p及び118qがプール128に含まれる。省略記号は、プール128に追加のクォーラム・マシンを含めることができることを示している。しかし、本発明によると、台数nは常に少なくとも3かつ奇数でなければならない(n≧3であり、nは奇数)。このことは、同時に2台のマシンによってプール128を拡張または縮小することだけができることを意味している。nを奇数にしておく理由は、プール128を2つの小グループ(サブセット)に分けたときに常に一方の小グループが確実にマシンの過半数を占めることになるようにするためである。
マシン118a〜qが機能を共有することは可能、すなわち、マスタ候補は原理的にはクォーラム・マシンであってもよいが、マスタ候補及びクォーラム・マシンは互いに異なることが好ましい。換言すれば、マスタ候補(すなわち、本実施形態においてはマシン118a、118b)のプール126及びクォーラム・マシン(すなわち、本実施形態においてはマシン118o、118p、118q)のプール128は、いかなるマシンも共有していない。さらに別の言い方をすれば、プール126及び128は、重なり合っていない。
クォーラム・マシン118o、118p、118qは、通常はクラスタ104内に併置されるが、好適には互いにアイソレートして配置すべきである。換言すれば、既に述べたように通常はクラスタ104の全てのマシン118a〜qは同じ建物内にあるので、クォーラム・マシン118o〜qをアイソレートするための手段が好適実施形態において与えられるべきである。これらの手段は、図1において明示的に示されていない。通常は、適切にアイソレートされた環境であれば、クォーラム・マシン118o〜qは、別々のネットワーク・スイッチを用い、同じ電源を共有しない。
本発明に従って、マスタ候補118a、118bのステートは、破線で描かれた矢印130によって示されているように、同期的に更新される。この目的のために、LAN116のライン114aによって提供されるマスタ候補118a、118b間の相互接続が用いられることが好ましい。換言すれば、マスタ候補として特定されるマシン118a、118b間の同期更新は、WAN106あるいは他のネットワークまたは接続ではなく、LAN116上で行うことが好ましい。
非同期更新では、ノード112a、112bに存在するマスタ候補118a、118b間に協調はない。対照的に、同期更新は、更新が完了するまでマスタ候補118a、118bにそれらの過去の出力を利用可能にするように要求する。従って、同期更新においては、カレント・ステート(カレント・ステート・ベクトルとも呼ばれる)及び次のステート(次のステート・ベクトルとも呼ばれる)の両方をストアすることが必要である。ステートまたはステート・ベクトルには、マシン118aまたは118b上で実行しているアプリケーション(コード)によって決定的に実行されることになる一連のマシン入力が含まれる。その理由は、同じマシン入力から始まり同じアプリケーションを実行するどのマシンの出力も同じになるからである。それゆえ、マシン118a、118bにストアされている入力及び出力ステート・ベクトルが同一であることを保証することにより、障害が発生した場合に高いレベルの安全性が提供される。
本発明の目的のために、マスタ候補118a、118b間の同期更新中にストアされた最新すなわち最後のステート・ベクトルをカレント・ステートと呼ぶ。カレント・ステートを不揮発性媒体(磁気ハード・ドライブ、フラッシュ・ドライブ、テープ)にストアすることにより、全てのマスタ候補118a、118bに影響を及ぼす電源異常が発生した場合に耐久性を与えることができる。カレント・ステートをストアするために用いられる実際のリソースは、当業者が理解するように選択の幅が広いので、図面にはっきりと示してはいない。リソース120a〜q、122a〜q及び124a〜qの中のいずれもが、カレント・ステートをストアするための不揮発性媒体であり得ることにも留意されたい。さらに、このレプリケートされたカレント・ステートが揮発性メモリに完全にストアされる高可用性アーキテクチャを設計することが可能である。しかし、そのような設計では、電源異常によってカレント・ステート情報が失われることがあり得る。
クラスタ104はまた、セントラル・クロック132へのアクセスを有する。セントラル・クロック132は、クラスタ104に属するローカル・デバイスであるか、またはリモート・デバイスであり得る。好適実施形態では、セントラル・クロック132はローカルであり、クラスタ104に属する。例えば、セントラル・クロック132は、クラスタ104の特定のノード112に存在し得る。さらに、好適実施形態では、クロック132は、外部標準、例えば原子時計または他の何らかの標準時間基準に基づいてクロックの時刻を定期的に調節する。
HAクラスタ104を含むネットワーキング・システム100は、ネットワーク・クライアント102a、102bに各種のサービスを提供するのによく適している。各種サービスは、多種多様な用途、例えば、電子メール、金融取引、ドメイン・ネーム・サーバ(DNS)及び他のメタデータ・サービスとのやりとり、さらには、ネットワーキング・システム100上で提供することができるレガシー・アプリケーションを含み得る。これらのサービスの一部は、障害に非常に敏感である。とりわけ、クライアント102a、102bの動作または他のイベントが過失による例えばDNS入力のデータの上書きを招く障害が、回避されることになる。
ところで、上記の種類の障害を防止するためにHAクラスタを管理するマスタを置くことは公知である。マスタは、全ての要求、特にクラスタにおいて任意のステートを更新する要求(例えば、書き込みを含む任意の要求)を処理することによって、クラスタを監督する。マスタは、要求がどのように処理されるかについての合意を保証するように、処理、コミット、クラスタの残りへのブロードキャストを行う。そのようなマスタベースの階層的アプローチは、過失による上書きによるデータの破損及び他の障害を防止するのに役立つ。
マスタベースのクラスタ管理の実行は、適切なブロードキャスト・プロトコル(例えば、アトミック・ブロードキャスト・プロトコル)とともにZooKeeperなどの管理ソフトウェアによって具体化される。そのようなクラスタ管理ソフトウェアに関するさらなる情報は、Patrick Hunt, et al., "ZooKeeper: Wait-free coordination for Internet-scale systems", Proceedings of the 2010 USENIX Annual Technical Conference (ATC) , June 24, Boston MA, pgs. 1-14 を参照されたい。適切なブロードキャスト・プロトコルに関する先行技術は、例えば、Benjamin Reed et al., "A simple totally ordered broadcast protocol", Proceedings of the 2008 Workshop on Large Scale Distributed Systems and Middleware (LADIS) , September 15, Yorktown, NY. に記載されている。
加えて、マスタを監視しなければならないことも知られている。カレント・マスタに障害が発生した場合、適格なマシンの中から新たなマスタが選出されなければならない。そのような選出のための多くのプロトコルが当業者に知られている。それらのうちで最もロバストなもののいくつかには、クォーラムベースの多数決が含まれる。レスリー・ランポートにより最初に提唱されたクォーラムベースの多数決のための公知のプロトコルは、Paxosプロトコルと呼ばれており、フリー百科事典ウィキペディアの「Paxos(コンピュータサイエンス)」という項目及び Lamport L., "Paxos Made Simple", ACM SIGACT News 32, 4 (2001), pp. 18-25 において説明されている。
従来のマスタベースのクラスタ管理方法では、適切なブロードキャスト・プロトコル及びマスタの選出におけるクォーラムベースの多数決は、明らかに障害の数を制限するのに役立つ。しかし、障害が発生したカレント・マスタから新たなマスタへの自動的な移行(自動切り替え)のプロセスすなわちフェイルオーバにおいて、尚も障害が発生する。そのような障害は、通常、フェイルオーバ中に生じるスプリット・ブレイン状態に起因する。この状況において、2つ以上のクラスタ・マシンはマスタとして働くことができ、過失によるデータの上書きなどの障害を発生させ得る。
本発明に従って、HAクラスタ104は、スプリット・ブレイン状態を生じさせることなくフェイルオーバをサポートするように設計される。この目標を達成するための第1のステップは、プール126に含まれるm台のマスタ候補118a、118bの中からカレント・マスタを選出するステップを含む。カレント・マスタを選出するステップは、プール128を構成するクォーラム・マシン118o、118p、118qによって行われる。
図2は、HAクラスタ104に含まれるクォーラム・マシン118o〜qのプール128のより詳細な図である。上記のように、省略記号はプール128が3つ以上のクォーラム・マシン118o〜q(n≧3であり、nは奇数)を含むことができることを示しているが、説明はn=3の場合について行う。選出は、プール128のクォーラム・マシン118o〜qの中からクォーラムベースの多数決(当分野において、「クォーラムベースの多数決によるリーダー選出」または「クォーラムベースの多数決による分散合意」とも呼ばれる)によって行われる。nは奇数なので、多数決は常に保証される。
図3は、クォーラム・マシン118o〜qが投票を行うマスタ候補118a、118bのプール126のより詳細な図である。この場合もやはり、省略記号が示すように、プール126は、2つ以上のマスタ候補118a、118b(m≧2)を含むことができるが、状況を簡単にしておくために、説明はm=2の場合について行う。
クラスタ104を動作させるために、クォーラム・マシン118o〜qはカレント・マスタを選出する。図示されている事例では、クォーラムベースの多数決によってマシン118aがカレント・マスタとして選出される。マシン118o〜pは、図2において対応するハッチング部分によって示されているように、マシン118aの多数決を占めていた。同様に、図3の対応するハッチング部分は、マシン118aがカレント・マスタであることを示している。実際のクォーラムベースの多数決プロトコルは、当分野で公知であり、ここでは説明しない。対応する教示に関しては、Paxosプロトコルの説明(前掲)をいま一度参照されたい。
このようにしてクォーラムベースの多数決によって選出されたカレント・マスタ118aに、カレントの期限付きリース134aが発行される。リース134aは、図3においてカレント・マスタ118aに属するローカル・クロック136a上で期間の境界を画定する矢印によって概略的に示されている。実際には、リース134aは、ローカル・クロック136aで測定することにより求めるように設計される。リース134aは、約数秒または数十秒間であることが好ましい。図3に示した例では、リース134aの持続期間は約40秒間である。
期限付きリース134aの持続期間は、カレント・マスタ118aに現実に障害が発生したことを検出するための時間と、フェイルオーバ・イベントのコストとの間の合理的なトレードオフとして選択される。リース134aの持続期間が非常に少ないすなわち短い時間である場合には、カレント・マスタ118aに障害が発生したと誤って判定し、必要のないときにフェイルオーバを開始またはトリガする可能性がある。リース134aの持続期間が非常に多いすなわち長い時間である場合には、不必要なフェイルオーバを開始またはトリガする可能性は低いが、正真正銘のカレント・マスタ118aの障害を検出するために必要な時間が長くなることがある。期限付きリース134aの適切な持続期間の決定は、利用可能なマスタのコスト及び下層においてフェイルオーバ動作を行うのに掛かる時間に大きく依存している。実際面では、既に同期的にレプリケートされたカレント・ステートの合理的なサイズ(メガバイトまたはギガバイトオーダー)に関して、効果的なバランスがとれるのは数秒または数十秒間である。
カレント・マスタ118aがリース134aを保持している間に、マスタ候補118bもマスタ候補118bのローカル・クロック136b上で同じリースを測定する。しかし、以下でより詳細に説明するように、クロック136a、136bは通常は同期されておらず、同一周波数で動いていない。それゆえ、クロック136aによって測定されるリース134aの持続期間は、リース136abと表され、ローカル・クロック136aによって測定されるリース134aの持続期間とは固有時または絶対時間が異なり得る。
カレント・マスタ118aは、リース134aを保持している間にマスタとして働く権限を与えられている。換言すれば、自身のローカル・クロック136aによって測定されるリース134aが未経過である間に、カレント・マスタ118aは、クライアント102a、102bによって要求された1つ以上のサービスを提供または実行する権限を有する。これらのサービスには、通常、書き込み要求の実行が含まれる。
カレント・マスタ118aとして働いている間、そのステートまたはステート・ベクトルは、矢印130によって示されているように、他方のマスタ候補118bに同期的にレプリケートされる。実際には、マスタ候補のプール126に含まれる任意のマシン118は、マスタ候補と考えられるためには、カレント・マスタ118aのカレント・ステートを同期的にレプリケートしなければならない。これにより、ステップ毎に、マスタ候補118b及びプール126に含まれる任意の他のマスタ候補を更新して、カレント・マスタ118aのカレント・ステートを維持することが確実になる。同期更新は、LAN116上で、より詳細にはライン114aを介して行われる。
フェイルオーバ中のスプリット・ブレイン状態を回避するために、カレントの期限付きリース134aの相対的なクロック・スキューは、或る上限によって抑制される。具体的には、期限付きリース134aは、期間Δtに追加の余裕時間εを加えた期間に等しくなるように設定される。これにより、リース134aは、図3に示されているように、最大でΔt+εの上限を有する期間に効果的に抑制される。εに用いられる実際の値は、ローカル・クロック136a及び136bの相対的なクロック・スキューに基づく。
新たなマスタには新たな期限付きリースが発行され、最大クロック・スキュー以上の期間待った後、マスタのサービスを開始する。
εの決定の仕方を理解するために、先ず、クロック・スキューを理解しなければならない。全てのクラスタ・ノード112a〜q並びにルータ(図示せず)及びクライアント102a、102bは、ローカル・クロックを有している。そのようなクロックは、当業者に公知のハードウェア及びソフトウェア・コンポーネントから製作される。この事例では、本願出願人は、マスタ候補118a、118bのローカル・クロック136a、136b及びそれらのクロック・スキューに関心を持っている。
ローカル・クロック136a、136bは各々、公称周波数でティックする(時を刻む)水晶発振器と、ティック数を数えるカウンタとを有する。これらのクロック・コンポーネントは、当業者に公知であり明らかであるので、図示していない。その構造に起因して、ローカル・クロック136a、136bの実際の周波数は、環境因子、例えば、温度、湿度及び液晶の種類などによって決まる。それは、クロック136a、136bによって記録される単位固有時当たりのティック数にドリフト(ずれ)を生じさせるような、カウンタによって記録される実際の周波数の変動である。このドリフトは、クロック・スキューと呼ばれる。
環境因子及び可変プロセッサ負荷(温度に直接影響を与える)を変えると、クロック136a、136bのクロック・スキューが動的に変化する。クロック・スキューの動的変化がもたらす直接的な結果として、ローカル・クロック136a、136bから送信されるクロック信号は、互いに異なる時間に異なる構成要素に到達する。
リモート・クロックの正確なクロック・スキューを直接測定することは不可能であることに留意しなければならない。その結果として、マスタ候補118aは、マスタ候補118bのローカル・クロック136bのクロック・スキューを直接測定することができず、逆の場合も同じである。
幸いなことに、εの値を決定するために、クロック136a、136b間の相対的なクロック・スキューをリモートから推定することができる。そのような推定は、例えば環境因子及びカレント・マスタ118a及びマスタ候補118bへの処理負荷の変更に起因するような、相対的なクロック・スキューの動的変化が説明されるように、マスタ候補118a、118bによって、クラスタ104のスタートアップより前に周期的に行われることが好ましい。
本発明の好適実施形態では、相対的なクロック・スキューは、データ補正間の遅延の比較から推定される。これは、ネットワークタイム・プロトコル(NTP)などの適切なアルゴリズムを用いて行われることが好ましい。このプロトコルは、マシン間でテスト・パケットを送信し、ネットワーク伝送遅延をキャンセルした後に相対的なクロック・スキューを推定する。
ローカル・クロック134a、134b間の相対的なクロック・スキューが決定されたら、εの値を割り当てることができる。εの値は、データ補正間の遅延の比較において推定された相対的なクロック・スキューの最大量として選択されることが好ましい。あるいは、εの値を設定するために、複数の推定値に対して統計的アルゴリズムを用いることができる。これは、支配的な一連の環境因子及び処理負荷に関して統計的に有意な数の推定値が利用可能であるときに実行可能である。これらの条件下で、ローカル・クロック134a、134b間の相対的なクロック・スキューの平均推定値から幾つかの標準偏差でεを設定することができる。当業者は、障害への耐性を備えたクラスタ104に、クライアント102a、102bに提供するアプリケーションの種類をどのようにして与える必要があるかに基づいて、標準偏差の正確な数を調節することができることが分かるであろう。
時間の経過とともに、ローカル・クロック134a、134bのクロック・スキュー及びクラスタ・ノード112に属する他のクロックのスキューが蓄積する傾向がある。これらのスキューにより、クラスタ104では、ノード群112に実に様々なローカル時間が記録されることになる。これらの時間差を解消するために、クラスタ・ノード群112は、自身のクロックを、固有時または絶対時間を測定するセントラル・クロック132に同期させることができる。しかし、本発明は、相対的なクロック・スキューに依存するので、ノード群112、特にマスタ候補118a、118bのノード112a、112bの、同一絶対時間への同期には依存しない。そのおかげで、高品質のローカル・クロックを含まない低コストのマシン118をクラスタ104にデプロイすることができる。
図4は、タイミング図であって、最大でΔt+εの期間に抑制されたカレント・マスタ118aの上記の期限付きリース132aが如何にしてスプリット・ブレイン状態を防止するかを示している。図4の図から、カレント・マスタ118a及びマスタ候補118bのローカル・クロック136a、136bは、絶対時間において同期されていないことは明白である。実際に、セントラル・クロック132によって記録される絶対初期時間(absolute initial time)t0cは、マスタ候補118bのローカル・クロック136bによって記録される初期時間t0bの後に存在する。その一方で、カレント・マスタ136aのローカル・クロック136aによって記録される初期時間t0aは、セントラル・クロック132の絶対初期時間t0cの後に存在する。
プール128のクォーラム・マシン118o〜qによるクォーラムベースの多数決は、図2を参照して上記したように、選出期間Δt中に行われる。明確にするために、選出期間Δtは、マスタ候補118aのローカル・クロック136aの時系列上にのみ記録されている。選出期間Δtの終了時、すなわちローカル・クロック136a上に示されている時間t1aにおいて、候補マシン118aがクラスタ104のカレント・マスタに選出される。この時間は、マスタ候補118bのローカル・クロック136b上の時間t1b及びセントラル・クロック132上の時間t1cにそれぞれ対応している。
ローカル・クロック136a上の時間t1aにおいて、カレント・マスタ118aは、ローカル・クロック136aの相対的なクロック・スキューによって抑制された期限付きリース134aを受信する。前述したようにデータ補正間の遅延を比較したときに得られた最大値ε=εを選択することによって、クロック136aとクロック136bとの相対的なクロック・スキューの最大値に基づいて或る上限が設定される。それゆえ、カレントの期限付きリース134aは上限によって最大でΔt+εの期間に抑制される。本発明に従って、カレント・マスタ118aは、自身のローカル・クロック136aによって測定された期間Δtの間、依然としてクラスタ104のマスタのままであると推定することができる。
ところで、カレント・マスタ118aのローカル・クロック136aにおいて、期間Δt+εはt1aから時間t2aまで持続することになる。しかし、スプリット・ブレイン状態を回避するために、カレント・マスタ118aは、期間Δtの後、期限付きリース134aの期間ε中に、マスタ候補118bがクラスタ104の制御をめぐって争うことができるように既に準備されていなければならない。例えば、このことは、潜在的に無意識のうちに、リース134a中にカレント・マスタ118aに障害が発生した場合に起こり得る。
ところで、本発明に従って構成されたクラスタ104において、カレント・マスタ118aに障害が発生した場合、プール126に含まれる利用可能なマスタ候補群の中から選出される新たなマスタへのフェイルオーバがトリガされることになる。この実施形態では、m=2であるので、フェイルオーバのために利用可能な他のマスタ候補はマスタ候補118bの1つしかないことに留意されたい。
図4に示したように、カレント・マスタ118aの障害は、自身のローカル・クロック136aに記録される時間t2aよりも前の時間tfaにおいて発生する。障害は、カレント・マスタ118aとLAN116との間における失われた接続、意図的な接続解除または故障(非信頼性または非有用性を含む)に起因するものであり得る。実際には、カレント・マスタ118aは、クラスタ104との関連において自身の障害に気付かないことすらある。
従って、期間Δtが終わるまで、カレント・マスタ118aは、期限付きリース134aを測定して求め続け、かつマスタとしての役目を果たし続けることになる。
その一方で、マスタ候補118bはまた、カレント・マスタ118aに割り当てられたリース134aの期間Δt+εを測定して求めしている。しかし、マスタ候補118bは、期間Δt+εを測定して求めるために自身のローカル・クロック136bを用いている。マスタ候補118bは、そのローカル・クロック136bに従って、時間t1bからt2bまでの期間134abの間持続する間、期間Δt+εを記録することになる。期間134abが期間134aに等しくないことは明らかである。当然ながら、この期間の差は、前述したように、ローカル・クロック136a、136b間の相対的なクロック・スキューに起因する。
マスタ候補118bは、相対的なクロック・スキューに起因して、決定した期間Δtが、カレント・マスタ118aで測定することにより求めた期間Δtとは異なり得ることを知っている。このため、マスタ候補118bは、自身のクロック136bによって記録される追加時間εの間待つ。換言すれば、マスタ候補118bは、相対的なクロック・スキューに起因して、カレント・マスタ118aがマスタ候補118bのローカル・クロック136b上の時間t2bまで尚もマスタとして働いている可能性があることを仮定する。それゆえ、本発明に従って、マスタ候補118bは、時間t2bの後まで、新たなマスタになろうとしないように指示されている。
ここで、マスタ候補118bのローカル・クロック136bによるtfbとt2bの間の期間136abにおいて、クラスタ104はマスタを有しない。このようにして生じるマスタ不在期間138は、図4においてハッチング部分を用いて指定されている。上記したように、期限付きリース134aの持続期間を設定するときに、トレードオフにおいて、クラスタ104のクライアント102a、102bが容認することを厭わないマスタ不在期間138の長さを考慮する必要があることは明らかである。
マスタ候補118bのローカル・クロック136b上のt2bにおいて、障害が発生したマスタ118aからのフェイルオーバ140がトリガされ、マスタ候補118bが新たなマスタになる。クロック136bはクロック136aよりも高速で動いていることに留意されたい。それゆえ、期間134abの終わりの時間t2bは、実際には、障害が発生したカレント・マスタ118aのクロック136a上で時間134aが完全に終了するよりも僅かに前にある。しかし、εの値は、クロック136a、136b間の最大可能な所与の相対的なクロック・スキューになるように選択されたので、新たなマスタ118bのローカル・クロック136b上の時間t2bにおいて、障害が発生したマスタ118aが尚もクラスタ104のマスタとして働こうと試みている可能性は、実質的に全くない。つまり、上記したように、カレント・マスタ118aは、新たなマスタ118bのローカル・クロック136b上で時間t2bよりも前に支障なく終わる持続期間Δtの後に、マスタであると見なすことをやめる。よって、本発明に従って、スプリット・ブレイン状態が効果的に回避される。
フェイルオーバが行われると、新たなマスタ118bに新たな期限付きリース134bが発行される。新たなリース134bは、持続期間Δt+εに設定され、このとき、ローカル・クロック136a、136b間で推定された最大の相対的なクロック・スキューに基づいて、特定値ε=εである。この場合もやはり、前述したように、データ補正間の遅延の推定に基づいてεを計算することが好ましい。相対的なクロック・スキューの値は一般に時間の関数として変化することになるので、図4に示したようにε及びεは互いに異なり得ることに留意されたい。
セントラル・クロック132との同期の欠如がフェイルオーバを妨げず、スプリット・ブレイン状態を回避する理由を知るためのさらに別の方法は、セントラル・クロック132が感知する上記のアクティビティを調べることによる。その観点から、時間t1cにおいてカレント・マスタ118aに期限付きリース134aが発行される。セントラル・クロック132によって測定されるリース134aの持続期間もやはり、マスタ候補118bのローカル・クロック136bによって記録される期間134abとは異なる。すなわち、セントラル・クロック132によって測定されるリース134aの持続期間は、134acである。
持続期間134acは、134abよりもさらに短い。しかし、そのことは問題にはならない。というのも、マスタ候補118bは、ローカル・クロック136b上の時間t2bまで支配権を握らないためである。この時間は、セントラル・クロック132上の時間t2cに対応する。ε値の適切な選択によりクロック136a、136b間の相対的なクロック・スキューを或る上限に抑制した結果、セントラル・クロック132によって記録される合間の期間Δtic中にスプリット・ブレイン状態はないことに留意されたい。
あるいは、期限付きリース134a、134bの上限は、ローカル・クロック136a、136bの物理的特性から決定される。上記したように、クロック136a、136bは、様々な環境因子、例えば温度及び湿度並びに液晶または発振器特性に起因してドリフトする。環境因子及び発振器特性を合わせて、本明細書において物理的特性と呼ぶことにする。本発明の目的のための最も適した物理的特性のうちのいくつかには、熱ドリフト及び発振器ドリフトが含まれる。
そのような別の実施形態では、期限付きリースの上限は、マスタ候補間の選択された物理的特性または幾つかの特性の相違により、持続期間Δtに相対的なクロック・スキューの最大量を加えた値に等しくすることができる。当業者に知られている方法で効果的に推定することができるが故に最も適切な物理的特性は、ローカル・クロックの熱ドリフト及び/または発振器ドリフトである。
物理的特性を用いて相対的なクロック・スキューを抑制する場合、εの値は単に、観測されるスキューのこの最大量に設定されることが好ましい。期限付きリースの期間を得るために、前述同様に、期間Δtにεが加えられる。当然ながら、スプリット・ブレイン状態の可能性をさらに低くするために、εの値を控えめにさらに大きく設定することができる。しかし、εを非常に大きな値に設定すると、フェイルオーバより前のマスタ不在期間138の持続期間を増加させることになるので、クラスタ104の性能に影響を与えることになる。従って、既に述べたように、εの値の選択は、クラスタ104の所望の性能と比較考量するべきである。
相対的なクロック・スキューを抑制するさらに別のアプローチを、セントラル・クロック132との比較から実行することができる。セントラル・クロック132を利用する実施形態では、後者はローカル・クロック136a、136bよりも遥かに信頼性が高いことが保証されなければならない。このことは、セントラル・クロック132を適切な制御された環境におくことによって、及び/または原子時計などの外部標準を用いてセントラル・クロック132を頻繁に調整することによって、行うことができる。
マスタを選出するために期限付きリース及びクォーラムベースの多数決を実行するのに合わせて、クラスタ104は、様々なクロック・リース及びあらゆる種類の他のセーフガードを用いることもできる。明らかに、本発明と、分散システム及びHAクラスタにおいて用いられる他のセーフガード及びプロトコルとの間で対立がないことは、非常に有利である。本発明の方法とともに、本発明に従ってクラスタにおいて実装することができる例示的なクロック・リース及び対応する手順に関しては、Mike Burrows, "The Chubby lock service for loosely-coupled distributed systems", Google Inc., OSDI 2006 を参照されたい。
図5は、本発明に従う別のHAクラスタ200の図である。クラスタ200は、複数のマシン202a〜zを有する。それらのうち、5台のマシン202a〜eは、クォーラム・マシン・プール204に属するクォーラム・マシンである。それに相当するものとして、台数nは5であり(n=5)、それゆえに適正に3よりも大きく、かつ奇数である。3台のマシン、すなわち202s〜uは、マスタ候補プール206に属するマスタ候補である。従って、台数mは3であり(m=3)、それゆえに、要求される通り、2よりも大きい。
クラスタ200は、カレント・マスタに、上記した方法で相対的なクロック・スキューから決定された始終端(bounds)を有する期限付きリースをデプロイする。加えて、クォーラム・マシン202a〜eは、好適には互いにアイソレートされており、プール206からのクォーラムベースの多数決によりカレント・マスタを選択する。この事例では、プール204によって選出されるカレント・マスタはマシン202uである。
これまでに説明した実施形態とは対照的に、マスタ候補202s〜uの数は3(m=3)であり、従って、フェイルオーバのための明らかな新たなマスタ候補は存在しない。この場合、安全のために、フェイルオーバ・イベントの前に、カレント・マスタ202tに加えてカレント・バックアップ・マスタを選出することが好ましい。この選出は、プール204のクォーラム・マシン202a〜eの中から、カレント・マスタ202uの選出で用いたのと同じクォーラムベースの多数決プロトコルを用いて行われる。
当然ながら、カレント・マスタ202uは、既にカレント・マスタとして選出されているので、バックアップ・マスタの投票の対象ではない。この事例では、クォーラム・マシン202a〜eはバックアップ・マスタとしてマシン202tを選出する。
このようにバックアップ・マスタ202tが潜在的フェイルオーバよりも前に既に選出されているので、カレント・マスタ202uに障害が発生したときに、クラスタ200はプール204のクォーラム・マシン202a〜eの固有の動作に依存しなくてもよい。このように、選出をフェイルオーバ中に行う必要はない。カレント・マスタ202uに障害が発生した場合、引き継ぎはフェイルオーバより前に決定され、フェイルオーバをトリガするような障害イベント中に生じ得る潜在的な曖昧さが回避される。
いくつかの実施形態では、候補マシン202s〜uの台数mを動的に増減することができる。このことは、クラスタ200からマシン202を除外したりクラスタ200にマシン202を追加したりするときに有用であろう。他の事例においては、マシン202の責務及び責任が再調整されるときに必要とされるであろう。
台数mを増加させる際には、クラスタ200に属する新たな候補マシン202hを特定し、矢印208によって示されているように、同期的に更新して、カレント・マスタ202uのカレント・ステートを維持する。カレント・ステートで更新したら、新たな候補マシン202hを、プール206に含まれるm台のマスタ候補202s〜uに追加し、台数mが増加する(m=m+1すなわちm=4)。しかし、上記したように、可能なサービス時間遅延に起因して、4(m=4)を超えてプール206を拡張することは望ましくないであろう。
同様に、台数mを減少させる際には、マスタ候補202s〜uの中から特定の候補マシン、例えばマシン202sを特定し、プール206から除外する。台数mはそれに応じて減少する(m=m−1すなわちm=2)。マシン202sは除外時にカレント・マスタでもバックアップ・マスタでもないので、マシン202sの除外はいつでも行うことができる。マシン202sがプール206から除外されたら、マシン202sをカレント・ステートで同期的に更新する必要はなくなる。
本発明の方法は、ネットワーク・クライアントにアプリケーション210などのレガシー・アプリケーションを供するのに特に良く適している。レガシー・アプリケーション210は、HAクラスタの適切なリソースのうちの任意のもの、例えばマシン202gのリソース212gなどに存在することができる。
レガシー・アプリケーション210は、Linux(登録商標)カーネルで動作する分散複製型ブロック・デバイス(Distributed Replicated Block Device)などのネットワーク・ブロック・デバイスを用いて必要なステート・レプリケーションをトランスペアレントに行うことによって最も良くサポートされる。レガシー・アプリケーション210は、マスタ候補202s〜uのリモート・ハード・ドライブへのアプリケーション・ディスクの書き込みをトランスペアレントにかつ同期的にレプリケートするようなネットワーク・ブロック・デバイスによって裏付けられるディレクトリ内のディスクへのステートの書き込みを行う。ブロック・デバイスは、固定サイズの複数バイトのチャンクにおいて読み出し及び書き込み操作をサポートする任意のデバイス(磁気ハード・ドライブ、フラッシュ・ドライブなど)のコンピュータ・オペレーティング・システムを抽象化したものである。ネットワーク・ブロック・デバイスは、任意のブロック書き込み操作をローカル・ブロック・デバイス及び1つ以上のリモート・ブロック・デバイスへ同期的に転送する。
フェイルオーバ・イベントが発生したとき、新たなマスタは、以前のマスタのローカル・ブロック・デバイスの正確な複製(write-for-write replica)であるローカル・ブロック・デバイスをマウントすることができ、最大クロック・スキュー時間の経過を待ち、プール206の他の残りのマスタ候補への全てのブロック書き込みをレプリケートするようにネットワーク・ブロック・デバイス・レイヤ(層)を構成した後、レガシー・サービス(アプリケーション210のサービス)を開始することができる。
本発明は、全てのファイル・システムのメタデータを管理する単一マスタサービスのための高可用性自動フェイルオーバのための機構を提供するので、Hadoop分散ファイル・システムなどの大規模な単一マスタ分散システムに特に有用である。大規模分散システムでは、マスタ・マシンは1台であるが、全データをストアするスレーブ・マシンは数十ないし数千台存在する。マスタのデータが消失した場合には、全てのデータが役に立たない状態にされ、マスタとコンタクトをとることができない場合には、全てのデータがアクセス不能になる。高可用性フェイルオーバをトランスペアレントに行うためのシステムを設けることで、これらの両方の欠点に対応する。
追加的な効果として、本発明は特に、ブロック・デバイス書き込みにより(例えば、ファイルにステートをストアするなどして)ステートを持続するレガシー・システムに適用可能である。多くのサービス、例えばケルベロス(Kerberos)や全てのファイルと関連付けられた(file-backed)リレーショナル・データベース(例えば、PostgreSQL)は、この説明に当てはまる。本発明によって、データの損失なく、同期したトランスペアレントなフェイルオーバを提供する環境においてそのようなサービスをサポートすることができ、単一マシンのレガシー・サービスをハイ・アベイラブルなサービスに変えることができる。
上記の教示を考慮して、当業者は、本発明の趣旨から逸脱することなしに、本発明の装置及び方法を、本明細書に記載されている以外にも多様な方法で具現化することができることを認識するであろう。従って、本発明の範囲は、添付の特許請求の範囲及びそれと法的に等価なものを考慮して判断されなければならない。

Claims (23)

  1. 少なくとも1台のネットワーク・クライアントにサービスを提供する高可用性クラスタのマシン群を含むノード間においてフェイルオーバを提供するべくステートを同期的にレプリケートする方法であって、
    a)前記マシン群の中からm台(mは少なくとも2である)のマスタ候補を特定するステップと、
    b)前記マシン群の中からn台(nは少なくとも3でありかつ奇数である)のクォーラム・マシンを特定するステップと、
    c)前記m台のマスタ候補の各々を同期的に更新してカレント・ステートを維持するステップと、
    d)前記クォーラム・マシン群からのクォーラムベースの多数決によって、前記m台のマスタ候補からカレント・マスタを選出するステップと、
    e)前記カレント・マスタに対して、該カレント・マスタに属するローカル・クロックで測定することにより求められるカレントの期限付きリースを発行し、前記カレント・マスタが、前記カレントの期限付きリースを保持している間に、前記少なくとも1台のネットワーク・クライアントによって要求されたサービスを実行するステップと、
    f)前記カレントの期限付きリースの相対的なクロック・スキューを或る上限に抑制するステップとを含み、
    前記カレント・マスタに障害が発生した場合に、前記m台のマスタ候補の中から新たなマスタへのフェイルオーバをトリガし、前記新たなマスタに対して新たな期限付きリースを発行し、それによって前記マスタ候補間のスプリット・ブレイン状態を防止するようにしたことを特徴とする方法。
  2. 前記n台のクォーラム・マシンからのクォーラムベースの多数決によって、前記m台のマスタ候補からカレント・バックアップ・マスタを選出するステップをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記新たなマスタが前記カレント・バックアップ・マスタであり、前記フェイルオーバが前記カレント・バックアップ・マスタへのフェイルオーバであることを特徴とする請求項2に記載の方法。
  4. 前記相対的なクロック・スキューを抑制する前記ステップが、
    a)データ補正間の遅延を比較することによって前記相対的なクロック・スキューを推定するステップと、
    b)前記データ補正間の前記遅延に基づいて前記上限を調節するステップとを含むことを特徴とする請求項1に記載の方法。
  5. 前記上限が、前記ローカル・クロックの物理的特性から決定されることを特徴とする請求項1に記載の方法。
  6. 前記物理的特性が、熱ドリフト及び発振器ドリフトからなる群から選択されることを特徴とする請求項5に記載の方法。
  7. 前記上限が、セントラル・クロックとの比較から決定されることを特徴とする請求項1に記載の方法。
  8. 前記カレントの期限付きリースが、数秒または数十秒間であることを特徴とする請求項1に記載の方法。
  9. 前記m台のマスタ候補を動的に拡張するステップをさらに含み、該ステップが、
    a)前記高可用性クラスタに属する新たな候補マシンを特定するステップと、
    b)前記新たな候補マシンを同期的に更新してカレント・ステートを維持するステップと、
    c)前記新たな候補マシンを前記m台のマスタ候補に加えて前記台数mを増加させるステップとを含むことを特徴とする請求項1に記載の方法。
  10. 前記マスタ候補のプールを動的に縮小するステップをさらに含み、該ステップが、
    a)前記m台のマスタ候補の中から所定の候補マシンを特定するステップと、
    b)前記所定の候補マシンを前記m台のマスタ候補から除外して前記台数mを減少させるステップとを含むことを特徴とする請求項1に記載の方法。
  11. 前記サービスが、前記高可用性クラスタのリソースから前記少なくとも1台のネットワーク・クライアントに提供されるレガシー・アプリケーションを含むことを特徴とする請求項1に記載の方法。
  12. 前記同期的に更新するステップが、ローカル・エリア・ネットワーク上で行われ、
    前記サービスが、広域ネットワーク上での通信を含むことを特徴とする請求項1に記載の方法。
  13. 前記m台のマスタ候補及び前記n台のクォーラム・マシンが、互いに異なるマシンを含むことを特徴とする請求項1に記載の方法。
  14. 前記n台のクォーラム・マシンを互いにアイソレートするステップをさらに含むことを特徴とする請求項13に記載の方法。
  15. 少なくとも1台のネットワーク・クライアントにサービスを提供する高可用性クラスタを、前記高可用性クラスタのマシン群を含むノード間においてスプリット・ブレイン状態を生じさせることなくフェイルオーバを提供するべく動作させる方法であって、
    a)前記マシン群の中からm台(mは少なくとも2である)のマスタ候補を特定するステップと、
    b)前記マシン群の中からn台(nは少なくとも3でありかつ奇数である)のクォーラム・マシンを特定するステップと、
    c)前記m台のマスタ候補の各々を同期的に更新して、カレント・ステートを維持するステップと、
    d)前記クォーラム・マシン群からのクォーラムベースの多数決によって、前記m台のマスタ候補からカレント・マスタを選出するステップと、
    e)前記カレント・マスタに対して、該カレント・マスタに属するローカル・クロックで測定することにより求められるカレントの期限付きリースを発行し、前記カレント・マスタが、前記カレントの期限付きリースを保持している間に、前記少なくとも1台のネットワーク・クライアントによって要求されたサービスを実行するステップと、
    f)前記カレントの期限付きリースの相対的なクロック・スキューを或る上限に抑制するステップとを含み、
    前記カレント・マスタに障害が発生した場合に、前記m台のマスタ候補の中から新たなマスタへのフェイルオーバをトリガし、前記新たなマスタに対して新たな期限付きリースを発行し、それによって前記マスタ候補間のスプリット・ブレイン状態を防止するようにしたことを特徴とする方法。
  16. 前記m台のマスタ候補からカレント・バックアップ・マスタを選出するステップをさらに含むことを特徴とする請求項15に記載の方法。
  17. 前記新たなマスタが前記カレント・バックアップ・マスタであり、前記フェイルオーバが前記カレント・バックアップ・マスタへのフェイルオーバであることを特徴とする請求項16に記載の方法。
  18. 前記相対的なクロック・スキューを抑制する前記ステップが、データ補正間の遅延、前記ローカル・クロックの物理的特性、前記ローカル・クロック及びセントラル・クロック間のドリフトからなる群の中からから選択された物理パラメータから決定される調節を含むことを特徴とする請求項15に記載の方法。
  19. マシン群を含むノード間においてスプリット・ブレイン状態を生じさせることなくフェイルオーバを行う能力を有する高可用性クラスタであって、
    a)前記マシン群の中から特定されたm台(mは少なくとも2である)のマスタ候補と、
    b)前記マシン群の中から特定されたn台(nは少なくとも3でありかつ奇数である)のクォーラム・マシンと、
    b)前記m台のマスタ候補の中からステートを同期的にレプリケートしかつ更新してカレント・ステートを維持するためのローカル・エリア・ネットワークと、
    c)前記m台のマスタ候補の中からカレント・マスタを選出するための、前記クォーラム・マシン群からのクォーラムベースの多数決プロトコルと、
    d)前記カレント・マスタに対して、該カレント・マスタに属するローカル・クロックで測定することにより求められるカレントの期限付きリースを発行するための機構と、
    e)前記カレントの期限付きリースの相対的なクロック・スキューを或る上限に抑制するための物理パラメータとを含み、
    前記カレント・マスタに障害が発生した場合に、前記m台のマスタ候補の中から新たなマスタへのフェイルオーバをトリガし、前記新たなマスタに対して新たな期限付きリースを発行し、それによって前記マスタ候補間のスプリット・ブレイン状態を防止するようにしたことを特徴とする高可用性クラスタ。
  20. 前記クォーラムベースの多数決プロトコルがPaxosであることを特徴とする請求項19に記載の高可用性クラスタ。
  21. 前記マスタ候補が、ネーム・ノード・マスタ候補であることを特徴とする請求項19に記載の高可用性クラスタ。
  22. 前記物理パラメータが、データ補正間の遅延、前記ローカル・クロックの物理的特性、前記ローカル・クロック及びセントラル・クロック間のドリフトからなる群から選択されたものであることを特徴とする請求項19に記載の高可用性クラスタ。
  23. 前記ノードが、ブロック・ストレージ・デバイスを備えた分散型ストレージ・システムを含むことを特徴とする請求項19に記載の高可用性クラスタ。
JP2014538959A 2011-10-28 2012-10-24 高可用性クラスタにおけるスプリット・ブレイン耐性フェイルオーバ Expired - Fee Related JP6084624B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/317,803 US8595546B2 (en) 2011-10-28 2011-10-28 Split brain resistant failover in high availability clusters
US13/317,803 2011-10-28
PCT/US2012/061740 WO2013063152A1 (en) 2011-10-28 2012-10-24 Split brain resistant failover in high availability clusters

Publications (2)

Publication Number Publication Date
JP2014532921A true JP2014532921A (ja) 2014-12-08
JP6084624B2 JP6084624B2 (ja) 2017-02-22

Family

ID=48168449

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014538959A Expired - Fee Related JP6084624B2 (ja) 2011-10-28 2012-10-24 高可用性クラスタにおけるスプリット・ブレイン耐性フェイルオーバ

Country Status (6)

Country Link
US (2) US8595546B2 (ja)
EP (1) EP2771789A4 (ja)
JP (1) JP6084624B2 (ja)
KR (1) KR101992508B1 (ja)
CA (1) CA2853465C (ja)
WO (1) WO2013063152A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018534665A (ja) * 2015-09-30 2018-11-22 ベリタス テクノロジーズ エルエルシー 入力/出力フェンシングの最適化

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9361311B2 (en) * 2005-01-12 2016-06-07 Wandisco, Inc. Distributed file system using consensus nodes
US9424272B2 (en) 2005-01-12 2016-08-23 Wandisco, Inc. Distributed file system using consensus nodes
US8595546B2 (en) * 2011-10-28 2013-11-26 Zettaset, Inc. Split brain resistant failover in high availability clusters
TWI461929B (zh) * 2011-12-09 2014-11-21 Promise Tecnnology Inc 雲端數據儲存系統
EP2792104B1 (en) 2011-12-21 2021-06-30 SSH Communications Security Oyj Automated access, key, certificate, and credential management
US9069827B1 (en) 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US9116862B1 (en) 2012-01-17 2015-08-25 Amazon Technologies, Inc. System and method for data replication using a single master failover protocol
US8843441B1 (en) 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
US9489434B1 (en) * 2012-01-17 2016-11-08 Amazon Technologies, Inc. System and method for replication log branching avoidance using post-failover rejoin
US10037346B1 (en) * 2012-07-25 2018-07-31 Google Llc Time reservations for ensuring consistent reads in a distributed database without logging
US9753954B2 (en) * 2012-09-14 2017-09-05 Cloudera, Inc. Data node fencing in a distributed file system
US9146794B2 (en) * 2012-10-01 2015-09-29 Microsoft Technology Licensing, Llc Enhanced arbitration protocol for nodes in a cluster
US10432703B2 (en) * 2012-11-26 2019-10-01 Facebook, Inc. On-demand session upgrade in a coordination service
US20140258771A1 (en) 2013-03-06 2014-09-11 Fortinet, Inc. High-availability cluster architecture and protocol
US10229181B2 (en) * 2013-07-16 2019-03-12 Pankaj Sharma System and method for synchronizing data between communication devices in a networked environment without a central server
JP6091376B2 (ja) * 2013-08-12 2017-03-08 日本電信電話株式会社 クラスタシステムおよびSplit−BrainSyndrome検出方法
IN2013MU02794A (ja) * 2013-08-27 2015-07-03 Tata Consultancy Services Ltd
US9569513B1 (en) * 2013-09-10 2017-02-14 Amazon Technologies, Inc. Conditional master election in distributed databases
US9686161B2 (en) * 2013-09-16 2017-06-20 Axis Ab Consensus loss in distributed control systems
US9465698B2 (en) * 2014-03-06 2016-10-11 Software Ag Systems and/or methods for data recovery in distributed, scalable multi-tenant environments
US9251017B2 (en) 2014-03-25 2016-02-02 International Business Machines Corporation Handling failed cluster members when replicating a database between clusters
US9742692B2 (en) * 2014-06-23 2017-08-22 Microsoft Technology Licensing, Llc Acquiring resource lease using multiple lease servers
JP6367630B2 (ja) * 2014-07-17 2018-08-01 Necネットワーク・センサ株式会社 冗長系システム、冗長機器及びその切替方法
US9047246B1 (en) 2014-07-31 2015-06-02 Splunk Inc. High availability scheduler
US20160080249A1 (en) * 2014-09-17 2016-03-17 Telefonaktiebolaget L M Ericsson (Publ) Prevent vrrp master / master split in active / standby icr system
US9984140B1 (en) * 2015-02-05 2018-05-29 Amazon Technologies, Inc. Lease based leader election system
CN106155780B (zh) 2015-04-02 2020-01-31 阿里巴巴集团控股有限公司 一种基于时间的节点选举方法及装置
US10609137B2 (en) 2015-08-24 2020-03-31 Microsoft Technology Licensing, Llc Global logical timestamp
US9916214B2 (en) 2015-11-17 2018-03-13 International Business Machines Corporation Preventing split-brain scenario in a high-availability cluster
US9858011B2 (en) * 2015-12-16 2018-01-02 International Business Machines Corporation Repopulating failed replicas through modified consensus recovery
US10187255B2 (en) 2016-02-29 2019-01-22 Red Hat, Inc. Centralized configuration data in a distributed file system
US11075806B1 (en) 2016-06-30 2021-07-27 Juniper Networks, Inc. Hierarchical naming scheme for state propagation within network devices
US10461991B1 (en) * 2016-09-19 2019-10-29 Amazon Technologies, Inc. Dynamic replication peering
US10346366B1 (en) 2016-09-23 2019-07-09 Amazon Technologies, Inc. Management of a data processing pipeline
US10805238B1 (en) * 2016-09-23 2020-10-13 Amazon Technologies, Inc. Management of alternative resources
US10423459B1 (en) 2016-09-23 2019-09-24 Amazon Technologies, Inc. Resource manager
US10666569B1 (en) 2016-09-23 2020-05-26 Amazon Technologies, Inc. Journal service with named clients
CN107919977B (zh) * 2016-10-11 2021-09-03 阿里巴巴集团控股有限公司 一种基于Paxos协议的在线扩容、在线缩容的方法和装置
US10664866B2 (en) * 2016-11-30 2020-05-26 Facebook, Inc. Conversion optimization with long attribution window
US11803420B1 (en) * 2016-12-20 2023-10-31 Amazon Technologies, Inc. Execution of replicated tasks using redundant resources
US11316775B2 (en) * 2016-12-21 2022-04-26 Juniper Networks, Inc. Maintaining coherency in distributed operating systems for network devices
US10887173B2 (en) 2016-12-21 2021-01-05 Juniper Networks, Inc. Communicating state information in distributed operating systems
US11316744B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices
US10521344B1 (en) * 2017-03-10 2019-12-31 Pure Storage, Inc. Servicing input/output (‘I/O’) operations directed to a dataset that is synchronized across a plurality of storage systems
US10534767B2 (en) 2017-03-14 2020-01-14 International Business Machines Corporation Disaster recovery for split storage cluster
CN109240840B (zh) * 2017-07-11 2022-04-19 阿里巴巴集团控股有限公司 集群系统的容灾方法、装置和机器可读介质
US20190354628A1 (en) 2018-05-21 2019-11-21 Pure Storage, Inc. Asynchronous replication of synchronously replicated data
CN108989391B (zh) * 2018-06-19 2021-09-07 北京百悟科技有限公司 一种一致性处理的方法及系统
US10884879B2 (en) 2018-10-18 2021-01-05 Oracle International Corporation Method and system for computing a quorum for two node non-shared storage converged architecture
US10963353B2 (en) * 2018-10-23 2021-03-30 Capital One Services, Llc Systems and methods for cross-regional back up of distributed databases on a cloud service
US11095742B2 (en) 2019-03-27 2021-08-17 Juniper Networks, Inc. Query proxy for delivery of dynamic system state
US11614769B2 (en) * 2019-07-15 2023-03-28 Ecole Polytechnique Federale De Lausanne (Epfl) Asynchronous distributed coordination and consensus with threshold logical clocks
CN110417600B (zh) * 2019-08-02 2022-10-25 秒针信息技术有限公司 分布式系统的节点切换方法、装置及计算机存储介质
CN110455370B (zh) * 2019-08-18 2020-10-02 安徽省(水利部淮河水利委员会)水利科学研究院(安徽省水利工程质量检测中心站) 防汛抗旱远程遥测显示系统
US20210191826A1 (en) * 2019-12-20 2021-06-24 Johnson Controls Technology Company Building system with ledger based software gateways
US11544228B2 (en) 2020-05-07 2023-01-03 Hewlett Packard Enterprise Development Lp Assignment of quora values to nodes based on importance of the nodes
US11477117B1 (en) 2020-11-23 2022-10-18 Juniper Networks, Inc. High-availability switchover based on traffic metrics
US11575741B2 (en) 2021-04-29 2023-02-07 Zoom Video Communications, Inc. System and method for active-active standby in phone system management
US11785077B2 (en) 2021-04-29 2023-10-10 Zoom Video Communications, Inc. Active-active standby for real-time telephony traffic
US20230032812A1 (en) * 2021-08-02 2023-02-02 International Business Machines Corporation Auto-split and auto-merge clusters
US11438224B1 (en) 2022-01-14 2022-09-06 Bank Of America Corporation Systems and methods for synchronizing configurations across multiple computing clusters
CN115967669B (zh) * 2023-03-16 2023-06-27 北京志凌海纳科技有限公司 基于vrrp拓展协议的脑裂抑制方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163140A (ja) * 2000-11-27 2002-06-07 Fujitsu Ltd ストレージシステム
JP2005502957A (ja) * 2001-09-06 2005-01-27 ビーイーエイ システムズ, インコーポレイテッド 厳密に一回のキャッシュフレームワーク
JP2006004434A (ja) * 2004-06-18 2006-01-05 Microsoft Corp 分散障害許容型コンピューティングシステムにおける効率のよいレプリカセットの変更
US20060015507A1 (en) * 2004-07-17 2006-01-19 Butterworth Henry E Controlling data consistency guarantees in storage apparatus
US20100185781A1 (en) * 2009-01-22 2010-07-22 Anderson Eric A System and Method for Measuring Clock Skew on a Network
JP2011210106A (ja) * 2010-03-30 2011-10-20 Nippon Telegr & Teleph Corp <Ntt> メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5261085A (en) 1989-06-23 1993-11-09 Digital Equipment Corporation Fault-tolerant system and method for implementing a distributed state machine
US7774469B2 (en) * 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
US6487622B1 (en) * 1999-10-28 2002-11-26 Ncr Corporation Quorum arbitrator for a high availability system
US6687846B1 (en) * 2000-03-30 2004-02-03 Intel Corporation System and method for error handling and recovery
US7228453B2 (en) * 2000-10-16 2007-06-05 Goahead Software, Inc. Techniques for maintaining high availability of networked systems
US7640582B2 (en) * 2003-04-16 2009-12-29 Silicon Graphics International Clustered filesystem for mix of trusted and untrusted nodes
US6944785B2 (en) * 2001-07-23 2005-09-13 Network Appliance, Inc. High-availability cluster virtual server system
KR100753564B1 (ko) * 2001-12-24 2007-08-30 엘지엔시스(주) 고가용성 시스템의 정보 유지방법
US6950855B2 (en) * 2002-01-18 2005-09-27 International Business Machines Corporation Master node selection in clustered node configurations
US7421478B1 (en) * 2002-03-07 2008-09-02 Cisco Technology, Inc. Method and apparatus for exchanging heartbeat messages and configuration information between nodes operating in a master-slave configuration
DE60318468T2 (de) * 2002-10-07 2008-05-21 Fujitsu Siemens Computers, Inc., Sunnyvale Verfahren zur lösung von entscheidungslosigkeiten in einem cluster-rechnersystem
US7194652B2 (en) 2002-10-29 2007-03-20 Brocade Communications Systems, Inc. High availability synchronization architecture
EP1620968B1 (en) * 2003-04-29 2011-02-09 TELEFONAKTIEBOLAGET LM ERICSSON (publ) Multiphase clock recovery
US7478263B1 (en) * 2004-06-01 2009-01-13 Network Appliance, Inc. System and method for establishing bi-directional failover in a two node cluster
US7711820B2 (en) * 2004-11-08 2010-05-04 Cisco Technology, Inc. High availability for intelligent applications in storage networks
JP4182948B2 (ja) 2004-12-21 2008-11-19 日本電気株式会社 フォールト・トレラント・コンピュータシステムと、そのための割り込み制御方法
US7953890B1 (en) 2006-01-27 2011-05-31 Symantec Operating Corporation System and method for switching to a new coordinator resource
US20080140982A1 (en) 2006-10-05 2008-06-12 Holt John M Redundant multiple computer architecture
US8473564B2 (en) 2006-10-05 2013-06-25 Waratek Pty Ltd. Contention detection and resolution
US7590886B2 (en) 2006-11-21 2009-09-15 General Instruments, Corporation Method and apparatus for facilitating device redundancy in a fault-tolerant system
US7814301B2 (en) 2007-04-11 2010-10-12 Hewlett-Packard Development Company, L.P. Clock architecture for multi-processor systems
KR100864987B1 (ko) * 2007-04-12 2008-10-22 디비코 주식회사 클라이언트 동기화 시스템 및 그 방법
US20090249174A1 (en) * 2008-04-01 2009-10-01 International Business Machines Corporation Fault Tolerant Self-Correcting Non-Glitching Low Power Circuit for Static and Dynamic Data Storage
US8001413B2 (en) 2008-05-05 2011-08-16 Microsoft Corporation Managing cluster split-brain in datacenter service site failover
GB0914815D0 (en) * 2009-08-25 2009-09-30 Univ City Improvements relating to database replication protocols
JP5292351B2 (ja) 2010-03-30 2013-09-18 日本電信電話株式会社 メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
US9081888B2 (en) * 2010-03-31 2015-07-14 Cloudera, Inc. Collecting and aggregating log data with fault tolerance
US9323775B2 (en) * 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
US8627135B2 (en) 2010-08-14 2014-01-07 Teradata Us, Inc. Management of a distributed computing system through replication of write ahead logs
US8949558B2 (en) * 2011-04-29 2015-02-03 International Business Machines Corporation Cost-aware replication of intermediate data in dataflows
US8595546B2 (en) * 2011-10-28 2013-11-26 Zettaset, Inc. Split brain resistant failover in high availability clusters
US9069827B1 (en) * 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
US9116862B1 (en) * 2012-01-17 2015-08-25 Amazon Technologies, Inc. System and method for data replication using a single master failover protocol
US9146794B2 (en) * 2012-10-01 2015-09-29 Microsoft Technology Licensing, Llc Enhanced arbitration protocol for nodes in a cluster

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002163140A (ja) * 2000-11-27 2002-06-07 Fujitsu Ltd ストレージシステム
JP2005502957A (ja) * 2001-09-06 2005-01-27 ビーイーエイ システムズ, インコーポレイテッド 厳密に一回のキャッシュフレームワーク
JP2006004434A (ja) * 2004-06-18 2006-01-05 Microsoft Corp 分散障害許容型コンピューティングシステムにおける効率のよいレプリカセットの変更
US20060015507A1 (en) * 2004-07-17 2006-01-19 Butterworth Henry E Controlling data consistency guarantees in storage apparatus
US20100185781A1 (en) * 2009-01-22 2010-07-22 Anderson Eric A System and Method for Measuring Clock Skew on a Network
JP2011210106A (ja) * 2010-03-30 2011-10-20 Nippon Telegr & Teleph Corp <Ntt> メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
マキュージック マーシャル カーク, 4.4BSDの設計と実装, vol. 第1版 第2刷, JPN6016026035, 19 December 2003 (2003-12-19), JP, pages 377 - 385, ISSN: 0003353776 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018534665A (ja) * 2015-09-30 2018-11-22 ベリタス テクノロジーズ エルエルシー 入力/出力フェンシングの最適化

Also Published As

Publication number Publication date
US20130111261A1 (en) 2013-05-02
CA2853465A1 (en) 2013-05-02
EP2771789A4 (en) 2015-09-16
JP6084624B2 (ja) 2017-02-22
US8595546B2 (en) 2013-11-26
KR20140088176A (ko) 2014-07-09
CA2853465C (en) 2016-06-14
US9460183B2 (en) 2016-10-04
KR101992508B1 (ko) 2019-09-30
WO2013063152A1 (en) 2013-05-02
US20140188794A1 (en) 2014-07-03
EP2771789A1 (en) 2014-09-03

Similar Documents

Publication Publication Date Title
JP6084624B2 (ja) 高可用性クラスタにおけるスプリット・ブレイン耐性フェイルオーバ
US9984140B1 (en) Lease based leader election system
TWI625621B (zh) 用於資料庫中進行回復的方法、電腦可用程式產品、與資料處理系統
JP4896438B2 (ja) 分散障害許容型コンピューティングシステムにおける効率のよいレプリカセットの変更
US20180260125A1 (en) Synchronously replicating datasets and other managed objects to cloud-based storage systems
US8301600B1 (en) Failover recovery in a distributed data store
US20130151653A1 (en) Data management systems and methods
WO2016070375A1 (zh) 一种分布式存储复制系统和方法
US11709743B2 (en) Methods and systems for a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system
GB2484086A (en) Reliability and performance modes in a distributed storage system
US11550820B2 (en) System and method for partition-scoped snapshot creation in a distributed data computing environment
JP2008059583A (ja) クラスタ・システムならびにクラスタ・システム内でレプリカをバックアップする方法およびプログラム製品
WO2018068661A1 (zh) 一种基于Paxos协议的分布式一致性系统的在线扩容、在线缩容的方法和装置
JP5292351B2 (ja) メッセージキュー管理システム及びロックサーバ及びメッセージキュー管理方法及びメッセージキュー管理プログラム
CN105493474A (zh) 用于支持用于同步分布式数据网格中的数据的分区级别日志的系统及方法
CN110402429B (zh) 复制用于管理基于云的资源的存储表以抵挡存储账户中断
US11003550B2 (en) Methods and systems of operating a database management system DBMS in a strong consistency mode
US10970177B2 (en) Methods and systems of managing consistency and availability tradeoffs in a real-time operational DBMS
WO2015196692A1 (zh) 一种云计算系统以及云计算系统的处理方法和装置
Kazhamiaka et al. Sift: resource-efficient consensus with RDMA
US12019873B2 (en) Methods and systems to improve resumption time of input/output (I/O) operations based on prefetching of configuration data and early abort of conflicting workflows during a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system
US20240036997A1 (en) Methods and systems to improve input/output (i/o) resumption time during a non-disruptive automatic unplanned failover from a primary copy of data at a primary storage system to a mirror copy of the data at a cross-site secondary storage system
US20240028611A1 (en) Granular Replica Healing for Distributed Databases
US11288004B1 (en) Consensus-based authority selection in replicated network-accessible block storage devices
Chaurasiya et al. Linux highly available (HA) fault-tolerant servers

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150819

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20150819

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160705

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161004

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161222

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: 20170124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170125

R150 Certificate of patent or registration of utility model

Ref document number: 6084624

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees