2015年11月1日日曜日

[CentOS7] Pacemaker のリソースの動作確認(Apacheのクラスタ)


前回は、Pacemaker にリソースを登録して、Apacheクラスタを構築しました。

今回は、Pacemaker の動作確認をします。


1.クラスタ状態の確認


"pcs status" で状態を見ようとしたところ、反応が鈍くて、下記表示で少し待ちます。
[root@pm01 ~]# pcs status
Cluster name: cluster_test
Last updated: Sun Nov  1 08:43:48 2015          Last change: Sun Nov  1 08:42:10 2015 by root via crm_resource on pm02
Stack: corosync
Current DC: pm01 (version 1.1.13-a14efad) - partition with quorum
2 nodes and 5 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 ]

PCSD Status:
  pm01: Online

VIPのDNSの逆ひきで遅くなってたようなので、pm01とpm02の hosts にVIPを登録したら、反応が良くなりました。
10.1.0.70   pm00
10.1.0.71   pm01
10.1.0.72   pm02

なお、もう一つ、検証時に使える確認方法があります。
"crm_mon" コマンドを使用すると、クラスタの状態をリアルタイムで監視できます。



pm01 の仮想IPアドレスは以下のとおり。
[root@pm01 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 4a:73:98:ab:45:82 brd ff:ff:ff:ff:ff:ff
    inet 10.1.0.71/32 brd 10.1.0.71 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.1.0.70/24 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::4873:98ff:feab:4582/64 scope link
       valid_lft forever preferred_lft forever
Apacheのプロセスは以下のとおり。
[root@pm01 ~]# ps -ef | grep httpd
root     17503     1  0 09:56 ?        00:00:00 /sbin/httpd -DSTATUS -f /etc/httpd/conf/httpd.conf -c PidFile /var/run//httpd.pid
apache   17506 17503  0 09:56 ?        00:00:00 /sbin/httpd -DSTATUS -f /etc/httpd/conf/httpd.conf -c PidFile /var/run//httpd.pid
apache   17507 17503  0 09:56 ?        00:00:00 /sbin/httpd -DSTATUS -f /etc/httpd/conf/httpd.conf -c PidFile /var/run//httpd.pid
apache   17509 17503  0 09:56 ?        00:00:00 /sbin/httpd -DSTATUS -f /etc/httpd/conf/httpd.conf -c PidFile /var/run//httpd.pid
apache   17510 17503  0 09:56 ?        00:00:00 /sbin/httpd -DSTATUS -f /etc/httpd/conf/httpd.conf -c PidFile /var/run//httpd.pid
apache   17512 17503  0 09:56 ?        00:00:00 /sbin/httpd -DSTATUS -f /etc/httpd/conf/httpd.conf -c PidFile /var/run//httpd.pid
root     17935  2102  0 09:57 pts/0    00:00:00 grep --color=auto httpd

2.ApacheプロセスKILLによるF/Oの確認


Apache のプロセスを KILL してF/Oするかどうか確認します。
以下のようにして pm01 で httpd をKILLします。
[root@pm01 ~]# pkill httpd
しばらく待つと、以下のように pm02 にフェイルオーバしました。
[root@pm01 ~]# pcs status
Cluster name: cluster_test
Last updated: Sun Nov  1 09:53:00 2015          Last change: Sun Nov  1 09:45:44 2015 by root via crm_attribute on pm01
Stack: corosync
Current DC: pm01 (version 1.1.13-a14efad) - partition with quorum
2 nodes and 5 resources configured

Online: [ pm01 pm02 ]

Full list of resources:

 Resource Group: WebGroup
     vipcheck_res       (ocf::myres:VIPCheck):  Started pm02
     vip_res    (ocf::heartbeat:IPaddr2):       Started pm02
     httpd_res  (ocf::heartbeat:apache):        Started pm02
 Clone Set: ping-clone [ping]
     Started: [ pm01 pm02 ]

Failed Actions:
* httpd_res_monitor_10000 on pm01 'not running' (7): call=139, status=complete, exitreason='none',
    last-rc-change='Sun Nov  1 09:51:23 2015', queued=0ms, exec=0ms


PCSD Status:
  pm01: Online
  pm02: Online

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled
リソース再起動の回数を変えて、もう一度試してみます。
まず、エラーをクリアします。
[root@pm01 ~]# pcs resource cleanup httpd_res
Resource: httpd_res successfully cleaned up
次にリソースを pm01 に戻します。
pm02 を OFFLINE にして、リソースの移動を確認した後、ONLINEにもどします。
[root@pm01 ~]# rpcs cluster standby pm02
[root@pm01 ~]# pcs status
[root@pm01 ~]# pcs cluster unstandby pm02
リソースの再起動回数を "2" にします。
[root@pm01 ~]# pcs resource defaults resource-stickiness=INFINITY migration-threshold=2
これで、再テストできるようになったので、また、httpd を KILL します。
今度は、pm01 で httpd が再起動されました。
[root@pm01 ~]# pkill httpd
[root@pm01 ~]# pcs status
Cluster name: cluster_test
Last updated: Sun Nov  1 10:25:16 2015          Last change: Sun Nov  1 10:24:51 2015 by root via crm_attribute on pm01
Stack: corosync
Current DC: pm01 (version 1.1.13-a14efad) - partition with quorum
2 nodes and 5 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 ]

