クラスタメンバーシップモニター (CMM) はエージェントの分散型セットであり、クラスタメンバーごとに 1 つずつ用意されています。これらのエージェントは、クラスタインターコネクトを介してメッセージを交換して、次の処理を行います。
すべてのノード (定足数) で一貫したメンバーシップの表示を行います。
メンバーシップの変更に応じて、登録されたコールバックを使用して同期化された再構成を行います。
クラスタパーティション分割を処理します (split-brain と amnesia)。
すべてのクラスタメンバー間での完全な接続を保証します。
Sun Cluster ソフトウェアの以前のリリースとは異なり、CMM は完全にカーネルで実行されます。
CMM の主な機能は、特定の時刻にクラスタに属するノードの集合に対して、クラスタ全体の同意を確立することです。この制約をクラスタメンバーシップと呼びます。
クラスタメンバーシップを決定して、最終的にデータの完全性を保証するために、CMM は次のことを行います。
クラスタへのノードの結合、またはクラスタからのノードの切り離しなど、クラスタメンバーシップの変更を考慮します。
障害のあるノードがクラスタから切り離されるように保証します。
障害のあるノードが、修復されるまでクラスタの外部におかれるように保証します。
クラスタそのものがノードのサブセットに分割されないように防止します。
クラスタが複数の独立したクラスタに分割されないように防止する方法については、定足数と定足数デバイスを参照してください。
データが破壊から保護されるように保証するには、すべてのノードが、クラスタメンバーシップに対して一定の同意に達していなければなりません。必要であれば、CMM は、障害に応じてクラスタサービス (アプリケーション) のクラスタ再構成を調整します。
CMM は、クラスタのトランスポート層から、他のノードへの接続に関する情報を受け取ります。CMM は、クラスタインターコネクトを使用して、再構成中に状態情報を交換します。
CMM は、クラスタメンバーシップの変更を検出すると、クラスタの同期化構成を実行します。これにより、クラスタリソースは、クラスタの新しいメンバーシップに基づいて再分配されます。
CMM は、ノードに重大な問題が発生したことを検出すると、クラスタフレームワークに依頼して、そのノードを強制的に停止 (パニック) 状態にし、クラスタメンバーシップから除きます。この機構を「フェイルファースト」といいます。フェイルファーストでは、ノードは次の 2 つの方法で停止されます。
クラスタから切り離されたノードが定足数を満たさずに再び新しいクラスタを起動しようとすると、ノードは共有ディスクへのアクセスを「防止」されます。 フェイルファーストのこの機能については、障害による影響の防止を参照してください。
クラスタ固有の 1 つまたは複数のデーモン (clexecd、rpc.pmfd、rgmd、rpc.ed) が停止すると、CMM はそれを検出し、ノードを強制的に停止 (パニック) 状態にします。
panic[cpu0]/thread=40e60: Failfast: Aborting because "pmfd" died 35 seconds ago. 409b8 cl_runtime:__0FZsc_syslog_msg_log_no_argsPviTCPCcTB+48 (70f900, 30, 70df54, 407acc, 0) %l0-7: 1006c80 000000a 000000a 10093bc 406d3c80 7110340 0000000 4001 fbf0 |
パニックを発生したノードは、再起動を行ってクラスタに再び結合しようとするか、OpenBootTM PROM (OBP) プロンプトの状態に留まることができます。どちらのアクションをとるかは、OBP の auto-boot? パラメータの設定に依存します。