JP6362120B2 - クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステム - Google Patents

クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステム Download PDF

Info

Publication number
JP6362120B2
JP6362120B2 JP2016570024A JP2016570024A JP6362120B2 JP 6362120 B2 JP6362120 B2 JP 6362120B2 JP 2016570024 A JP2016570024 A JP 2016570024A JP 2016570024 A JP2016570024 A JP 2016570024A JP 6362120 B2 JP6362120 B2 JP 6362120B2
Authority
JP
Japan
Prior art keywords
quorum
node
quorum node
master
storage device
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
JP2016570024A
Other languages
English (en)
Other versions
JP2017517817A (ja
Inventor
▲鋭▼ ▲フェン▼
▲鋭▼ ▲フェン▼
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2017517817A publication Critical patent/JP2017517817A/ja
Application granted granted Critical
Publication of JP6362120B2 publication Critical patent/JP6362120B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/04Network management architectures or arrangements
    • H04L41/044Network management architectures or arrangements comprising hierarchical management structures
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • 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
    • 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/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/2046Error 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 where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • 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/0659Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
    • 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/0659Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
    • H04L41/0661Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities by reconfiguring faulty entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • 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
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/505Clust

Description

本発明はクラウド・コンピューティング技術の分野に関し、特に、クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステムに関する。
クラスタは2つまたはそれより多くのコンピュータにより形成され、各コンピュータは、クラスタ内のノード(Node)と呼ばれる。ネットワークは故障する(例えば、ネットワーク内のスイッチは故障する)ので、クラスタが2つまたはそれより多くのノード・グループ(Node Group)に分割されることもあり、この現象はブレイン分割(Brain Split)と呼ばれる。当該ブレイン分割がクラスタ内で行われた後、分割された2つまたはそれより多くのノード・グループ内の各ノード・グループはハート・ビート情報またはリース情報を用いて別のノード・グループの存在を検出できず、結果として、当該ノード・グループが当該別のノード・グループ内のノードが故障していると考えるかもしれない。このように、当該ノード・グループ内のノードが同一の期間内に共有記憶リソース(例えば、記憶ディスク)へのアクセスを開始するかもしれず、これが、データ・アクセス・エラーを生じさせるかもしれない。この場合、クラスタ管理ソフトウェアは一般に、特定のアルゴリズムを用いて、どのノード・グループが勝ち、元のクラスタの動作を継続するかを調停する。故障したノード・グループ内のノードは、再開しクラスタに再参加する動作を実施する必要がある。
先行技術では、以下の方式を使用して上述の問題を解決する。即ち、クォーラム(Quorum)ノードが投票するアルゴリズムが使用される。即ち、幾つかのノードがクラスタ内の全てのノードから選択され、クォーラム・ノードとして設定される。ブレイン分割が行われたとき、クラスタ内で生き残っているクォーラム・ノードの数はNである。ブレイン分割が行われ元のクラスタが2つのノード・グループに分割されると、ノード・グループ内のノードが、別のノードのハート・ビート情報またはリース情報を検出することにより当該ノードおよび当該別のノードの間の接続を決定してもよい。当該検出に従って、n個のクォーラム・ノードを含むノード・グループが第1のノード・グループを形成し、N−n個のクォーラム・ノードを含む別のノード・グループが第2のノード・グループを形成すると判定される。当該2つのノード・グループ内の各クォーラム・ノードは当該クォーラム・ノードのノード・グループ内のクォーラム・ノードの数を検出でき、当該クォーラム・ノードのノード・グループ内のクォーラム・ノードの数がRound(N/2)+1(Round(*)は丸め関数である)を超えたと検出したとき、当該クォーラム・ノードのノード・グループが、ブレイン分割が行われた後のクラスタの主要な部分(即ち、ブレイン分割後に調停により決定されたマスタ・ノード・グループ)であると考える。当該ノード・グループはクラスタの動作を継続する。他のノード・グループ内のノードが、当該ノードのノード・グループ内のクォーラム・ノードの数がRound(N/2)+1未満であることを検出したとき、当該ノードはノード再開を実施し、動作し続けるノード・グループにより形成されたクラスタに再参加する。
本発明を実装するプロセスにおいて、先行技術は以下の問題、即ち、クラスタが3つまたはそれより多くのノード・グループに分割されるとき、各ノード・グループ内のクォーラム・ノードの数がRound(N/2)+1を超えることはできない(Nはクラスタ内で生き残っているクォーラム・ノードの総数であり、Nは正の整数である)ので、マスタ・ノード・グループを、クラスタの動作を継続するための調停を通じて決定できないという問題を有することが分かる。
これに鑑みて、本発明の諸実施形態では、クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステムを提供する。これらは、ブレイン分割後のクラスタ調停処理を効果的に実装でき、その結果、クラスタ・サービスが高速に復元される。
第1の態様によれば、クラスタおよびクォーラム記憶装置により形成されたシステムに適用される、クラスタ・ブレイン分割後の調停処理方法が提供される。クラスタは、少なくとも2つのクォーラム・ノードを含み、クラスタ内の少なくとも2つのクォーラム・ノードの1つは初期マスタ・クォーラム・ノードとして予め記録され、当該方法は、クォーラム記憶装置により、リフレッシュ・パケット検出期間を開始するステップであって、当該リフレッシュ・パケット検出期間は反復実行される期間である、ステップと、ブレイン分割がクラスタ内で行われた後、クォーラム記憶装置により、第1のリフレッシュ・パケット検出期間内に、クラスタ内の当該少なくとも2つのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信し、当該第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が、当該初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するステップであって、当該第1のリフレッシュ・パケット検出期間は当該ブレイン分割がクラスタ内で行われた時点に対応するリフレッシュ・パケット検出期間である、ステップと、当該第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むと判定したとき、クォーラム記憶装置により、当該初期マスタ・クォーラム・ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定するステップと、クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信するステップとを含む。
第1の態様を参照して、第1の可能な実装方式では、第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないと判定したとき、クォーラム記憶装置は、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求を送信するクォーラム・ノードをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとして使用して、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信し、第2のリフレッシュ・パケット検出期間は第1のリフレッシュ・パケット検出期間に続くリフレッシュ・パケット検出期間である。
第1の態様または第1の態様の第1の可能な実装方式を参照して、第2の可能な実装方式では、クォーラム記憶装置により、ブレイン分割がクラスタ内で行われた後、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたかどうかを判定するステップは、特に、当該ブレイン分割がクラスタ内で行われた後、クォーラム記憶装置により、第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、クォーラム記憶装置により、全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信するクォーラム・ノードが初期マスタ・クォーラム・ノードを含むかどうかを判定するステップ、または、ブレイン分割がクラスタ内で行われた後、クォーラム記憶装置により、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードであるかどうかを逐次的に判定するステップを含む。
第1の態様の第1の可能な実装方式を参照して、第3の可能な実装方式では、クォーラム記憶装置が第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないと判定した後、当該方法はさらに、クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信し、その結果、第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に再度送信する、ステップを含む。
第1の態様または第1の態様の第1乃至第3の可能な実装方式の何れか1つを参照して、第4の可能な実装方式では、クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、当該方法はさらに、クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するステップであって、第1のパーミッション制御メッセージは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む、ステップと、クォーラム記憶装置により、アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するステップとを含む。
第1の態様または第1の態様の第1乃至第4の可能な実装方式の何れか1つを参照して、第5の可能な実装方式では、クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、当該方法はさらに、クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するステップであって、第2のパーミッション制御メッセージは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む、ステップと、クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するステップとを含む。
第1の態様または第1の態様の第1乃至第4の可能な実装方式の何れか1つを参照して、第6の可能な実装方式では、クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、当該方法はさらに、クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信されたパーミッション制御メッセージを受信するステップであって、当該パーミッション制御メッセージは、クォーラム記憶装置に対する、少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードの識別子および当該少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションを含み、当該アクセス・パーミッションは許可または拒否を含む、ステップと、当該パーミッション制御メッセージに従って、クォーラム記憶装置により、通知メッセージを当該少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに送信するステップとを含む。
第1の態様の第6の可能な実装方式を参照して、第7の可能な実装方式では、アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対して、パーミッション制御メッセージに従って、クォーラム記憶装置により、通知メッセージを少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに送信するステップは特に、クォーラム記憶装置により、アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するステップを含む。
第1の態様の第6または第7の可能な実装方式を参照して、第8の可能な実装方式では、アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対して、パーミッション制御メッセージに従って、クォーラム記憶装置により、通知メッセージを少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに送信するステップは特に、クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するステップを含む。
第1の態様の第4または第7の可能な実装方式を参照して、第9の可能な実装方式では、クォーラム記憶装置により、アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、当該方法はさらに、クォーラム記憶装置により、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを第1のカテゴリのクォーラム・ノードに送信するステップであって、ファイアウォール・ポリシを拒否に変更するために使用される当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように第1のカテゴリのクォーラム・ノードに指示するために使用される、ステップを含む。
第1の態様の第9の可能な実装方式を参照して、第10の可能な実装方式では、第1のカテゴリのクォーラム・ノードが再開動作を実施し、クラスタに再度参加した後、当該方法はさらに、クォーラム記憶装置により、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを第1のカテゴリのクォーラム・ノードに送信するステップであって、ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを許可に変更して、第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信できるようにするように第1のカテゴリのクォーラム・ノードに指示するために使用される、ステップを含む。
第2の態様によれば、クラスタおよびクォーラム記憶装置により形成されたシステムに適用される、クラスタ・ブレイン分割後の調停処理のためのクォーラム記憶装置が提供される。クラスタは、少なくとも2つのクォーラム・ノードを含み、クラスタ内の当該少なくとも2つのクォーラム・ノードの1つは初期マスタ・クォーラム・ノードとして予め記録され、クォーラム記憶装置は、リフレッシュ・パケット検出期間を開始するように構成された開始ユニットであって、当該リフレッシュ・パケット検出期間は反復実行される期間である、開始ユニットと、第1のリフレッシュ・パケット検出期間内に、ブレイン分割がクラスタ内で行われた後、クラスタ内の当該少なくとも2つのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信するように構成された受信ユニットであって、第1のリフレッシュ・パケット検出期間はブレイン分割がクラスタ内で行われた時点に対応するリフレッシュ・パケット検出期間である、受信ユニットと、第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するように構成された判定ユニットと、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたと判定されたとき、初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定するように構成された実行ユニットと、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信するように構成された送信ユニットとを備える。
第2の態様を参照して、第1の可能な実装方式では、当該実行ユニットはさらに、第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないと判定されたとき、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとして使用するように構成される。第2のリフレッシュ・パケット検出期間は第1のリフレッシュ・パケット検出期間に続くリフレッシュ・パケット検出期間であり、当該送信ユニットはさらに、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信するように構成される。
第2の態様または第2の態様の第1の実装方式を参照して、第2の可能な実装方式では、当該判定ユニットは特に、ブレイン分割がクラスタ内で行われた後、第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードを含むかどうかを判定するか、または、ブレイン分割がクラスタ内で行われた後、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードであるかどうかを逐次的に判定するように構成される。
第2の態様の第2の実装方式を参照して、第3の可能な実装方式では、当該実行ユニットはさらに、第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが、初期マスタ・クォーラム・ノードを含まないと判定されたとき、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを生成するように構成され、当該送信ユニットはさらに、当該マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信するように構成され、その結果、第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に再度送信する。
第2の態様または第2の態様の第1乃至第3の実装方式の何れか1つを参照して、第4の可能な実装方式では、当該受信ユニットはさらに、当該送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するように構成される。第1のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含み、当該実行ユニットはさらに、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第1のパーミッション制御メッセージに従ってアクセス拒否通知メッセージを生成するように構成され、当該送信ユニットはさらに、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するように構成される。
第2の態様または第2の態様の第1乃至第4の実装方式の何れか1つを参照して、第5の可能な実装方式では、当該受信ユニットはさらに、当該送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するように構成され、第2のパーミッション制御メッセージは、少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含み、当該実行ユニットはさらに、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第2のパーミッション制御メッセージに従ってマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成するように構成され、当該送信ユニットはさらに、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するように構成される。
第2の態様または第2の態様の第1乃至第3の実装方式の何れか1つを参照して、第6の可能な実装方式では、当該受信ユニットはさらに、当該送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信されたパーミッション制御メッセージを受信するように構成され、当該パーミッション制御メッセージは、クォーラム記憶装置に対する、少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードの識別子および当該少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションを含み、当該アクセス・パーミッションは許可または拒否を含み、当該実行ユニットはさらに当該パーミッション制御メッセージに従って通知メッセージを生成するように構成され、当該送信ユニットはさらに、当該通知メッセージを当該少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに送信するように構成される。
第2の態様の第6の実装方式を参照して、第7の可能な実装方式では、当該実行ユニットは特に、アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対するアクセス拒否通知メッセージを生成するように構成され、当該送信ユニットは特に、当該アクセス拒否通知メッセージをアクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するように構成される。
第2の態様の第6または第7の可能な実装方式を参照して、第8の可能な実装方式では、当該実行ユニットは特に、アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対してマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成し、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するように構成され、当該送信ユニットは特に、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージをアクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに送信するように構成される。
第2の態様の第4または第7の可能な実装方式を参照して、第9の可能な実装方式では、当該実行ユニットはさらに、当該送信ユニットが当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを拒否に変更するために使用される当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように第1のカテゴリのクォーラム・ノードに指示するために使用され、当該送信ユニットはさらに、ファイアウォール・ポリシを拒否に変更するために使用される当該通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
第2の態様の第9の可能な実装方式を参照して、第10の可能な実装方式では、当該実行ユニットはさらに、第1のカテゴリのクォーラム・ノードが再開動作を実施し、クラスタに再度参加した後、第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを許可に変更して、第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信できるようにするように第1のカテゴリのクォーラム・ノードに指示するために使用され、当該送信ユニットはさらに、ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
第3の態様によればクォーラム記憶装置が提供される。クォーラム記憶装置は、プロセッサ、メモリ、通信インタフェース、およびバスを備える。当該プロセッサ、当該メモリ、および当該通信インタフェースは当該バスを用いて互いと通信し、当該通信インタフェースはクラスタ内の少なくとも2つのクォーラム・ノードと通信するように構成され、当該メモリは、プログラムを格納するように構成され、当該記憶装置が実行したとき、当該プロセッサは、当該メモリに格納されたプログラムを実行して第1の態様の任意の可能な実装方式に従う方法を実行するように構成される。
第4の態様によれば、クラスタ・ブレイン分割後の調停処理システムが提供される。当該システムは、第2の態様または当該可能な実装方式の何れか1つに従うクラスタおよびクォーラム記憶装置を備え、クラスタは少なくとも2つのクォーラム・ノードを備え、クォーラム記憶装置は、クラスタ内の当該少なくとも2つのクォーラム・ノードの1つを初期マスタ・クォーラム・ノードに予め構成する。
クォーラム記憶装置が本発明の諸実施形態で設定される。クォーラム記憶装置が、クラスタ内の少なくとも2つのクォーラム・ノードの1つを初期マスタ・クォーラム・ノードとして事前に記録する。クォーラム記憶装置はリフレッシュ・パケット検出期間を開始する。当該リフレッシュ・パケット検出期間は反復実行される期間である。ブレイン分割がクラスタ内で行われた後、クォーラム記憶装置は、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたと判定する。第1のリフレッシュ・パケット検出期間はブレイン分割がクラスタ内で行われた時点に対応するリフレッシュ・パケット検出期間である。クォーラム記憶装置は、初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定し、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信する。上述の解決策では、クォーラム記憶装置が、初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を第1のリフレッシュ・パケット検出期間内に受信した後、クォーラム記憶装置は、初期マスタ・クォーラム・ノードを新たなマスタ・クォーラム・ノードとして使用し、これによりクラスタ復元プロセスにおいて、クラスタ・サービスが当該マスタ・クォーラム・ノードのスイッチに起因してハンドオーバされる問題を解決でき、それによりサービスの継続性が維持される。
本発明の諸実施形態における技術的解決策をより明確に説明するために、以下では、本発明の諸実施形態を説明するのに必要な添付図面を簡単に説明する。明らかに、以下の説明における添付図面は本発明の幾つかの実施形態を例示するにすぎず、当業者は、創造的努力なしにこれらの添付図面から他の図面を依然として導出することができる。
本発明の1実施形態に従うクラスタおよび記憶装置により形成されたクラスタ・システムのアーキテクチャの略図である。 本発明に従うブレイン分割後の調停処理方法の第1の実施形態の略図である。 本発明に従うブレイン分割後の調停処理方法の第1の実施形態の略図である。 本発明に従うブレイン分割後の調停処理方法の第1の実施形態の略図である。 本発明に従うブレイン分割後の調停処理方法の第2の実施形態の略図である。 本発明に従うクォーラム記憶装置の第1の実施形態の略ブロック図である。 本発明に従うクォーラム記憶装置の第2の実施形態の略ブロック図である。 本発明に従うノードの第1の実施形態の略ブロック図である。 本発明に従うノードの第2の実施形態の略ブロック図である。 本発明に従うブレイン分割後の調停処理システムの1実施形態の略ブロック図である。 本発明に従うブレイン分割後の調停処理方法の第3の実施形態の略図である。 本発明に従うブレイン分割後の調停処理方法の第3の実施形態の略図である。 本発明に従うブレイン分割後の調停処理方法の第3の実施形態の略図である。 本発明に従うクォーラム記憶装置の第3の実施形態の略ブロック図である。
以下では、本発明の諸実施形態の添付図面を参照して本発明の諸実施形態における技術的解決策を明確かつ十分に説明する。明らかに、説明した実施形態は本発明の諸実施形態の一部であり全部ではない。当業者が創造的努力なしに本発明の諸実施形態に基づいて得る全ての他の実施形態は本発明の保護範囲の保護範囲に入るものとする。
一般に、プログラム・モジュールは、特定のタスクを実行するかまたは特定の抽象データ型を実装するために使用されるルーチン、プログラム、コンポーネント、データ構造、および別のタイプの構造を含む。さらに、当該実施形態を、ハンドヘルド装置、マルチプロセッサ・システム、マイクロプロセッサベースのまたはプログラム可能な消費者電子製品、小型コンピュータ、メインフレーム・コンピュータ、および同様なコンピュータ装置を含む、別のコンピュータ・システムにより実装してもよいことは当業者に理解されうる。当該実施形態を、通信ネットワークにより接続されたリモート処理装置によりタスクが実行される分散コンピューティング環境で実装してもよい。分散コンピューティング環境では、プログラム・モジュールを、ローカル・メモリまたはリモート・メモリのような記憶装置に配置してもよい。
当該実施形態を、コンピュータ実装されたプロセス、コンピューティング・システム、またはコンピュータ・プログラムを格納するコンピュータ記憶媒体として実装してもよい。コンピュータ・プログラムは、コンピュータ・システムまたはコンピュータ・プログラム製品により実行され例示的なプロセスの命令により形成される。例えば、当該コンピュータ可読記憶媒体を、揮発性コンピュータ・メモリ、不揮発性メモリ、ハード・ディスク・ドライブ、フラッシュ・ドライブ、フロッピ・ディスクまたはコンパクト・ディスク、または同様な媒体のうち1つまたは複数により実装してもよい。
本明細書では、「クラスタ(Cluster)」という用語は、高速ネットワークを用いて相互接続された独立なコンピュータのグループを含み、当該コンピュータはグループを形成し、シングルシステム・モードで管理される。クラスタ内の各コンピュータは「ノード」と呼ばれる。
本明細書では、「ノード(Node)」という用語は一般にネットワーク環境内で1つまたは複数のソフトウェア・プログラムを実行するために使用されるコンピューティング装置を指し、「ノード」を、ネットワーク内のサーバの1つまたは複数のコンピューティング装置で実行される仮想ノード(ソフトウェア・プログラム)として実装してもよい。特定の実装では、ノードが、物理マシン(Physical Machine)または物理マシンにインストールされた仮想マシンであってもよい。
本明細書では、「ブレイン分割(Brain Split)」という用語はネットワークが故障しているので、クラスタが2つまたはそれより多くのノード・グループ(Node Group)に分割されることを指し、当該現象はブレイン分割と呼ばれる。
本明細書では、「ブレイン分割調停」という用語は一般に、クラスタ内でブレイン分割が行われた後、元のクラスタがノードにより形成された幾つかのノード・グループに分割されることを指し、クラスタ管理ソフトウェアは一般に、特定のアルゴリズムを用いて、当該幾つかのノード・グループ内のどのノード・グループがマスタ・ノード・グループとして使用されるかを判定し、マスタ・ノード・グループを決定するプロセスはブレイン分割調停プロセスと呼ばれる。
本明細書では、「マスタ・ノード・グループ(Master Node Group)」という用語は、ブレイン分割が行われた後、ブレイン分割後のノード・グループがブレイン分割調停方法に従って決定され、元のクラスタの動作を継続するために使用されることを指し、当該ノード・グループはマスタ・ノード・グループと呼ばれる。
本明細書では、「クォーラム・ノード(Quorum Node)」という用語は、ブレイン分割がクラスタを(特にネットワーク・パーティションであってもよい)複数のノード・グループに分割させるとき、クラスタ内の特殊な機能を有する幾つかのノードは一般に判定に参加し、ブレイン分割調停を実施して、どのノード・グループが生き延びてクラスタ・サービスを提供し続けることができるかを判定し、他のノード・グループは故障と判定され、クラスタ・サービスを提供し続けることはできず、ブレイン分割調停に参加するこれらのノードはクォーラム・ノードと呼ばれる。一般に、クラスタ内の少数のノードのみがクォーラム・ノードと呼ばれる。クォーラム・ノードをシステムにより事前に構成してもよい。
本明細書では、「マスタ・クォーラム・ノード(Master Quorum Node)」という用語は、クラスタ内の複数のクォーラム・ノードの1つを指し、当該マスタ・クォーラム・ノードが配置されるノード・グループがマスタ・ノード・グループであると判定するために使用される。ブレイン分割がクラスタ内で行われたためクラスタが複数のノード・グループに分割されるとき、当該システムは当該マスタ・クォーラム・ノードを決定し、当該マスタ・クォーラム・ノードが配置されたノード・グループは、元のクラスタの動作を継続するためにマスタ・ノード・グループとして使用される。当該マスタ・クォーラム・ノードが決定された後、ネットワーク内のマスタ・クォーラム・ノードに接続するノードがハート・ビート(Heart Beat)またはリース(Lease)による検出を通じて取得され、当該ノードにより形成されるノード・グループは、ブレイン分割がクラスタ内で行われた後、クラスタのサービスを継続するためのマスタ・ノード・グループとして使用される。
本明細書では、「マスタ・クォーラム・ノード・プリエンプション要求」という用語は、ブレイン分割がクラスタ内で行われたときにクラスタ内のクォーラム・ノードにより生成され、マスタ・クォーラム・ノードにプリエンプトするためにクォーラム記憶装置に送信された要求を指す。当該要求は一般に当該クォーラム・ノードの識別子を含む。当該識別子が、クラスタ内の当該クォーラム・ノードのIPアドレスまたは数のようなマーキング方式であってもよい。
本明細書では、「クォーラム記憶装置」という用語は、調停機能を引き受け、マスタ・クォーラム・ノード選択プロセスにおけるマスタ・クォーラム・ノードを最終的に決定する記憶装置を指す。クォーラム記憶装置が調停機能を実施するとき、クォーラム記憶装置が、クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信し、マスタ・クォーラム・ノードを当該クォーラム・ノードから決定する。既存のアプリケーション・シナリオにおいて、記憶ディスクは、マスタ・クォーラム・ノードを決定するための調停装置として使用されるので、クォーラム記憶装置が指定される。調停機能を引き受け記憶に使用されない別の装置も「クォーラム記憶装置」の説明範囲に入ることは当業者には理解されうる。
本明細書では、「ファイアウォール(Firewall)」という用語は一般に、情報セキュリティを保証することを支援する装置が、特定のルールに従って、送信されたデータが当該装置を通過するのを許可または制限できることを指す。特定の実装では、当該ファイアウォールが、専用のハードウェアまたは汎用ハードウェアにインストールされた1組のソフトウェアであってもよい。
本明細書では、「IOアクセス要求」という用語は一般に、記憶装置により受信され、当該記憶装置に格納されたデータを読むかまたは書くために使用される要求を指す。
本明細書では、「接続」という用語はネットワーク内の接続を指す。クラスタ内のノードが、ハート・ビート検出またはリース検出により、別のノードと当該ノードの間の接続を決定してもよい。ブレイン分割がクラスタ内で行われた後、元のクラスタが幾つかのノード・グループに分割される。同一のノード・グループ内のノードは、ハート・ビート検出またはリース検出により互いの存在を検出する。これは、当該2つのノードが互いと接続することを表す。異なるノード・グループ内のノードはハート・ビート検出またはリース検出により互いの存在を検出できない。これは、当該2つのノードが互いと接続しないことを表す。
本発明の諸実施形態のシステム・アーキテクチャ
本発明の諸実施形態を説明する前に、図1に示すように、クラスタ・ノードと記憶装置により形成されるクラスタ・システムのアーキテクチャの略図を先ず説明する。当該システムは、N個のノード(N≧1およびNは整数である)により形成されるクラスタ100であって、各ノードを物理ノード(例えば、サーバ)に展開してもよく、または、仮想ノード(例えば、仮想マシン)に展開してもよく、アプリケーションまたはクライアントにより送信されたデータ・アクセス要求を受信し、当該データ・アクセス要求を当該記憶装置に対するIOアクセス要求に変換する責任を負う、クラスタ100と、M個の記憶装置(M≧1およびMは整数である)により形成された記憶装置リソース・プール200とを備える。各記憶装置を、記憶管理ソフトウェアと記憶媒体を含む記憶装置として理解してもよい。記憶装置リソース・プール200内の当該M個の記憶装置は様々な方式で接続される。図1に示すM個の記憶装置はリング構造接続方式である(これは例示的な説明にすぎない)。実際の適用では、星型構造、バス構造、分散構造、ツリー構造、メッシュ構造、セルラ構造等があってもよく、詳細は本発明の当該実施形態では説明しない。当該記憶装置リソース・プール200において、少なくとも1つの記憶装置をクォーラム記憶装置として使用してもよい。クォーラム記憶装置はクラスタ内のマスタ・クォーラム・ノードの識別子を格納するために使用され、当該識別子がクラスタ内のクォーラム・ノードのIPアドレス、数等であってもよい。
クラスタ100内のノードおよび記憶装置リソース・プール200内の記憶装置を直接接続するか、または、ネットワーク(図1では図示せず)を用いて接続してもよい。これらの接続方式は当業界で公知な技術に属するので、詳細は本発明の当該実施形態では説明しない。
クラスタ100に含まれるN個のノード内のP(P≧2、Pは整数であり、P<Nである)個のノードをクォーラム・ノードとして使用してもよく、これらのクォーラム・ノードは管理者または別のシステムにより当該ノードから選択され構成される。ブレイン分割がクラスタ内で行われると、当該P個のクォーラム・ノードは別々にマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信する。クォーラム記憶装置は、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードの識別子を記録し、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該識別子に対応するクォーラム・ノードに送信する。当該応答メッセージは、マスタ・クォーラム・ノードのプリエンプションが成功したことを当該識別子に対応するクォーラム・ノードに通知するために使用される。
本発明の方法の実施形態
図2A乃至図2Cは、クラスタ内でブレイン分割が行われた後にクォーラム記憶装置がブレイン分割調停を実装する第1の方法の実施形態を示す。当該方法の実施形態は、クラスタとクォーラム記憶装置により形成される、図1に示すシステムに適用される。図2Aを参照すると、当該方法は以下を含む。
201:クォーラム記憶装置が、クラスタ内のマスタ・クォーラム・ノードの識別子を事前に記録する。
特定の実装では、クラスタが確立された後、クォーラム記憶装置は、記憶空間をクォーラム記憶装置またはサードパーティの記憶装置に設定して、マスタ・クォーラム・ノードの識別子および当該マスタ・クォーラム・ノードのステータスを記録してもよい。初期状態において、当該マスタ・クォーラム・ノードの識別子はヌル(NULL)として記録され、当該マスタ・クォーラム・ノードのステータスはヌル(NULL)または故障として記録される。クラスタが正常に動作を開始する前に、当該マスタ・クォーラム・ノードを管理者による初期設定により指定してもよい。クラスタが正常に動作を開始した後、当該初期設定されたマスタ・クォーラム・ノードが定期的にリフレッシュ・パケットをクォーラム記憶装置に送信してもよい。当該リフレッシュ・パケットは当該マスタ・クォーラム・ノードの識別子を含み、当該識別子が特にクラスタ内の当該マスタ・クォーラム・ノードのIPアドレス、数等であってもよい。クォーラム記憶装置がまた、リフレッシュ・パケット検出期間を設定して、当該マスタ・クォーラム・ノードがリフレッシュ・パケットを送信するかどうかを検出してもよい。リフレッシュ・パケット検出期間では、クォーラム記憶装置は様々なケースに従う以下の処理を実施する。
A:リフレッシュ・パケットがリフレッシュ・パケット検出期間内に受信されなかった場合、ノードの記録されたステータスは故障に変更される。当該リフレッシュ・パケットが当該リフレッシュ・パケット検出期間内に受信されなかった場合、クォーラム記憶装置は当該マスタ・クォーラム・ノードが故障であると考えてもよく、レコード内の当該マスタ・クォーラム・ノードのステータスを故障に変更する。
B:マスタ・クォーラム・ノードにより送信されたリフレッシュ・パケットが最初に受信されると、クォーラム記憶装置が、当該マスタ・クォーラム・ノードの識別子を記録し、レコード内の当該マスタ・クォーラム・ノードのステータスを「正常」に変更してもよい。
C:当該マスタ・クォーラム・ノードにより送信されたリフレッシュ・パケットを受信するのが初めてではない場合、以下の2つのケースが含まれる。
C1:当該リフレッシュ・パケットで運搬される識別子が当該ノードの記録された識別子と同じであり、当該マスタ・クォーラム・ノードの記録されたステータスが正常であることが検出されたとき、これは現在のクラスタ内の当該マスタ・クォーラム・ノードが正常であることを示し、クォーラム記憶装置は当該記録された識別子に動作を実施しない。
C2:当該リフレッシュ・パケットで運搬される識別子が当該ノードの記録された識別子と同じであるが、当該マスタ・クォーラム・ノードの記録されたステータスがヌルかまたは故障であることが検出されたとき、クォーラム記憶装置はレコード内の当該ノードのステータスを正常に変更する。この場合、2つのアプリケーション・シナリオがあってもよい。1つのシナリオはクラスタ再開である。この場合、全てのノードが再開され、元のマスタ・クォーラム・ノードは、クラスタ再開の後、リフレッシュ・パケット検出期間内にリフレッシュ・パケットを送信できず、当該マスタ・クォーラム・ノードの記録されたステータスは故障に変更される。当該他のシナリオは、元のクォーラム・ノードにより送信されたリフレッシュ・パケットが失われ、クォーラム記憶装置が検出期間内にリフレッシュ・パケットを受信できない場合、クォーラム記憶装置が当該マスタ・クォーラム・ノードの記録されたステータスを故障に変更するというものである。
203:ブレイン分割が行われたことが検出された後、各ノード・グループ内の各クォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求を生成し、当該マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信する。
特定の実装では、1つのマスタ・クォーラム・ノードのプリエンプション機構が各クォーラム・ノードに対して設定されてもよい。即ち、ブレイン分割が行われたとクォーラム・ノードが検出した後、当該クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を生成し、当該マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信してもよい。当該マスタ・クォーラム・ノード・プリエンプション要求は当該クォーラム・ノードの識別子を含み、当該クォーラム・ノードの識別子が複数の実装方式、例えば、当該クォーラム・ノードのIPアドレス(例えば、10.11.201.12)またはクラスタ内のクォーラム・ノードの一意な識別子(例えば、数字0010)、または別の実装方式を有してもよく、これは本発明の当該実施形態では限定されない。
ブレイン分割が行われたことが検出された後、マスタ・クォーラム・ノード・プリエンプション要求を生成し送信したクォーラム・ノードは現在生き残っているクォーラム・ノードであり、これらの故障(例えば、シャットダウン)したクォーラム・ノードはマスタ・クォーラム・ノード・プリエンプション要求を生成も送信もできないことに留意すべきである。特定の実装では、マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが全てのクォーラム・ノードであってもよく、または、クラスタ内の幾つかのクォーラム・ノードであってもよい。
特定の実装では、各クォーラム・ノードが、リース検出またはハート・ビート検出により、ブレイン分割が行われたことを検出してもよい。リース検出およびハート・ビート検出を使用してノード間の接続を検出してもよいことに留意すべきである。
(1)リース(Lease)ベースの検出方法
当該方法では、クラスタ内の各ノードを定期的に、リースのためにリース・マネージャ(Lease Manager)に適用してもよい。当該リース・マネージャはノードごとに、当該ノードにより所有されるリースのレコードを維持する。当該ノードがリースを取得した時刻が記録される。リース・マネージャがリース要求を各ノードから受信するたびに、リース・マネージャは、当該ノードにより取得されたリースの最新情報を反映するためにレコードを更新する。リース・マネージャが指定期間(リース期間、Lease Duration)内にノードのリース延長要求を受信しない場合、リース・マネージャは当該ノードのステータスをアクティブに検出してもよい(例えば、ピングにより、当該ノードが故障しているかどうかまたは当該ノードのネットワーク接続ステータスが故障であるかどうかを検出する)。リース・マネージャが複数回連続して当該ノードのステータスを検出しない(例えば、当該ノードがピング・データパケットに応答しない)場合、リース・マネージャは、当該ノードが故障していると考え、当該ノードが故障していることを示す通知をクラスタ内の別のノードに送信する。ノード・グループ内の全てのノードが故障であることを示す通知を当該クォーラム・ノードが受信した場合、当該クォーラム・ノードが、ブレイン分割がクラスタ内で行われたと判定してもよい。
(2)ハート・ビート(Heart beat)ベースの検出方法
当該方法では、システムにおいて、ノードが、トポロジ構造に従うハート・ビート・リングを形成してもよく、当該ハート・ビート・リングにより、ハート・ビート情報を当該ノードの間で送信してもよい(ハート・ビート情報を送信する期間は一般にリース期間より短い)。当該ノードのハート・ビート情報が集約されると、当該ハート・ビート情報をクラスタ内のクォーラム・ノードで集約してもよく、ノードのハート・ビート情報が失われたかどうかが識別される。誤判定を避けるため、検出を複数回繰り返して実施してもよい。ノードのハート・ビート情報が複数回受信されない場合、当該ノードが故障しているかもしれないと判定され(この場合、アクティブな検出を実施して、当該ノードが故障しているかどうかを判定してもよい)、当該ノードが故障していることを示す通知がクラスタ内の別のノードに送信される。ノード・グループ内の全てのノードが故障していることを示す通知を当該クォーラム・ノードが受信した場合、当該クォーラム・ノードが、ブレイン分割がクラスタ内で行われたと決定してもよい。
205:クォーラム記憶装置が、リフレッシュ・パケット検出期間内に、クラスタ内のクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信し、クォーラム記憶装置が、当該マスタ・クォーラム・ノードの事前に記録された識別子に従って、受信されたマスタ・クォーラム・ノード・プリエンプション要求が、当該識別子に対応するマスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定し、そうである場合はステップ207を実施し、そうでない場合はステップ209を実施する。
特定の実装では、クォーラム記憶装置により受信されたマスタ・クォーラム・ノード・プリエンプション要求がクラスタ内の全てのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求であってもよく、または、クラスタ内の幾つかのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求であってもよい。
当該マスタ・クォーラム・ノード・プリエンプション要求が、記録されたマスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかが、リフレッシュ・パケット検出期間内に決定される。当該マスタ・クォーラム・ノード・プリエンプション要求は、当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの識別子を運搬する。クォーラム記憶装置は、当該マスタ・クォーラム・ノードの事前に記録された識別子を各マスタ・クォーラム・ノード・プリエンプション要求で運搬される識別子と比較する。当該識別子が同じである場合、これは当該マスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含むことを示し、この場合、クォーラム記憶装置はステップ207を実施する。比較を通じて各マスタ・クォーラム・ノード・プリエンプション要求で運搬される識別子が当該マスタ・クォーラム・ノードの事前に記録された識別子と異なることが分かった場合、これは当該マスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含まないことを示し、この場合、クォーラム記憶装置はステップ209を実施する。
207:受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むとき、クォーラム記憶装置は当該マスタ・クォーラム・ノードの事前に記録された識別子を維持し、ステップ213を実施する。
特定の実装では、リフレッシュ・パケット検出期間内に、元のマスタ・クォーラム・ノードが優先する処理ポリシが、ステップ207で使用される。即ち、クォーラム記憶装置のリフレッシュ・パケット検出期間内に、元のマスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着した場合、元のマスタ・クォーラム・ノードは優先的に新たなマスタ・クォーラム・ノードとして使用される。実際の適用では、マスタ・クォーラム・ノードは一般にクラスタ内の管理ノードとして使用されクラスタ管理機能を引き受けるので、当該管理ノードが頻繁に切り替えられる場合、サービス割込みが生じるかもしれず、当該管理ノードの切換えがサービス・データおよび/またはステータス・データのバックアップとコピーを生じさせるかもしれない。このように、大きな影響がクラスタのリソース処理に生ずるかもしれない。したがって、元のマスタ・クォーラム・ノードが優先的に新たなマスタ・クォーラム・ノードとして使用されるとき、上述の問題を効果的に防止することができる。
209:受信されたマスタ・クォーラム・ノード・プリエンプション要求がマスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないとき、応答するために、クォーラム記憶装置は応答メッセージを、当該マスタ・クォーラム・ノード・プリエンプション要求を送信した各クォーラム・ノードに送信して、当該マスタ・クォーラム・ノード・プリエンプション要求を送信し続けるように当該クォーラム・ノードに指示し、ステップ211を実施する。
当該ステップは必須のステップでないことに留意すべきである。特定の実装では、クォーラム記憶装置が応答メッセージを送信しなくてもよいが、マスタ・クォーラム・ノード・プリエンプション要求の定期送信機構をクォーラム・ノードに事前に設定する。当該クォーラム・ノードがクォーラム記憶装置により送信された通知メッセージを受信する前に、各クォーラム・ノードが定期的にマスタ・クォーラム・ノード・プリエンプション要求を送信してもよい。
確かに、ブレイン分割調停効率を改善するためにクォーラム記憶装置は応答メッセージを各クォーラム・ノードに送信し、その結果、各クォーラム・ノードはブレイン分割調停の進捗を時間通りに知ることができ、マスタ・クォーラム・ノードのプリエンプションが成功した後、無効なマスタ・クォーラム・ノード・プリエンプション要求の処理が減る。
211:リフレッシュ・パケット検出期間の後、クラスタ内の各クォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信し続ける。当該クォーラム記憶装置は、マスタ・クォーラム・ノードの事前に記録された識別子を、最初に受信されたマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードの識別子に変更し、ステップ213を実施する。
特定の実装では、リフレッシュ・パケット検出期間が終了した後、クォーラム記憶装置はマスタ・クォーラム・ノードを先着順方式で決定する。即ち、クォーラム記憶装置は、最初に受信されたマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードを新たなマスタ・クォーラム・ノードに設定し、その結果、マスタ・クォーラム・ノードを高速に決定でき、ブレイン分割後のマスタ・ノード・グループを高速に決定してクラスタの正常な動作を継続することができる。
最初に受信されたマスタ・クォーラム・ノード・プリエンプション要求は、クォーラム記憶装置により受信されリフレッシュ・パケット検出期間の後にクォーラム記憶装置に到着した最初のマスタ・クォーラム・ノード・プリエンプション要求を指す。2つの実装可能性があってもよい。1つ目は、リフレッシュ・パケット検出期間が終了する前に各クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を既に送信し、当該検出期間の後に当該マスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着するというものである。2つ目は、各クォーラム・ノードが、リフレッシュ・パケット検出期間が終了した後にマスタ・クォーラム・ノード・プリエンプション要求を送信し、当該検出期間の後に当該マスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着するというものである。本発明の当該実施形態は上述の2つの可能性の何れも限定しない。
213:クォーラム記憶装置が、マスタ・クォーラム・ノード・プリエンプション成功応答を、記録された識別子に対応するクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション成功応答は、マスタ・クォーラム・ノードのプリエンプションが成功したことを当該クォーラム・ノードに通知するために使用される。
特定の実装では、当該マスタ・クォーラム・ノード・プリエンプション成功応答を受信したクォーラム・ノードはマスタ・クォーラム・ノードとして選択され、当該マスタ・クォーラム・ノードが配置されるノード・グループは、クラスタの動作を継続するためにマスタ・ノード・グループとして使用される。
215:クォーラム記憶装置が、マスタ・クォーラム・ノードを除く別のクォーラム・ノードに通知メッセージを送信する。
特定の実装では、マスタ・クォーラム・ノードとは異なる接続タイプを有するクォーラム・ノードに対して、クォーラム記憶装置により送信された通知メッセージのタイプは異なる。マスタ・クォーラム・ノードが配置されたノード・グループと異なるノード・グループ内のクォーラム・ノード(即ち、マスタ・クォーラム・ノードに接続しないクォーラム・ノード)に対して、クォーラム記憶装置はアクセス拒否通知メッセージを送信してもよく、その結果、当該クォーラム・ノードが再開され、クラスタに再参加する動作を実施する。マスタ・クォーラム・ノードが配置されたノード・グループと同じであるノード・グループ内のクォーラム・ノード(即ち、マスタ・クォーラム・ノードに接続するクォーラム・ノード)に対して、クォーラム記憶装置はマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを送信してもよく、その結果、当該クォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求を送信するのを停止する。以下の2つの実装方式が存在する。
方式1:別々の送信方式を使用する。図2Bを参照すると、当該方式は以下のステップを含む。
2151:クォーラム記憶装置が、記録されたマスタ・クォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信する。当該第1のパーミッション制御メッセージは、クラスタに含まれる少なくとも2つのクォーラム・ノード内の決定されたマスタ・クォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む。
特定の実装では、マスタ・クォーラム・ノードは当該マスタ・クォーラム・ノードとクラスタ内の別のクォーラム・ノードとの間の接続をハート・ビート検出またはリース検出により検出し、当該マスタ・クォーラム・ノードに接続しないクォーラム・ノードに対する第1のパーミッション制御メッセージを生成し、当該第1のパーミッション制御メッセージをクォーラム記憶装置に送信する。
第1のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードと物理的または論理的に通信できないクォーラム・ノードを指す。即ち、当該第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードに接続しない。実際のシナリオでは、当該第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは異なるノード・グループ内にある。
2152:クォーラム記憶装置がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。
1例として、特定の実装では、当該アクセス拒否通知メッセージが(表1に示すように)以下の特定のパケット・フォーマットを使用してもよく、クォーラム記憶装置に対するノード識別子とアクセス・パーミッションを含む。例えば、ノードの識別子は当該ノードのIPアドレスであり、実際には別の表現方式を有してもよく、これは本発明の全ての実施形態では限定されない。クォーラム・ノードが当該アクセス拒否通知メッセージを受信した後、当該クォーラム・ノードがノード再開動作を実施する。
Figure 0006362120
第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノードに接続しないクォーラム・ノードであるので、例えば、物理的に、当該2つのクォーラム・ノードが物理接続経路を有さないか、または、論理的に、当該2つのクォーラム・ノードの間のスイッチが故障している。実装において、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは異なるノード・グループ内にある。当該マスタ・クォーラム・ノードが配置されるノード・グループはブレイン分割調停におけるマスタ・ノード・グループとして使用されるので、第1のカテゴリのクォーラム・ノードは別のノード・グループに属し、当該ノード・グループ内のクォーラム・ノードを再開する必要があり、クラスタに再参加する動作を実施する。
2153:クォーラム記憶装置が、マスタ・クォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信する。当該第2のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む。
特定の実装では、マスタ・クォーラム・ノードは、当該マスタ・クォーラム・ノードと別のクォーラム・ノードの間の接続をハート・ビート検出またはリース検出により検出し、当該第2のパーミッション制御メッセージを生成し、当該第2のパーミッション制御メッセージをクォーラム記憶装置に送信する。
第2のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードと通信できるクォーラム・ノードを指す。即ち、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードと接続する。実際のシナリオでは、第2のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは同じノード・グループ内にある。
2154:クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。
1例として、特定の実装では、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは(表2に示すように)以下の特定のパケット・フォーマットを使用する。当該パケット・フォーマットは、ノード識別子、および、マスタ・クォーラム・ノード・プリエンプション要求を送信するパーミッションを含む。例えば、ノードの識別子は当該ノードのIPアドレスであり、実際には別の表現方式を有してもよく、本発明の諸実施形態では限定されない。クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信した後、当該クォーラム・ノードはマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止する。
Figure 0006362120
方式1に対して、特定の実装方式において、ステップ2151および2152とステップ2153および2154との間の実行順序は限定されない。ステップ2151乃至ステップ2154がステップ2151からステップ2154への順序に従って実行されてもよく、または、ステップ2153と2154を最初に実行してもよく、ステップ2151と2152が次に実行され、これは本発明の当該実施形態では限定されない。
方式2:統合送信方式を使用する。
方式1との違いは、マスタ・クォーラム・ノードがパーミッション制御メッセージを生成することにある。当該メッセージは、当該マスタ・クォーラム・ノードを除く別のクォーラム・ノードの識別子およびクォーラム記憶装置に対する当該クォーラム・ノードのアクセス・パーミッションを含む。当該アクセス・パーミッションは許可または拒否を含む。マスタ・クォーラム・ノードがパーミッション制御メッセージをクォーラム記憶装置に送信する。クォーラム記憶装置は、当該識別子および当該識別子に対応するアクセス・パーミッションに従って、第1のカテゴリのクォーラム・ノードに対するアクセス拒否通知メッセージと第2のカテゴリのクォーラム・ノードに対するマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージとを別々に生成する。第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードに接続しないクォーラム・ノードであり、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードに接続するクォーラム・ノードである。2つのクォーラム・ノードが互いと接続するかどうかがハート・ビート検出またはリース検出により判定される。当該アクセス拒否通知メッセージを受信した後、第1のカテゴリのクォーラム・ノードがノード再開とクラスタへの再参加の動作を実施してもよい。マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信した後、第2のカテゴリのクォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止してもよい。
以下のステップを特に含めてもよい。図2Cを参照すると、当該方式は以下のステップを含む。
2155:クォーラム記憶装置が、マスタ・クォーラム・ノードにより送信されたパーミッション制御メッセージを受信する。当該パーミッション制御メッセージは、クォーラム記憶装置に対する、クラスタ内の少なくとも2つのクォーラム・ノードにおいてマスタ・クォーラム・ノードを除く別のクォーラム・ノードの識別子と、当該クラスタ内の当該少なくとも2つのクォーラム・ノードにおいて当該マスタ・クォーラム・ノードを除く当該別のクォーラム・ノードのアクセス・パーミッションとを含み、当該アクセス・パーミッションは許可または拒否を含む。
1例として、マスタ・クォーラム・ノードがパーミッション制御メッセージを生成する。当該パーミッション制御メッセージは表3に示すフォーマットを使用する。
Figure 0006362120
マスタ・クォーラム・ノードがパーミッション制御メッセージをクォーラム記憶装置に送信する。
2156:クォーラム記憶装置が、当該パーミッション制御メッセージに従って、通知メッセージを、クラスタ内の少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードを除く別のクォーラム・ノードに送信する。
21561:アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対して、クォーラム記憶装置がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。
特定の実装では、ステップ2052における表1に示すパケット・フォーマットを使用してもよい。その他は同様であり、詳細についてはここでは説明しない。
第1のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードと物理的または論理的に通信できないクォーラム・ノードを指す。即ち、第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードに接続しない。実際のシナリオでは、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは異なるノード・グループ内にある。
21562:アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対して、クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。
特定の実装では、ステップ2054における表2に示すパケット・フォーマットを使用してもよい。その他は同様であり、詳細についてはここでは説明しない。
第2のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードと通信できるクォーラム・ノードを指す。即ち、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードと接続する。実際のシナリオでは、第2のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードは同じノード・グループ内にある。
上述の2つの実装方式により、クラスタ内のマスタ・クォーラム・ノードを除く別のクォーラム・ノードが、クォーラム記憶装置により送信されたメッセージに従って対応する処理を実施することができる。特に、マスタ・クォーラム・ノードに接続しないクォーラム・ノード(ブレイン分割後の別のノード・グループ内のクォーラム・ノード)が再開動作を実施してもよい。マスタ・クォーラム・ノードに接続するクォーラム・ノード(ブレイン分割後のマスタ・ノード・グループ内のクォーラム・ノード)がマスタ・クォーラム・ノード・プリエンプション要求を送信するのを停止する。上述の処理により、マスタ・クォーラム・ノードが決定された後、他のクォーラム・ノードは、ブレイン分割後にマスタ・クォーラム・ノードのプリエンプションから高速に復元することができ、その結果、クラスタの通常のサービスの高速な復元を効果的に実装することができる。
2157:アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、クォーラム記憶装置はまた、ファイアウォール・ポリシを変更するために使用される通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該通知メッセージは、第1のカテゴリのクォーラム・ノードに対応するファイアウォール内のファイアウォール・ポリシを変更して、第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように第1のカテゴリのクォーラム・ノードに指示するために使用される。
特定の実装では、マスタ・クォーラム・ノードと異なるノード・グループ内のクォーラム・ノード、即ち、第1のカテゴリのクォーラム・ノードに対して、クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信し続けるのを避けるために、クォーラム記憶装置が、ファイアウォール・ポリシを変更するために使用される通知メッセージをクォーラム・ノードに送信する。当該通知メッセージを受信した後、当該クォーラム・ノードは、当該クォーラム・ノードに対応するファイアウォール内のファイアウォール・ポリシを変更して、当該クォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックしてもよい。
第1のカテゴリのクォーラム・ノードを再開する前に、第1のカテゴリのクォーラム・ノードはさらにマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信することに留意すべきである。当該ステップの設定は、当該クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を効果的にブロックして、クォーラム記憶装置が無効なマスタ・クォーラム・ノード・プリエンプション要求に関する処理能力を無駄にするのを回避することができる。
上述の解決策は、ブレイン分割がクラスタ内で行われた後、調停を通じてマスタ・ノード・グループを決定できないという先行技術の問題を効果的に解決することができる。
クラスタ・ブレイン分割が終了した後の調停処理の後、クラスタ内のクォーラム・ノードを除く別のノードが、ハート・ビート検出またはリース検出により、当該ノードとマスタ・クォーラム・ノードの間の接続を決定してもよい。当該ノードがマスタ・クォーラム・ノードと接続すると判定されたとき、これは当該ノードとマスタ・クォーラム・ノードが同じノード・グループ内にあり、当該ノードが動作し続けることを示す。当該ノードがマスタ・クォーラム・ノードに接続しないと判定されたとき、これは当該ノードとマスタ・クォーラム・ノードは異なるノード・グループ内にあることを示し、当該ノードは再開をトリガし、マスタ・クォーラム・ノードが配置されたノード・グループに再参加するプロセスを実施する。
対応して、本発明はさらにクラスタ・ブレイン分割後の調停方法の第2の実施形態を提供する。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに対して、処理プロセスは、以下のステップを含む。
301:クォーラム・ノードが、クォーラム記憶装置により送信されたマスタ・クォーラム・ノード・プリエンプション成功応答メッセージを受信する。当該マスタ・クォーラム・ノード・プリエンプション成功応答メッセージは、マスタ・クォーラム・ノードのプリエンプションが成功したことをクォーラム・ノードに通知するために使用される。
303:マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが、クラスタ内の少なくとも2つのクォーラム・ノードにおけるクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションを決定する。当該アクセス・パーミッションは許可または拒否を含む。
305:マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが、パーミッション制御メッセージをクォーラム記憶装置に送信する。当該パーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノードにおけるクォーラム・ノードを除く別のクォーラム・ノードの識別子と、クォーラム記憶装置に対する当該識別子に対応するクォーラム・ノードのアクセス・パーミッションとを含む。
上述の実施形態の処理プロセスについては、上述の実施形態におけるステップ205の説明を参照されたい。詳細についてはここでは説明しない。
本発明の装置の実施形態
図4を参照すると、本発明はさらに、クラスタとクォーラム記憶装置400により形成されたシステムに適用される、クラスタ内の調停処理に使用されるクォーラム記憶装置400を提供する。当該クラスタは、少なくとも2つのクォーラム・ノードを含み、クォーラム記憶装置400は、クラスタ内のマスタ・クォーラム・ノードの識別子を事前に記録し、マスタ・クォーラム・ノードは当該少なくとも2つのクォーラム・ノードの1つである。クォーラム記憶装置400は、検出期間内に、クラスタ内のクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信するように構成された受信ユニット401であって、各マスタ・クォーラム・ノード・プリエンプション要求はクォーラム・ノードの識別子を含む、受信ユニット401と、当該マスタ・クォーラム・ノードの識別子に従って、受信ユニット401により受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するように構成される判定ユニット402と、当該受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むとき、当該ノードの記録された識別子を維持するか、または、当該受信されたマスタ・クォーラム・ノード・プリエンプション要求が当該マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないとき、第1のリフレッシュ・パケット検出期間の後、当該記録された識別子を、クォーラム記憶装置に最初に到着したマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードの識別子に変更するように構成された実行ユニット403と、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該記録された識別子に対応するクォーラム・ノードに送信するように構成された送信ユニット404であって、当該応答メッセージは、マスタ・クォーラム・ノードのプリエンプションに成功したことを、当該記録された識別子に対応するクォーラム・ノードに通知するために使用される、送信ユニット404とを備える。
さらに、クォーラム記憶装置400において、実行ユニット403はさらに、受信されたマスタ・クォーラム・ノード・プリエンプション要求がマスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないとき、応答メッセージを生成するように構成される。当該応答メッセージは、当該マスタ・クォーラム・ノード・プリエンプション要求を送信し続け、送信ユニット404をトリガするように、当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードに指示するために使用される。送信ユニット404はさらに、当該応答メッセージを、当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置400において、受信ユニット401はさらに、送信ユニット404が、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該記録された識別子に対応するクォーラム・ノードに送信した後、当該記録された識別子に対応するクォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するように構成される。当該第1のパーミッション制御メッセージは、クラスタに含まれる少なくとも2つのクォーラム・ノード内の当該記録された識別子に対応するクォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む。実行ユニット403はさらに、当該第1のパーミッション制御メッセージに従ってアクセス拒否通知メッセージを生成し、送信ユニット404をトリガするように構成される。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット404はさらに、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置400において、受信ユニット401はさらに、送信ユニット404が、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該記録された識別子に対応するクォーラム・ノードに送信した後、当該記録された識別子に対応するクォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するように構成される。当該第2のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノードにおける当該記録された識別子に対応するクォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む。実行ユニット403はさらに、第2のパーミッション制御メッセージに従ってマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成し、送信ユニット404をトリガするように構成される。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置400に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット404はさらに、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置400において、受信ユニット401はさらに、送信ユニット404が、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージを当該記録された識別子に対応するクォーラム・ノードに送信した後、当該記録された識別子に対応するクォーラム・ノードにより送信されたパーミッション制御メッセージを受信するように構成される。当該パーミッション制御メッセージは、クォーラム記憶装置400に対する、クラスタ内の少なくとも2つのクォーラム・ノードにおける当該記録された識別子に対応するクォーラム・ノードを除く別のクォーラム・ノードの識別子と、当該少なくとも2つのクォーラム・ノード内の当該記録された識別子に対応するクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションとを含み、当該アクセス・パーミッションは許可または拒否を含む。実行ユニット403はさらに、当該パーミッション制御メッセージに従って通知メッセージを生成し、送信ユニット404をトリガするように構成される。送信ユニット404はさらに、当該少なくとも2つのクォーラム・ノード内の当該記録された識別子に対応するクォーラム・ノードを除く別のクォーラム・ノードに当該通知メッセージを送信するように構成される。
さらに、クォーラム記憶装置400において、実行ユニット403は特に、アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対してアクセス拒否通知メッセージを生成するように構成される。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用され、送信ユニット404は特に、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置400において、実行ユニット403は特に、アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対してマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成するように構成される。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置400に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用され、送信ユニット404は特に、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置400において、実行ユニット403はさらに、送信ユニット404がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを変更するために使用される通知メッセージを生成するように構成される。ファイアウォール・ポリシを変更するために使用される当該通知メッセージは、当該第1のカテゴリのクォーラム・ノードのファイアウォールに対応するファイアウォール・ポリシを変更して、当該第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置400に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように当該第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット404はさらに、ファイアウォール・ポリシを変更するために使用される当該通知メッセージを当該第1のカテゴリのクォーラム・ノードに送信するように構成される。
図5を参照すると、本発明はさらにクォーラム記憶装置の第2の実施形態を提供する。クォーラム記憶装置500は、プロセッサ501、メモリ502、通信インタフェース503、およびバス504を備え、プロセッサ501、メモリ502、および通信インタフェース503はバス504を用いて互いと通信し、通信インタフェース503はクラスタ内の少なくとも2つのクォーラム・ノードと通信するように構成され、メモリ502はプログラムを格納するように構成され、クォーラム記憶装置500が実行したとき、プロセッサ501は、メモリ502に格納されたプログラムを実行して、ブレイン分割調停方法の第1の実施形態の方法のプロセスを実行するように構成される。
図6を参照すると、本発明はさらにクォーラム・ノードの第1の実施形態を提供する。クォーラム・ノード600は、クォーラム記憶装置により送信されたマスタ・クォーラム・ノード・プリエンプション成功応答メッセージを受信するように構成された受信ユニット601であって、当該応答メッセージは、マスタ・クォーラム・ノードのプリエンプションが成功したことを当該ノードに通知するために使用される、受信ユニット601と、クラスタ内の少なくとも2つのクォーラム・ノード内のクォーラム・ノード600を除く別のクォーラム・ノードのアクセス・パーミッションを決定するように構成された判定ユニット602であって、当該アクセス・パーミッションは許可または拒否を含む、判定ユニット602と、パーミッション制御メッセージをクォーラム記憶装置に送信するように構成された送信ユニット603であって、当該パーミッション制御メッセージは、クラスタ内の当該少なくとも2つのクォーラム・ノード内のクォーラム・ノード600を除く当該別のクォーラム・ノードの識別子とクォーラム記憶装置に対する当該識別子に対応するクォーラム・ノードのアクセス・パーミッションとを含む、送信ユニット603とを備える。
図7を参照すると、本発明はさらにクォーラム・ノードの第2の実施形態を提供する。クォーラム・ノード700は、プロセッサ701、メモリ702、通信インタフェース703、およびバス704を備える。プロセッサ701、メモリ702、および通信インタフェース703はバス704を用いて互いと通信する。通信インタフェース703はクラスタ内の別のクォーラム・ノードおよびクォーラム記憶装置と通信するように構成される。メモリ702はプログラムを格納するように構成され、クォーラム・ノード700が実行したとき、プロセッサ701は、メモリ702に格納されたプログラムを実行して、ブレイン分割調停方法の第2の実施形態の方法のプロセスを実行するように構成される。
図8を参照すると、本発明はさらにクラスタ・ブレイン分割後の調停処理システムを提供する。システム800は、第1の実施形態に示したクラスタ810およびクォーラム記憶装置820または当該調停装置の第2の実施形態を備える。クラスタ810は少なくとも2つのクォーラム・ノード811を備え、当該少なくとも2つのクォーラム・ノードはマスタ・クォーラム・ノード8111を備え、クォーラム記憶装置820が、クラスタ内のマスタ・クォーラム・ノード8111の識別子を事前に記録する。
本発明の全ての実施形態を、1つのクォーラム記憶装置が存在する例を用いて説明する。N個の(N≧3およびNは奇数である)クォーラム記憶装置があるとき、クラスタ内の少なくとも2つのクォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求を当該N個のクォーラム記憶装置内の各クォーラム記憶装置に送信する。Round(N/2)+1個のクォーラム記憶装置により送信されたマスタ・クォーラム・ノード・プリエンプション成功通知メッセージを取得できるクォーラム・ノードはマスタ・クォーラム・ノードと呼ばれる。当該マスタ・クォーラム・ノードが配置されるノード・グループはマスタ・ノード・グループである。他のクォーラム・ノード内のマスタ・クォーラム・ノードと通信できるクォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信し、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止してもよい。マスタ・クォーラム・ノードと通信できないクォーラム・ノードがアクセス拒否通知メッセージを受信してもよい。当該アクセス拒否通知メッセージは、ノード再開動作を実施するようにクォーラム・ノードに指示するために使用される。具体的な処理プロセスは1つのクォーラム記憶装置があるときの処理プロセスと同様であるので、詳細は本発明の当該実施形態では説明しない。
本発明の第3の方法の実施形態
図9A乃至図9Cは、クラスタ内でブレイン分割が行われた後にクォーラム記憶装置がブレイン分割調停を実装する第3の方法の実施形態を示す。当該方法の実施形態は、クラスタおよびクォーラム記憶装置により形成された図1に示すシステムに適用される。クラスタは少なくとも2つのクォーラム・ノードを含む。図9Aを参照すると、当該方法は以下を含む。
901:クラスタ内の少なくとも2つのクォーラム・ノードの1つを初期マスタ・クォーラム・ノードとして事前に記録し、リフレッシュ・パケット検出期間を開始する。当該リフレッシュ・パケット検出期間は反復実行される期間である。
特定の実装では、クラスタが確立された後、クォーラム記憶装置は、記憶空間をクォーラム記憶装置またはサードパーティの記憶装置に設定して、初期マスタ・クォーラム・ノードの識別子および初期マスタ・クォーラム・ノードのステータスを記録してもよい。クラスタ内の少なくとも2つのクォーラム・ノードの1つを、本方式で初期マスタ・クォーラム・ノードに事前に構成してもよい。初期状態において、マスタ・クォーラム・ノードの識別子はヌル(NULL)として記録され、マスタ・クォーラム・ノードのステータスはヌル(NULL)または故障として記録される。クラスタが正常に動作を開始する前に、初期マスタ・クォーラム・ノードを、初期設定により管理者またはクォーラム記憶装置により指定してもよく、クラスタ内の少なくとも2つのクォーラム・ノードの1つを初期マスタ・クォーラム・ノードとして選択してもよい。クォーラム記憶装置がリフレッシュ・パケット検出期間を開始する。当該リフレッシュ・パケット検出期間は反復実行される期間である。クラスタが正常に動作を開始した後、初期設定されたマスタ・クォーラム・ノードが定期的にリフレッシュ・パケットをクォーラム記憶装置に送信してもよい。当該リフレッシュ・パケットはマスタ・クォーラム・ノードの識別子を含み、当該識別子が特にクラスタ内のマスタ・クォーラム・ノードのIPアドレス、数等であってもよい。クォーラム記憶装置はまた、リフレッシュ・パケット検出期間を設定して、マスタ・クォーラム・ノードがリフレッシュ・パケットを送信するかどうかを検出してもよい。リフレッシュ・パケット検出期間において、クォーラム記憶装置は様々なケースに従う以下の処理を実施する。
A:リフレッシュ・パケットがリフレッシュ・パケット検出期間内に受信されなかった場合、ノードの記録されたステータスは故障に変更される。リフレッシュ・パケットがリフレッシュ・パケット検出期間内に受信されなかった場合、クォーラム記憶装置はマスタ・クォーラム・ノードが故障であると考えてもよく、レコード内のマスタ・クォーラム・ノードのステータスを故障に変更する。
B:マスタ・クォーラム・ノードにより送信されたリフレッシュ・パケットが最初に受信されると、クォーラム記憶装置が、マスタ・クォーラム・ノードの識別子を記録し、レコード内のマスタ・クォーラム・ノードのステータスを「正常」に変更してもよい。
C:マスタ・クォーラム・ノードにより送信されたリフレッシュ・パケットを受信するのが初めてではない場合、以下の2つのケースが含まれる。
C1:リフレッシュ・パケットで運搬される識別子がノードの記録された識別子と同じであり、マスタ・クォーラム・ノードの記録されたステータスが正常であることが検出されたとき、これは現在のクラスタ内のマスタ・クォーラム・ノードが正常であることを示し、クォーラム記憶装置は当該記録された識別子に動作を実施しない。
C2:リフレッシュ・パケットで運搬される識別子がノードの記録された識別子と同じであるが、マスタ・クォーラム・ノードの記録されたステータスがヌルであるかまたは故障であることが検出されたとき、クォーラム記憶装置はレコード内のノードのステータスを正常に変更する。この場合、2つのアプリケーション・シナリオがあってもよい。1つのシナリオはクラスタ再開である。この場合、全てのノードが再開され、元のマスタ・クォーラム・ノードは、クラスタ再開の後、リフレッシュ・パケット検出期間内にリフレッシュ・パケットを送信することができず、マスタ・クォーラム・ノードの記録されたステータスは故障に変更される。他のシナリオは、元のクォーラム・ノードにより送信されたリフレッシュ・パケットが失われ、クォーラム記憶装置が検出期間内にリフレッシュ・パケットを受信できない場合、クォーラム記憶装置がマスタ・クォーラム・ノードの記録されたステータスを故障に変更するというものである。
903:ブレイン分割が行われたことが検出された後、各ノード・グループ内の各クォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求を生成し、当該マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信する。
特定の実装では、1つのマスタ・クォーラム・ノードのプリエンプション機構が各クォーラム・ノードに対して設定されてもよい。即ち、ブレイン分割が行われたとクォーラム・ノードが検出した後、当該クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を生成し、当該マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信してもよい。当該マスタ・クォーラム・ノード・プリエンプション要求は、当該クォーラム・ノードの識別子を含み、当該クォーラム・ノードの当該識別子が複数の実装方式、例えば、クォーラム・ノードのIPアドレス(例えば、10.11.201.12)またはクラスタ内のクォーラム・ノードの一意な識別子(例えば、数字0010)、または別の実装方式を有してもよく、これは本発明の当該実施形態では限定されない。
ブレイン分割が行われたことが検出された後、マスタ・クォーラム・ノード・プリエンプション要求を生成し送信したクォーラム・ノードは現在生き残っているクォーラム・ノードであり、これらの故障(例えば、シャットダウン)したクォーラム・ノードはマスタ・クォーラム・ノード・プリエンプション要求を生成も送信もできないことに留意すべきである。特定の実装では、マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが全てのクォーラム・ノードであってもよく、または、クラスタ内の幾つかのクォーラム・ノードであってもよい。
特定の実装では、各クォーラム・ノードが、リース検出またはハート・ビート検出により、ブレイン分割が行われたことを検出してもよい。リース検出およびハート・ビート検出を使用してノード間の接続を検出してもよいことに留意すべきである。リース(Lease)ベースの検出方法およびハート・ビート(Heart beat)ベースの検出方法は本明細書の上述の実施形態で説明されており、詳細についてはここでは説明しない。
905:クォーラム記憶装置が第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定する。第1のリフレッシュ・パケット検出期間はクラスタ・ブレイン分割が行われた時点に対応するリフレッシュ・パケット検出期間であり、そうである場合はステップ907を実施し、または、そうでない場合はステップ909を実施する。
特定の実装では、クォーラム記憶装置は、初期マスタ・クォーラム・ノードの事前に記録された識別子を受信されたマスタ・クォーラム・ノード・プリエンプション要求内の識別子と比較して、当該受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むどうかを判定する。
特定の実装プロセスでは、第1のリフレッシュ・パケット検出期間内に受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかをクォーラム記憶装置が判定する2つの実装方式があってもよい。
方式1:クォーラム記憶装置が第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、クォーラム記憶装置が、全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードを含むかどうかを判定する。
クォーラム記憶装置は記憶装置を有し、マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの識別子をキャッシュするために、クォーラム記憶装置は初期マスタ・クォーラム・ノードの識別子を当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの識別子と比較して、初期マスタ・クォーラム・ノードが含まれるかどうかを判定することに留意すべきである。
方式2:クォーラム記憶装置は逐次的に、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードであるかどうかを判定する。
特定の実装では、クォーラム記憶装置により受信されたマスタ・クォーラム・ノード・プリエンプション要求が、クラスタ内の全てのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求であってもよく、または、クラスタ内の幾つかのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求であってもよい。
マスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかが第1のリフレッシュ・パケット検出期間内に判定される。当該第1のリフレッシュ・パケット検出期間は、ブレイン分割が行われた時点のリフレッシュ・パケット検出期間であり、または、当該第1のリフレッシュ・パケット検出期間またはブレイン分割が行われた時点のリフレッシュ・パケット検出期間の後の第2のリフレッシュ・パケット検出期間であってもよい。当該マスタ・クォーラム・ノード・プリエンプション要求は、当該マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの識別子を運搬する。クォーラム記憶装置は、初期マスタ・クォーラム・ノードの識別子を各マスタ・クォーラム・ノード・プリエンプション要求で運搬される識別子と比較する。当該識別子が同じである場合、これは当該マスタ・クォーラム・ノード・プリエンプション要求が、初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含むことを示し、この場合、クォーラム記憶装置はステップ907を実施する。比較を通じて各マスタ・クォーラム・ノード・プリエンプション要求で運搬される識別子が初期マスタ・クォーラム・ノードの識別子と異なることが分かった場合、これはマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求を含まないことを示し、この場合、クォーラム記憶装置はステップ909を実施する。
907:受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むとき、クォーラム記憶装置は、初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定し、ステップ913を実施する。
特定の実装では、初期マスタ・クォーラム・ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードである、即ち、初期マスタ・クォーラム・ノードの事前に記録された識別子が不変のままであると判定される。
第1のリフレッシュ・パケット検出期間内に、初期マスタ・クォーラム・ノードが優先する処理ポリシが、ステップ907で使用される。即ち、クォーラム記憶装置の第1のリフレッシュ・パケット検出期間内に、初期マスタ・クォーラム・ノードのマスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着した場合、初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノード、即ち、新たなマスタ・クォーラム・ノードとして優先的に使用される。実際の適用では、マスタ・クォーラム・ノードは一般にクラスタ内の管理ノードとして使用されクラスタ管理機能を引き受けるので、当該管理ノードが頻繁に切り替えられる場合、サービス割込みが生じるかもしれず、当該管理ノードの切換えがサービス・データおよび/またはステータス・データのバックアップとコピーを生じさせるかもしれない。このように、大きな影響がクラスタのリソース処理に及ぶかもしれない。したがって、初期マスタ・クォーラム・ノードが優先的に新たなマスタ・クォーラム・ノードとして使用されるとき、上述の問題を効果的に防止することができる。
909:受信されたマスタ・クォーラム・ノード・プリエンプション要求が初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含まないとき、応答するために、クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージをマスタ・クォーラム・ノード・プリエンプション要求を送信した各クォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求を送信し続けるようにマスタ・クォーラム・ノード・プリエンプション要求を送信した各クォーラム・ノードに指示し、ステップ911を実施する。
特定の実装では、ステップ905に関して、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたかどうかをクォーラム記憶装置が判定する2つの実装方式が存在する。ここで、クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージをマスタ・クォーラム・ノード・プリエンプション要求を送信した各クォーラム・ノードに送信する2つの方式も存在する。
方式1:クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを、全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信する。その結果、当該全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に再度送信する。
方式2:クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードに送信し、その結果、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは、新たなマスタ・クォーラム・ノード・プリエンプション要求を当該クォーラム・ノードに再度送信する。
当該ステップは必須のステップでないことに留意すべきである。特定の実装では、クォーラム記憶装置が応答メッセージを送信しなくてもよいが、マスタ・クォーラム・ノード・プリエンプション要求定期送信機構を当該クォーラム・ノードに事前に設定する。当該クォーラム・ノードがクォーラム記憶装置により送信された通知メッセージを受信する前に、各クォーラム・ノードが定期的に当該マスタ・クォーラム・ノード・プリエンプション要求を送信してもよい。
確かに、ブレイン分割調停効率を改善するためにクォーラム記憶装置は応答メッセージを各クォーラム・ノードに送信し、その結果、各クォーラム・ノードはブレイン分割調停の進捗を時間通りに知ることができ、マスタ・クォーラム・ノードのプリエンプションが成功した後、無効なマスタ・クォーラム・ノード・プリエンプション要求に対する処理が減る。
911:第1のリフレッシュ・パケット検出期間に続く第2のリフレッシュ・パケット検出期間内に、クラスタ内の各クォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信し続け、クォーラム記憶装置は、第2のリフレッシュ・パケット検出期間内に受信された対応する第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定し、ステップ913を実施する。
特定の実装では、クォーラム記憶装置が、初期マスタ・クォーラム・ノードの識別子を、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードの識別子に変更する。
リフレッシュ・パケット検出期間が終了した後、クォーラム記憶装置はマスタ・クォーラム・ノードを先着順方式で決定する。即ち、クォーラム記憶装置は、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求に対応するクォーラム・ノードを新たなマスタ・クォーラム・ノードとして設定し、その結果、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを高速に決定でき、ブレイン分割後のマスタ・ノード・グループを高速に決定してクラスタの正常な動作を継続することができる。
第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求は、クォーラム記憶装置により受信され、第1のリフレッシュ・パケット検出期間に続く第2のリフレッシュ・パケット検出期間内にクォーラム記憶装置に到着した第1のマスタ・クォーラム・ノード・プリエンプション要求を指す。2つの実装可能性があってもよい。1つ目は、リフレッシュ・パケット検出期間が終了する前に各クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を既に送信し、当該検出期間の後にマスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着するというものである。2つ目は、各クォーラム・ノードが、リフレッシュ・パケット検出期間が終了した後、マスタ・クォーラム・ノード・プリエンプション要求を送信し、当該検出期間の後、マスタ・クォーラム・ノード・プリエンプション要求がクォーラム記憶装置に到着するというものである。本発明の当該実施形態は上述の2つの可能性の何れにも限定されない。
913:クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信する。
特定の実装では、マスタ・クォーラム・ノード・プリエンプション成功応答を受信したクォーラム・ノードがマスタ・クォーラム・ノードとして選択され、マスタ・クォーラム・ノードが配置されるノード・グループは、クラスタの動作を継続するためのマスタ・ノード・グループとして使用される。
915:クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに通知メッセージを送信する。
特定の実装では、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと異なる接続タイプを有するクォーラム・ノードに対して、クォーラム記憶装置により送信された通知メッセージのタイプは異なる。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループと異なるノード・グループ内のクォーラム・ノード(即ち、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないクォーラム・ノード)に対して、クォーラム記憶装置はアクセス拒否通知メッセージを送信してもよく、その結果、当該クォーラム・ノードが再開され、クラスタに再参加する動作を実施する。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループと同じであるノード・グループ内のクォーラム・ノード(即ち、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続するクォーラム・ノード)に対して、クォーラム記憶装置はマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを送信してもよく、その結果、当該クォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求を送信するのを停止する。以下の2つの実装方式が存在する。
方式1:別々の送信方式を使用する。図9Bを参照すると、当該方式は以下のステップを含む。
9151:クォーラム記憶装置が、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信する。当該第1のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む。
特定の実装では、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが、ハート・ビート検出またはリース検出により、クラスタ内のクォーラム・ノードと別のクォーラム・ノードの間の接続を検出してもよく、当該マスタ・クォーラム・ノードに接続しないクォーラム・ノードに対する第1のパーミッション制御メッセージを生成し、第1のパーミッション制御メッセージをクォーラム記憶装置に送信する。
第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと物理的または論理的に通信できないクォーラム・ノードを指す。即ち、第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない。実際のシナリオでは、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは異なるノード・グループ内にある。
9152:クォーラム記憶装置がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。
1例として、特定の実装では、当該アクセス拒否通知メッセージが(表1に示すように)以下の特定のパケット・フォーマットを使用してもよく、クォーラム記憶装置に対するノード識別子およびアクセス・パーミッションを含む。例えば、ノードの識別子は当該ノードのIPアドレスであり、実際には別の表現方式を有してもよく、これは本発明の全ての実施形態では限定されない。クォーラム・ノードがアクセス拒否通知メッセージを受信した後、当該クォーラム・ノードがノード再開動作を実施する。
Figure 0006362120
第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないクォーラム・ノードであるので、例えば、物理的に、2つのクォーラム・ノードが物理接続経路を有さないか、または、論理的に、2つのクォーラム・ノードの間のスイッチが故障している。実装において、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは異なるノード・グループ内にある。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループがブレイン分割調停におけるマスタ・ノード・グループとして使用されるので、第1のカテゴリのクォーラム・ノードは別のノード・グループに属し、当該ノード・グループ内のクォーラム・ノードを再開する必要があり、クラスタに再参加する動作を実施する。
9153:クォーラム記憶装置がマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信する。当該第2のパーミッション制御メッセージはクラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む。
特定の実装では、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードはハート・ビート検出またはリース検出により当該クォーラム・ノードと別のクォーラム・ノードの間の接続を検出し、第2のパーミッション制御メッセージを生成し、当該第2のパーミッション制御メッセージをクォーラム記憶装置に送信する。
第2のカテゴリのクォーラム・ノードとは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと通信できるクォーラム・ノードのことをいう。即ち、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する。実際のシナリオでは、第2のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは同じノード・グループ内にある。
9154:クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。
1例として、特定の実装では、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは(表2に示すように)以下の特定のパケット・フォーマットを使用する。当該パケット・フォーマットは、ノード識別子とマスタ・クォーラム・ノード・プリエンプション要求の送信パーミッションとを含む。例えば、ノードの識別子は当該ノードのIPアドレスであり、実際には別の表現方式を有してもよく、本発明の諸実施形態では限定されない。クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信した後、当該クォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止する。
Figure 0006362120
方式1に対して、特定の実装方式において、ステップ9151および9152とステップ9153および9154の間の実行順序は限定されない。ステップ9151乃至ステップ9154がステップ9151からステップ9154への順序に従って実行してもよく、または、ステップ9153および9154を最初に実行してもよく、ステップ9151および9152が次に実行され、これは本発明の当該実施形態では限定されない。
方式2:統合送信方式を使用する。
方式1との違いは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードがパーミッション制御メッセージを生成することにある。当該メッセージは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードの識別子とクォーラム記憶装置に対するクォーラム・ノードのアクセス・パーミッションとを含む。当該アクセス・パーミッションは許可または拒否を含む。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが当該パーミッション制御メッセージをクォーラム記憶装置に送信する。クォーラム記憶装置は別々に、当該識別子および当該識別子に対応するアクセス・パーミッションに従って、第1のカテゴリのクォーラム・ノードに対するアクセス拒否通知メッセージおよび第2のカテゴリのクォーラム・ノードに対するマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成する。第1のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないクォーラム・ノードであり、第2のカテゴリのクォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続するクォーラム・ノードである。2つのクォーラム・ノードが互いと接続するかがハート・ビート検出またはリース検出により判定される。当該アクセス拒否通知メッセージを受信した後、第1のカテゴリのクォーラム・ノードがノード再開とクラスタへの再参加の動作を実施してもよい。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信した後、第2のカテゴリのクォーラム・ノードが、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止してもよい。
以下のステップを特に含めてもよい。図9Cを参照すると、当該方式は、以下のステップを含む。
9155:クォーラム記憶装置はマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信されたパーミッション制御メッセージを受信する。当該パーミッション制御メッセージは、クォーラム記憶装置に対する、クラスタ内の少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノード内の識別子と、該クラスタ内の当該少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションとを含み、当該アクセス・パーミッションは許可または拒否を含む。
1例として、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードがパーミッション制御メッセージを生成する。当該パーミッション制御メッセージは表3に示すフォーマットを使用する。
Figure 0006362120
マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードがパーミッション制御メッセージをクォーラム記憶装置に送信する。
9156:クォーラム記憶装置が、当該パーミッション制御メッセージに従って、クラスタ内の少なくとも2つのクォーラム・ノードにおけるマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに通知メッセージを送信する。
91561:アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対して、クォーラム記憶装置がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。
特定の実装では、ステップ9052における表1に示すパケット・フォーマットを使用してもよい。その他は同様であり、詳細についてはここでは説明しない。
第1のカテゴリのクォーラム・ノードとは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと物理的または論理的に通信できないクォーラム・ノードを指す。即ち、第1のカテゴリのクォーラム・ノードは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない。実際のシナリオでは、第1のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは異なるノード・グループ内にある。
91562:アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対して、クォーラム記憶装置がマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信する。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。
特定の実装では、ステップ9054における表2に示すパケット・フォーマットを使用してもよい。その他は同様であり、詳細についてはここでは説明しない。
第2のカテゴリのクォーラム・ノードとは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと通信できるクォーラム・ノードのことをいう。即ち、第2のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する。実際のシナリオでは、第2のカテゴリのクォーラム・ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは同じノード・グループ内にある。
上述の2つの実装方式により、クラスタ内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードが、クォーラム記憶装置により送信されたメッセージに従って対応する処理を実施することができる。特に、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないクォーラム・ノード(ブレイン分割後の別のノード・グループ内のクォーラム・ノード)が再開動作を実施してもよい。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続するクォーラム・ノード(ブレイン分割後のマスタ・ノード・グループ内のクォーラム・ノード)がマスタ・クォーラム・ノード・プリエンプション要求を送信するのを停止する。上述の処理により、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが決定された後、他のクォーラム・ノードは、ブレイン分割後にマスタ・クォーラム・ノードのプリエンプションから高速に復元することができる、その結果、クラスタの通常のサービスの高速な復元を効果的に実装することができる。
9157:アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、クォーラム記憶装置はまた、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを第1のカテゴリのクォーラム・ノードに送信する。当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように第1のカテゴリのクォーラム・ノードに指示するために使用される。
特定の実装では、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと異なるノード・グループ内のクォーラム・ノード、即ち、第1のカテゴリのクォーラム・ノードに対して、当該クォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信し続けるのを避けるため、当該クォーラム記憶装置が、ファイアウォール・ポリシを変更するために使用される通知メッセージを当該クォーラム・ノードに送信する。当該通知メッセージを受信した後、当該クォーラム・ノードは、当該クォーラム・ノードに対応するファイアウォール内のファイアウォール・ポリシを変更して、当該クォーラム・ノードによりクォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックしてもよい。
第1のカテゴリのクォーラム・ノードが再開動作を実施し、クラスタに再度参加した後、当該方法の実施形態はさらに、クォーラム記憶装置により、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを第1のカテゴリのクォーラム・ノードに送信するステップを含むことに留意すべきである。ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを許可に変更して、第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信できるようにするように第1のカテゴリのクォーラム・ノードに指示するために使用される。
第1のカテゴリのクォーラム・ノードを再開する前に、第1のカテゴリのクォーラム・ノードはさらにマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信することに留意すべきである。当該ステップの設定は効果的に、当該クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックして、クォーラム記憶装置が無効なマスタ・クォーラム・ノード・プリエンプション要求に関する処理能力を無駄にするのを回避することができる。
上述の解決策は、ブレイン分割がクラスタ内で行われた後、調停を通じてマスタ・ノード・グループを決定できないという先行技術の問題を効果的に解決することができる。
クラスタ・ブレイン分割が終了した後の調停処理の後、クラスタ内のクォーラム・ノードを除く別のノードが、ハート・ビート検出またはリース検出により、当該ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとの間の接続を決定してもよい。当該ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続すると判定されたとき、これは、当該ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとは同じノード・グループ内にあり、当該ノードが動作し続けることを示す。当該ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しないと判定されたとき、これは、当該ノードとマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとが異なるノード・グループ内にあることを示し、当該ノードは再開をトリガし、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループに再参加するプロセス実施する。
本発明の第3の装置の実施形態
図10を参照すると、本発明はさらに、クラスタおよびクォーラム記憶装置1000により形成されたシステムに提供される、当該クラスタ内の調停処理に使用されるクォーラム記憶装置1000を提供する。当該クラスタは少なくとも2つのクォーラム・ノードを含み、クォーラム記憶装置1000は、当該クラスタ内の少なくとも2つのクォーラム・ノードの1つを初期マスタ・クォーラム・ノードに予め構成する。クォーラム記憶装置1000は、リフレッシュ・パケット検出期間を開始するように構成された開始ユニット1005であって、当該リフレッシュ・パケット検出期間は反復実行される期間であり、当該開始ユニットをタイマを設定することにより実装してもよい、開始ユニット1005と、第1のリフレッシュ・パケット検出期間内に、ブレイン分割がクラスタ内で行われた後、クラスタ内の少なくとも2つのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信するように構成された受信ユニット1001であって、第1のリフレッシュ・パケット検出期間はブレイン分割がクラスタ内で行われた時点に対応するリフレッシュ・パケット検出期間であり、当該受信ユニットの受信方式を有線または無線の方式で実装してもよく、無線方式を実装に使用するとき、当該受信ユニットを無線周波数モジュールを用いて実装してもよく、有線方式を実装に使用するとき、当該受信ユニットを有線インタフェースを用いて実装してもよい、受信ユニット1001と、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたかどうかを判定するように構成された判定ユニット1002であって、当該判定ユニットを判定ロジックにより実装してもよい、判定ユニット1002と、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されたと判定されたとき、初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定するように構成された実行ユニット1003であって、当該実行ユニットをプロセッサ(Processor)を用いて実装してもよい、実行ユニット1003と、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信するように構成された送信ユニット1004であって、当該送信ユニットは当該受信ユニットと同様であり、有線方式または無線方式で実装してもよく、無線方式(例えば、無線周波数)が実装に使用されるとき、当該送信ユニットを無線周波数モジュールを用いて実装してもよく、有線方式(例えば、Ethernet)が実装に使用されるとき、当該送信ユニットを有線インタフェースを用いて実装してもよい、送信ユニット1004とを備える。
さらに、クォーラム記憶装置1000において、実行ユニット1003はさらに、初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求が第1のリフレッシュ・パケット検出期間内に受信されないと判定されたとき、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとして使用し、送信ユニット1004をトリガするように構成され、第2のリフレッシュ・パケット検出期間は第1のリフレッシュ・パケット検出期間に続くリフレッシュ・パケット検出期間である。送信ユニット1004はさらに、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信するように構成される。
さらに、判定ユニット1002は特に、ブレイン分割がクラスタ内で行われた後、第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードを含むかどうかを判定するか、または、ブレイン分割がクラスタ内で行われた後、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードであるかどうかを逐次的に判定するように構成される。
さらに、実行ユニット1003はさらに、判定ユニット1002が当該全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信するクォーラム・ノードが初期マスタ・クォーラム・ノードを含まないと判定した後、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを生成するように構成され、送信ユニット1004はさらに、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを当該全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信するように構成され、その結果、当該全てのキャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に再度送信する。
さらに、実行ユニット1003はさらに、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが初期マスタ・クォーラム・ノードを含まないと判定されたとき、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを生成するように構成され、送信ユニット1004はさらに、当該マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードに送信するように構成され、その結果、第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが新たなマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に再度送信する。
さらに、クォーラム記憶装置1000において、受信ユニット1001はさらに、送信ユニット1004がマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するように構成され、当該第1のパーミッション制御メッセージは、クラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む。実行ユニット1003はさらに、当該第1のパーミッション制御メッセージに従ってアクセス拒否通知メッセージを生成し、送信ユニット1004をトリガするように構成され、送信ユニット1004はさらに、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するように構成される。
さらに、クォーラム記憶装置1000において、受信ユニット1001はさらに、送信ユニット1004がマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するように構成され、第2のパーミッション制御メッセージはクラスタ内の少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含み、実行ユニット1003はさらに、第2のパーミッション制御メッセージに従ってマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成し、送信ユニット1004をトリガするように構成され、送信ユニット1004はさらに、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置1000に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するように構成される。
さらに、クォーラム記憶装置1000において、受信ユニット1001はさらに、送信ユニット1004がマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードにより送信されたパーミッション制御メッセージを受信するように構成され、当該パーミッション制御メッセージは、クォーラム記憶装置1000に対する、少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードの識別子と、当該少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードのアクセス・パーミッションとを含み、当該アクセス・パーミッションは許可または拒否を含む。実行ユニット1003はさらに、当該パーミッション制御メッセージに従って通知メッセージを生成し、送信ユニット1004をトリガするように構成される。送信ユニット1004はさらに、当該通知メッセージを当該少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードを除く別のクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置1000において、実行ユニット1003は特に、アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対してアクセス拒否通知メッセージを生成するように構成され、当該アクセス拒否通知メッセージは、ノード再開動作を実施するように第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット1004は特に、当該アクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置1000において、実行ユニット1003は特に、アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対してマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成するように構成される。当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージは、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置1000に送信するのを停止するように第2のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット904は特に、当該マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを第2のカテゴリのクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置1000において、実行ユニット1003はさらに、送信ユニット1004がアクセス拒否通知メッセージを第1のカテゴリのクォーラム・ノードに送信した後、第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、第1のカテゴリのクォーラム・ノードによりクォーラム記憶装置1000に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット1004はさらに、ファイアウォール・ポリシを変更するために使用される当該通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
さらに、クォーラム記憶装置1000において、実行ユニット1003はさらに、第1のカテゴリのクォーラム・ノードが再開動作を実施し、クラスタに再度参加した後、第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージは、第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを許可に変更して、第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信できるようにするように第1のカテゴリのクォーラム・ノードに指示するために使用される。送信ユニット1004はさらに、ファイアウォール・ポリシを許可に変更するために使用される当該通知メッセージを第1のカテゴリのクォーラム・ノードに送信するように構成される。
本発明の全ての実施形態を、1つのクォーラム記憶装置が存在する例を用いて説明する。N個の(N≧3およびNは奇数である)クォーラム記憶装置があるとき、クラスタ内の少なくとも2つのクォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション要求を当該N個のクォーラム記憶装置内の各クォーラム記憶装置に送信する。Round(N/2)+1個のクォーラム記憶装置により送信されたマスタ・クォーラム・ノード・プリエンプション成功通知メッセージを取得できるクォーラム・ノードは、マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと呼ばれる。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードが配置されるノード・グループはマスタ・ノード・グループである。他のクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと通信できるクォーラム・ノードは、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを受信してもよく、マスタ・クォーラム・ノード・プリエンプション要求をクォーラム記憶装置に送信するのを停止してもよい。マスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードと通信できないクォーラム・ノードがアクセス拒否通知メッセージを受信してもよい。当該アクセス拒否通知メッセージは、ノード再開動作を実施するように当該クォーラム・ノードに指示するために使用される。具体的な処理プロセスは1つのクォーラム記憶装置があるときの処理プロセスと同様であるので、詳細は本発明の当該実施形態では説明しない。
本発明における特定の例は、当業者が本発明の諸実施形態をより良く理解するのを支援するためのものであるが、本発明の諸実施形態の範囲を限定するためのものではないことは理解されるべきである。
上述のプロセスのシーケンス番号は本発明の様々な実施形態における実行順序を意味しないことも理解されるべきである。プロセスの実行順序は当該プロセスの機能および内部ロジックに従って決定されるべきであり、本発明の諸実施形態の実装プロセスに対する限定として解釈されるべきではない。
本発明の当該実施形態における「および/または」という用語は、関連付けられたオブジェクトを説明するための関連付け関係のみを示し、3つの関係が存在しうることを表すこともさらに理解されるべきである。例えば、Aおよび/またはBが以下の3つのケース、即ち、Aのみが存在すること、AおよびBの両方が存在すること、およびBのみが存在することを表してもよい。さらに、本明細書における「/」という文字は一般に、関連付けられたオブジェクトの間の「または」の関係を示す。
本明細書で開示した実施形態で説明した例と組み合わせて、ユニットおよびアルゴリズムのステップを電子ハードウェア、コンピュータ・ソフトウェア、またはそれらの組合せにより実装してもよいことを当業者は認識しうる。ハードウェアとソフトウェアの間の交換可能性を明確に説明するために、以上では機能に従う各例の構成とステップを一般的に説明した。当該機能がハードウェアまたはソフトウェアにより実施されるかどうかは技術的解決策の特定の適用と設計制約条件に依存する。当業者は様々な方法を使用して特定のアプリケーションごとに説明した機能を実施してもよいが、当該実装が本発明の範囲を越えるとは考えるべきではない。
便宜上および説明の簡単さのため、上述の装置およびユニットの詳細な動作プロセス、および方法の詳細なプロセスについては上述のシステムの実施形態における対応する説明を参照できることは当業者により明確に理解でき、詳細についてはここでは説明しない。
本願で提供した幾つかの実施形態において、開示したシステム、装置、および方法を他の方式で実装してもよいことは理解されるべきである。例えば、説明した装置の実施形態は例示的なものにすぎない。例えば、ユニット分割は論理的な機能分割にすぎず、実際の実装では他の分割であってもよい。例えば、複数のユニットまたはコンポーネントを別のシステムに組み合わせるかまたは統合してもよく、または、幾つかの機能を無視するかまたは実施しなくてもよい。さらに、幾つかのインタフェースを用いて、説明または議論した相互結合または直接結合または通信接続を実装してもよい。当該装置またはユニットの間の間接結合または通信接続を、電気、機械、または他の形態で実装してもよい。
別々の部分として説明されたユニットが物理的に分離されていてもいなくてもよく、ユニットとして表示した部分が物理ユニットであってもなくてもよく、1つの位置に配置されてもよく、または、複数のネットワーク・ユニットに分散されてもよい。当該ユニットの一部または全部を、本発明の諸実施形態の解決策の目的を実現するための実際のニーズに従って選択してもよい。
さらに、本発明の諸実施形態における機能ユニットを1つの処理ユニットに統合してもよく、または、当該ユニットの各々が物理的に単体で存在してもよく、または、2つまたはそれより多くのユニットが1つのユニットに統合される。当該統合されたユニットをハードウェアの形態で実装してもよく、または、ソフトウェア機能ユニットの形態で実装してもよい。
統合されたユニットがソフトウェア機能ユニットの形態で実装され、独立な製品として販売または使用されるとき、当該統合されたユニットをコンピュータ可読記憶媒体に格納してもよい。かかる理解に基づいて、本発明の技術的解決策を本質的に、または、先行技術に寄与する部分、または、当該技術的解決策の全部もしくは一部をソフトウェア製品の形で実装してもよい。当該コンピュータ・ソフトウェア製品は記憶媒体に格納され、本発明の諸実施形態で説明した方法のステップの全部または一部を実施するように(パーソナル・コンピュータ、サーバ、またはネットワーク装置であってもよい)コンピュータ装置に指示するための幾つかの命令を含む。上述の記憶媒体は、USBフラッシュ・ドライブ、取外し可能ハード・ディスク、読取専用メモリ(ROM、Read−Only Memory)、ランダム・アクセス・メモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスクのような、プログラム・コードを格納できる任意の媒体を含む。
以上の説明は本発明の特定の実施形態にすぎず、本発明の保護範囲を限定しようとするものではない。本発明で開示した技術的範囲内で当業者が容易に想到する任意の修正または置換えは本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は特許請求の範囲の保護範囲に支配されるべきである。
401 受信ユニット
402 判定ユニット
403 実行ユニット
404 送信ユニット
501 プロセッサ
502 メモリ
503 通信インタフェース
601 受信ユニット
602 判定ユニット
603 送信ユニット
701 プロセッサ
702 メモリ
703 通信インタフェース
811 クォーラム・ノード
8111 クォーラム・ノード・
820 クォーラム記憶装置
1001 受信ユニット
1002 判定ユニット
1003 実行ユニット
1004 送信ユニット
1005 開始ユニット

Claims (22)

  1. クラスタおよびクォーラム記憶装置により形成されたシステムに適用されるクラスタ・ブレイン分割後の調停処理方法であって、前記クラスタは少なくとも2つのクォーラム・ノードを含み、前記クラスタ内の前記少なくとも2つのクォーラム・ノードの1つは初期マスタ・クォーラム・ノードとして予め記録され、前記方法は、
    前記クォーラム記憶装置により、リフレッシュ・パケット検出期間を開始するステップであって、前記リフレッシュ・パケット検出期間は反復実行される期間である、ステップと、
    ブレイン分割が前記クラスタ内で行われた後、前記クォーラム記憶装置により、第1のリフレッシュ・パケット検出期間内に、前記クラスタ内の前記少なくとも2つのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信し、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するステップであって、前記第1のリフレッシュ・パケット検出期間は前記ブレイン分割が前記クラスタ内で発生した時点に対応するリフレッシュ・パケット検出期間である、ステップと、
    前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含むと判定したとき、前記クォーラム記憶装置により、前記初期マスタ・クォーラム・ノードがマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定するステップと、
    前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信するステップと、
    前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含まないと判定したとき、クォーラム記憶装置により、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとして使用し、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信するステップであって、前記第2のリフレッシュ・パケット検出期間は前記第1のリフレッシュ・パケット検出期間に続くリフレッシュ・パケット検出期間である、ステップと、
    を含む、方法。
  2. 前記クォーラム記憶装置により、ブレイン分割が前記クラスタ内で行われた後、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するステップは特に、
    前記ブレイン分割が前記クラスタで行われた後、前記クォーラム記憶装置により、前記第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、前記クォーラム記憶装置により、全ての前記キャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードを含むかどうかを判定するステップ、
    または
    前記ブレイン分割が前記クラスタで行われた後、前記クォーラム記憶装置により、前記第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードであるかどうかを逐次的に判定するステップ
    を含む、請求項に記載の方法。
  3. 前記クォーラム記憶装置が、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含まないと判定した後、前記方法はさらに、
    前記クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信し、その結果、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に再度送信する、ステップ
    を含む、請求項に記載の方法。
  4. 前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、前記方法はさらに、
    前記クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するステップであって、前記第1のパーミッション制御メッセージはマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含む、ステップと、
    前記クォーラム記憶装置により、アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように前記第1のカテゴリのクォーラム・ノードに指示するステップと、
    を含む、請求項1乃至の何れか1項に記載の方法。
  5. 前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、前記方法はさらに、
    前記クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するステップであって、前記第2のパーミッション制御メッセージは、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含む、ステップと、
    前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを前記第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信するのを停止するように前記第2のカテゴリのクォーラム・ノードに指示するステップと、
    を含む、請求項1乃至の何れか1項に記載の方法。
  6. 前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、前記方法はさらに、
    前記クォーラム記憶装置により、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信されたパーミッション制御メッセージを受信するステップであって、前記パーミッション制御メッセージは、前記クォーラム記憶装置に対する、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く別のクォーラム・ノードの識別子と、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードのアクセス・パーミッションとを含み、前記アクセス・パーミッションは許可または拒否を含む、ステップと、
    前記パーミッション制御メッセージに従って、前記クォーラム記憶装置により、通知メッセージを前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードに送信するステップと、
    を含む、請求項1乃至の何れか1項に記載の方法。
  7. アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対して、前記パーミッション制御メッセージに従って、前記クォーラム記憶装置により、通知メッセージを前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードに送信するステップは特に、
    前記クォーラム記憶装置により、アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように前記第1のカテゴリのクォーラム・ノードに指示するステップ
    を含む、請求項に記載の方法。
  8. アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対して、前記パーミッション制御メッセージに従って、前記クォーラム記憶装置により、通知メッセージを前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードに送信するステップは特に、
    前記クォーラム記憶装置により、マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを前記第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信するのを停止するように前記第2のカテゴリのクォーラム・ノードに指示するステップ
    を含む、請求項またはに記載の方法。
  9. 前記クォーラム記憶装置により、アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信した後、前記方法はさらに、
    前記クォーラム記憶装置により、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信するステップであって、ファイアウォール・ポリシを拒否に変更するために使用される前記通知メッセージは、前記第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、前記第1のカテゴリのクォーラム・ノードにより前記クォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように前記第1のカテゴリのクォーラム・ノードに指示するために使用される、ステップ
    を含む、請求項またはに記載の方法。
  10. 前記第1のカテゴリのクォーラム・ノードが前記再開動作を実施し、前記クラスタに再度参加した後、前記方法はさらに、
    前記クォーラム記憶装置により、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信して、前記第1のカテゴリのクォーラム・ノードの前記ファイアウォール内の前記ファイアウォール・ポリシを許可に変更して、前記第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信できるようにするように前記第1のカテゴリのクォーラム・ノードに指示するステップ
    を含む、請求項に記載の方法。
  11. クラスタおよびクォーラム記憶装置により形成されたシステムに適用されるクラスタ内の調停処理のためのクォーラム記憶装置であって、前記クラスタは少なくとも2つのクォーラム・ノードを含み、前記クラスタ内の前記少なくとも2つのクォーラム・ノードの1つは初期マスタ・クォーラム・ノードとして予め記録され、前記クォーラム記憶装置は、
    リフレッシュ・パケット検出期間を開始するように構成された開始ユニットであって、前記リフレッシュ・パケット検出期間は反復実行される期間である、開始ユニットと、
    第1のリフレッシュ・パケット検出期間内に、ブレイン分割が前記クラスタ内で行われた後、前記クラスタ内の前記少なくとも2つのクォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を受信するように構成された受信ユニットであって、前記第1のリフレッシュ・パケット検出期間は前記ブレイン分割が前記クラスタ内で発生した時点に対応するリフレッシュ・パケット検出期間である、受信ユニットと、
    前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信されたマスタ・クォーラム・ノード・プリエンプション要求を含むかどうかを判定するように構成された判定ユニットと、
    前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含むと判定されたとき、前記初期マスタ・クォーラム・ノードはマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードであると判定するように構成された実行ユニットと、
    マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信するように構成された送信ユニットと、
    を備え
    前記実行ユニットはさらに、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求が、前記初期マスタ・クォーラム・ノードにより送信された前記マスタ・クォーラム・ノード・プリエンプション要求を含まないと判定されたとき、第2のリフレッシュ・パケット検出期間内に受信された第1のマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードをマスタ・クォーラム・ノードのプリエンプションに成功したクォーラム・ノードとして使用するように構成され、前記第2のリフレッシュ・パケット検出期間は前記第1のリフレッシュ・パケット検出期間に続くリフレッシュ・パケット検出期間であり、
    前記送信ユニットはさらに、マスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信するように構成される、
    クォーラム記憶装置。
  12. 前記判定ユニットは特に、前記ブレイン分割が前記クラスタで行われた後、前記第1のリフレッシュ・パケット検出期間内に受信された全てのマスタ・クォーラム・ノード・プリエンプション要求をキャッシュし、全ての前記キャッシュされたマスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードを含むかどうかを判定するか、または、前記ブレイン分割が前記クラスタで行われた後、前記第1のリフレッシュ・パケット検出期間内に受信された各マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードであるかどうかを逐次的に判定するように構成される、
    請求項11に記載のクォーラム記憶装置。
  13. 前記実行ユニットはさらに、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードが前記初期マスタ・クォーラム・ノードを含まないと判定されたとき、マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを生成するように構成され、
    前記送信ユニットはさらに、前記マスタ・クォーラム・ノードのプリエンプション失敗応答メッセージを前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードの各々に送信するように構成され、その結果、前記第1のリフレッシュ・パケット検出期間内に受信された前記マスタ・クォーラム・ノード・プリエンプション要求を送信したクォーラム・ノードは新たなマスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に再度送信する、
    請求項11に記載のクォーラム記憶装置。
  14. 前記受信ユニットはさらに、前記送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された第1のパーミッション制御メッセージを受信するように構成され、前記第1のパーミッション制御メッセージは、前記クラスタ内の前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに接続しない第1のカテゴリのクォーラム・ノードの識別子を含み、
    前記実行ユニットはさらに、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された前記第1のパーミッション制御メッセージに従ってアクセス拒否通知メッセージを生成するように構成され、
    前記送信ユニットはさらに、前記アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように前記第1のカテゴリのクォーラム・ノードに指示するように構成される、
    請求項11乃至13の何れか1項に記載のクォーラム記憶装置。
  15. 前記受信ユニットはさらに、前記送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された第2のパーミッション制御メッセージを受信するように構成され、前記第2のパーミッション制御メッセージは、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに接続する第2のカテゴリのクォーラム・ノードの識別子を含み、
    前記実行ユニットはさらに、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信された前記第2のパーミッション制御メッセージに従ってマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成するように構成され、
    前記送信ユニットはさらに、前記マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを前記第2のカテゴリのクォーラム・ノードに送信して、マスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信するのを停止するように前記第2のカテゴリのクォーラム・ノードに指示するように構成される、
    請求項11乃至14の何れか1項に記載のクォーラム記憶装置。
  16. 前記受信ユニットはさらに、前記送信ユニットがマスタ・クォーラム・ノード・プリエンプション成功応答メッセージをマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードに送信した後、マスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードにより送信されたパーミッション制御メッセージを受信するように構成され、前記パーミッション制御メッセージは、前記クォーラム記憶装置に対する、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く別のクォーラム・ノードの識別子と、前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードのアクセス・パーミッションとを含み、前記アクセス・パーミッションは許可または拒否を含み、
    前記実行ユニットはさらに、前記パーミッション制御メッセージに従って通知メッセージを生成するように構成され、
    前記送信ユニットはさらに、前記通知メッセージを前記少なくとも2つのクォーラム・ノード内のマスタ・クォーラム・ノードのプリエンプションに成功した前記クォーラム・ノードを除く前記別のクォーラム・ノードに送信するように構成され、
    請求項11乃至13の何れか1項に記載のクォーラム記憶装置。
  17. 前記実行ユニットは特に、アクセス・パーミッションが拒否である第1のカテゴリのクォーラム・ノードに対するアクセス拒否通知メッセージを生成するように構成され、
    前記送信ユニットは特に、前記アクセス拒否通知メッセージをアクセス・パーミッションが拒否である前記第1のカテゴリのクォーラム・ノードに送信して、ノード再開動作を実施するように前記第1のカテゴリのクォーラム・ノードに指示するように構成される、
    請求項16に記載のクォーラム記憶装置。
  18. 前記実行ユニットは特に、アクセス・パーミッションが許可である第2のカテゴリのクォーラム・ノードに対してマスタ・クォーラム・ノード・プリエンプション失敗通知メッセージを生成し、マスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信するのを停止するように前記第2のカテゴリのクォーラム・ノードに指示するように構成され、
    前記送信ユニットは特に、前記マスタ・クォーラム・ノード・プリエンプション失敗通知メッセージをアクセス・パーミッションが許可である前記第2のカテゴリのクォーラム・ノードに送信するように構成される、
    請求項16または17に記載のクォーラム記憶装置。
  19. 前記実行ユニットはさらに、前記送信ユニットが前記アクセス拒否通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信した後、前記第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを拒否に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを拒否に変更するために使用される前記通知メッセージは、前記第1のカテゴリのクォーラム・ノードのファイアウォール内のファイアウォール・ポリシを拒否に変更して、前記第1のカテゴリのクォーラム・ノードにより前記クォーラム記憶装置に送信されたマスタ・クォーラム・ノード・プリエンプション要求をブロックするように前記第1のカテゴリのクォーラム・ノードに指示するために使用され、
    前記送信ユニットはさらに、ファイアウォール・ポリシを拒否に変更するために使用される前記通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信するように構成される、
    請求項14または17に記載のクォーラム記憶装置。
  20. 前記実行ユニットはさらに、前記第1のカテゴリのクォーラム・ノードが前記再開動作を実施し、前記クラスタに再度参加した後、前記第1のカテゴリのクォーラム・ノードに対して、ファイアウォール・ポリシを許可に変更するために使用される通知メッセージを生成するように構成され、ファイアウォール・ポリシを許可に変更するために使用される前記通知メッセージは、前記第1のカテゴリのクォーラム・ノードの前記ファイアウォール内の前記ファイアウォール・ポリシを許可に変更して、前記第1のカテゴリのクォーラム・ノードがマスタ・クォーラム・ノード・プリエンプション要求を前記クォーラム記憶装置に送信できるようにするように前記第1のカテゴリのクォーラム・ノードに指示するために使用され、
    前記送信ユニットはさらに、ファイアウォール・ポリシを許可に変更するために使用される前記通知メッセージを前記第1のカテゴリのクォーラム・ノードに送信するように構成される、
    請求項19に記載のクォーラム記憶装置。
  21. クォーラム記憶装置であって、前記クォーラム記憶装置は、プロセッサ、メモリ、通信インタフェース、およびバスを備え、前記プロセッサ、前記メモリ、および前記通信インタフェースは前記バスを用いて互いと通信し、
    前記通信インタフェースはクラスタ内の少なくとも2つのクォーラム・ノードと通信するように構成され、
    前記メモリはプログラムを格納するように構成され、
    前記記憶装置が実行したとき、前記プロセッサは、前記メモリに格納された前記プログラムを実行して請求項1乃至10の何れか1項に記載の方法を実行するように構成される、
    クォーラム記憶装置。
  22. クラスタ・ブレイン分割後の調停処理システムであって、前記システムは、クラスタおよび請求項11乃至20の何れか1項に記載のクォーラム記憶装置を備え、前記クラスタは少なくとも2つのクォーラム・ノードを含み、前記クォーラム記憶装置は、前記クラスタ内の前記少なくとも2つのクォーラム・ノードの1つを初期マスタ・クォーラム・ノードに予め構成する、調停処理システム。
JP2016570024A 2014-12-31 2015-08-05 クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステム Active JP6362120B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CNPCT/CN2014/095892 2014-12-31
PCT/CN2014/095892 WO2016106682A1 (zh) 2014-12-31 2014-12-31 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统
PCT/CN2015/086146 WO2016107172A1 (zh) 2014-12-31 2015-08-05 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统

Publications (2)

Publication Number Publication Date
JP2017517817A JP2017517817A (ja) 2017-06-29
JP6362120B2 true JP6362120B2 (ja) 2018-07-25

Family

ID=56283956

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2016570024A Active JP6362120B2 (ja) 2014-12-31 2015-08-05 クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステム
JP2016569878A Active JP6362119B2 (ja) 2014-12-31 2015-08-05 クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステム

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2016569878A Active JP6362119B2 (ja) 2014-12-31 2015-08-05 クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステム

Country Status (5)

Country Link
US (2) US10298436B2 (ja)
EP (2) EP3128719B1 (ja)
JP (2) JP6362120B2 (ja)
CN (2) CN105934929B (ja)
WO (3) WO2016106682A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10341252B2 (en) * 2015-09-30 2019-07-02 Veritas Technologies Llc Partition arbitration optimization
US11075806B1 (en) 2016-06-30 2021-07-27 Juniper Networks, Inc. Hierarchical naming scheme for state propagation within network devices
CN106301900B (zh) * 2016-08-08 2019-08-23 华为技术有限公司 设备仲裁的方法和设备
CN106789193A (zh) * 2016-12-06 2017-05-31 郑州云海信息技术有限公司 一种集群投票仲裁方法及系统
US11316744B2 (en) * 2016-12-21 2022-04-26 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices
US10887173B2 (en) 2016-12-21 2021-01-05 Juniper Networks, Inc. Communicating state information in distributed operating systems
US11316775B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Maintaining coherency in distributed operating systems for network devices
WO2018151290A1 (ja) * 2017-02-20 2018-08-23 日本電気株式会社 情報処理装置、情報処理方法および記憶媒体
US10534767B2 (en) 2017-03-14 2020-01-14 International Business Machines Corporation Disaster recovery for split storage cluster
CN109428740B (zh) * 2017-08-21 2020-09-08 华为技术有限公司 设备故障恢复的方法和装置
CN107579860A (zh) * 2017-09-29 2018-01-12 新华三技术有限公司 节点选举方法及装置
CN108449200A (zh) * 2018-02-02 2018-08-24 云宏信息科技股份有限公司 一种基于控制节点的屏蔽信息写入方法及装置
US10592342B1 (en) * 2018-02-02 2020-03-17 EMC IP Holding Company LLC Environmental aware witness for active-active storage cluster nodes
CN109445942B (zh) * 2018-10-22 2021-09-17 郑州云海信息技术有限公司 一种心跳消息的处理方法及装置
US11516084B2 (en) * 2019-01-31 2022-11-29 EMC IP Holding Company LLC Device compatibility in a communication architecture
US11095742B2 (en) 2019-03-27 2021-08-17 Juniper Networks, Inc. Query proxy for delivery of dynamic system state
CN111835534B (zh) * 2019-04-15 2022-05-06 华为技术有限公司 一种用于集群控制的方法,网络设备,主控节点装置及计算机可读存储介质
CN111651291B (zh) * 2020-04-23 2023-02-03 国网河南省电力公司电力科学研究院 一种共享存储集群防脑裂的方法、系统、计算机存储介质
CN111651294B (zh) * 2020-05-13 2023-07-25 浙江华创视讯科技有限公司 一种节点异常检测方法及装置
CN112181305A (zh) * 2020-09-30 2021-01-05 北京人大金仓信息技术股份有限公司 数据库集群网络分区选择方法和装置
CN112468596B (zh) * 2020-12-02 2022-07-05 苏州浪潮智能科技有限公司 一种集群仲裁方法、装置、电子设备及可读存储介质
CN112822238B (zh) * 2020-12-29 2023-05-26 深圳市金证科技股份有限公司 一种主节点的切换方法以及计算机可读存储介质
CN113625946A (zh) * 2021-06-28 2021-11-09 苏州浪潮智能科技有限公司 一种实现存储集群仲裁的方法、系统及计算机设备
CN113377702B (zh) * 2021-07-06 2024-03-22 安超云软件有限公司 两节点集群启动的方法及装置、电子设备和存储介质
CN114461141B (zh) * 2021-12-30 2023-08-18 苏州浪潮智能科技有限公司 一种etcd系统、节点仲裁方法及系统
CN114500327B (zh) * 2022-04-13 2022-08-12 统信软件技术有限公司 一种服务器集群的检测方法、检测装置及计算设备
CN116737634A (zh) * 2023-07-12 2023-09-12 北京鲸鲨软件科技有限公司 一种drbd双主模式下基于仲裁的脑裂快速处理方法和装置

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999712A (en) * 1997-10-21 1999-12-07 Sun Microsystems, Inc. Determining cluster membership in a distributed computer system
US6487622B1 (en) * 1999-10-28 2002-11-26 Ncr Corporation Quorum arbitrator for a high availability system
US6615256B1 (en) * 1999-11-29 2003-09-02 Microsoft Corporation Quorum resource arbiter within a storage network
US6965936B1 (en) * 2000-12-06 2005-11-15 Novell, Inc. Method for detecting and resolving a partition condition in a cluster
US7277952B2 (en) * 2001-09-28 2007-10-02 Microsoft Corporation Distributed system resource protection via arbitration and ownership
US20050132154A1 (en) 2003-10-03 2005-06-16 International Business Machines Corporation Reliable leader election in storage area network
US7320085B2 (en) 2004-03-09 2008-01-15 Scaleout Software, Inc Scalable, software-based quorum architecture
US7496782B1 (en) * 2004-06-01 2009-02-24 Network Appliance, Inc. System and method for splitting a cluster for disaster recovery
US7313636B2 (en) 2004-06-15 2007-12-25 Lsi Corporation Methods and structure for supporting persistent reservations in a multiple-path storage environment
JP4371942B2 (ja) * 2004-08-06 2009-11-25 富士通株式会社 クラスタシステムのノード制御プログラムおよびサーバ
US7653682B2 (en) 2005-07-22 2010-01-26 Netapp, Inc. Client failure fencing mechanism for fencing network file system data in a host-cluster environment
US20070168507A1 (en) * 2005-11-15 2007-07-19 Microsoft Corporation Resource arbitration via persistent reservation
JP4505763B2 (ja) * 2007-01-31 2010-07-21 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ノードクラスタの管理
US20080225837A1 (en) 2007-03-16 2008-09-18 Novell, Inc. System and Method for Multi-Layer Distributed Switching
US7778157B1 (en) 2007-03-30 2010-08-17 Symantec Operating Corporation Port identifier management for path failover in cluster environments
US8024432B1 (en) * 2008-06-27 2011-09-20 Symantec Corporation Method and apparatus for partitioning a computer cluster through coordination point devices
KR101042908B1 (ko) * 2009-02-12 2011-06-21 엔에이치엔(주) 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체
US8145938B2 (en) 2009-06-01 2012-03-27 Novell, Inc. Fencing management in clusters
US8484510B2 (en) 2009-12-15 2013-07-09 Symantec Corporation Enhanced cluster failover management
US8443231B2 (en) * 2010-04-12 2013-05-14 Symantec Corporation Updating a list of quorum disks
US8108715B1 (en) * 2010-07-02 2012-01-31 Symantec Corporation Systems and methods for resolving split-brain scenarios in computer clusters
CN102402395B (zh) * 2010-09-16 2014-07-16 中标软件有限公司 基于仲裁磁盘的高可用系统不间断运行方法
JP2012173996A (ja) * 2011-02-22 2012-09-10 Nec Corp クラスタシステム、クラスタ管理方法、およびクラスタ管理プログラム
WO2012083693A1 (zh) * 2011-07-26 2012-06-28 华为技术有限公司 一种用于集群计算机系统的投票仲裁方法及装置
CN102420820B (zh) 2011-11-28 2016-06-08 杭州华三通信技术有限公司 一种集群系统中的隔离方法和装置
CN102594596B (zh) * 2012-02-15 2014-08-20 华为技术有限公司 识别集群网络中可用分区的方法、装置及集群网络系统
US8738701B2 (en) * 2012-02-28 2014-05-27 Microsoft Corporation Arbitration of disk ownership in a storage pool
CN102904946B (zh) * 2012-09-29 2015-06-10 浪潮(北京)电子信息产业有限公司 集群内节点管理方法和装置
CN103532748B (zh) * 2013-10-08 2017-01-25 北京华胜天成科技股份有限公司 一种drbd脑裂的处理方法及装置
CN103684941B (zh) * 2013-11-23 2018-01-16 广东中兴新支点技术有限公司 基于仲裁服务器的集群裂脑预防方法和装置
CN103647820B (zh) * 2013-12-09 2016-11-23 华为数字技术(苏州)有限公司 用于分布式集群系统的仲裁方法及仲裁装置
CN104158707B (zh) * 2014-08-29 2017-10-17 新华三技术有限公司 一种检测并处理集群脑裂的方法和装置

Also Published As

Publication number Publication date
EP3128720B1 (en) 2019-05-22
JP6362119B2 (ja) 2018-07-25
JP2017517817A (ja) 2017-06-29
EP3128720A1 (en) 2017-02-08
EP3128720A4 (en) 2017-06-21
US20170302502A1 (en) 2017-10-19
CN106170971A (zh) 2016-11-30
EP3128719B1 (en) 2018-11-28
EP3128719A4 (en) 2017-06-21
WO2016107173A1 (zh) 2016-07-07
CN106170971B (zh) 2019-06-11
WO2016106682A1 (zh) 2016-07-07
CN105934929A (zh) 2016-09-07
US10020980B2 (en) 2018-07-10
US10298436B2 (en) 2019-05-21
WO2016107172A1 (zh) 2016-07-07
JP2017525008A (ja) 2017-08-31
US20170293613A1 (en) 2017-10-12
EP3128719A1 (en) 2017-02-08
CN105934929B (zh) 2017-07-21

Similar Documents

Publication Publication Date Title
JP6362120B2 (ja) クラスタ・ブレイン分割後の調停処理方法、クォーラム記憶装置、およびシステム
US10979286B2 (en) Method, device and computer program product for managing distributed system
JP3932994B2 (ja) サーバ引継システムおよびその方法
JP6466003B2 (ja) Vnfフェイルオーバの方法及び装置
CN106911728A (zh) 分布式系统中主节点的选取方法和装置
US20170270015A1 (en) Cluster Arbitration Method and Multi-Cluster Cooperation System
US9992058B2 (en) Redundant storage solution
CN106911648B (zh) 一种环境隔离方法及设备
WO2017210209A1 (en) Keepalive scheduler in a network device
US8842524B2 (en) Redundant ring automatic recovery
US9342291B1 (en) Distributed update service
US10680930B2 (en) Method and apparatus for communication in virtual network
US20220286350A1 (en) Systems and methods for seamless failover in branch deployments by superimposing clustering solution on vrrp
WO2016106661A1 (zh) 一种存储装置的访问控制方法、存储装置以及控制系统
US20170141950A1 (en) Rescheduling a service on a node
CN116095145B (zh) 一种vpc集群的数据控制方法和系统
US20180124220A1 (en) DEPLOYING AN INTERNET STORAGE NAME SERVICE (iSNS) SERVER ON A NETWORK DEVICE
CN104702693A (zh) 两节点系统分区的处理方法和节点
WO2024083259A1 (zh) 主备数据库集群及选主方法、计算设备及存储介质
CN108874918A (zh) 一种数据处理装置、数据库一体机及其数据处理方法
KR20170131001A (ko) 메시지분산 서비스 환경에서의 운영 서버 제어 시스템
RU2673019C1 (ru) Способ обеспечения доступа к разделяемому ресурсу в распределенной вычислительной системе
Yasa et al. Neferion: Time Bound, Fail-Safe and Deterministic Propagation of Network Connectivity Policies Across Large Multi-datacenter Networks

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161213

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161213

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180524

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180619

R150 Certificate of patent or registration of utility model

Ref document number: 6362120

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