Sun Cluster 2.2 ソフトウェアのインストール

CCD 定足数

クラスタ構成データベース (CCD) は、有効で整合性のとられた CCD コピーを選出するにあたって定足数を得る必要があります。CCD の概要については、「クラスタ構成データベース」を参照してください。

Sun Cluster には、どのような構成でも、クラスタの各ノードから実際の記憶装置に直接アクセスすることを保証する記憶装置のトポロジはありません。そうすることによって、1 つの論理ボリュームを使用して CCD データベースが格納される可能性を排除し、クラスタフレームワークの再起動を終えるまで正しく更新が伝達されるようにしています。CCD は、クラスタインターコネクト経由でそのピア (代理) と通信します。クラスタのメンバーではないノードから、この論理リンクを利用することはできません。次に、簡単な例を使用して、CCD 定足数に求められる条件を説明します。

A、B、C の 3 つのノードで構成されるクラスタがあると仮定します。ノード A がクラスタから切り離され、クラスタのメンバーとして B と C が残ります。CCD が更新され、その更新がノード B と C に伝達されます。その後、ノード B と C がクラスタから切り離され、ノード A が再起動されたとします。しかし、前回クラスタから切り離された後でノード B と C 上で発生した更新を知る手段はないので、ノード A には、CCD データベースの最新コピーは存在しません。実際、どのノードが先に起動された場合でも、CCD データベースの最新コピーがどのノードに存在するのかを、明確な方法で判断することは不可能です。CCD データベースの最新コピーを確定するために必要な情報が得られるのは、3 つのノードがすべて再起動されたときだけです。 有効な CCD を選出できなかった場合、CCD に対する照会あるいは更新操作はすべて不正な CCD エラーとなって失敗します。実際問題として、有効な CCD コピーを確定する前にクラスタのすべてのノードを起動するというのは、条件として厳しすぎます。

この条件は、更新操作に制限を設けることによって緩めることができます。クラスタにおいて現在構成済みのノード数を N とすると、更新を伝達するには、少なくとも floor (n/2) + 1 [floor(n) = (n modulo 1 = 0) の場合 n、(n modulo 1 != 0) の場合 n - (n modulo 1)] で表される数のノードが動作している必要があります。クラスタの再起動時に有効なデータベースを選出するには、同じ内容のコピーが ceiling (n/2) [ceiling(n) = (n modulo 1 = 0) の場合 n、(n modulo 1 != 0) の場合 n + 1 - (n modulo 1)] 個存在していれば十分です。その場合、有効な CCD が存在していないすべてのクラスタノードに有効な CCD が伝達されます。

CCD が無効であっても、ノードのクラスタへの結合は許可されることに注意してください。ただし、この状態で、CCD を更新したり、CCD に照会を行ったりすることはできません。このことは、クラスタフレームワークの、CCD に依存する全コンポーネントが機能不全の状態に留まることを意味します。具体的には、論理ホストをマスターしたり、データサービスを起動したりできなくなります。CCD を使用できるようになるのは、定足数に達するために必要な数のノードがクラスタに結合した後だけです。これに代わる方法として、管理者が最高の CCD 生成番号を持つ CCD データベースを回復することもできます。

CCD 定足数の問題は、再構成中に少なくとも 1 つのノードを動作したままにしておくことによって回避できます。この場合は、いずれかのノード上の有効なコピーが新たに結合するノードに伝達されます。また、最新の CCD コピーを持つノードからクラスタが起動されるようにするという方法もあります。それでも、データベースの更新中にシステムがクラッシュした後で、回復アルゴリズムが CCD コピー間の不整合を検出する可能性はかなりあります。そうした場合は、管理者が ccdadm(1M) の復元オプションを使用してデータベースを復元する必要があります。CCD にはまた、データベースの現在の内容のバックアップを可能にするチェックポイント機能もあります。システム構成に変更を加えた場合は、CCD データベースのバックアップコピーを作成してください。バックアップコピーを作成しておくことによって、後でデータベースを復元することができます。従来のリレーショナルデータベースに比べて CCD データベースのサイズはかなり小さく、バックアップおよび復元操作は、ほんのわずかな時間で完了します。

2 ノードのクラスタの CCD 定足数

2 ノードのクラスタの場合、前述の定足数過半数の規則で更新が正しく行われるには、両方のノードがクラスタのメンバーである必要があり、この条件は厳しすぎます。また、この構成で一方のノードだけ動作しているときに更新を許可した場合は、クラスタを再起動する前にデータベースを手動で整合させる必要があります。この整合は、最新のコピーを持つノードを先に再起動するか、両方のノードが結合した後に ccdadm(1M) の復元操作でデータベースを復元することによって行うことができます。後者の場合、両方のノードがクラスタに結合できるとしても、復元操作が完了するまで CCD は無効な状態に置かれます。

この問題は、共有ディスクデバイスにデータベース用の恒久的な記憶装置を設定することによって解決します。共有コピーが使用されるのは、1 つのノードがアクティブなときだけです。2 つ目のノードが結合すると、共有 CCD コピーの内容がそれぞれのノードのローカルコピーにコピーされます。

ノードの 1 つがクラスタから切り離されると、ローカル CCD の内容を共有コピーにコピーすることによって再び共有コピーがアクティブになります。これにより、1 つのノードがクラスタに存在するときにだけ更新が可能になり、クラスタの再起動にまたがって信頼性の高い更新の伝達が行われるようになります。

CCD の共有コピー用に共有記憶装置を利用することの欠点は、この目的のためにだけ 2 つのディスクを確保する必要があることです。ボリュームマネージャは、これらのディスクが別の目的に使用されないようにします。2 つのディスクの利用は、上記の手続き上の制限によって生じるアプリケーションの停止時間を了解し、実際の環境で許される場合は、回避できます。

Sun Cluster 2.2 の CMM 定足数の問題と同様に、共有 CCD は、あらゆる Sun Cluster 構成でサポートされるわけではありません。ボリュームマネージャが Solstice DiskSuite の場合、共有 CCD はサポートされません。共有 CCD が使用されるのはノードの 1 つがアクティブなときだけであるため、共有 CCD によって障害に対処するのは一般的ではありません。