メンテナンス時にフェールオーバさせない方法

Pacemakerで管理しているLinux-HAクラスタのメンテナンス時に、「一部のサービスを停止させるが、フェールオーバが発生しないようにしたい」、などの場合もあるかと思います。そんな時に使える機能が、メンテナンスモードです。

メンテナンスモードとは

メンテナンスモードを有効にすると、Pacemakerは動作したままですが、リソースの起動/停止/監視をいっさい行わなくなります。

例えばクラスタリソースとして動作しているデータベースをメンテナンスするために一時停止しても、メンテナンスモードの最中であれば、フェールオーバは起こりません。メンテナンスが終わってデータベースを再起動してから、メンテナンスモードを無効に戻せばいい、ということになります。

使用方法

  1. メンテナンスモードを有効にします。
    # crm configure property maintenance-mode=true
  2. 必要なメンテナンス作業を実施します。バックアップを取る、プログラムをアップデートするなど、サービスを停止する必要があるメンテナンスを実施できます。ただし、メンテナンス作業が終ったら、停止したサービスは再度起動しなければなりません。
  3. メンテナンスモードを終了します。
    # 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の管理外で起動している