2016年11月15日火曜日

LIO Cluster [LIO, DRBD, Pacemaker による冗長化 iSCSI Target] (その10)Pacemaker のリソース設定


Pacemaker にリソースを登録します。

Active 機で、クラスタの状態を確認します。


sudo pcs status
Cluster name: iscsitgt01
WARNING: no stonith devices and stonith-enabled is not false
WARNING: corosync and pacemaker node names do not match (IPs used in setup?)
Last updated: Fri Oct 21 00:28:51 2016          Last change: Fri Oct 21 00:27:20 2016 by hacluster via crmd on iscsitgt01s.example.com
Stack: corosync
Current DC: iscsitgt01s.example.com (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 0 resources configured

Online: [ iscsitgt01a.example.com iscsitgt01s.example.com ]

Full list of resources:

PCSD Status:
  iscsitgt01a.example.com (10.110.88.57): Online
  iscsitgt01s.example.com (10.110.88.58): Online

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


Active 機で、クラスタにリソースを登録します。


sudo /etc/ha.d/crm.sh


Active 機で、状態を確認します。


sudo pcs status
Cluster name: iscsitgt01
WARNING: corosync and pacemaker node names do not match (IPs used in setup?)
Last updated: Sat Oct 29 19:52:34 2016          Last change: Sat Oct 29 19:51:46 2016 by root via cibadmin on iscsitgt01s.example.com
Stack: corosync
Current DC: iscsitgt01s.example.com (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 5 resources configured

Online: [ iscsitgt01a.example.com iscsitgt01s.example.com ]

Full list of resources:

 Master/Slave Set: ms_drbd_r0 [p_drbd_r0]
     Masters: [ iscsitgt01a.example.com ]
     Slaves: [ iscsitgt01s.example.com ]
 Resource Group: g_tgt
     p_lvm      (ocf::heartbeat:LVM):   Started iscsitgt01a.example.com
     p_lio      (ocf::heartbeat:LIO):   Started iscsitgt01a.example.com
     p_vip      (ocf::heartbeat:VIP):   Started iscsitgt01a.example.com

Failed Actions:
* p_lvm_start_0 on iscsitgt01s.example.com 'unknown error' (1): call=16, status=complete, exitreason='Volume group [vg1] does not exist or contains error!   Volume group "vg1" not found',
    last-rc-change='Fri Oct 21 00:32:13 2016', queued=0ms, exec=1095ms
PCSD Status:
  iscsitgt01a.example.com (10.110.88.57): Online
  iscsitgt01s.example.com (10.110.88.58): Online

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


※ ここでのエラー発生は想定の範囲内です。リソースをグループ化するコマンドの前に、各種リソースが Active 機側で起動しようとしたり、Stand-by 機側で起動しようとしたりしてしまうためです。

Active 機で、リソースのエラー状態をクリアします。


sudo pcs resource cleanup
Waiting for 1 replies from the CRMd. OK


Active 機で、状態を確認します。


sudo pcs status
Cluster name: iscsitgt01
WARNING: corosync and pacemaker node names do not match (IPs used in setup?)
Last updated: Sat Oct 29 19:58:35 2016          Last change: Sat Oct 29 19:58:34 2016 by hacluster via crmd on iscsitgt01a.example.com
Stack: corosync
Current DC: iscsitgt01s.example.com (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 5 resources configured

Online: [ iscsitgt01a.example.com iscsitgt01s.example.com ]

Full list of resources:

 Master/Slave Set: ms_drbd_r0 [p_drbd_r0]
     Masters: [ iscsitgt01a.example.com ]
     Slaves: [ iscsitgt01s.example.com ]
 Resource Group: g_tgt
     p_lvm      (ocf::heartbeat:LVM):   Started iscsitgt01a.example.com
     p_lio      (ocf::heartbeat:LIO):   Started iscsitgt01a.example.com
     p_vip      (ocf::heartbeat:VIP):   Started iscsitgt01a.example.com

PCSD Status:
  iscsitgt01a.example.com (10.110.88.57): Online
  iscsitgt01s.example.com (10.110.88.58): Online

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


Active 機と Stand-by 機で、設定情報を保存します。


sudo pcs config | sudo tee /etc/ha.d/crm.conf


Stand-by 機で、クラスタの状態をワッチします。


sudo watch pcs status


Active 機で、スイッチオーバ(手動フェイルオーバ)させてみます。


sudo pcs resource move g_tgt
Warning: Creating location constraint cli-ban-g_tgt-on-iscsitgt01a.example.com with a score of -INFINITY for resource g_tgt on node iscsitgt01a.example.com.
This will prevent g_tgt from running on iscsitgt01a.example.com until the constraint is removed. This will be the case even if iscsitgt01a.example.com is the last node in the cluster.
 

Stand-by 機で、クラスタの状態を確認します。


Cluster name: iscsitgt01
WARNING: corosync and pacemaker node names do not match (IPs used in setup?)
Last updated: Sat Oct 29 19:52:34 2016          Last change: Sat Oct 29 19:51:46 2016 by root via crm_resource on iscsitgt01a.example.com
Stack: corosync
Current DC: iscsitgt01s.example.com (version 1.1.13-10.el7-44eb2dd) - partition with quorum
2 nodes and 5 resources configured

Online: [ iscsitgt01a.example.com iscsitgt01s.example.com ]

Full list of resources:

 Master/Slave Set: ms_drbd_r0 [p_drbd_r0]
     Masters: [ iscsitgt01s.example.com ]
     Slaves: [ iscsitgt01a.example.com ]
 Resource Group: g_tgt
     p_lvm      (ocf::heartbeat:LVM):   Started iscsitgt01s.example.com
     p_lio      (ocf::heartbeat:LIO):   Started iscsitgt01s.example.com
     p_vip      (ocf::heartbeat:VIP):   Started iscsitgt01s.example.com

PCSD Status:
  iscsitgt01a.example.com (10.110.88.57): Online
  iscsitgt01s.example.com (10.110.88.58): Online

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


※ 赤字の行で、VIP を持っているノードが確認できればスイッチオーバ完了です。

※ ログで確認すると、切り替えに2秒かかっていないです。スイッチオーバ操作はこうであってほしいものです。メンテナンスのために切り替え作業を行うことは多いと思いますが、この作業に数十秒以上かかるようであれば、利用者の影響が大きすぎると思われるので、メンテナンス停止に関する利用者との調整が難しくなってしまいます。

Active 機で、設定変更を確認します。


diff <(grep -v last-lrm-refresh /etc/ha.d/crm.conf) <(sudo pcs config | grep -v last-lrm-refresh)
41a42
>     Disabled on: iscsitgt01a.example.com (score:-INFINITY) (role: Started) (id:cli-ban-g_tgt-on-iscsitgt01a.example.com)


Active 機で、設定変更を元に戻します。


sudo pcs resource clear g_tgt
diff <(grep -v last-lrm-refresh /etc/ha.d/crm.conf) <(sudo pcs config | grep -v last-lrm-refresh)


※ pcs では「unmove」ではなく「clear」です。
※ この操作を忘れると、障害発生時にフェイルオーバできません。

Stand-by 機側でリソースが動いている状態の場合、もう一度スイッチオーバさせます。Active 機側でリソースが動いている場合には、その必要はありません。

Active 機と Stand-by 機で、クラスタの状態を記録します。


sudo pcs status | sudo tee /etc/ha.d/crm.status


Active 機で、クラスタを停止します。


sudo pcs cluster stop --all
10.110.88.57: Stopping Cluster (pacemaker)...
10.110.88.58: Stopping Cluster (pacemaker)...
10.110.88.58: Stopping Cluster (corosync)...
10.110.88.57: Stopping Cluster (corosync)...



OS を停止し、バックアップを取得するのは、ここが最適と思われます。


今回は、仮想マシンでも動くことを前提に構築しました。
物理マシンであれば、Stonith 設定を追加したり、物理 watchdog に入れ替えたりといった改良の余地があります。
ただし、ハードウェアに依存する実装となってしまい、都度、調整や挙動の違いを確認する作業が発生しますし、障害試験項目も増えていきます。IPMI 対応を前提とするのであれば、多くのサーバで同じ挙動を期待できるかもしれません。
その価値があると判断した場合には、これらの設定も追加することになります。

LVM のスナップショットを利用したバックアップ機能を実装するのも良い考えだと思います。
Device Mapper Thin-Provisioning を活用すると、ストレージとしての活用範囲が広がります。

0 件のコメント:

コメントを投稿