JP5066080B2 - 耐障害性コンピュータ・システム - Google Patents

耐障害性コンピュータ・システム Download PDF

Info

Publication number
JP5066080B2
JP5066080B2 JP2008510305A JP2008510305A JP5066080B2 JP 5066080 B2 JP5066080 B2 JP 5066080B2 JP 2008510305 A JP2008510305 A JP 2008510305A JP 2008510305 A JP2008510305 A JP 2008510305A JP 5066080 B2 JP5066080 B2 JP 5066080B2
Authority
JP
Japan
Prior art keywords
server
computer
quorum
operations
token
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.)
Active
Application number
JP2008510305A
Other languages
English (en)
Other versions
JP2008542858A5 (ja
JP2008542858A (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
Application filed by マラソン テクノロジーズ コーポレイション filed Critical マラソン テクノロジーズ コーポレイション
Publication of JP2008542858A publication Critical patent/JP2008542858A/ja
Publication of JP2008542858A5 publication Critical patent/JP2008542858A5/ja
Application granted granted Critical
Publication of JP5066080B2 publication Critical patent/JP5066080B2/ja
Active 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/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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • 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/2025Failover techniques using centralised failover control functionality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • 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/1629Error detection by comparing the output of redundant processing systems
    • G06F11/1633Error detection by comparing the output of redundant processing systems using mutual exchange of the output between the redundant processing components

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Hardware Redundancy (AREA)

Description

本発明は、一般にコンピュータ・システムに関し、より具体的には、それぞれが同じセットの動作を実行するように構成された少なくとも二つのサーバを含む耐障害性コンピュータ・システムに関する。
コンピュータ産業には、共有アイテムへのアクセスを調整する多くの方法がある。
例えば、一度に一つのコンピュータだけがデータをマルチ・ドロップ通信ライン上で送信することができる。通信ラインの保全性を保護するためには、単一のマスター又は所有者を一義的に選択するためにある形式のアクセス所有権プロトコルを動作させる必要がある。調整すべきアイテムに応じて、制御方法は、例えば衝突検出、クォーラム、トークン、ロック・マネージャ、分散ロック・マネージャ、中央アービタ、バック・オフ・タイマ、ラウンド・ロビン・スケジューリング又は固定アービトレーションを含むことができる。
同様の方法は、耐障害性システムにおけるシステム保全性を保護するために用いられる。耐障害性とは結果を生成するシステム内に障害があっても所望の結果に達するシステムの能力である。耐障害性を達成するには、レプリケーション・イン・タイム(replication in time)又はレプリケーション・イン・スペース(replication in space)機能を実装する必要がる。レプリケーション・イン・タイムとは、結果を生成するシステム内の障害により原の試行が成功しなかったので比較的最近の結果を再生する機能を言う。レプリケーション・イン・スペースとは、障害発生時に利用できる複製リソースを有することを言い、それらの複製リソースは、障害にもかかわらず目的の動作を続けて所望の結果を生成することができる。
レプリケーション・イン・スペース法を用いた耐障害性システムを取り扱うときは、それらの複製リソースが偶発的に独立に動作しないことを保証するように注意しなければならない。例えば、耐障害性システムは、単一の障害発生が全システムを無能にしないように重複コンポーネントを地理的に引き離すことによって耐災害性とすることができる。隣り合ったコンピュータ・ラック内の適切に接続された2台のコンピュータは、一つのラックの転倒又は電力障害に対して耐災害性をもつと考えることができるが、その室内における火災に対しては耐災害性をもたないと考えられる。機械を互いに遠く離せば離す程、それらはより広域の災害に対してより大きな耐性をもつ。
機械を引き離すと、それらの間の通信が失われた場合にどちらの機械が動作を継続するべきかを決定する問題が生じる。両方の機械が協調せずに動作を継続していることは、分離脳として知られる状態である。同じ前提条件で同じ問題について動作しているが非協調環境で動作する2台のコンピュータは、異なるがしかし妥当な結果を生じる可能性がある。一例は航空会社の座席スケジューリングである。割当座席の同じマップが与えられるが、予約要求がコンピュータの地理的な隔たりにより異なる順序で到着する場合、今後の座席割当の選択はコンピュータ間で異なる可能性がある。各々のコンピュータの結果はその問題空間の見地からは妥当である。その結果、コンピュータは妥当ではあるが異なる、コンピュータ間の通信が回復したときに調整不能となる、ローカル・データベースを作成する可能性がある。この理由により、分離脳動作は避けるべきである。
一つの一般的な態様において、各々が第1セットの動作を実行するように設定された少なくとも2台のサーバを含む耐障害性コンピュータ・システムを動作させるステップは、耐障害性コンピュータ・システムの各々のサーバに、第1セットの動作を実行しないコンピュータと通信させ、システムのコンポーネントに障害が発生した場合に、どのサーバが第1セットの動作の実行を継続するかを、少なくとも一つのサーバとコンピュータの間の通信に基づいて決定させるステップを含む。
実施は、以下の特徴の一つ又はそれ以上を含むことができる。例えば、どのサーバが第1セットの動作を継続するかを決定するステップは、システムのコンポーネントの障害発生後にコンピュータと通信できるサーバに第1セットの動作の実行を継続させるステップを含むことができる。
システムはまた、システムのコンポーネントに障害が発生した場合に、どのサーバが第1セットの動作の実行を終了するかを決定することができる。例えば、システムのコンポーネントの障害発生後にコンピュータと通信できないサーバが第1セットの動作を終了することができる。
システムのコンポーネントは、第1サーバ、第1サーバとネットワークの間の第1リンク、第2サーバ、及び第2サーバとネットワークの間の第2リンクを含むことができ、システムのコンポーネントの障害は、第1サーバ、第2サーバ、第1リンク又は第2リンクの障害を含むことができる。どのサーバが第1セットの動作の実行を継続するかをコンピュータとの通信に基づいて決定するステップは、第2リンクの障害が発生した場合に、第1サーバに第1セットの動作の実行を継続させ、第2サーバに第1セットの動作の実行を終了させることによって、分離脳動作を避けるステップを含むことができる。
コンピュータは第3リンクによりネットワークに接続され、第1セットの動作を実行しない複数のコンピュータからサーバによって選択されることができる。コンピュータは独自の識別名をもつことができ、各々が独自の識別名をもつ複数の耐障害性コンピュータ・システムと通信するように設定することができる。
サーバが、第1セットの動作を実行しないコンピュータを選択した後、第1サーバがコンピュータ及び第2サーバとは独立に動作することを許可するトークンを第1サーバに与えることができる。トークンの付与は、コンピュータの選択のように、第1サーバ及び第2サーバが互いに通信できる状態で行うことができる。
コンピュータは第1サーバにトークンを与えることができる。例えば、コンピュータは第1サーバと第2サーバのどちらがより高レベルの機能を有するかを判断し、第1サーバがより高レベルの機能を有するときに第1サーバにトークンを与えることができる。或いは、コンピュータは第1サーバ及び第2サーバがコンピュータとのネットワーク接続を有するかどうかを判断し、第1サーバがコンピュータとのネットワーク接続を有し、そして第2サーバがコンピュータとのネットワーク接続を有しないときに、第1サーバにトークンを与えることができる。
一つ又はそれ以上の実施の詳細は、添付の図面と以下の記述で説明される。その他の特徴は、記述、図面及び特許請求の範囲から明白となる。
図1を参照すると、2台のネットワーク接続されたコンピュータから構築された耐障害性コンピュータ・システム100は、コンピュータ・システムの二つの半部分を分離する障害状態を起し易い。サーバ110及びサーバ120は完全複製型耐障害性システム100の二つの半部分である。サーバ110及び120はそれぞれリンク111及び121を介してネットワーク150に接続される。リンク111及び121の各々は、ネットワーク150への二つ又はそれ以上のイーサネット(登録商標)接続をもつような複式接続リンクを表すことができる。サーバ110をサーバ120から分離する可能性のある単一障害状態の一例は、サーバ110及び120を収容する構築物の間の配線トレンチに食い込むバックホー・トラクタである。これは分離脳として知られる状態の可能性をもたらす。サーバ110及び120の各々は、動作を妨げるローカルな障害状態をもたない完全なコンピュータ・システムである。サーバ110及び120の両方が動作を続ける場合には、調和不可能となる相互に異なるデータベースを生成することになる。分離脳動作を防ぐためには、システム100は両方のサーバ110及び120をオフラインとするか、又は一つのサーバ(例えばサーバ110)を予め選択して継続させ、他のサーバ(サーバ120)をオフラインにする必要がある。両方のサーバをオフラインにすることはシステムの可用性を減少させる。一つのサーバを予め選択することは、予め選択されたサーバが障害発生後もなお動作することを想定している。しかし、サーバ110は、バックホー・トラクタが配線を切断するときにサーバ110を収容する構築物への電源を切断する場合には動作不能となる可能性がある。
一実施例において、サーバはネットワーク(ローカル・エリア・ネットワーク、広域ネットワーク又はインターネットなど)を介してアクセス可能なコンピュータである。より特定的な実施例においては、サーバは、サーバにネットワークを介して遠隔で接続されたクライアント・コンピュータ・システムにサービスを提供するように設計されたコンピュータとすることができる。幾つかのサーバは特定機能専用であり、例えば、プリント・サーバ、電子メール(e−mail)サーバ、ファイル・サーバ、データ・ベース・サーバ、アプリケーション・サーバなどである。その場合、サーバはメモリ、ディスク・スペース、一つ又はそれ以上のアプリケーション・プログラム、及び/又は特定機能を実施するためのデータベースで構成される。機能を実行することを望むコンピュータのユーザは、クライアント・コンピュータ(例えば、ラップトップ、デスクトップ、又は別のサーバ)からサーバに接続してその機能を実行することができる。サーバの別の実施例においては、コンピュータ・プログラマが、クライアント・プログラムと呼ぶことのできる別のプログラムに関するサービスを実行する。サーバ・プログラムとクライアント・プログラムは非同時又は同時のネットワーク接続を介して通信することができる。
マサチューセッツ州リトルトンのMarathon Technologies社は、レプリケーション・イン・スペース法を用いた、図2に示され、以下に説明される耐障害性システム200の実施に使用できる、Endurance(登録商標)FT Virtual Serverと呼ばれるクォーラム・サービスを製作している。
図2はクォーラム・コンピュータ230を加えた耐障害性システム200を示す。サーバ210及び220は、リンク211、221、及びネットワーク250により相互接続された耐障害性コンピュータ・システムを構成する。クォーラム・コンピュータ230はリンク231を介してネットワーク250に接続する。システム200内に障害が存在しないときは、クォーラム・コンピュータ230はサーバ210及び220の両方と通信することができる。ネットワーク250が、単一の障害発生がリンク211、221及び231のうちのどの二つをも切断しないように構築されている場合、クォーラム・コンピュータ230は分離脳動作を避けるための障害に関する第3の見地を与える。何れかのリンク(211、221、231)又はコンピュータ(210、220、230)が故障したときは、残りの接続されたコンポーネントがネットワークをどのように分断するかを決定することができる。
例えば、リンク211の障害は、サーバ210を、リンク221、ネットワーク250、及びリンク231を介して通信しているサーバ220及びクォーラム・コンピュータ230から切り離す。サーバ210は、サーバ220もクォーラム・コンピュータ230をも検出できないので、切り離されたことを認識する。サーバ220はクォーラム・コンピュータ230を検出できるので切り離されていないことを認識する。
別の実施例として、サーバ210の障害はサーバ220及びクォーラム・コンピュータ230には影響を及ぼさず、それらは依然としてリンク221、ネットワーク250、及びリンク231を介して通信することができる。サーバ220はクォーラム・コンピュータ230を検出できるので切り離されていないことを認識する。
リンク221及びサーバ220の障害に対しては逆の場合が起り、結果としてサーバ210とクォーラム・コンピュータ230がリンク211、ネットワーク250、及びリンク231を介して通信する。
リンク231又はクォーラム・コンピュータ230の障害は、結果としてサーバ210及び220がリンク211、ネットワーク250及びリンク221を介して通信する。系の動作部分を何も失われない。しかし、クォーラム・コンピュータ230との通信の欠如により、システム200は別の障害が発生した場合に、再び分離脳動作を起し易くなる。サーバ210とサーバ220の何れもクォーラム・コンピュータ230を検出しないとき、ソフトウェア・ポリシーは、分離脳動作を避けるために、クォーラム・コンピュータ230への通信が回復するまで、耐障害性システムの格下げ(サーバ220又はサーバ230の何れかを系から取り外す)を選択することができる。
クォーラム・コンピュータは、クォーラム・プロトコルを実行する任意のコンピュータとすることができる。クォーラム・コンピュータの機能は、耐障害性システムの付加的な機能を与えることであるので、クォーラム・コンピュータはネットワーク250に恒久的に接続されることが望ましい。毎晩ネットワークから取り外されるラップトップ・コンピュータ、又は毎晩電源を落とされるデスクトップ・コンピュータは、クォーラム・コンピュータとして選択することは望ましくない。
図3は、複数のクォーラム・コンピュータ(330、340)を有する耐障害性コンピュータ・システム300を示す。ネットワーク350は、リンク311を介してサーバ310に、リンク321を介してサーバ320に、リンク331を介してクォーラム・コンピュータ330に、及び、リンク341を介してクォーラム・コンピュータ340に接続する。単一のクォーラム・コンピュータ(330)が分離脳動作を避けるためにサーバ310及び320と共に動作するように選出される。クォーラム・コンピュータ330がもはやアクセス不能となった場合には、クォーラム・コンピュータ340が、分離脳動作を避けるため又はシステム300の格下げの必要を避けるために、サーバ310及び320と共に動作するように選出される。複数のクォーラム・コンピュータが許容されるので、標準的なデスクトップ・コンピュータが、耐障害性クォーラム・コンピュータを必要とせずに連続的なクォーラム・サービスを提供することができる。
図4は、二つのクォーラム・コンピュータ(430及び440)を有する二つの耐障害性コンピュータ・システム(401及び402)を示す。耐障害性システム401は、サーバ410、リンク411、ネットワーク450、リンク421、及びサーバ420を含む。耐障害性システム402は、サーバ460、リンク461、ネットワーク450、リンク471、及びサーバ470を含む。システム401と402の何れか一方又は両方は、クォーラム・コンピュータ(430又は440)を用いて分離脳動作を避けることができる。システム401は、システム402がどのクォーラム・コンピュータ(430、440)を使用しているかに関らず、何れかのクォーラム・コンピュータ(430、440)を使用することができる。
クォーラムの詳細な動作。
本考察に関して、サーバは3つの主状態、オフライン、オンライン、及びアクティブ状態を有する。オフラインは現在耐障害性システムの動作に関っていないことを意味する。オンラインは、サーバがその耐障害性システム内の他のサーバと通信し、アクティブになることを試行していることを意味する。アクティブはサーバがその耐障害性システムの動作しているコンポーネントであることを意味する。
各々の耐障害性コンピュータ・システムは、ソフトウェアで生成されたグローバル一意ID(GUID)を有する。従って、図4において、システム401のGUIDはシステム402のGUIDとは異なる独自のものである。単一のクォーラム・コンピュータは、複数の耐障害性システムが使用することができ、それらのシステムにより選出されると言う。システムのGUIDは対にされ、クォーラム・コンピュータが、対処中の又は選出された耐障害性システムを識別するのに用いる。各々のクォーラム・コンピュータはまた、GUIDをもち、クォーラム・コンピュータ430にはクォーラム・コンピュータ440のGUIDとは異なる独自のGUIDが与えられる。クォーラム・コンピュータのGUIDは、耐障害性システムが、それがどのクォーラム・コンピュータを選出したかを識別するために用いる。
許可又はトークンが生成され、耐障害性システムのサーバ(例えば、システム401のサーバ410及び420)と現在選出されているクォーラム・コンピュータ430との間で交換される。トークンの生成に関るコンピュータの各々はそのトークンの複製を保持する。トークンは、どのサーバ(410又は420)が他のサーバ(420又は410)の存在なしに動作することを許可されているか示す。これは、サーバに、停電後又はサーバのリスタート後に再起動する機能を与える。目的は、分離脳動作を引き起こさずに可用性を最大にすることである。動作ルールは以下のことを含む。
1)両方のサーバが互いに通信できるが、クォーラム・コンピュータとは通信できないときに、「トークン」が生成される。
2)一つサーバが選出されたクォーラム・コンピュータと通信できるが他のサーバとは通信できないとき、「トークン」が生成される可能性がある。
3)クォーラム・コンピュータは、両方のサーバが互いに通信でき、クォーラム・コンピュータと通信できるときにだけ、選出することができる。
4)「トークン」を有するサーバは独立に動作することができる。
システム401には二つの定常状態構成がある。一つの定常状態構成は、サーバ410、サーバ420及び選出されたクォーラム・コンピュータ430が相互に接続されるときに生ずる。もう一つの定常状態構成は、サーバ410又はサーバ420の何れか一方がトークンを有して独立に動作するときに生じる。系は第1の定常状態において耐障害性システムとして動作するが、第2の定常状態においてはそのようには動作しない。
以下に説明される図5は、図4のクォーラム・コンピュータ430若しくは440、又は図2のクォーラム・コンピュータ230に関する状態遷移図を表す。
図6は、ローカル・サーバの状態遷移図を表し耐障害性システム内のサーバの見地から描かれている。一つのサーバ(410又は420)はそれ自体を「ローカル」と見なし、耐障害性システム401内の他のサーバ(420又は410)を「リモート」と見なす。サーバ410の見地から図6を見るとき、「ローカル」はサーバ410を指し、「リモート」はサーバ420を指す。サーバ420の見地から図6を見るときは、「ローカル」はサーバ420を指し、「リモート」はサーバ410を指す。
以下の考察は、クォーラム・コンピュータに関する図5の状態遷移図、及びサーバに関する図6の状態遷移図を説明する。図5及び図6の状態図の間の相互作用もまた考察される。単一のクォーラム・コンピュータ(例えば、430)が同時に複数の耐障害性システム(例えば、401および402)に対して機能できることに注意されたい。この場合、クォーラム・コンピュータが機能するシステムの各々に対して、異なる図5の状態遷移図が存在することになる。さらに、単一の耐障害性システム(例えば、401)は複数のクォーラム・コンピュータ(例えば、430及び440)と相互作用することができる。
各々の、クォーラム・コンピュータ430及び440、並びに耐障害性システム401及び402は、グローバル一意識別子(GUID)が割り当てられる。考察を簡単にするために、GUIDは、クォーラム・コンピュータ430に対してQ430、クォーラム・コンピュータ440に対してQ440、耐障害性システム401に対してS401、耐障害性システム402に対してS402と仮定する。
図5を参照し、耐障害性システム401とクォーラム・コンピュータ430の間には事前の接続がなかったと仮定すると、クォーラム・コンピュータ430は遷移「開始」501において立ち上がり「初期化」状態510に入る。「開始」501遷移は、クォーラム・コンピュータがクォーラム・サービスを開始するときはいつでも起る。「開始」501遷移は、クォーラム・コンピュータが再起動する場合に起る、図5のあらゆる状態からの遷移を意味する。
「初期化」510の後にクォーラム・コンピュータが耐障害性システム401の現在の「システム」GUID(即ち、S401)の情報をもたない場合、遷移511により「非アクティブ」520となる。クォーラム・コンピュータが「システム」GUID S401を保管しているときは、遷移512により状態「セグメント化」550に移動する。以下に考察するように、これは、「システム」GUIDに関する「トークン」がシステム401の一つのサーバに与えられ、そのサーバが独立に動作する許可を有することを意味する。
状態「非アクティブ」520は、クォーラム・コンピュータがシステム401のアクティビティの事前情報を有しない状態を表す。デフォルト遷移、「開始」501はクォーラム・コンピュータを状態「初期化」510に戻す。「非アクティブ」520から状態「接続」530への遷移521は、システム401の両方のサーバがこのクォーラム・コンピュータに接続する(選出する)ときに起る。「トークン」が生成され、クォーラム・コンピュータにより保持される。システム401のサーバが保持していた全ての以前の「トークン」は破棄される。「トークン」は耐障害性システム400及び現在の「システム」GUIDに独自のものである。クォーラム・コンピュータが保持している「トークン」は、「システム」GUIDの何れのサーバも現在「トークン」を保持せず、従って何れのサーバも独立に動作する許可をもたないことを示す。
「接続」530から4つの可能な遷移がある。暗黙の「開始」501から状態「初期化」510への遷移は、クォーラム・コンピュータが「トークン」を保持しながらクォーラム・サービスをリスタートすることを表す。クォーラム・コンピュータは「システム」GUIDに関する「トークン」の全情報を失う。耐障害性システム401のサーバはこのクォーラム・コンピュータを再選出するか又は任意の他のクォーラム・コンピュータを選出することが許可される。
「接続」530から状態「非アクティブ」520に戻る遷移531は、クォーラム・コンピュータ430が耐障害性システム401の両方のサーバとの通信を失ったときに起る。これは暗黙の非選出化の機能である。この遷移は、クォーラム・コンピュータへのネットワーク接続の喪失により起った可能性があり、或いは、耐障害性システム401のサーバは別のクォーラム・コンピュータを選出した可能性がある。耐障害性システム401に関する「トークン」及び「システム」GUIDの全情報は適切なタイムアウト時間の後に破棄される。このクォーラム・コンピュータ430はもはや耐障害性システム401に固有の情報を維持していない。
「接続」530からの第3の遷移は、「セーブ」GUID540への遷移533であり、その場合、耐障害性システム401の両方のサーバはもはや互いに接続されていないが、クォーラム・コンピュータには依然としてアクセスできる。システム401の各々のサーバは、クォーラム・コンピュータからの「トークン」を要求する。これは分離脳接続である。要求の一部分として各々のサーバはそのサーバの現在の機能を表すスカラー値を供給する。耐障害性システム401のサーバの内の一つだけが動作の継続を許可されるべきである。現在の機能(例えば、ネットワーク接続装置、利用可能なディスク・ドライブ、メモリ、又は最少の故障)の最良の選択を表す最高のスカラー値を有するサーバがクォーラム・コンピュータにより「トークン」を発行されることになる。「トークン」を有するサーバは独立な動作を継続することを許可される。
「接続」530からの第4の遷移はまた「セーブ」GUID540への遷移である。耐障害性システム401のサーバの内の一つが依然としてクォーラム・コンピュータに接続しており「トークン」を要求する。そのサーバはクォーラム・コンピュータにより「トークン」を与えられる。「トークン」を有するサーバは独立な動作を継続することを許可される。
状態530「接続」からの遷移では包含されない「トークン」分配の二つの場合がある。システム401の二つのサーバは、クォーラム・コンピュータを使用せずにそれらの間で「トークン」を生成して分配することが許可される。これは、サーバ410及び420の一方又は両方がクォーラム・コンピュータ430への接続を失い、しかし依然としてそれらの間で通信できる場合に起ることになる。サーバ410及び420は、互いにそれらの機能値を直接に交換して、サービスを提供することになるサーバを識別する「トークン」を生成することになる。図5において、この場合は状態520「非アクティブ」への遷移530により表される。このクォーラム・コンピュータは非選出化された。
状態「セーブ」GUID540はシステムGUID S401及び「トークン」の情報をセーブする。この情報は、状態「接続」530が再び到達されるまで存続する。「セーブ」GUID540からの3つの遷移が存在する。暗黙の遷移501「開始」は、「セグメント化」550への遷移512及び遷移551を介して状態「セーブ」GUID540に戻る。「セーブ」GUID540からの第2の遷移は遷移541であり、これは耐障害性システム401のサーバの間に通信が再確立したときに起る。「トークン」がクォーラム・コンピュータに返され、状態「接続」530に入る。状態「セーブ」GUID540から状態「セグメント化」550に至る第3の遷移542は、耐障害性システム401内のサーバの一つ又は両方への通信が失われたときに起る。
状態「セグメント化」550は、クォーラム・コンピュータがそのトークンをシステム401のサーバに与えて、そのサーバがシステム401内の別のサーバと独立に起動及び/又は動作する権限を有するものとして指名することを表す。「セグメント化」550からの二つの遷移がある。暗黙の遷移「開始」501は、状態「初期化」510及び遷移512を介して「セグメント化」550に戻る。状態「セグメント化」550への遷移512は、クォーラム・コンピュータが耐障害性システム401のGUID(S401)を保存しているときに起る。これは、S401に関する「トークン」が未決着であることを意味する。
状態「セグメント化」550からの第2の遷移は、状態「セーブ」GUID540への遷移551である。この遷移は、耐障害性システム401の両方のサーバがクォーラム・コンピュータに再接続されたときに起る。
未だ説明していない一つの遷移がある。状態「非アクティブ」520から状態「セーブ」GUID540への遷移522は、このクォーラム・コンピュータに接続する一つのサーバが「トークン」を要求するときに起る。タイムアウト時間が終了してシステム401のもう一つのサーバが接続しなくなった後、「トークン」が生成されその単一のサーバに与えられ、それが独立に動作することが許可される。この遷移は、このクォーラム・コンピュータが依然としてシステム401に対する選出されたクォーラム・コンピュータである場合にだけ起る。言い換えれば、そのクォーラム・コンピュータは状態「接続」530にあり、電源障害又はシステム再起動により遷移501が起るか、又はクォーラム・コンピュータとシステム401の間のネットワーク接続の喪失により遷移531が起る。状態「非アクティブ」520においては、一つのサーバがクォーラム・コンピュータに接続するときに、ここでそのクォーラム・コンピュータは選出されたクォーラムであることを認識し、タイマーを開始する。タイマーが終了するとき、クォーラム・コンピュータは「トークン」を生成して接続したサーバに与える。システム401のもう一つのサーバがタイムアウト時間の終了前に接続する場合には、前述のように、状態「接続」530への遷移521が起ることになる。
明白な非選出化の機能が存在しないことに注意されたい。クォーラム・コンピュータが非選出化されるとき、耐障害性システム401のサーバは、そのクォーラム・コンピュータと交信することを停止する。クォーラム状態遷移図の如何なる状態からも、「0サーバ」遷移は可能的な非選出化を表す。これは、クォーラム・コンピュータを状態「非アクティブ」520又は状態「セグメント化」550の何れかにしておく。状態「非アクティブ」520においては、クォーラム・コンピュータはシステムGUID S401の情報をもたない。状態「セグメント化」550においては、クォーラム・コンピュータはシステムGUIDと、どのサーバが最後に「トークン」をもっていたかに関する情報とを保持している。耐障害性システム401がいつかこのクォーラム・コンピュータを再選出する場合には、遷移551及び541により状態「接続」530に戻り、そこで古い「トークン」情報が一掃される。耐障害性システム401のサーバは、現在のクォーラム・コンピュータのクォーラムGUIDを追跡し、あらゆる他のクォーラム・コンピュータが保持していたあらゆる「トークン」情報を無視する。従って、クォーラム・コンピュータ内の古い「トークン」情報は不都合な影響を及ぼさない。
図6を参照すると、サーバに関する状態遷移が記述されている。暗黙の遷移は「開始」601であり、これは状態「オフライン/不明」610に導く。殆どの場合、選択された状態名はローカル・サーバの状態(オフライン)及び次にリモート・サーバの状態(不明)を与える。初めにサーバがアクティブにされるときには、クォーラム・コンピュータは選出されていないので、クォーラムGUIDは検出されない。また、「トークン」も存在しない。状態「オフライン/不明」610からは、リモート・サーバが検出されたときの状態「オンライン/オンライン」630への遷移613だけが用いられる。
状態「オンライン/オンライン」630からの遷移「開始」601はローカル・サーバの再起動を表す。遷移631はリモート・サーバの再起動を表す。いずれの場合にも、状態「オフライン/不明」610に入る。状態「アクティブ/アクティブ」640への遷移632は、ローカル及びリモート・サーバがクォーラムGUIDを有するクォーラム・コンピュータを選出するときに起る。そのクォーラム・コンピュータはこのシステムGUIDの「トークン」を追跡する。ローカル及びリモート・サーバの両方もまた、クォーラムGUIDに基づいて「トークン」を追跡する。遷移634及び遷移635は、ローカル及びリモート・サーバの両方が、タイムアウト時間終了前に同じクォーラム・コンピュータに接続できないときに起る。状態「アクティブ/オンライン」660への遷移634は、ローカル・サーバがリモート・サーバとのアービトレーションを獲得するときに起る。ローカル・サーバがアクティブとなるように選択された。「トークン」が生成され、ローカル・サーバを識別するために両方のサーバにより保持される。状態「オンライン/アクティブ」620への遷移635は、ローカル・サーバがリモート・サーバとのアービトレーションを失うときに起る。リモート・サーバがアクティブとなるように選択された。「トークン」が生成され、リモート・サーバを識別するために両方のサーバにより保持される。
状態「オンライン/オンライン」630を通過した後のパスについて以下に説明する。
状態640「アクティブ/アクティブ」は、システムの正常動作状態である。ローカル及びリモート・サーバの両方が動作中であり、クォーラム・コンピュータが接続されている。この状態からは、3つのコンポーネントの各々に対して一つずつ、3つの遷移がある。状態「オフライン/不明」610への遷移「開始」601は、ローカル・サーバが、リモート・サーバ及びクォーラム・コンピュータの両方との通信の障害又は喪失により、システムから外されていることを表す。状態「アクティブ/不明」650への遷移641は、ローカル・サーバがリモート・サーバとの接続を失い、選出されたクォーラム・コンピュータが「トークン」をローカル・サーバに与えるときに起る。状態「オフライン/不明」610への遷移642は、ローカル・サーバがリモート・サーバとの接続を失い、選出されたクォーラム・コンピュータが「トークン」をリモート・サーバに与えるときに起る。状態「格下げ未決定」670への遷移643は、クォーラム・コンピュータとの通信が失われたときに起る。ローカル及びリモート・サーバの間のアービトレーションは、クォーラム・コンピュータとの通信が再確立できない場合に用いられる、ローカル又はリモートの「トークン」を生成する。「クォーラム・トークン」は依然として存在するが、アクセス不可能なクォーラム・コンピュータ上に隔離されている。この2重トークンの解決法は以下に説明する。状態「アクティブ/アクティブ」640へ戻る遷移644は、サーバが、サーバの動作モードに影響せずに異なるクォーラム・コンピュータを選出することを可能にする
状態「格下げ未決定」670は、一時的なアクティブ/アクティブ状態である。この状態に入るとタイムアウト時間が開始する。タイムアウトの時間中に、選出されたクォーラム・コンピュータとの通信を再確立するか、又は新しいクォーラム・コンピュータを選出することが、コンピュータ・システムの格下げの必要性を避けることになる。状態「アクティブ/アクティブ」640への遷移673は、選出されたクォーラム・コンピュータとの通信が再確立されるときに起る。状態「格下げ未決定」670に入ることで生成されたローカル又はリモート「トークン」は、クォーラム・コンピュータ上のクォーラム「トークン」を優先させて破棄される。状態「アクティブ/アクティブ」640への遷移674は、新しいクォーラム・コンピュータが選出されるときに起る。ローカル又はリモート「トークン」は破棄され、新しい値のクォーラムGUIDにより識別される新しいクォーラム・コンピュータ上に新しいクォーラム「トークン」が生成される。古いクォーラムGUIDのクォーラム・コンピュータ上には依然として未決着のクォーラム「トークン」があることに注意されたい。状態「オフライン/不明」への遷移671は、状態「アクティブ/アクティブ」640からの遷移で生成された「トークン」がリモートであり、クォーラムを検出するタイムアウトが終了したか又はリモート・サーバが通信を停止するかの何れかのときに起る。状態「アクティブ/不明」650への遷移672は、状態「アクティブ/アクティブ」640からの遷移で生成されたサーバ「トークン」がローカルであり、クォーラムを検出するタイムアウトが終了したか又はリモート・サーバが通信を停止するかの何れかのときに起る。
状態「オフライン/不明」610に戻ると、その状態から4つの遷移がある。遷移613は、新しいシステムの初めの移動を説明した際に前述した。状態「オンライン/アクティブ」620への遷移611は、リモート・サーバが存在し、リモート・サーバが「トークン」を有するときに起る。状態「アクティブ/不明」650への遷移612は、ローカル・サーバが「トークン」を有するときに起る。状態「アクティブ/不明」650への遷移614は、クォーラムGUIDで識別される選出されたクォーラム・コンピュータが存在し、この選出されたクォーラム・コンピュータがクォーラム「トークン」を有し、リモート・サーバが利用できず、タイムアウト時間が終了したときに起る。次に、ローカル「トークン」が、クォーラム・コンピュータによりローカル・サーバに与えられ、このローカル・サーバはアクティブになることを許可される。
状態「オンライン/アクティブ」620は、システムに接続するように試行するローカル・サーバと共に動作可能なリモート・サーバを有する。状態「オフライン/不明」610への遷移621は、リモート・サーバとの通信が失われたときに起る。状態「アクティブ/アクティブ」640への遷移622は、ローカル及びリモート・サーバが新しいクォーラム・コンピュータを選出するときに起る。リモート「トークン」は破棄され、新しいクォーラム「トークン」が新しいクォーラム・コンピュータ上に生成される。状態「アクティブ/アクティブ」640への遷移623は、現在選出されているクォーラム・コンピュータがローカル及びリモート・サーバの両方に接続するときに起る。リモート「トークン」はクォーラム・コンピュータに戻される。
状態「アクティブ/不明」650は、不明のリモート・サーバと共に動作可能なローカル・サーバを有する。リモート・サーバへの接続が確立されるとき、状態「アクティブ/オンライン」660への遷移651が起る。
状態「アクティブ/オンライン」660は3つの遷移を有する。状態「アクティブ/不明」650への遷移661は、リモート・サーバとの通信が失われたときに起る。状態「アクティブ/アクティブ」640への遷移662は、ローカル及びリモート・サーバが新しいクォーラム・コンピュータを選出するときに起る。ローカル「トークン」は破棄され、新しいクォーラム「トークン」が新しいクォーラム・コンピュータ上に生成される。状態「アクティブ/アクティブ」640への遷移663は、現在の選出されたクォーラム・コンピュータがローカル及びリモート・サーバの両方に接続するときに起る。ローカル「トークン」はクォーラム・コンピュータに戻される。
状態「アクティブ/アクティブ」640が一度訪問された後は、クォーラムGUIDにより識別される現在の選出されたクォーラム・コンピュータが常に存在する。状態「オンライン/オンライン」630から、状態「アクティブ/アクティブ」640への遷移633は、クォーラムGUIDを有するクォーラム・コンピュータへの通信が再確立したときに起る可能性がある。遷移634及び遷移635は、ローカル・サーバもリモート・サーバも、タイムアウト時間終了前に、同じクォーラム・コンピュータに接続できないときに起る。状態「アクティブ/オンライン」660への遷移634は、ローカル・サーバがリモート・サーバとのアービトレーションを獲得するときに起る。ローカル・サーバはアクティブとなるように選択される。トークンが生成され、ローカル・サーバを識別するために両方のサーバにより保持される。状態「オンライン/アクティブ」620への遷移635は、ローカル・サーバがリモート・サーバとのアービトレーションを失うときに起る。リモート・サーバがアクティブとなるように選択される。「トークン」が生成され、リモート・サーバを識別するために両方のサーバにより保持される。
2重トークンの解決
所与のシステムGUIDに対して、任意の所与の時刻に複数のトークンが存在する可能性がある。所与の「システム」GUIDに対して複数のトークンの存在が容認される理由は以下の通りである。
1) 任意のシステムGUIDに対して選出されたクォーラム・コンピュータが一つだけ存在することができる。システムGUIDに対応するシステム内のサーバは選出されたクォーラム・コンピュータのクォーラムGUIDを追跡する。クォーラムGUIDは、システムGUID内の両方のサーバが新しいクォーラム選出に同意するときにだけ変わることができる。
2) サーバは、「トークン」を、選出されたクォーラム・コンピュータから又は他のサーバからだけ取得することができる。
3) クォーラム・コンピュータは、「トークン」を、システムGUIDに対応するシステムの両方のサーバと通信しているときにだけ取得することができる。
4) ローカル又はリモート「トークン」が未決着であるとき、システムGUIDに対応するシステムのサーバは、選出されたクォーラム・コンピュータのクォーラムGUIDのトークンの状態を無視する。
従って、クォーラム・コンピュータが非選出化されたとき、非選出化されたクォーラム・コンピュータはシステムGUIDに対応するシステムのサーバによって無視される。クォーラム・コンピュータの見地からのトークンの現在の状態は重要でなく、他のクォーラム・コンピュータと衝突するように見える可能性がある。それらが特定のシステムGUIDの選出されたクォーラム・コンピュータであると認識している幾つかのクォーラム・コンピュータが存在する可能性がある。システムGUIDに対応するシステムのサーバだけが、どのクォーラム・コンピュータが選出されたクォーラム・コンピュータであるかを認識する。システムGUIDがクォーラムGUIDに対応するクォーラム・コンピュータを再選出するとき、それらの対に関する見かけの衝突は解決される。クォーラム・コンピュータにはクォーラム「トークン」が与えられ、全てのローカル及びリモート・トークンは除去されることになる。
クォーラム・コンピュータとサーバの間の相互作用
サーバ310及びサーバ320(両方ともシステムGUID300に対応するシステムのメンバ)と、クォーラム・コンピュータ330及びクォーラム・コンピュータ340との間の相互作用の順序を、システムの動作を示すために説明する。コンフィギュレーションの変化は図7に示す。
ステップ1 サーバ310及びサーバ320を起動する。両方のサーバは、「トークン」がなく利用できるクォーラム・コンピュータがないので、状態「オンライン/オンライン」630になる。
ステップ2 サーバがアービトレーションを行なう。クォーラム・コンピュータを待つタイムアウト時間の後、サーバはサーバ320への「トークン」のアービトレーションを行う。サーバ310は、トークンをもたないので状態「オンライン/アクティブ」620になる。サーバ320は、トークンをもつので状態「アクティブ/オンライン」660になる。
ステップ3 クォーラムが起動する。クォーラム・コンピュータ330が起動する。「システム」GUIDの情報がないので、最終状態は「インアクティブ」520である。
ステップ4 クォーラム・コンピュータ330を選出する。サーバ310及びサーバ320の両方は選出クォーラム・コンピュータ330を発見する。サーバ310及びサーバ320の両方は状態「アクティブ/アクティブ」640になり、一方クォーラム・コンピュータ330は状態「接続」530になる。「クォーラム」GUIDは330であり、「システム」GUIDは300(サーバ310及び320に関する「システム」GUID)であり、「トークン」はクォーラム・コンピュータ330に付属する。
ステップ5 クォーラム・コンピュータを再起動する。これは、両方のサーバ310及びサーバ320を状態「格下げ未決定」670にさせる。それらは、サーバ320への「トークン」のアービトレーションを行う。
ステップ6 分離脳を避ける。クォーラム・コンピュータを取得する試行のタイムアウト時間が終了した。「トークン」を使用して、サーバ310は状態「オンライン/アクティブ」620になり、一方サーバ320は状態「アクティブ/オンライン」650となる。クォーラム・コンピュータ330は、「システム」GUID300に関する事前情報をなにももたずに、再初期化して状態「インアクティブ」520になった。
ステップ7 クォーラムを再取得する。両方のサーバ310及び320は、クォーラム・コンピュータ330に接続して「トークン」を戻す。これは両方のサーバを状態「アクティブ/アクティブ」にする。クォーラム・コンピュータ330に対しては、これは状態「接続」530に至る選出である。
ステップ8 サーバ320を失う。サーバ320は通信を停止する。クォーラム・コンピュータ330は状態「セグメント化」550に遷移し、「トークン」をサーバ310に与える。サーバ310は、状態「アクティブ/不明」650に遷移する。
ステップ9 クォーラム・コンピュータ330を失う。サーバ310は既にトークンを有し、独立に動作する許可を有するので、サーバ310には変化がない。
ステップ10 サーバ310を再起動する。サーバ310が再起動するとき、それは依然としてトークンを有するので、状態「オフライン/不明」610から状態「アクティブ/不明」650へ遷移する。
ステップ11 クォーラムを再起動する。クォーラム・コンピュータ330は、サーバ310の「システム」GUIDが起動中にセーブされ、利用できるサーバは一つだけ存在するので状態「セグメント化」550になる。サーバ310には変化が起きない。
ステップ12 サーバ320が起動する。サーバ320は、サーバ310又はクォーラム・コンピュータ330の何れかへの接続が確立されるまでは状態「オフライン/不明」610状態に留まる。サーバ310は「トークン」を有し、サーバ320は「トークン」の記録を有しないことに注意されたい。サーバ320は、クォーラム・コンピュータ330に接続してトークンのアービトレーションを行う(これはステップ17に示される)か、又はサーバ310に接続してトークンのアービトレーションを行う必要がある。
ステップ13 サーバ320が接続する。サーバ310とサーバ320は通信できる。これはサーバ310を状態「アクティブ/オンライン」660とし、サーバ320を状態「オンライン/アクティブ」620にする。両方のサーバはトークン所有権について同意する。クォーラム・コンピュータ340は起動して、次のステップにおいて新しい選出を示す。
ステップ14 クォーラム・コンピュータ340を選出する。両方のサーバ310及びサーバ320は、新しいクォーラム・コンピュータ340を選出することに同意する。これは、両方のサーバ310及び320を、「クォーラム」GUIDが340に設定された状態「アクティブ/アクティブ」640にする。クォーラム・コンピュータ330は依然として状態「セグメント化」550にあって、依然として「システム」GUID300により選出されていることを確信している。クォーラム・コンピュータ320は、300の「システム」GUID及び「トークン」を有する状態「接続」530になる。
ステップ15 両方のサーバを再起動する。両方のサーバは再起動され、どちらのサーバも「トークン」をもたず、両方のサーバがタイムアウト時間前に存在するので、状態「オフライン/不明」610から「オンライン/オンライン」630への経路をたどる(遷移614)。クォーラム・コンピュータ340は、「システム」GUID300への接続をタイムアウトし、「システム」GUID300の全ての情報を失い、状態「インアクティブ」520になる。
ステップ16 サーバ320を失う。サーバ310は、「トークン」をもたないので、状態「オフライン/不明」610になる。クォーラム・コンピュータ340は依然としてシステム300に対する選出されたクォーラム・コンピュータである。
ステップ17 クォーラム及びタイムアウト。サーバ320が出現するのを待つタイムアウト時間の後、サーバ310は「トークン」に関してクォーラム・コンピュータの「クォーラム」GUID(340)とアービトレーションを行う。クォーラム・コンピュータ340は、「システム」GUID300の事前情報をもたないが、「トークン」を生成してサーバ310に与える。これは、サーバ310を状態「アクティブ/不明」650に、及びクォーラム・コンピュータ340を状態「セグメント化」550に残す。両者はサーバ310が「トークン」をもつことに同意する。
ステップ18 サーバ320が再起動する。サーバ320は、サーバ310が存在して「トークン」をもつので、状態「オンライン/アクティブ」620になる。サーバ310は状態「アクティブ/オンライン」660になる。クォーラム・コンピュータ340は、サーバ320が未だそれに接続していないので、状態「セグメント化」550に留まる。
ステップ19 サーバ320が復帰する。両方のサーバは、サーバ320がクォーラム・コンピュータ340に接続するときに状態「アクティブ/アクティブ」に遷移する。クォーラム・コンピュータ340は状態「接続」530になる。
ステップ20 分離脳を避ける。サーバ310とサーバ320はもはや通信できない。クォーラム・コンピュータ340は、状態「セーブ」GUID540に遷移して、「トークン」をサーバ320に与える。サーバ320はトークンを有する状態「アクティブ/不明650」になる。サーバ310は、「トークン」をもたず、クォーラム・コンピュータ340からそれを取得できないので、状態「オフライン/不明」610になる。
ステップ21 再接続。サーバ310及び320が再接続する。これは、両方のサーバを状態「アクティブ/アクティブ」640に遷移させる。クォーラム・コンピュータ340は、状態「接続」530に遷移して「トークン」を取り戻す。
ステップ22 クォーラム330を選出する。両方のサーバ310及び320は、状態「アクティブ/アクティブ」640状態に留まって、如何なる状態変化も起さずに、クォーラム・サーバ330を選出する。クォーラム・コンピュータ330は、状態「セグメント化」550から「セーブ」GUID540を経て状態「接続」530へ遷移する。クォーラム・コンピュータ340は、「システム」GUID300の事前情報のない状態「インアクティブ」520になる。サーバ310、320、及びクォーラム・コンピュータ330に関する「システム」GUID及び「クォーラム」GUIDはここで調和している。
複製システムが分離脳モードで動作する可能性のないことを保証する方法を説明した。浮動の(利用可能なコンピュータのダイナミック・プールから選択可能な)クォーラム・コンピュータを、複製コンポーネントの間で直接の通信が失われたときに、それらの間でアービトレーションを行うために使用することができる。障害が存在するときに、システムを再起動し、しかし分離脳動作を避ける機能が、トークンの付加によって与えられる。システムの障害、再起動、及びクォーラム・コンピュータの変更のあらゆる場合にトークンの調整が維持される。
本方法の実施は、方法又はプロセス、システム又は装置、或いはコンピュータがアクセス可能な媒体上のコンピュータ・ソフトウェアを含むことができる。他の実施も添付の特許請求の範囲内にある。
簡単な耐障害性コンピュータ・システムのブロック図である。 1台のクォーラム・コンピュータと、2台のサーバを含むネットワーク接続コンピュータ・システムとを含むシステムのブロック図である。 2台のクォーラム・コンピュータと、2台のサーバを含むネットワーク接続コンピュータ・システムとを含むシステムのブロック図である。 2台のクォーラム・コンピュータと、各々が2台のサーバを含む二つのネットワーク接続コンピュータ・システムとを含むシステムのブロック図である。 クォーラム・コンピュータに関する状態遷移図である。 サーバに関する状態遷移図である。 図3のシステムに関する相互相関された状態遷移情報を与える。

