前回までに リソースを登録して、Apacheクラスタ(Active/Standby)を構築しました。
今回は、stonith を実装します。 stonith については下記URLが参考になります。
私の検証環境は、XenServer6.5 の仮想マシンです。
XenServer用の fence デバイスを使って stonith を実装します。
環境は以下のとおり。
- pm01(L81pm01): 10.1.0.71
- pm02(L82pm02): 10.1.0.72
- XenServerホスト(Dom0): 192.168.1.100
1.fence_xenapi の導入
pm01 と pm02 に fence_xenapi をインストールします。
fence_agent のパッケージをインストールします。
[root@pm01 ~]# yum install fence-agents-all下記URLから fence_xenapi をダウンロードします。
- https://github.com/adriangibanelbtactic/fence-agents/blob/master/fence/agents/xenapi/fence_xenapi.py
[root@pm01 ~]# vi /usr/sbin/fence_xenapi [root@pm01 ~]# chmod 755 /usr/sbin/fence_xenapi下記URLから XenAPI をダウンロードします。
ダウンロードしたファイルを、/usr/sbin/XenAPI.py に保存します。
[root@pm01 ~]# vi /usr/sbin/XenAPI.py動作を確認します。
以下のように実行して、仮想マシンのステータスを表示できればOKです。
[root@pm01 ~]# fence_xenapi -l root -p <パスワード> -o status -s https://192.168.1.100 -n L80pm01 Status: ON
2.stonith の設定
pm01 をリブートする stonith を登録します。
相打ちにならないように delay を設定します。
[root@pm01 ~]# pcs stonith create fence_pm01 fence_xenapi session_url="https://192.168.1.100" action="reboot" login="root" passwd_script="/root/xs.pw" port="L80pm01" delay=15 pcmk_host_list=pm01 pcmk_host_check=static-list pcmk_host_map="" op monitor interval=60spm02 をリブートする stonith を登録します。
[root@pm01 ~]# pcs stonith create fence_pm02 fence_xenapi session_url="https://192.168.1.100" action="reboot" login="root" passwd_script="/root/xs.pw" port="L81pm02" pcmk_host_list=pm02 pcmk_host_check=static-list pcmk_host_map="" op monitor interval=60s
stonith では、自ノードをリブートしない。相手をリブートするようにします。
fence_pm01 を pm01 以外で起動するように設定します。
[root@pm01 ~]# pcs constraint location fence_pm01 prefers pm01="-INFINITY"
fence_pm02 を pm02 以外で起動するように設定します。
[root@pm01 ~]# pcs constraint location fence_pm02 prefers pm02="-INFINITY"
stonith を有効にします。
[root@pm01 ~]# pcs property set stonith-enabled=true状態を確認します。
[root@pm01 ~]# pcs status Cluster name: cluster_test Last updated: Sun Nov 1 16:52:16 2015 Last change: Sun Nov 1 14:49:56 2015 by root via cibadmin on pm02 Stack: corosync Current DC: pm01 (version 1.1.13-a14efad) - partition with quorum 2 nodes and 7 resources configured Online: [ pm01 pm02 ] Full list of resources: Resource Group: WebGroup vipcheck_res (ocf::myres:VIPCheck): Started pm01 vip_res (ocf::heartbeat:IPaddr2): Started pm01 httpd_res (ocf::heartbeat:apache): Started pm01 Clone Set: ping-clone [ping] Started: [ pm01 pm02 ] fence_pm01 (stonith:fence_xenapi): Started pm02 fence_pm02 (stonith:fence_xenapi): Started pm01 PCSD Status: pm01: Online pm02: Online Daemon Status: corosync: active/disabled pacemaker: active/disabled pcsd: active/enabled
3.動作確認
手動でフェンシングを発動します。
以下のように実行して pm02 がリブートされたらOKです。
[root@pm01 ~]# stonith_admin --reboot pm02
ハートビートを遮断してみます。
pm01 で以下のように実行します。
[root@pm01 ~]# iptables -I INPUT -p all -j DROP -s 10.1.0.72pm02 がリブートされます。
[root@pm01 ~]# pcs status Cluster name: cluster_test Last updated: Sun Nov 1 16:57:43 2015 Last change: Sun Nov 1 14:49:56 2015 by root via cibadmin on pm02 Stack: corosync Current DC: pm01 (version 1.1.13-a14efad) - partition with quorum 2 nodes and 7 resources configured Node pm02: UNCLEAN (offline) Online: [ pm01 ] Full list of resources: Resource Group: WebGroup vipcheck_res (ocf::myres:VIPCheck): Started pm01 vip_res (ocf::heartbeat:IPaddr2): Started pm01 httpd_res (ocf::heartbeat:apache): Started pm01 Clone Set: ping-clone [ping] ping (ocf::pacemaker:ping): Started pm02 (UNCLEAN) Started: [ pm01 ] fence_pm01 (stonith:fence_xenapi): Started pm02 (UNCLEAN) fence_pm02 (stonith:fence_xenapi): Started pm01 PCSD Status: pm01: Online