[Linux-ha-jp] group内のリソースで発生した異常について

Zurück zum Archiv-Index

和田 伸一朗 wada.****@jp*****
2012年 1月 19日 (木) 12:08:39 JST


こんにちは。
和田です。

いつもお世話になっております。

先日、N + 1構成でのスプリットブレインの質問をさせていただいた際に、
山内さんよりリソースのstart,monitorは、standbyではなくrestartのほうが
よいのではというアドバイスをいただきました。

その際にも少し触れていたのですが、group内の最後のリソース以外に異常が発生した場合、
うまく切り替わらないという事象が、他のアドバイスも取り込み、検証を進めていったところ
やはり同様の事象が発生しました。

#現状、standbyにすることですぐに切り替わることは確認できているので、
#困っているわけではないのですが、どうもすっきりせず。。。

たとえば、

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

 Resource Group: group_all
     fs_db      (ocf::heartbeat:Filesystem):    Started it14
     ip_db      (ocf::heartbeat:IPaddr2):       Started it14
     prmPg      (ocf::heartbeat:pgsql): Started it14
     apache     (ocf::heartbeat:apache):        Started it14

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

というリソースがあった場合に、apacheの異常が発生した場合は正常に
切り替わるのですが、pgsqlで異常が発生した場合には、

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

 Resource Group: group_all
     fs_db      (ocf::heartbeat:Filesystem):    Started it14
     ip_db      (ocf::heartbeat:IPaddr2):       Started it14
     prmPg      (ocf::heartbeat:pgsql): Stopped
     apache     (ocf::heartbeat:apache):        Stopped

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

の状態でとまってしまいます。
ただし、15分後に異常を検知されその後であれば切り替えが発生します。
#15分はpropertyのcluster-recheck-intervalに依存するものと考えています。

なお、apacheで異常が発生した場合は正常に切り替えが行われ、
pgsqlとapacheの順序を入れ替えた場合はapacheで正常に切り替えが
行われない状態となります。

上記の挙動はgroupリソースでrestartを設定した場合の挙動として正しいのでしょうか?
ご存知の方、設定方法の誤りなども含めてどなたかご教示いただけないでしょうか?

なお、設定は以下のようにしています。

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

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

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 メーリングリストの案内
Zurück zum Archiv-Index