メンテナンス時にフェールオーバさせない方法
Pacemakerで管理しているLinux-HAクラスタのメンテナンス時に、「一部のサービスを停止させるが、フェールオーバが発生しないようにしたい」、などの場合もあるかと思います。そんな時に使える機能が、メンテナンスモードです。
メンテナンスモードとは
メンテナンスモードを有効にすると、Pacemakerは動作したままですが、リソースの起動/停止/監視をいっさい行わなくなります。
例えばクラスタリソースとして動作しているデータベースをメンテナンスするために一時停止しても、メンテナンスモードの最中であれば、フェールオーバは起こりません。メンテナンスが終わってデータベースを再起動してから、メンテナンスモードを無効に戻せばいい、ということになります。
使用方法
- メンテナンスモードを有効にします。
# crm configure property maintenance-mode=true
- 必要なメンテナンス作業を実施します。バックアップを取る、プログラムをアップデートするなど、サービスを停止する必要があるメンテナンスを実施できます。ただし、メンテナンス作業が終ったら、停止したサービスは再度起動しなければなりません。
- メンテナンスモードを終了します。
# crm configure property maintenance-mode=false
メンテナンスモードになっているかの確認方法
メンテナンスモードでは、crm_monの画面で各リソースに”(unmanaged)”と表示されています。
Online: [ centos1 centos2 ] Master/Slave Set: ms_drbd_r0 (unmanaged) res_drbd_r0:0 (ocf::linbit:drbd): Master centos1 (unmanaged) res_drbd_r0:1 (ocf::linbit:drbd): Started centos2 (unmanaged) res_httpd-mount (ocf::heartbeat:Filesystem): Started centos1 (unmanaged) res_mailto (ocf::heartbeat:MailTo): Started centos1 (unmanaged) res_filesystem (ocf::heartbeat:Filesystem): Started centos1 (unmanaged) res_ip (ocf::heartbeat:IPaddr2): Started centos1 (unmanaged) res_mysql-mount (ocf::heartbeat:Filesystem): Started centos1 (unmanaged) res_mysql (ocf::heartbeat:mysql): Started centos1 (unmanaged) res_postfix (ocf::heartbeat:postfix): Started centos1 (unmanaged) res_httpd (ocf::heartbeat:apache): Started centos1 (unmanaged) res_postfix-mount (ocf::heartbeat:Filesystem): Started centos1 (unmanaged) Clone Set: pingd_3rd_clone (unmanaged) pingd:0 (ocf::pacemaker:pingd): Started centos1 (unmanaged) pingd:1 (ocf::pacemaker:pingd): Started centos2 (unmanaged)
注意点
繰り返しになりますが、メンテナンスモードを終了する時には、リソースの動作状態をメンテナンスモード設定前と同じ状態に戻すことを忘れないでください。異なっている場合には、不整合が生じる場合があります。例えば以下のようなケースでは問題になりますので、ご注意ください。
- メンテナンスモード中にdrbdadmコマンドでdrbdのステータスを変更したままである
- メンテナンス中に片ノードを再起動したが、drbdが自動起動(chkconfigでdrbdがon)のためpacemakerの管理外で起動している