[Linux-ha-jp] Active/Passive構成でのSTONITHの設定について

Back to archive index

和田 伸一朗 wada.****@jp*****
2012年 2月 27日 (月) 18:58:31 JST


こんにちは。
和田です。

Active/Passive構成でのSTONITH関連の設定についてご教示ください。

STONITHを設定している状態で、

-------------------------------------------------------------------------

property no-quorum-policy="freeze" \
	stonith-enabled="true" \
         startup-fencing="false" \
         stonith-timeout="430s"

-------------------------------------------------------------------------

と設定した場合、

・片故障状態で、システムを起動すると正常に起動しない。
・Active側がハード故障等でダウンするとうまく切り替わらない。

という動作をします。

以前、山内さんに教えて頂いた様に、quorum定数が半分以下になるため、切り替わらないと
認識しているのですが、認識はあっているでしょうか?

freezeからignoreにすることで、正常に切り替わることは確認しました。
#ただし、スプリットブレインなどが困りますよね。。。

また、一般的な設定として、みなさんは上記の事象に対応する際に、
どのような設定としているのでしょうか?
NICを冗長化することで、Active/Passive構成ではSTONITHを利用しない
というような構成が一般的なのでしょうか?

なお、構成は以前質問させて頂いたときと同様で、Corosync + Pacemaker + DRBDで
以下の構成となっています。

-------------------------------------------------------------------------

primitive drbd_db ocf:linbit:drbd \
         params drbd_resource="pgsql" \
         op start interval="0s" timeout="240s" on-fail="restart" \
         op monitor interval="11s" timeout="60s" on-fail="restart" \
         op monitor interval="10s" timeout="60s" on-fail="restart" role="Master" \
         op stop interval="0s" timeout="100s" on-fail="fence"

primitive ip_db ocf:heartbeat:IPaddr2 \
         params ip="192.168.1.175" \
                 nic="eth1" \
                 cidr_netmask="24" \
         op start interval="0s" timeout="90s" on-fail="restart" \
         op monitor interval="10s" timeout="60s" on-fail="restart" \
         op stop interval="0s" timeout="100s" on-fail="fence"

primitive prmPing ocf:pacemaker:ping \
         params \
                 name="ping_set" \
                 host_list="192.168.1.1 192.168.2.1" \
                 multiplier="100" \
                 dampen="0" \
         meta \
                 migration-threshold="3" \
                 failure-timeout="60s" \
         op start interval="0s" timeout="90s" on-fail="restart" \
         op monitor interval="10s" timeout="60s" on-fail="restart" \
         op stop interval="0s" timeout="100s" on-fail="ignore"

primitive fs_db ocf:heartbeat:Filesystem \
         params device="/dev/drbd/by-res/pgsql" directory="/data" fstype="ext4" \
         op start interval="0s" timeout="60s" on-fail="restart" \
         op monitor interval="10s" timeout="60s" on-fail="restart" \
         op stop interval="0s" timeout="60s" on-fail="fence"

primitive prmPg ocf:heartbeat:pgsql \
         params pgctl="/usr/bin/pg_ctl" \
         start_opt="-p 5432" \
         psql="/usr/bin/psql" \
         pgdata="/data/" \
         pgdba="postgres" \
         pgport="5432" \
         pgdb="postgres" \
         op start interval="0s" timeout="120s" on-fail="restart" \
         op monitor interval="10s" timeout="60s" on-fail="restart" \
         op stop interval="0s" timeout="120s" on-fail="fence"

primitive apache ocf:heartbeat:apache \
         params configfile="/etc/httpd/conf/httpd.conf" \
         port="80" \
         op start interval="0s" timeout="40s" on-fail="restart" \
         op monitor interval="10s" timeout="60s" on-fail="restart" \
         op stop interval="0s" timeout="60s" on-fail="fence"

primitive prmDiskd ocf:pacemaker:diskd \
         params name="diskd_set" \
         device="/dev/sda1" \
         op start interval="0s" timeout="60s" on-fail="restart" \
         op monitor interval="10s" timeout="60s" on-fail="restart" \
         op stop interval="0s" timeout="60s" on-fail="ignore"

