PacemakerでDRBDのようなマスタ/スレーブ型のリソースを管理しているときに、マスターをコマンドラインから手動で切り替える方法。*1
例えば次のようにリソースが定義されている場合(primitiveは省略)
group group_master \ fs vip mysql apache ms ms_drbd drbd \ meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" \ notify="true" target-role="Master" colocation colocation-group_master-ms_drbd \ inf: group_master ms_drbd:Master order order-ms_drbd-group_master \ inf: ms_drbd:promote group_master:start
次のようにコマンドを実行すると、マスターとスレーブが切り替わります(マスターが現在の位置から別の位置に移動します)。*2
crm_resource -r group_master -M
このコマンドで実際に何が行われるのかというと・・・次のような制約が追加されていました(server1 は元マスターのホスト名)。
location cli-standby-group_master group_master \ rule $id="cli-standby-rule-group_master" -inf: #uname eq server1
このままだと server1 で group_master が永遠に開始しなくなるため、障害が発生しても server1 へのフェイルオーバが行われません。なので、マスターの切り替えが完了した後に、次のコマンドを実行してこの制約を解除する必要があります。*3
crm_resource -r group_master -U
新しくマスターになるサーバを明示的に指定出来ないことと、切り替え完了後にもコマンドを実行する必要があるのが少し使いづらいですね・・・