9.9. クリーンノードのシャットダウンで停止するようにリソースを設定 (Red Hat Enterprise Linux 7.8 以降)
クラスターノードがシャットダウンしたときの Pacemaker のデフォルトの応答は、シャットダウンが正常なシャットダウンであっても、そのノードで実行中のすべてのリソースを停止し、別の場所でリソースを復元することです。Red Hat Enterprise Linux 7.8 以降では、ノードが正常にシャットダウンすると、ノードに接続されているリソースがノードにロックされ、シャットダウンしたノードがクラスターに再度参加するときに再び起動するまで、他の場所で起動できないように、Pacemaker を設定できます。これにより、ノードのリソースをクラスター内の他のノードにフェイルオーバーせずに、サービスの停止が許容できるメンテナンスウィンドウ中にノードの電源を切ることができます。
9.9.1. クリーンノードシャットダウンで停止するようにリソースを設定するためのクラスタープロパティー
ノードの正常なシャットダウンでリソースがフェイルオーバーしないようにする機能は、以下のクラスタープロパティーで実装されます。
- shutdown-lock
- このクラスタープロパティーをデフォルト値の
false
に設定すると、クラスターは、ノードで正常にシャットダウンされているノードでアクティブなリソースを復旧します。このプロパティーをtrue
に設定すると、適切にシャットダウンしているノードでアクティブなリソースは、クラスターに再参加した後にノードで再起動するまで別の場所で起動できません。shutdown-lock
プロパティーはクラスターノードまたはリモートノードのいずれかで機能しますが、ゲストノードでは機能しません。shutdown-lock
をtrue
に設定すると、ノードがダウンしたときに 1 つのクラスターリソースのロックを削除し、次のコマンドを使用してノードで手動更新を実行してリソースを別の場所で起動できるようになります。pcs resource refresh resource --node node
リソースのロックが解除されると、クラスターはリソースを別の場所に移動できるようになることに注意してください。リソースのスティッキネスの値または場所の設定を使用することにより、これが発生する可能性を抑制できます。注記手動更新は、最初に次のコマンドを実行するとリモートノードで機能します。- リモートノードで systemctl stop pacemaker_remote コマンドを実行してノードを停止します。
- pcs resource disable remote-connection-resource コマンドを実行します。
その後、リモートノードで手動更新を実行できます。 - shutdown-lock-limit
- このクラスタープロパティーをデフォルト値の 0 以外の値に設定すると、シャットダウンを開始してから指定した時間内にノードが再参加しない場合に、他のノードの復旧にリソースが利用可能になります。ただし、この間隔は cluster
-recheck-interval クラスター
プロパティーの値よりも頻繁にチェックされないことに注意してください。注記shutdown-lock-limit
プロパティーは、以下のコマンドを最初に実行した場合に限りリモートノードで動作します。- リモートノードで systemctl stop pacemaker_remote コマンドを実行してノードを停止します。
- pcs resource disable remote-connection-resource コマンドを実行します。
このコマンドを実行すると、shutdown-lock-limit
で指定した時間が経過すると、リモートノード上で実行しているリソースが他のノードの復旧に利用できます。
9.9.2. shutdown-lock クラスタープロパティーの設定
以下の例では、サンプルのクラスターで
shutdown-lock
クラスタープロパティーを true
に設定し、ノードをシャットダウンして再起動したときの影響を示しています。この例のクラスターは、z1.example.com
、z2.example.com
、および z3.example.com
の 3 つのノードで設定されます。
shutdown-lock
プロパティーをtrue
に設定し、その値を確認します。この例では、shutdown-lock-limit
プロパティーはデフォルト値の 0 を維持します。[root@z3.example.com ~]#
pcs property set shutdown-lock=true
[root@z3.example.com ~]#pcs property list --all | grep shutdown-lock
shutdown-lock: true shutdown-lock-limit: 0- クラスターのステータスを確認します。この例では、3 番
目
と5 番目
のリソースがz1.example.com
で実行しています。[root@z3.example.com ~]#
pcs status
... Full List of Resources: ... * first (ocf::pacemaker:Dummy): Started z3.example.com * second (ocf::pacemaker:Dummy): Started z2.example.com * third (ocf::pacemaker:Dummy): Started z1.example.com * fourth (ocf::pacemaker:Dummy): Started z2.example.com * fifth (ocf::pacemaker:Dummy): Started z1.example.com ... z1.example.com
をシャットダウンします。これにより、そのノードで実行されているリソースを停止します。[root@z3.example.com ~] #
pcs cluster stop z1.example.com
Stopping Cluster (pacemaker)... Stopping Cluster (corosync)...pcs status コマンドを実行すると、ノードz1.example.com
がオフラインで、z1.example.com
で実行していたリソースがノードの停止時にLOCKED
であることを示しています。[root@z3.example.com ~]#
pcs status
... Node List: * Online: [ z2.example.com z3.example.com ] * OFFLINE: [ z1.example.com ] Full List of Resources: ... * first (ocf::pacemaker:Dummy): Started z3.example.com * second (ocf::pacemaker:Dummy): Started z2.example.com * third (ocf::pacemaker:Dummy): Stopped z1.example.com (LOCKED) * fourth (ocf::pacemaker:Dummy): Started z3.example.com * fifth (ocf::pacemaker:Dummy): Stopped z1.example.com (LOCKED) ...- クラスターサービスを
z1.example.com
で再度起動し、クラスターに再参加できるようにします。ロックされたリソースは、そのノードで開始する必要がありますが、いったん起動すると、必ずしも同じノードに留まるわけではありません。[root@z3.example.com ~]#
pcs cluster start z1.example.com
Starting Cluster...この例では、3 番目と 5 番目のリソースが z1.example.com ノードで復元されます。[root@z3.example.com ~]#
pcs status
... Node List: * Online: [ z1.example.com z2.example.com z3.example.com ] Full List of Resources: .. * first (ocf::pacemaker:Dummy): Started z3.example.com * second (ocf::pacemaker:Dummy): Started z2.example.com * third (ocf::pacemaker:Dummy): Started z1.example.com * fourth (ocf::pacemaker:Dummy): Started z3.example.com * fifth (ocf::pacemaker:Dummy): Started z1.example.com ...