Claims (22)

  1. 耐障害性コンピュータ・システムを動作させる方法であって、
    各々が第1セットの動作を実行するように構成される、第1サーバ、前記第1サーバとネットワークの間の第1リンク、第2サーバ、及び前記第2サーバと前記ネットワークの間の第2リンクを少なくとも含む耐障害性コンピュータ・システムの各々のサーバに、前記第1セットの動作を実行しないコンピュータと前記ネットワークを通じて通信させ、
    害が発生した場合に、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを、
    記第1サーバ及び前記第2サーバがお互いに通信することができる場合、前記第1サーバ及び前記第2サーバに、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定するために通信させること、及び
    記第1サーバ及び前記第2サーバがお互いに通信することができない場合、前記第1セットの動作を実行しない前記コンピュータに、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定するために前記第1サーバ及び前記第2サーバと通信させること、
    によって決定する
    ステップを含むことを特徴とする方法。
  2. 前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定するステップは、前記障害後に前記コンピュータと通信できる前記第1サーバ及び前記第2サーバの内の1つに、前記第1セットの動作の実行を継続させるステップを含むことを特徴とする、請求項1に記載の方法。
  3. 前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定するステップは、前記障害後に前記コンピュータと通信できない前記第1サーバ及び前記第2サーバの内の1つに、前記第1セットの動作の実行を終了させるステップを含むことを特徴とする、請求項1に記載の方法。
  4. 前記障害が発生した場合に、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を終了することになるかを決定するステップをさらに含むことを特徴とする、請求項1に記載の方法。
  5. 前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を終了することになるかを決定するステップは、前記障害の後、前記コンピュータと通信できない前記第1サーバ及び前記第2サーバの内の1つに、前記第1セットの動作の実行を終了させるステップを含むことを特徴とする、請求項4に記載の方法。
  6. 前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを前記コンピュータとの通信に基づいて決定するステップは、前記第2リンクの障害が発生した場合に、前記第1サーバに前記第1セットの動作の実行を継続させ、前記第2サーバに前記第1セットの動作の実行を終了させることによって、分離脳動作を避けるステップをさらに含むことを特徴とする、請求項1に記載の方法。
  7. 前記コンピュータは前記ネットワークに第3リンクにより接続されることを特徴とする、請求項1に記載の方法。
  8. 前記第1サーバ及び前記第2サーバに、前記第1セットの動作を実行しない複数のコンピュータから、前記第1セットの動作を実行しない前記コンピュータを選出させるステップをさらに含むことを特徴とする、請求項1に記載の方法。
  9. 前記第1セットの動作を実行しない前記コンピュータは、独自の識別名を有することを特徴とする、請求項8に記載の方法。
  10. 前記第1セットの動作を実行しない前記コンピュータは、複数の耐障害性コンピュータ・システムと通信するように構成されることを特徴とする、請求項8に記載の方法。
  11. 前記複数の耐障害性コンピュータ・システムの各々は、独自の識別名を有することを特徴とする、請求項10に記載の方法。
  12. 前記第1サーバ及び前記第2サーバが前記第1セットの動作を実行しない前記コンピュータを選出した後で、第1サーバに、該第1サーバが前記コンピュータ及び第2サーバと独立に動作することを許可するトークンを与えるステップをさらに含むことを特徴とする、請求項8に記載の方法。
  13. 前記第1サーバに前記トークンを与えるステップは、前記第1サーバ及び前記第2サーバが互いに通信できるときにだけそれを実行するステップを含むことを特徴とする、請求項12に記載の方法。
  14. 前記第1サーバ及び前記第2サーバに、前記第1セットの動作を実行しない前記コンピュータを選出させるステップは、前記第1サーバ及び前記第2サーバが互いに通信できるときにだけそれを実行するステップを含むことを特徴とする、請求項8に記載の方法。
  15. 前記コンピュータに、前記第1サーバに前記トークンを与えさせるステップをさらに含むことを特徴とする、請求項12に記載の方法。
  16. 前記コンピュータに、前記第1サーバ及び前記第2サーバのどちらがより高レベルの機能を有するかを判断させ、前記第1サーバが前記より高レベルの機能を有するとき、前記第1サーバに前記トークンを与える、ステップをさらに含むことを特徴とする、請求項15に記載の方法。
  17. 前記コンピュータに、前記第1サーバ及び前記第2サーバが前記コンピュータとのネットワーク接続を有するかどうかを判断させ、前記第1サーバが前記コンピュータとのネットワーク接続を有し、前記第2サーバが前記コンピュータとのネットワーク接続を有しないとき、前記第1サーバに前記トークンを与えるステップをさらに含むことを特徴とする、請求項15に記載の方法。
  18. 第1セットの動作を実行するように構成され、前記第1セットの動作を実行しないコンピュータとのネットワーク接続を有する第1サーバと、
    前記第1セットの動作を実行するように構成され、前記第1サーバ及び前記コンピュータとのネットワーク接続を有する第2サーバと、
    を備える耐障害性コンピュータ・システムであって、
    前記システムは、該システムのコンポーネントの障害が発生した場合に、前記サーバのどちらが前記第1セットの動作の実行を継続することになるかを、
    記第1サーバ及び前記第2サーバがお互いに直接通信することができる場合、前記第1サーバ及び前記第2サーバに、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定するために通信させること、及び
    記第1サーバ及び前記第2サーバがお互いに直接通信することができない場合、前記第1セットの動作を実行しない前記コンピュータに、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定するために前記第1サーバ及び前記第2サーバと通信させること、
    によって決定するように構成されることを特徴とする、コンピュータ・システム。
  19. コンピュータ可読媒体に格納されたコンピュータ・ソフトウェアであって、実行されたときに、耐障害性コンピュータ・システムに、
    それぞれが第1セットの動作を実行するように構成された、第1サーバ、前記第1サーバとネットワークの間の第1リンク、第2サーバ、及び前記第2サーバと前記ネットワークの間の第2リンクを少なくとも含む前記耐障害性コンピュータ・システムの各々のサーバに、前記第1セットの動作を実行しないコンピュータと前記ネットワークを通じて通信させ、
    害が発生した場合に、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを、
    記第1サーバ及び前記第2サーバがお互いに通信することができる場合、前記第1サーバ及び前記第2サーバに、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定するために通信させること、及び
    記第1サーバ及び前記第2サーバがお互いに通信することができない場合、前記第1セットの動作を実行しない前記コンピュータに、前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定するために前記第1サーバ及び前記第2サーバと通信させること、
    によって決定すること、
    を行わせる命令を含むことを特徴とするコンピュータ・ソフトウェア。
  20. 前記第1サーバ及び前記第2サーバのどちらが前記第1セットの動作の実行を継続することになるかを決定する前記ステップは、前記第1サーバが前記第2サーバより高いレベルの機能性を有するときは前記第1サーバが前記第1セットの動作の実行を継続することになると決定するステップを含むことを特徴とする請求項1に記載の方法。
  21. 前記第1セットの動作の実行を継続することになると決定された前記第1サーバ及び前記第2サーバの内の1つに、前記決定された前記第1サーバ及び前記第2サーバの内の1つに、前記コンピュータ、及び前記第1サーバ及び前記第2サーバの内の他の1つと独立して動作することを許すトークンを与えるステップをさらに含むことを特徴とする請求項1に記載の方法。
  22. 前記トークンは、前記第1サーバ及び前記第2サーバの内の前記決定された1つが再起動又はパワーアップすることを許すことを特徴とする請求項21に記載の方法。