Failed Actions:
* httpd_res_monitor_10000 on pm01 'not running' (7): call=271, status=complete, exitreason='none',
    last-rc-change='Sun Nov  1 10:25:12 2015', queued=0ms, exec=0ms


PCSD Status:
  pm01: Online
  pm02: Online

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled
この状態で、また、httpd をKILL すると、こんどは、pm02 にF/Oしました。
[root@pm01 ~]# pkill httpd
[root@pm01 ~]# pcs status
Cluster name: cluster_test
Last updated: Sun Nov  1 10:26:11 2015          Last change: Sun Nov  1 10:24:51 2015 by root via crm_attribute on pm01
Stack: corosync
Current DC: pm01 (version 1.1.13-a14efad) - partition with quorum
2 nodes and 5 resources configured

Online: [ pm01 pm02 ]

Full list of resources:

 Resource Group: WebGroup
     vipcheck_res       (ocf::myres:VIPCheck):  Started pm02
     vip_res    (ocf::heartbeat:IPaddr2):       Started pm02
     httpd_res  (ocf::heartbeat:apache):        Started pm02
 Clone Set: ping-clone [ping]
     Started: [ pm01 pm02 ]

Failed Actions:
* httpd_res_monitor_10000 on pm01 'not running' (7): call=275, status=complete, exitreason='none',
    last-rc-change='Sun Nov  1 10:25:53 2015', queued=0ms, exec=0ms


PCSD Status:
  pm01: Online
  pm02: Online

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled


3.ネットワーク障害によるF/Oの確認


デフォルトGWへの疎通障害でF/Oするかどうか確認します。
pm01で以下のようにして、デフォルトGWへの ping が失敗するようにします。
[root@pm01 ~]# iptables -I INPUT -p icmp -j DROP -s 10.1.0.254
しばらくすると、以下のように pm02 にF/Oします。
[root@pm01 ~]# pcs status
Cluster name: cluster_test
Last updated: Sun Nov  1 10:34:39 2015          Last change: Sun Nov  1 10:31:09 2015 by root via crm_attribute on pm01
Stack: corosync
Current DC: pm01 (version 1.1.13-a14efad) - partition with quorum
2 nodes and 5 resources configured

Online: [ pm01 pm02 ]

Full list of resources:

 Resource Group: WebGroup
     vipcheck_res       (ocf::myres:VIPCheck):  Started pm02
     vip_res    (ocf::heartbeat:IPaddr2):       Started pm02
     httpd_res  (ocf::heartbeat:apache):        Started pm02
 Clone Set: ping-clone [ping]
     Started: [ pm01 pm02 ]

PCSD Status:
  pm01: Online
  pm02: Online

Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

pm01、pm02 の両方が、デフォルトGWに疎通NGの場合は、リソースが停止します。