primitive prmStonith1-1 stonith:external/stonith-helper \
	params \
		priority="1" \
		stonith-timeout="60s" \
		hostlist="it13" \
		dead_check_target="192.168.1.173" \
		run_standby_wait="no" \
	op start interval="0s" timeout="60s" \
	op monitor interval="3600s" timeout="60s" \
	op stop interval="0s" timeout="60s"

primitive prmStonith1-2 stonith:external/ssh \
	params \
		priority="2" \
		stonith-timeout="60s" \
		hostlist="it13" \
	op start interval="0s" timeout="60s" \
	op monitor interval="3600s" timeout="60s" \
	op stop interval="0s" timeout="60s"

primitive prmStonith1-3 stonith:meatware \
	params \
		priority="3" \
		stonith-timeout="600" \
		hostlist="it13" \
	op start interval="0s" timeout="60s" \
	op monitor interval="3600s" timeout="60s" \
	op stop interval="0s" timeout="60s"

primitive prmStonith2-1 stonith:external/stonith-helper \
	params \
		priority="1" \
		stonith-timeout="60s" \
		hostlist="it14" \
		dead_check_target="192.168.1.174" \
		run_standby_wait="no" \
	op start interval="0s" timeout="60s" \
	op monitor interval="3600s" timeout="60s" \
	op stop interval="0s" timeout="60s"

primitive prmStonith2-2 stonith:external/ssh \
	params \
		priority="2" \
		stonith-timeout="60s" \
		hostlist="it14" \
	op start interval="0s" timeout="60s" \
	op monitor interval="3600s" timeout="60s" \
	op stop interval="0s" timeout="60s"

primitive prmStonith2-3 stonith:meatware \
	params \
		priority="3" \
		stonith-timeout="600" \
		hostlist="it14" \
	op start interval="0s" timeout="60s" \
	op monitor interval="3600s" timeout="60s" \
	op stop interval="0s" timeout="60s"

group group_all fs_db ip_db prmPg apache

group grpStonith1 \
	prmStonith1-1 \
	prmStonith1-2 \
	prmStonith1-3

group grpStonith2 \
	prmStonith2-1 \
	prmStonith2-2 \
	prmStonith2-3

ms ms_drbd_db drbd_db \
         meta master-max="1" master-node-max="1" clone-max="2" clone-node-max="1" notify="true"

clone clnPing prmPing \
         meta clone-max="2" clone-node-max="1"

clone clnDiskd prmDiskd \
         meta clone-max="2" clone-node-max="1"

location group_all-location group_all \
         rule 200: #uname eq it13 \
         rule 100: #uname eq it14 \
         rule -INFINITY: defined ping_set and ping_set lt 200 \
         rule -INFINITY: defined diskd_set and diskd_set eq SUCCESS

location master-location_db ms_drbd_db \
         rule 200: #uname eq it13 \
         rule 100: #uname eq it14 \
         rule role=master -INFINITY: defined ping_set and ping_set lt 200 \
         rule role=master -INFINITY: defined diskd_set and diskd_set eq SUCCESS \
         rule role=master -INFINITY: defined fail-count-fs_db \
         rule role=master -INFINITY: defined fail-count-ip_db \
         rule role=master -INFINITY: defined fail-count-prmPg \
         rule role=master -INFINITY: defined fail-count-apache

location rsc_location-grpStonith1-1 grpStonith1 \
	rule -INFINITY: #uname eq it13

location rsc_location-grpStonith2-1 grpStonith2 \
	rule -INFINITY: #uname eq it14

colocation db_on_drbd INFINITY: group_all ms_drbd_db:Master
colocation clnPing-colocation INFINITY: group_all clnPing
colocation clnDiskd-colocation INFINITY: group_all clnDiskd
order order_db_after_drbd INFINITY: ms_drbd_db:promote group_all:start
order order_clnPing_after_all 0: clnPing group_all symmetrical=false
order order_clnDiskd_after_all 0: clnDiskd group_all symmetrical=false

property no-quorum-policy="freeze" \
	stonith-enabled="true" \
         startup-fencing="false" \
         stonith-timeout="430s"

rsc_defaults resource-stickiness="INFINITY" \
         migration-threshold="1"

-------------------------------------------------------------------------

よろしくお願い致します。





Linux-ha-japan メーリングリストの案内
Back to archive index