JP2008510305A 2005-05-06 2006-05-08 耐障害性コンピュータ・システム Active JP5066080B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US67816705P 2005-05-06 2005-05-06
US60/678,167 2005-05-06
PCT/US2006/017652 WO2006121990A2 (en) 2005-05-06 2006-05-08 Fault tolerant computer system

Publications (3)

Publication Number Publication Date
JP2008542858A JP2008542858A (ja) 2008-11-27
JP2008542858A5 JP2008542858A5 (ja) 2009-06-25
JP5066080B2 true JP5066080B2 (ja) 2012-11-07

Family

ID=37397185

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008510305A Active JP5066080B2 (ja) 2005-05-06 2006-05-08 耐障害性コンピュータ・システム

Country Status (4)

Country Link
US (1) US7373545B2 (ja)
EP (1) EP1877901A4 (ja)
JP (1) JP5066080B2 (ja)
WO (1) WO2006121990A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060259461A1 (en) * 2005-05-16 2006-11-16 Rajesh Kapur Method and system for preserving access to deleted and overwritten documents by means of a system recycle bin
US7627584B2 (en) * 2005-11-30 2009-12-01 Oracle International Corporation Database system configured for automatic failover with no data loss
US8255369B2 (en) * 2005-11-30 2012-08-28 Oracle International Corporation Automatic failover configuration with lightweight observer
US7668879B2 (en) * 2005-11-30 2010-02-23 Oracle International Corporation Database system configured for automatic failover with no data loss
US8201016B2 (en) * 2007-06-28 2012-06-12 Alcatel Lucent Heartbeat distribution that facilitates recovery in the event of a server failure during a user dialog
US8001413B2 (en) * 2008-05-05 2011-08-16 Microsoft Corporation Managing cluster split-brain in datacenter service site failover
US8565067B2 (en) * 2009-01-09 2013-10-22 International Business Machines Corporation Apparatus, system, and method for link maintenance
JP5589393B2 (ja) * 2010-01-13 2014-09-17 富士通株式会社 データベースシステムおよびデータベース制御方法
EP3129903B1 (en) 2014-07-01 2018-11-28 SAS Institute Inc. Systems and methods for fault tolerant communications
WO2016077570A1 (en) 2014-11-13 2016-05-19 Virtual Software Systems, Inc. System for cross-host, multi-thread session alignment
US9703789B2 (en) 2015-07-27 2017-07-11 Sas Institute Inc. Distributed data set storage and retrieval
US9946719B2 (en) 2015-07-27 2018-04-17 Sas Institute Inc. Distributed data set encryption and decryption
US10275468B2 (en) * 2016-02-11 2019-04-30 Red Hat, Inc. Replication of data in a distributed file system using an arbiter
EP3506099A4 (en) * 2016-08-25 2019-09-04 Fujitsu Limited MAINTENANCE MANAGEMENT PROGRAM, MAINTENANCE MANAGEMENT METHOD, AND MAINTENANCE MANAGEMENT DEVICE
US10764115B1 (en) 2018-01-05 2020-09-01 Open Invention Network Llc EMS handling of faults in virtual network function components
US10379985B1 (en) * 2018-02-01 2019-08-13 EMC IP Holding Company LLC Automating and monitoring rolling cluster reboots

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021508A (en) * 1997-07-11 2000-02-01 International Business Machines Corporation Parallel file system and method for independent metadata loggin
US5999712A (en) * 1997-10-21 1999-12-07 Sun Microsystems, Inc. Determining cluster membership in a distributed computer system
US6279032B1 (en) * 1997-11-03 2001-08-21 Microsoft Corporation Method and system for quorum resource arbitration in a server cluster
US6449734B1 (en) * 1998-04-17 2002-09-10 Microsoft Corporation Method and system for discarding locally committed transactions to ensure consistency in a server cluster
US6105099A (en) * 1998-11-30 2000-08-15 International Business Machines Corporation Method for synchronizing use of dual and solo locking for two competing processors responsive to membership changes
US6453426B1 (en) * 1999-03-26 2002-09-17 Microsoft Corporation Separately storing core boot data and cluster configuration data in a server cluster
US7774469B2 (en) * 1999-03-26 2010-08-10 Massa Michael T Consistent cluster operational data in a server cluster using a quorum of replicas
JP2000330814A (ja) * 1999-05-19 2000-11-30 Toshiba Corp 二重化サーバシステム
JP3833117B2 (ja) * 2000-01-31 2006-10-11 富士通株式会社 サーバ決定方法及び装置
JP2002169704A (ja) * 2000-12-01 2002-06-14 Hitachi Ltd 代行処理方法、代行処理システム及びコンピュータシステム
US6785678B2 (en) * 2000-12-21 2004-08-31 Emc Corporation Method of improving the availability of a computer clustering system through the use of a network medium link state function
US7016946B2 (en) * 2001-07-05 2006-03-21 Sun Microsystems, Inc. Method and system for establishing a quorum for a geographically distributed cluster of computers
US7320085B2 (en) * 2004-03-09 2008-01-15 Scaleout Software, Inc Scalable, software-based quorum architecture
US20050283641A1 (en) * 2004-05-21 2005-12-22 International Business Machines Corporation Apparatus, system, and method for verified fencing of a rogue node within a cluster
US20060100981A1 (en) * 2004-11-04 2006-05-11 International Business Machines Corporation Apparatus and method for quorum-based power-down of unresponsive servers in a computer cluster
GB0501697D0 (en) * 2005-01-27 2005-03-02 Ibm Controlling service failover in clustered storage apparatus networks
JP4177339B2 (ja) * 2005-02-16 2008-11-05 株式会社東芝 分散システム、コンピュータおよび分散システムの状態遷移制御方法
US7631016B2 (en) * 2005-05-04 2009-12-08 Oracle International Corporation Providing the latest version of a data item from an N-replica set

