##概要
クラウド環境でのPacemaker+Corosyncのクラスタ構成のシステム構築の際、GW宛のPing結果次第でリソースのフェイルオーバーを実装しようとしたらインターネットに通じるDMZのGWがPingを返さなかった。
GW側の設定変更も難しかった為、場当たり的な対応としてインスタンスの持つNICのIP叩いて監視することに。
環境
RHEL 7.9
pacemaker-1.1.15
corosync-2.3.6
drbd-9.15.0-1(Master/Slaveリソース)
host1(master):192.168.1.1
host2(slave):192.168.1.2
/etc/hosts
192.168.1.1 host1
192.168.1.2 host2
リソース設定
pcsコマンドからリソースを作成する。
PING-HOSTXや各種パラメータは適宜変更
host_listはホスト名でもIPv6でもおーけー。
# Pingリソース作成 HOST1
# 今回は自らのNICの監視のみなので --cloneは付与せず
pcs resource create PING-HOST1 ocf:pacemaker:ping \
dampen=5s multiplier=1000 \
host_list=192.168.1.1
# Pingリソース作成 HOST2
pcs resource create PING-HOST2 ocf:pacemaker:ping \
dampen=5s multiplier=1000 \
host_list=192.168.1.2
自分の持つNICに対してのみPing監視を行うように制限を付与する。 (masterのnicが死んだときslaveが死んだnicを見ないように)
# 自サーバが保有するNICに向けてPing
# 除外ホスト指定のため、対向のホスト名を入力
pcs constraint location PING-HOST1 avoids host2
pcs constraint location PING-HOST2 avoids host1
pingの結果でMaster/Slaveリソースをフェイルオーバーする。 他にping監視を追加していた場合はそれもフェイルオーバー条件に入るので注意
# Ping系が失敗した場合フェイルオーバー
pcs constraint location マスタースレーブリソース \
rule score=-INFINITY pingd lt 1 or not_defined pingd
##参考
[6.1. 場所の制約]
(https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/configuring_the_red_hat_high_availability_add-on_with_pacemaker/ch-resourceconstraints-haar#s1-locationconstraints-HAAR)
7.3. 接続状態が変化したためリソースの移動を行う