Fedora11: Red Hat Cluster: fence_virsh の使い方

Red Hat Cluster Suite (以下 RHCS) を試す上で問題になるのが、RHCSがフェイルオーバーを行うためにフェンスデバイス (正しく作動していない筐体を強制的に停止する機能。IPMIなど外部から電源断できるハードウェアなどがサポートされる。) を必要とすることだ。普通、 フェンスデバイス が付属しているようなマシンを2台も持っていないので、RHCSで試せるのは、GFSなどの共有ストレージと、 リソースのテイクオーバー(フェイルオーバーではなく) のみになってしまう。

実はCentOS 5.x で ( 筆者は5.2で確認) 、 fence_xvm, fence_xvmd を組み合わせることで、VMクラスタノードとした場合、 Dom0 をフェンスデバイスとすることができ、一応 単一物理筐体+2VMから、RHCSのフェイルオーバーを試すことができるのだが、筆者が試してみたところ、
- 何故か物理筐体の側でも cman を立ち上げる必要がある。
- その際、物理筐体は最小1台でのHAクラスターになる。
- また、そのための設定が system-config-cluster で分かりにくい位置にある。 (Conga では比較的わかりやすい位置にあるので、試すならこちらの方がよさそう )
などの理由からあまり使いやすいとはいえなかった 。。 orz


で、より試しやすいフェンスデバイスがあるとよいのだが、Web上を探していたところ、fence_xvm の代替として、 fence_virsh が見つかった。
https://bugzilla.redhat.com/show_bug.cgi?id=496629

fence_virsh は、libvirt の機能を利用しており、基本的に
- ssh でDom0にログイン
- 該当ノードを virsh shutdown VMname
- ログアウト
を実施するだけのスクリプト (py)で、 libvirt に対応しているDom0なら、Linux KVM でもXenでも問題無くフェンスデバイスとして使えるらしい。実際、筆者は Fedora 10のKVMをDom0 としているが、Fedora 11のDomUでfence_virsh を試してみたところ、問題無くフェンシングが動作した。 ただし、リンク先でも述べられている通り、system-config-cluster や、luci ではまだ設定できないらしく、 fedora 11 のDomU 上で /etc/cluster/cluster.conf を直接編集する必要があった。 ( そして設定の仕方が見つからずかなり苦労した orz )

一応ここにフェンシングが成功したときの cluster.conf の全体を貼っておく。 fedora-virt2.jp.example.org, fedora-virt3.jp.example.org という2ノードのクラスターで テスト用にIPアドレスをひとつリソースとして定義している。cluster.conf の内容は2ノードで同じである。
ちなみに、Dom0のsshd でroot ログインを許可しないと上手く動かないが、そのあたりは fence_virsh のmanを参照。


	
	
		
			
				
					
				
			
		
		
			
				
					
				
			
		
	
	
	
                
                
	
	
		
			
				
				
			
		
		
			
		
		
			
		
	

cluster.conf のおおよそは、Fedora 11 付属のsystem-config-cluster で作成している。 vi での変更前後のdiff は次の様になった。試行錯誤のため、微妙に最初のバージョンが変わっているが、多分 ww 内容は変えていないと思われる。

 @@ -1,16 +1,27 @@
  
 -
 +
  	
  	
  		
 -			
 +			
 +				
 +					
 +				
 +			
 		
 		
 -			
 +			
 +				
 +					
 +				
 +			
 		
 	
 	
 -	
 +	
 +                
 +                
 +	
 	
 		
 			

注意点として、
- 中の の部分は必須らしく、 "single" の記述が無いと上手く動作しなかった
- 中で、option="off" (電源断)の部分は本来 "reboot" にしたかったのだが、 Fedora 10 のDom0 でvirsh reboot が上手く動作しなかったため、 off にしている。(virsh reboot は手動でも上手くいかない。 )
あたりがあった。

長くなったので、フェンシングの確認方法などは次回以降に。