Also Published As

Publication number Publication date
EP1877901A4 (en) 2014-05-07
WO2006121990A2 (en) 2006-11-16
US20060253727A1 (en) 2006-11-09
US7373545B2 (en) 2008-05-13
WO2006121990A3 (en) 2009-04-30
JP2008542858A (ja) 2008-11-27
EP1877901A2 (en) 2008-01-16

Similar Documents

Publication Publication Date Title
JP5066080B2 (ja) 耐障害性コンピュータ・システム
US7711820B2 (en) High availability for intelligent applications in storage networks
US8417899B2 (en) System and method for controlling access to shared storage device
JP4505763B2 (ja) ノードクラスタの管理
JP3953549B2 (ja) マルチプロセッサ・クラスタ・メンバシップ・マネージャ・フレームワーク
EP1370945B1 (en) Failover processing in a storage system
US6279032B1 (en) Method and system for quorum resource arbitration in a server cluster
KR100326982B1 (ko) 높은 크기 조정 가능성을 갖는 고 가용성 클러스터 시스템 및 그 관리 방법
JP3910539B2 (ja) 準備処理を取り入れたクラスタード・コンピュータ・システムにおけるリソース・アクション
US7870230B2 (en) Policy-based cluster quorum determination
US6839752B1 (en) Group data sharing during membership change in clustered computer system
US8370494B1 (en) System and method for customized I/O fencing for preventing data corruption in computer system clusters
US7464378B1 (en) System and method for allowing multiple sub-clusters to survive a cluster partition
JP4820814B2 (ja) スケラブルなソフトウェアをベースにしたクォーラムアーキテクチャ
US20040254984A1 (en) System and method for coordinating cluster serviceability updates over distributed consensus within a distributed data system cluster
US7953890B1 (en) System and method for switching to a new coordinator resource
KR100423225B1 (ko) 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜
US7120821B1 (en) Method to revive and reconstitute majority node set clusters
CN100550894C (zh) 对n路共享存储系统中快闪副本的高效锁管理
EP2382541B1 (en) Computer-implemented multi-resource shared lock
US11210187B1 (en) Computer cluster with adaptive quorum rules
JP2003030167A (ja) クラスタ化コンピュータ・システムでの入出力ブリッジ・デバイスのアトミック所有権変更動作
WO2003054711A1 (en) A system and method for management of a storage area network

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090508

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090508

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120402

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120702

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120810

R150 Certificate of patent or registration of utility model

Ref document number: 5066080

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150817

Year of fee payment: 3

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

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250