第4章 フェンシング

フェンシングとは、 クラスターの共有ストレージから任意のノードを切断することを指します。 フェンシングによって共有ストレージからの I/O を遮断することでデータの整合性を確保します。 クラスターのインフラストラクチャーではフェンスデーモン fenced を使ってフェンシングを実施します。
CMAN はノードに障害が発生していることを検出した場合、 その障害が発生しているクラスタインフラストラクチャの他のコンポーネントとの通信を行ないます。 CMAN より障害の通知を受け取った fenced は、 障害が発生しているノードの切断を行ないます。 他のコンポーネントでも行なうべき動作の確定が行なわれます (つまり、 必要とされる復元の動作を実行します)。 たとえば、 ノード障害の通知を受け取ると、 DLM や GFS2 では障害ノードに対する fenced のフェンシング完了が確認されるまではアクティビティの一時停止を行います。 障害ノードのフェンシング (切断) が確認されると、 DLM、 GFS2 は復元を実行します。 つまり、 DLM の場合は障害ノードのロックが解除され、 GFS2 の場合は障害ノードのジャーナル復元が行なわれます。
フェンシングプログラムでは、 使用するフェンシングメソッドをクラスター設定ファイルから確定します。 フェンシングメソッドはクラスター設定ファイル内の 2 種類のキーエレメント、 フェンスエージェントとフェンスデバイスで定義されます。 フェンシングプログラムは、 クラスター設定ファイル内で定義されるフェンスエージェントに対して呼び出しを行ないます。 呼び出しが行なわれると、フェンスエージェントによるフェンスデバイスを使ったノードの切断が行なわれます。 フェンシングが完了すると、フェンシングプログラムからクラスターマネージャーに通知が行なわれます。
High Availability Add-On では次のようなフェンシングメソッドを提供しています。
  • 電源のフェンシング — 電力コントローラを使用するフェンシングメソッドで動作不能なノードの電源を切ります。
  • ストレージのフェンシング — 動作不能なノードにストレージを接続しているファイバーチャンネルを無効にするフェンシングメソッドです。
  • その他のフェンシング — IBM Bladecenter、 PAP、 DRAC/MC、 HP ILO、 IPMI、 IBM RSA II など、 動作不能なノードの I/O を無効にするまたは電源を切るフェンシングメソッドが他にもいくつかあります。
図4.1「電源のフェンシング例」 に電源のフェンシングの例を示します。 この例では、 ノード A 内のフェンシングプログラムでパワーコントローラによるノード D の電源オフを行なっています。 図4.2「ストレージのフェンシング例」 では、 ストレージフェンシングの例を示しています。 この例では、 ノード A 内のフェンシングプログラムでファイバーチャンネルスイッチによるノード D のポートの無効化が行なわれ、 ストレージからノード D を切断しています。
電源のフェンシング例

図4.1 電源のフェンシング例

ストレージのフェンシング例

図4.2 ストレージのフェンシング例

クラスター設定ファイルを編集し、 クラスタ内の各ノードに対してフェンシングメソッド名、 フェンスエージェント、 フェンスデバイスをそれぞれ割り当てることでフェンシングメソッドを指定します。
フェンシングメソッドの指定方法は、 ノードが二重電源装置を備えているのか、 ストレージへのパスが複数あるのかによって異なってきます。 二重電源装置を備えている場合は、 ノードのフェンシングメソッドにはそれぞれの電源装置に対してひとつずつ少なくとも 2 つのフェンスデバイスを指定する必要があります (図4.3「二重電源装置を備えたノードのフェンシング」 を参照)。 同様に、 ファイバーチャンネルストレージへのパスが複数ある場合には、 ノードのフェンシングメソッドに各パスに対してひとつずつフェンスデバイスを指定する必要があります。 たとえば、 ファイバーチャンネルストレージへのパスが 2 つある場合なら、 フェンシングメソッドで各パスに対してひとつずつフェンスデバイスを指定します ( 図4.4「二重接続のファイバーチャンネルを備えたノードのフェンシング」 を参照)。
二重電源装置を備えたノードのフェンシング

図4.3 二重電源装置を備えたノードのフェンシング

二重接続のファイバーチャンネルを備えたノードのフェンシング

図4.4 二重接続のファイバーチャンネルを備えたノードのフェンシング

ノードに設定するフェンシングメソッドの数は一つでも複数でも構いません。フェンシングメソッドを一つだけ設定するということは、そのノードを切断できる方法がそのフェンシングメソッドのみということになります。複数のフェンシングメソッドを設定すると、クラスタ設定ファイルに指定されるフェンシングメソッドの順序に従って連結されることになります。ノードに障害が発生すると、 クラスター設定ファイルでそのノードに対して最初に指定されているフェンシングメソッドを使って切断が行なわれます。最初のフェンシングメソッドによる切断が失敗した場合、 次に指定されているフェンシングメソッドが使用されます。 いずれのフェンシングメソッドでも切断に失敗した場合には、 最初のフェンシングメソッドに戻り、ノードが切断されるまでクラスター設定ファイルに指定された順序で各フェンシングノードがエンドレスに使用されていきます。
フェンスデバイスの設定方法に関しては、 『クラスターの管理』 ガイドを参照してください。