JP3706531B2 - 分散コンピュータ・システム内のプロセッサを再構成する方法 - Google Patents
分散コンピュータ・システム内のプロセッサを再構成する方法 Download PDFInfo
- Publication number
- JP3706531B2 JP3706531B2 JP2000257264A JP2000257264A JP3706531B2 JP 3706531 B2 JP3706531 B2 JP 3706531B2 JP 2000257264 A JP2000257264 A JP 2000257264A JP 2000257264 A JP2000257264 A JP 2000257264A JP 3706531 B2 JP3706531 B2 JP 3706531B2
- Authority
- JP
- Japan
- Prior art keywords
- group
- processor
- server
- incarnation
- processors
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/142—Reconfiguring to eliminate the error
- G06F11/1425—Reconfiguring to eliminate the error by reconfiguration of node membership
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Hardware Redundancy (AREA)
- Multi Processors (AREA)
Description
【発明の属する技術分野】
本発明は、分散コンピューティング・システムに関し、具体的には、分散コンピューティング・システム内のプロセッサのクォーラム・グループの動的再構成と、動的再構成中に使用不能であったグループの1つまたは複数のプロセッサの回復手順に関する。
【0002】
【関連する出願】
本特許出願には、以下の特許出願の内容に関する内容が含まれる。以下の特許出願は、本特許出願と同一の譲受人に譲渡され、本特許出願と同一の日付(1999年8月31日)に出願された。下記の特許出願は、本明細書に関連する。
米国特許出願第09/387185号明細書(出願人整理番号第PO9−99−131号)
米国特許出願第09/386549号明細書(出願人整理番号第PO9−99−132号)
米国特許出願第09/387188号明細書(出願人整理番号第PO9−99−133号)
【0003】
【従来の技術】
分散コンピューティング・システムでは、複数の処理要素が使用される。これらの処理要素は、ネットワーク内で互いにリンクされた個々のプロセッサ、または調整された環境で並列に動作する複数のソフトウェア・インスタンスとすることができる。前者の場合、プロセッサは、ネットワーク・プロトコルをサポートするネットワークを介して互いに通信する。このプロトコルは、ハードウェア構成要素とソフトウェア構成要素の組合せを使用することによって実施することができる。処理要素は、通常は、共通のインターフェースを介してメッセージまたはパケットを送受することによって互いに通信する。分散コンピューティング・システムの1種が、処理要素が記憶域を共用しない、非共用分散システムである。そのようなシステム内では、要素は、分散システムの状態について合意するためにメッセージを交換しなければならない。
【0004】
したがって、非共用分散処理システム内では、メッセージ交換プロトコルが必要である。たとえば、メッセージ交換プロトコルでは、分散処理システム内のデータベースの現在の状態の問題を解決しようとする。具体的に言うと、プロトコルでは、どの処理要素が最新版のデータベースを有するかを定義する必要がある。というのは、処理要素が異なる版のデータベースを作成する可能性があるからである。周知の通り、高可用性システムでは、システムが処理の実行を継続している間に、1つまたは複数の処理要素が、使用不能になることが許容される。したがって、データベースは、高可用性分散処理ステム内では、1つまたは複数の処理要素が使用不能(たとえばオフ・ライン)の間に変更される可能性がある。前に使用不能であった処理要素が使用可能になった時に、更新された版のデータベースを、その処理要素に供給しなければならない。
【0005】
従来の非共用分散処理システムは、クォーラム駆動回復に参加する処理要素のグループが静的でなければならないという制限を有する。すなわち、サーバ・グループが定義された後には、動的にすなわち、データベースが走行しており1つまたは複数のメンバが潜在的に使用不能である間に、メンバを追加または削除することができない。従来の非共用分散処理システムで再構成変更を行う唯一の方法は、再定義動作を使用することであるが、この再定義動作は、システムの全サーバでの構成ファイルの変更を必要とし、したがって、再構成変更のためにすべてのサーバが現在使用可能であることを必要とする。
【0006】
【発明が解決しようとする課題】
上記にもかかわらず、データベース・サーバなどの高可用性分散処理システムの場合には、サーバのグループの全サーバが使用可能であることを必要とせずに、サーバの追加または削除を可能にすることが望ましいと考えられる。
【0007】
【課題を解決するための手段】
本明細書で提供する分散サーバ回復手順(DSRP)は、サーバ・グループの構成のこの変更を可能にするために、現在定義されているサーバの過半数(クォーラム)が変更の進行のために使用可能であることだけを必要とする。たとえば、いくつかのサーバを、それがダウンしている間に構成解除(グループから排除)することができ、他のサーバを追加することができる。1つまたは複数のサーバが使用不能である間にサーバを追加または削除する処理を、本明細書ではプロセッサのクォーラム・グループの「動的再構成」と呼称する。やはり、分散サーバの回復のための従来の手順は、静的構成環境を必要とする。
【0008】
要約すると、本明細書では、一態様で、高可用性分散コンピューティング・システム内のプロセッサを再構成するクォーラム・ベースの方法を提供する。この方法は、プロセッサのクォーラム・グループ内のクォーラムの存在を識別するステップと、前記プロセッサのクォーラム・グループの少なくとも1つのプロセッサが使用不能である間に前記プロセッサのクォーラム・グループを動的に再構成するステップとを含み、前記動的再構成が、前記少なくとも1つのプロセッサの使用不能性にもかかわらず、前記プロセッサのクォーラム・グループの前記クォーラムのプロセッサの存在と共に進行する。
【0010】
言い直すと、本明細書で提供するのは、グループの1つまたは複数のプロセッサが使用不能であるにもかかわらず、プロセッサのクォーラム・グループを動的に再構成する再構成機能ならびに、1つまたは複数の以前には使用不能であったプロセッサが使用可能になった時にグループのプロセッサによって実施される回復手順である。1つまたは複数のプロセッサが使用不能である間にプロセッサのグループを動的に再構成できるようにすることによって、システム管理者は、1つまたは複数のプロセッサが使用不能になった場合であっても、クォーラム個のプロセッサが残っているならば、クリティカルなシステムが維持されることを保証できる。したがって、本明細書の記載の動的再構成機能および回復手順は、高可用性分散コンピューティング環境でのより高い柔軟性をもたらす。本明細書に記載の回復手順などのクォーラム・ベースの動作と共に使用するための、緩和されたクォーラムの計算も提示する。
【0011】
【発明の実施の形態】
本発明によって解決される問題は、データベース・サーバなどの分散高可用性処理システムの動的再構成および回復の問題である。そのようなシステムの高可用性特性によって、そのようなシステムは、サーバ・グループのいくつかの対等サブシステムが使用可能でない時でも、機能することができる。本明細書ではデータベース・サーバに関して一実施形態で説明するが、当業者は、本明細書に記載の概念が、複数の処理要素を有する分散処理システムのプロセッサのどのグループにも適用可能であることを理解するであろう。本発明の文脈では、プロセッサは、個々のプロセッサまたはソフトウェアで実施される処理インスタンスを含む処理要素を意味する。本明細書で論ずるデータベース・サーバは、プロセッサのグループの1例としてのみ提示される。
【0012】
本明細書で仮定されるシステムの高可用性特性のゆえに、いくつかのプロセッサが、分散データベースに対する更新を取り逃がす可能性があり、再び使用可能になった時に回復手順を受ける必要が生じる。通常、回復手順には、「インカーネーション番号」とも呼ばれる、データベースのバージョン番号の検査が含まれる。回復は、本発明によれば、サーバ・サブシステムの構成自体が変更されている、すなわち、そのシステムが、「動的再構成」を受けている可能性があるという事実によって複雑になる。本明細書で提示される分散サーバ回復手順(DSRP)は、そのような場合の回復の問題を解決し、したがって、この動的再構成の進行を可能にする。
【0013】
この開示の用語「構成」は、具体的には、分散システムのメンバのリストを指す。典型的な分散システムは、ネットワーク内に存在する使用可能なプロセッサのプールからプロセッサを選択し、それらを一緒にグループ化することによって構成される。通常、ネットワーク内のプロセッサの数は、所与の分散システム内の数よりはるかに多い。その1例が、同一のネットワーク内で相互接続される複数のコンピュータ(プロセッサ)を有する大学キャンパスである。ネットワーク内に存在するプロセッサのサブセットを、「分散システム」にグループ化することが望ましいことがしばしばである。分散システムは、さまざまな形で協力し、それらの間でタスクを分散することができる計算機の組として定義される。たとえば、ネットワークに100台のプロセッサがある場合、それらを一緒に組み合わせることによって、任意の数の分散システムを構成することができる。たとえば、それぞれ10プロセッサの10個のシステム、またはそれぞれ5プロセッサの20個のシステム、または他の組合せを作成することができる。この「構成」の重要な態様が、どのプロセッサが特定のグループの一部であるかのリストである。このリストによって、同一のグループに参加するメンバの組が定義され、この決定は、グループの他のメンバからの要求の受入れまたは拒絶を正しく行うために必要である。グループのメンバは、所与のどの時点でも、このリストが一貫性があることに合意しなければならない。すなわち、分散システムのすべてのノード(プロセッサ)が、このリストの正確に同一のコピーを有することが必要である。
【0014】
この開示で提示される特定の技術は、プロセッサのグループのメンバが、それが有するリストが正確であるかどうか、または、グループの別のメンバから更新されたリストを得る必要があるかどうかを検証できるようにする方法である。本発明は、生成されるリストのそれぞれに特定の「インカーネーション番号」を付加することによってこの目的を達成する。このインカーネーション番号は、プロセッサ・グループのメンバのリストに対する変更が、少なくとも現在のグループのメンバの「クォーラム(過半数)」に対して行われることを保証することによって維持される。リストの変更が発生するのは、分散システムのユーザが、グループにプロセッサを追加または削除することによって構成を変更する時である。リストが、メンバ・プロセッサの追加または削除によって変更される時には、インカーネーション番号が増分される。
【0015】
分散システムのユーザが、構成の変更を要求する時には、その変更は、次のように行うことができる。要求を受け取ったグループのメンバが、その要求のコピーを他のすべてのメンバに送り、それ自体の構成変更を行う。変更の動作には、リスト内で変更を行うことと、インカーネーション番号の更新が含まれる。その後、そのメンバは、グループの他のメンバの応答を待つ。クォーラム個のメンバが成功メッセージで応答する場合には、元の要求を受け取ったメンバは、構成変更を要求したユーザに肯定のコードを返す。そうでない場合には、エラーが返される(図10参照)。エラーが返された場合には、分散システムのユーザは、システムを再定義しなければならず(上で説明したように)、したがって、動的回復は不可能である。しかし、戻りコードが成功である場合には、再構成が成功したことが保証され、リストは、クォーラム個のノードで一貫性を有することが保証される。
【0016】
通常の分散システムは、構成の変更のすべてが、システム内のすべてのノードに対して行われることを必要とする。本発明は、変更をクォーラム個のノードだけに対して行うことを必要とすることによって、構成変更の要件を緩和する。これによって、メンバ・ノードが再構成動作のために使用可能でない場合であっても、分散システムの構成を変更することが可能になる。
【0017】
回復のシナリオでは、処理要素が、システムの最新の状態、たとえばデータベースの最新版を突きとめるために、インカーネーション番号を交換する。システム・データに対する変更(およびインカーネーション番号の増分)は、クォーラム個(過半数)のレジストリ・プロセッサが使用可能である時に限って許可され、従来のクォーラム・アルゴリズム(すなわち、静的グループ構成)は、単純なアルゴリズムである。従来は、過半数のサーバが使用可能であることと、最も高いインカーネーション番号を有するサーバが、データベースの最も最近に更新された版を有すると保証されることで十分である。しかし、このアルゴリズムは、クォーラム駆動回復に参加するグループが静的でなければならないという制約を有する。すなわち、サーバ・グループを定義した後には、メンバを動的に追加または削除することができない。やはり、動的とは、本明細書では、データベースが走行中であり、潜在的に使用不能なグループのメンバが1つまたは複数存在することを意味するように定義されている。従来の形で再構成変更を行う唯一の方法は、再定義動作を使用することであるが、これは、すべてのサーバの構成ファイルに対する変更を必要とし、したがって、再構成変更のためにすべてのサーバが使用可能であることを必要とする。
【0018】
高可用性コンピューティング・システムの場合、本出願人は、すべてのメンバが使用可能であることを必要とせずに、グループへのプロセッサの追加および削除を可能にすることが望ましいと考える。図1ないし5に、グループの1つまたは複数のメンバが使用不能である場合のクォーラム・グループへの変更を扱うことの困難さを説明するのに役立つ、全体的に符号10で示される分散処理システムのさまざまな状態を示す。図1では、分散処理システム10に、3つのサーバが含まれる。この図が、サーバ・グループの初期構成を表すと仮定する。このグループは、グループ・インカーネーションが1であり、サーバ1、サーバ2、およびサーバ3と名付けられた3つのサーバがグループに存在するように構成されたばかりである。このグループには3つのメンバが存在するので、グループ・クォーラムは、3の過半数の2である。
【0019】
本発明のDSRPによって解決される問題を示すために、サーバ1が使用不能になり、たとえば電源を切断されたと仮定する。残りの2つのサーバは、稼動状態のままであり、したがって、グループは、まだ変更を可能にするクォーラムを有する。さらに、管理者が、サーバ1がダウンしたことに気付き、将来の障害に対する保護のために新しいサーバを定義することを所望すると仮定する。管理者は、ここでは、サーバ4、サーバ5、およびサーバ6という番号の3つの追加のサーバを定義すると仮定する。サーバ1は、その時点で電源を切断されているので、その内部状態は変更されない。この分散システムの新しい状態を、図2に示す。グループ・インカーネーション2という符号を付けられたこの新しい状態では、各アクティブ・サーバすなわち、サーバ2、サーバ3、サーバ4、サーバ5、およびサーバ6のメンバ・リストに、サーバ1が含まれ、6台のサーバの過半数は4であるから、グループ・クォーラムは4になる。
【0020】
ここで、システム管理者が、サーバ1を定義解除することを決定したと仮定する。定義解除動作も、メンバシップ変更であり、したがって、グループ・インカーネーションが3に増分され、図3に示された状態がもたらされる。サーバ1を定義解除することによって、グループのクォーラムは3(5の過半数)になり、これによって、このシステムは、2つの障害に耐え、なおかつクォーラムを維持することが可能になる。図4および5を、サーバ・メンバがダウンしている時にDSRPが構成変更に対処するさまを示すために提示する。図4では、サーバ2およびサーバ3が使用不能になり、新しいサーバ7が定義されたと仮定する。その結果の状態を、図4に示す。
【0021】
図4からわかるように、グループ・クォーラムは、現在は4(6の過半数)である。この時点でグループ内の走行中のメンバは正確に4つであり、したがって、このグループはまだクォーラムを有する。次に、管理者が、メンバのサーバ2およびサーバ3を定義解除し、サーバの総数を4に減らしたと仮定する。この場合、グループ・クォーラムは3になる。このシステムは、やはりメンバの1つの障害に耐えることができる。結果の状態(グループ・インカーネーション5)を図5に示す。この最終状態の例は、下で説明するDSRPアルゴリズムの追跡の開始点である。
【0022】
図5の状態に到達するために行われた「動的」構成変更は、いくつかのサーバがダウンしている間に行われたので、このシステムの状態は矛盾している。ダウンしていたサーバが、ここで電源を投入されたと仮定する。図5から、サーバ1が最も古い状態を有することは明らかである。サーバ1のグループ・メンバシップには、グループの現在の数値が全く含まれないことに留意されたい。本明細書で提示するDSRPの目的は、サーバ1が、現在のグループのメンバを発見でき、したがって、それらの1つから最新の構成を読み取る(または受け取る)ことができるようにする探索手順を提供することである。この探索は、終了条件がTRUEと評価されるか、現在のグループのアクティブ・メンバから探索停止メッセージを受け取るまで行われなければならない。終了条件は、探索を行うサーバが、同一のインカーネーション番号に同意するクォーラム個のメンバを発見した時に、探索が完了したことを表す。図9に関して提示するように、探索終了条件は、いくつかの場合に緩和(クォーラム−1)することができる。
【0023】
動的再構成を可能にする回復手順によって解決される主要な課題は、古くなったサーバの回復手順である。サーバは、潜在的に、もはやサーバ・グループのメンバの正確なリストを有しなくなるほどの長期間にわたってダウンしていた可能性がある。複数のメンバが、もやはメンバとして定義されていない場合がありえる。また、問題のサーバが、使用不能になった後に他の稼動し続けているメンバによって定義解除されている場合もありえる。本明細書で提示する分散サーバ回復手順は、そのような古くなったサーバが、データベースの最新のコピーにアクセスでき、それ自体を更新できるようにする分散通信プロトコルである。
【0024】
DSRPアルゴリズムは、サーバ・グループの状態の持続記憶に基づく。この状態は、インカーネーション番号と、このインカーネーション番号「に投票した」すなわち、それを増分するコミット処理に参加したメンバのリストからなる。DSRPアルゴリズムを、具体的な例を用いて下で説明する。図5に示された例では、回復の前のサーバ・グループの状態のスナップショットが示されている。この状態は、すべてのメンバで一貫しているわけではない。というのは、メンバの一部(小さいインカーネーション番号を持つメンバ)が、更新を失ってきたからである。
【0025】
ここで、データベースの最新のコピーをとり出すためにDSRPアルゴリズムによって行われるステップを追跡することができる。上のシナリオでは、サーバ1がもはやデータベース・サーバでなくなっているが、サーバ1は、データへのアクセスに必要な他のクリティカルなアプリケーションをホストする可能性があることに留意されたい。ここで追跡するステップは、サーバ1から始まる、図6ないし9に示された本発明のDSRPアルゴリズムの実施形態に従うものである。しかし、全体的な障害の場合(たとえば、上のシナリオでクラスタがリブートされた場合)には、DSRPアルゴリズムは、現在の状態からそれがサーバであることが示される(この情報が古いものである可能性はあるが)すべてのノードで走行することに留意されたい。
【0026】
サーバ1から始まるステップは、次の通りである。1)サーバ1が、その持続状態を読み取る。その後、サーバ1は、現行サーバ・メンバ・リストの対等サーバに連絡し、インカーネーション番号を取り出そうとする。サーバ1は、サーバ2がより大きいインカーネーション番号(3)を有することに気付き、したがって、サーバ1のサーバ・メンバ・リストが古いことを知る。その後、サーバ1は、サーバ2からサーバ・リストを取り出し、新しい探索にそれを使用する。2)前のステップで取り出したリストを使用して、サーバ1は、新しいリストのメンバに関して同一のプロトコルを実行する。サーバ1は、サーバ3に連絡することから始める。サーバ1は、サーバ3がサーバ2と同一のインカーネーション番号(3)を有することに気付く。この時点で、サーバ1は、同一のインカーネーションを有する2つのサーバ(サーバ2およびサーバ3の両方がインカーネーション3である)について知る。しかし、インカーネーション3に関連するクォーラムは3であるから、サーバ1は、探索を終了するためにはこのレベルのサーバをもう1つ見つける必要がある。3)サーバ1は、今度はサーバ4に連絡し、その状態を取り出す。サーバ1は、悪いニュースを知る。すなわち、サーバ4は、より高いインカーネーション番号(5)であり、したがって、サーバ1は、サーバ2およびサーバ3も古いことを知る。サーバ1は、サーバ4から取り出した状態を使用して探索を継続する。4)サーバ1は、ここで、新たに取り出したメンバ・リスト内の次の未訪問のサーバ(サーバ5)に連絡する。サーバ1は、サーバ5もインカーネーション5であることに気付く。この時点で、サーバ1は、2つのサーバがインカーネーション5であることを知っているが、インカーネーション5に関連するクォーラムは3(4の過半数)であり、したがって、サーバ1はもう1つの確認を必要とする。
【0027】
一実施形態では、本明細書で提示されるDSRPアルゴリズムによって、いくつかの場合にクォーラム要件の緩和が可能になる。この場合、たとえば、サーバ1は、同一のインカーネーションを有し、4個のグループの一部である2つのサーバ(サーバ4およびサーバ5)を知っている。この知識は、探索を終了するのに十分である。というのは、残りの2つのメンバ(サーバ6およびサーバ7)が、データベースでの変更には厳密なクォーラム(4の過半数すなわち3)が必要なので、より高いインカーネーション番号を有することができないからである。したがって、サーバ6およびサーバ7が、グループ内の少なくとも1つの他のサーバ(サーバ4またはサーバ5)の参加なしで構成変更を行うことは不可能であったはずである。サーバ4およびサーバ5の状態が既知なので、サーバ1は、データベースの最新のインカーネーションが5であると仮定しても安全であり、探索を終了する。サーバ1のクライアント・アプリケーションは、サーバ4またはサーバ5のいずれかからの最も最近に更新されたデータベースのコピーにアクセスすることができる。
【0028】
図6ないし9に、本発明の原理に従って実施される動的サーバ回復手順(DSRP)アルゴリズムの流れ図実施形態を示す。具体的に言うと、図6は、各サーバが対等サブシステム(すなわち、プロセッサのクォーラム・グループ内の他のプロセッサ)からのメッセージを継続的に聴取する、動的サーバ回復手順を示す図である。プロセッサは、その状態を更新する時に、受け取るメッセージのそれぞれについて図7および8のprocess_message_procedure(メッセージ処理プロシージャ)を実行する。process_message_procedureは、クォーラム番号変数とインカーネーション変数を、探索を終了させるのに適当な状態に設定し、サーバのクォーラムに関する探索に使用される現行プロセッサ・リストも変更する。各反復の終りに、プロセッサは、現行探索リストの対等サブシステムに、最新のインカーネーション番号と現行探索リスト自体を送る。図9は、本発明の原理に従って「緩和された」クォーラム数を判定する処理の一実施形態を示す図である。
【0029】
図6からわかるように、DSRP処理は、プロセッサのクォーラム・グループ内のプロセッサの始動または再始動(100)から開始される。my_incarnation(インカーネーション)およびcurrent_search_list(現行探索リスト)を含む変数を初期設定する(110)。その後、クォーラムが達成されたかどうかに関する質問を行う(120)。そうでない場合には、この手順(サーバのグループの再始動されたサーバのそれぞれで実施される)は、メッセージを別のグループ・メンバから受け取ったかどうかを判定する(130)。そうでない場合には、そのサーバは、その現行サーバ・リストおよびインカーネーション番号を含むメッセージを、グループ内の他のサーバのそれぞれに送る(140)。その後、処理は、クォーラムが達成されたかどうかの質問(120)に戻る。
【0030】
メッセージがそのサーバで受け取られている場合には、サーバは、下で説明する、図7および8のprocess_message_procedureを実行する(150)。process_message_procedureルーチンは、TRUEまたはFALSEのいずれかの値を返す。したがって、DSRPは、process_message_procedureがTRUEの値を返したかどうかを判定する(160)。そうでない場合には、動的サーバ回復手順が続行し(170)、ループ・バックして、サーバに、その現行探索リストの対等サブシステムのそれぞれに、その現行サーバ・リストとインカーネーション番号を送らせる(140)。process_message_returnの値がTRUEである場合には、この処理は、サーバの現行探索リストのすべての対等サブシステムにStopSearch(探索停止)メッセージを送り(180)、これによって処理を完了する(190)。
【0031】
動的サーバ回復手順の始めに戻って、クォーラムが存在する(たとえば、プロセッサのクォーラム・グループの1つまたは複数のアクティブ・メンバから探索停止メッセージを受け取った)場合(120)、回復手順は完了する(190)。
【0032】
図7および図8のprocess_message_procedureは、以下のフィールドを含むメッセージ・データ型を使用する。
主IPアドレス:送出元の連絡アドレス
バックアップIPアドレス:第1のアドレスの障害時に使用するバックアップ連絡アドレス
incarnation:送出元が発見した最新のインカーネーション番号
server_list:送出元が発見した最新の探索リスト
【0033】
メッセージのフィールドは、流れ図では、「.」演算子を使用して示される。たとえば、msg.incarnationは、メッセージのincarnationフィールドを指す。
【0034】
process_message_procedureでは、サーバが受け取った、最も高いインカーネーションを有するメッセージのカウントが保存される。このルーチンは、このカウントを「緩和された」クォーラム要件と比較するが、「緩和された」クォーラム要件は、一実施形態では図9のcalculate_quorumプロシージャから計算される。図7および8のプロシージャは、クォーラム要件が達成されたと判定した時に、DSRPタスクを終了するのに適当な値をセットする。そうでない場合には、このルーチンは、カウンタおよび探索リストを更新し、探索を続ける。
【0035】
図7および8を参照すると、本発明の原理によるprocess_message_procedureの一実施形態は、受け取ったメッセージを読み取ることによって開始され(200)、その後、メッセージのstop_search(探索停止)フィールドがTRUEであるかどうかを判定する(210)。そうである場合には、メッセージの送出元に連絡して、たとえば送出元のデータベースのコピーを用いて、データベースを更新し、送出元のインカーネーション番号を用いてインカーネーション番号を更新する(220)。その後、TRUEのprocess_message_return値を、図6の動的サーバ回復手順に返す(230)。
【0036】
メッセージのstop_searchフィールドが真でないと仮定すると、このプロシージャは、msg.incarnationをmy_incarnationと比較する(240)。この比較は、3つの可能な結果を有する。第1に、msg.incarnationとmy_incarnationが等しい場合(250)、counter(カウンタ)の値を増分し、クォーラム数を計算する(260)。「緩和された」クォーラム数を計算するための実施形態の1つを、図9に示す(下で説明する)。クォーラムを決定した後に、counterの値がクォーラム値以上であるかどうかを判定する(270)。そうである場合には、動的サーバ回復プロセスにTRUEの値を返す(280)。そうでない場合には、FALSEの値を返し(290)、処理が完了する。
【0037】
メッセージ・ヘッダのインカーネーション値(msg.incarnation)が、サーバのインカーネーション値より大きい場合(310)、サーバの現行探索リストを、メッセージと共に受け取った探索リストに置換し、counterに1をセットし、サーバのインカーネーション値を、メッセージと共に受け取ったインカーネーション番号を用いて更新する(320)。その後、counter値がクォーラム数以上であるかどうかを問合せ(270)、上で説明したように処理が進行する。受け取ったインカーネーション番号がサーバのインカーネーション番号未満の場合(330)、メッセージ送出元をサーバのインアクティブ・サーバ・リストに追加し、メッセージ送出元をアクティブ・サーバ・リストから削除し、たとえば図9のプロシージャを使用して、クォーラムの値を計算する(240)。クォーラム数を計算した後に、処理がリターンして、counter値がクォーラム数より大きいかどうかを判定し(270)、上で説明したように進行する。
【0038】
過半数を使用することの代替案として、クォーラムを、図9に示されているように計算することができる。このプロシージャでは、現在の探索リストでクォーラムを達成するのに十分な応答を受け取ったかどうかを判定するために必要な、応答の最少数を計算する。集合Sには、現行探索リストで定義されているすべてのレジストリ・サーバが含まれる。集合Iには、より低いインカーネーション番号を応答し、したがって、探索から排除されるサーバが含まれる。集合Nは、S−Iとして定義され、Sに関するIの補集合である。これは、応答が受け取られなかったメンバまたは現行のインカーネーション番号を応答したメンバを識別する集合である。条件{S−I>q}がTRUEの場合、クォーラム要件から1を減算することが可能であり、クォーラム要件は、集合Nの過半数として与えられる。演算子maj<>は、オペランドを2で割り、小数部を捨て、結果に1を足すことによって計算される。
【0039】
図9を参照すると、「緩和された」クォーラムを計算するためのプロシージャの1つは、変数S、I、N、およびqをセットすること(410)によって開始される(400)(やはり、本明細書で使用される変数Sは、クォーラム・グループ内で定義されているサーバの数を表し、Iは、グループ内のインアクティブ・サーバの数を表し、Nは、グループ内のアクティブ・サーバの数を表し、qは、定義されているサーバの数の過半数である)。その後、定義されているサーバの数からインアクティブ・サーバの数を引き、1を引いた値が、定義されているサーバの数の過半数であるかどうかを判定する(420)。そうである場合には、変数「U」に1をセットし(430)、そうでない場合には、この値に0をセットする(440)。process_message_procedureに返されるクォーラム数Qは、アクティブ・サーバの数の過半数から変数Uを引いた値に等しい。当業者は、上に要約したクォーラム計算を、他のクォーラム・ベースのシステム計算と組み合わせて使用することができることを理解するであろう。さらに、本明細書で提示する動的サーバ回復手順は、図9の「緩和された」過半数ではなく、従来のクォーラム「過半」数を使用することができる。
【0042】
本明細書で示した流れ図は、例として提供される。これらの図面または本明細書に記載のステップ(または動作)に対する、本発明の主旨から逸脱しない変形形態がありえる。たとえば、いくつかの場合に、ステップを異なる順序で実行することができ、ステップを追加、削除または変更することができる。これらの変形形態のすべてが、請求項に記載の本発明の一部を構成するとみなされる。
【図面の簡単な説明】
【図1】3サーバ・システムのグループ・クォーラムが2であることを示す、最初の状態(本明細書ではインカーネーション1と呼称する)の3サーバ分散処理システムを示す図である。
【図2】サーバ2およびサーバ3と、新しいサーバ4、サーバ5およびサーバ6を含み、サーバ1が使用不能である、新しいグループ・インカーネーション2の、図1の分散処理システムを示す図である。
【図3】サーバ1がクォーラム計算のために定義解除され、これによって新しいグループ・クォーラムが3になる、新しいグループ・インカーネーション3の、図2の分散処理システムを示す図である。
【図4】サーバ2およびサーバ3が使用不能になり、新しいサーバ7がシステムに追加された、新しいグループ・インカーネーション4の、図3の分散処理システムを示す図である。
【図5】サーバ2およびサーバ3が定義解除され、グループ・クォーラムが3に改訂された、新しいグループ・インカーネーション5の、図4の分散処理システムを示す図である。
【図6】本発明の原理による、動的サーバ回復手順の一実施形態の流れ図である。
【図7】本発明の原理による、process_message_procedureの一実施形態の流れ図である。
【図8】本発明の原理による、process_message_procedureの一実施形態の流れ図である。
【図9】本発明の原理による、クォーラムを計算する手順の一実施形態の流れ図である。
【図10】本発明の原理による、プロセッサのグループの構成を変更する手順の一実施形態の流れ図である。
【符号の説明】
10 分散処理システム
Claims (4)
- ネットワークを介して相互接続される使用可能なプロセッサのプールから、所定のタスクを分散処理するためのプロセッサのグループを構成する少なくとも3つのプロセッサが前記グループの初期構成時点に選択され、前記初期構成時点に選択されるプロセッサおよび前記初期構成時点の後に前記プールから前記グループに追加されるプロセッサの各々には、当該各プロセッサが使用可能な時点における前記グループ内のプロセッサを識別するためのメンバ・リストと、前記プールからの前記グループへのプロセッサの追加または前記グループからのプロセッサの削除が行われるごとに一意に更新されるインカーネーション番号とがそれぞれ持続的に格納され、前記メンバ・リストおよび前記インカーネーション番号の組み合わせによって前記グループの現在の構成状態が表されるようにした分散コンピューティング・システム内のプロセッサを再構成する、クォーラム・ベースの方法であって、
(a1)前記初期構成時点の後に、前記分散コンピューティング・システムのユーザが前記グループの構成の変更を要求する場合は、当該要求を受け取った前記グループ内の特定のプロセッサが、当該要求のコピーを自己のメンバ・リストによって識別される前記グループ内の他のすべてのプロセッサに送るステップと、
(a2)前記グループ内の各プロセッサが、前記要求に基づいて、自己のメンバ・リストおよび自己のインカーネーション番号をそれぞれ更新するステップと、
(a3)前記グループ内の前記特定のプロセッサが、前記グループ内の他のすべてのプロセッサからそれぞれのメンバ・リストおよびインカーネーション番号の更新が成功したことを表す成功メッセージを待ち、受け取った当該成功メッセージに基づいて、自己のメンバ・リストによって識別される前記グループ内のプロセッサのうち過半数以上のプロセッサがそれぞれのメンバ・リストおよびインカーネーション番号の更新に成功したと判定する場合は、前記ユーザに肯定のコードを返すステップとを含み、
前記グループ内の少なくとも1つのプロセッサが使用不能である間に、前記グループを動的に再構成するようにしたことを特徴とする方法。 - 前記少なくとも1つのプロセッサが使用可能になった後に回復処理を実行するステップをさらに含み、
前記回復処理が、
(b1)前記使用可能になった少なくとも1つのプロセッサにおいて、自己のメンバ・リストおよび自己のインカーネーション番号を読み取るとともに、自己のメンバ・リストによって識別される前記グループ内の少なくとも1つの他のプロセッサへ、そのメンバ・リストおよびインカーネーション番号を要求する探索要求メッセージを送るステップと、
(b2)前記使用可能になった少なくとも1つのプロセッサにおいて、前記少なくとも1つの他のプロセッサから受け取ったインカーネーション番号を自己のインカーネーション番号と比較し、前記少なくとも1つの他のプロセッサからのインカーネーション番号が自己のインカーネーション番号よりも大きいと判定する場合は、自己のメンバ・リストおよび自己のインカーネーション番号を前記少なくとも1つの他のプロセッサから受け取ったメンバ・リストおよびインカーネーション番号を用いてそれぞれ更新し、前記使用可能になった少なくとも1つのプロセッサが前記少なくとも1つの他のプロセッサから受け取った最も高いインカーネーション番号の個数を計数するカウントを初期設定するとともに、自己の現行メンバ・リストを用いて前記ステップ(b1)を実施するステップと、
(b3)前記使用可能になった少なくとも1つのプロセッサにおいて、前記少なくとも1つの他のプロセッサからのインカーネーション番号が自己のインカーネーション番号と等しいと判定する場合は、前記カウントを増分するとともに、当該増分済みのカウントが自己の現行メンバ・リストによって識別される前記グループ内のプロセッサの数の過半数以上でなければ、自己の現行メンバ・リストを用いて前記ステップ(b1)を実施するステップと、
(b4)前記使用可能になった少なくとも1つのプロセッサにおいて、前記カウントが自己の現行メンバ・リストによって識別される前記グループ内のプロセッサの数の過半数以上であると判定する場合は、自己の現行メンバ・リストによって識別される前記グループ内のすべての他のプロセッサへ探索停止メッセージを送るステップを含む、請求項1に記載の方法。 - 前記動的再構成が、前記プールからの前記グループへのプロセッサの追加または前記グループからのプロセッサの削除のいずれかを含む、請求項1に記載の方法。
- 前記分散コンピューティング・システムが、非共用分散コンピューティング・システムである、請求項1に記載の方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/387666 | 1999-08-31 | ||
US09/387,666 US6490693B1 (en) | 1999-08-31 | 1999-08-31 | Dynamic reconfiguration of a quorum group of processors in a distributed computing system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001109726A JP2001109726A (ja) | 2001-04-20 |
JP3706531B2 true JP3706531B2 (ja) | 2005-10-12 |
Family
ID=23530876
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000257264A Expired - Fee Related JP3706531B2 (ja) | 1999-08-31 | 2000-08-28 | 分散コンピュータ・システム内のプロセッサを再構成する方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US6490693B1 (ja) |
JP (1) | JP3706531B2 (ja) |
KR (1) | KR100387700B1 (ja) |
Families Citing this family (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6694455B1 (en) * | 2000-06-16 | 2004-02-17 | Ciena Corporation | Communications network and method performing distributed processing of fault and alarm objects |
US6816461B1 (en) * | 2000-06-16 | 2004-11-09 | Ciena Corporation | Method of controlling a network element to aggregate alarms and faults of a communications network |
US7289429B2 (en) * | 2001-06-01 | 2007-10-30 | Fujitsu Network Communications, Inc. | System and method to perform non-service effecting bandwidth reservation using a reservation signaling protocol |
US6904448B2 (en) * | 2001-12-20 | 2005-06-07 | International Business Machines Corporation | Dynamic quorum adjustment |
US6990608B2 (en) * | 2002-04-25 | 2006-01-24 | Hewlett-Packard Development Company, L.P. | Method for handling node failures and reloads in a fault tolerant clustered database supporting transaction registration and fault-in logic |
US7363347B2 (en) * | 2002-11-07 | 2008-04-22 | Hewlett-Packard Development Company, L.P. | Method and system for reestablishing connection information on a switch connected to plural servers in a computer network |
US8051176B2 (en) | 2002-11-07 | 2011-11-01 | Hewlett-Packard Development Company, L.P. | Method and system for predicting connections in a computer network |
US8285825B1 (en) | 2002-11-13 | 2012-10-09 | Novell, Inc. | Method and system for managing network resources based on a dynamic quorum |
US7120821B1 (en) * | 2003-07-24 | 2006-10-10 | Unisys Corporation | Method to revive and reconstitute majority node set clusters |
US7366109B2 (en) * | 2003-10-29 | 2008-04-29 | Nortel Networks Limited | Virtual private networks within a packet network having a mesh topology |
JP3808874B2 (ja) * | 2004-03-12 | 2006-08-16 | 東芝ソリューション株式会社 | 分散システム及び多重化制御方法 |
US7856502B2 (en) * | 2004-06-18 | 2010-12-21 | Microsoft Corporation | Cheap paxos |
US7334154B2 (en) * | 2004-06-18 | 2008-02-19 | Microsoft Corporation | Efficient changing of replica sets in distributed fault-tolerant computing system |
US20060080574A1 (en) * | 2004-10-08 | 2006-04-13 | Yasushi Saito | Redundant data storage reconfiguration |
JP4505763B2 (ja) * | 2007-01-31 | 2010-07-21 | ヒューレット−パッカード デベロップメント カンパニー エル.ピー. | ノードクラスタの管理 |
US8443062B2 (en) * | 2008-10-23 | 2013-05-14 | Microsoft Corporation | Quorum based transactionally consistent membership management in distributed storage systems |
US20100114826A1 (en) * | 2008-10-24 | 2010-05-06 | Microsoft Corporation | Configuration management in distributed data systems |
US8370493B2 (en) | 2008-12-12 | 2013-02-05 | Amazon Technologies, Inc. | Saving program execution state |
US8819106B1 (en) | 2008-12-12 | 2014-08-26 | Amazon Technologies, Inc. | Managing distributed execution of programs |
US8321558B1 (en) | 2009-03-31 | 2012-11-27 | Amazon Technologies, Inc. | Dynamically monitoring and modifying distributed execution of programs |
US8296419B1 (en) | 2009-03-31 | 2012-10-23 | Amazon Technologies, Inc. | Dynamically modifying a cluster of computing nodes used for distributed execution of a program |
US9135268B2 (en) * | 2009-12-30 | 2015-09-15 | Symantec Corporation | Locating the latest version of replicated data files |
US8103905B2 (en) * | 2010-03-12 | 2012-01-24 | Microsoft Corporation | Detecting and recovering from process failures |
US8443231B2 (en) * | 2010-04-12 | 2013-05-14 | Symantec Corporation | Updating a list of quorum disks |
US8326801B2 (en) | 2010-11-17 | 2012-12-04 | Microsoft Corporation | Increasing database availability during fault recovery |
JP6459702B2 (ja) * | 2015-03-26 | 2019-01-30 | 日本電気株式会社 | データベースシステム、情報記憶方法、プログラム |
US10481963B1 (en) * | 2016-06-29 | 2019-11-19 | Amazon Technologies, Inc. | Load-balancing for achieving transaction fault tolerance |
CN112202746B (zh) * | 2020-09-24 | 2023-04-21 | 北京百度网讯科技有限公司 | Rpc成员信息获取方法、装置、电子设备和存储介质 |
WO2023148976A1 (ja) * | 2022-02-07 | 2023-08-10 | 株式会社Pfu | ノード装置、クラスタ再構成方法、プログラム及びクラスタシステム |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5261085A (en) | 1989-06-23 | 1993-11-09 | Digital Equipment Corporation | Fault-tolerant system and method for implementing a distributed state machine |
CA2048306A1 (en) | 1990-10-02 | 1992-04-03 | Steven P. Miller | Distributed configuration profile for computing system |
US5339404A (en) | 1991-05-28 | 1994-08-16 | International Business Machines Corporation | Asynchronous TMR processing system |
US5668986A (en) | 1991-10-02 | 1997-09-16 | International Business Machines Corporation | Method and apparatus for handling data storage requests in a distributed data base environment |
JP3649345B2 (ja) | 1994-05-26 | 2005-05-18 | 富士ゼロックス株式会社 | 情報処理システム |
US5659682A (en) | 1994-06-16 | 1997-08-19 | International Business Machines Corporation | Scheme to determine completion of directory operations for server recovery |
US5608865A (en) | 1995-03-14 | 1997-03-04 | Network Integrity, Inc. | Stand-in Computer file server providing fast recovery from computer file server failures |
US5604862A (en) | 1995-03-14 | 1997-02-18 | Network Integrity, Inc. | Continuously-snapshotted protection of computer files |
US5675723A (en) | 1995-05-19 | 1997-10-07 | Compaq Computer Corporation | Multi-server fault tolerance using in-band signalling |
US5696895A (en) | 1995-05-19 | 1997-12-09 | Compaq Computer Corporation | Fault tolerant multiple network servers |
US5682470A (en) | 1995-09-01 | 1997-10-28 | International Business Machines Corporation | Method and system for achieving collective consistency in detecting failures in a distributed computing system |
JP3174252B2 (ja) * | 1995-10-13 | 2001-06-11 | キヤノン株式会社 | インクタンクおよびその製造方法 |
US5787250A (en) * | 1996-04-30 | 1998-07-28 | International Business Machines Corporation | Program product for managing membership of a group of processors in a distributed computing environment |
US5787249A (en) * | 1996-04-30 | 1998-07-28 | International Business Machines Coporation | Method for managing membership of a group of processors in a distributed computing environment |
US5896503A (en) * | 1996-07-23 | 1999-04-20 | International Business Machines Corporation | Managing membership of a domain of processors in a distributed computing environment |
US6002851A (en) * | 1997-01-28 | 1999-12-14 | Tandem Computers Incorporated | Method and apparatus for node pruning a multi-processor system for maximal, full connection during recovery |
US6108699A (en) * | 1997-06-27 | 2000-08-22 | Sun Microsystems, Inc. | System and method for modifying membership in a clustered distributed computer system and updating system configuration |
US5999712A (en) * | 1997-10-21 | 1999-12-07 | Sun Microsystems, Inc. | Determining cluster membership in a distributed computer system |
US6647508B2 (en) * | 1997-11-04 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Multiprocessor computer architecture with multiple operating system instances and software controlled resource allocation |
US6202067B1 (en) * | 1998-04-07 | 2001-03-13 | Lucent Technologies, Inc. | Method and apparatus for correct and complete transactions in a fault tolerant distributed database system |
US6163855A (en) * | 1998-04-17 | 2000-12-19 | Microsoft Corporation | Method and system for replicated and consistent modifications in a server cluster |
US6243744B1 (en) * | 1998-05-26 | 2001-06-05 | Compaq Computer Corporation | Computer network cluster generation indicator |
-
1999
- 1999-08-31 US US09/387,666 patent/US6490693B1/en not_active Expired - Lifetime
-
2000
- 2000-08-21 KR KR10-2000-0048267A patent/KR100387700B1/ko not_active IP Right Cessation
- 2000-08-28 JP JP2000257264A patent/JP3706531B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001109726A (ja) | 2001-04-20 |
KR100387700B1 (ko) | 2003-06-18 |
KR20010050140A (ko) | 2001-06-15 |
US6490693B1 (en) | 2002-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3706531B2 (ja) | 分散コンピュータ・システム内のプロセッサを再構成する方法 | |
KR100387701B1 (ko) | 정족수 기반의 동작을 위한 완화된 정족수 계산 | |
US6487678B1 (en) | Recovery procedure for a dynamically reconfigured quorum group of processors in a distributed computing system | |
US11265216B2 (en) | Communicating state information in distributed operating systems | |
US11924044B2 (en) | Organizing execution of distributed operating systems for network devices | |
CN108234302B (zh) | 保持网络装置用的分布式操作系统中的一致性 | |
JP4307673B2 (ja) | マルチクラスタ化コンピュータ・システムを構成及び管理する方法及び装置 | |
US6847993B1 (en) | Method, system and program products for managing cluster configurations | |
KR100450727B1 (ko) | 클러스터 자동 구성 방법 및 시스템과 컴퓨터 판독가능한 기록 매체 | |
US6925490B1 (en) | Method, system and program products for controlling system traffic of a clustered computing environment | |
US7103664B1 (en) | Method, system and program products for ordering lists of service addresses to provide load balancing of a clustered environment | |
US7185076B1 (en) | Method, system and program products for managing a clustered computing environment | |
US7231461B2 (en) | Synchronization of group state data when rejoining a member to a primary-backup group in a clustered computer system | |
US6973473B1 (en) | Method, system and program products for managing identifiers of components of a clustered environment | |
US7130897B2 (en) | Dynamic cluster versioning for a group | |
KR100423225B1 (ko) | 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜 | |
EP1122649A1 (en) | Method and apparatus for dynamically altering configurations of clustered computer systems | |
EP2434729A2 (en) | Method for providing access to data items from a distributed storage system | |
Aguilera et al. | Reconfiguring replicated atomic storage: A tutorial | |
US8316110B1 (en) | System and method for clustering standalone server applications and extending cluster functionality | |
US20190258646A1 (en) | Distributed transactions across multiple consensus groups | |
US7240088B2 (en) | Node self-start in a decentralized cluster | |
US6526432B1 (en) | Relaxed quorum determination for a quorum based operation of a distributed computing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040803 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041004 |
|
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: 20050726 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050729 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080805 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090805 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100805 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110805 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120805 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |