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

Back to archive index

和田 伸一朗 wada.****@jp*****
2012年 2月 28日 (火) 11:00:41 JST


山内さん

こんにちは。
和田です。

いつもご回答ありがとうございます。

> 私個人の意見ですが、単純にActive/Passive構成を考えた場合、stonithは設定するべきだと思っています。
>
> ですので、no-quorum-policyはActive/Passiveの場合"ignore"に設定して、stonithを設定する構成です。
>
> ただし、2ノードの場合、分断時に落としあいが発生することを回避する為に、
> stonith-helperなどを利用することが望ましいです。
>
> stonith-helperは、日本コミュニティのpm_extrasパッケージにあります。
> また、場合によっては、vipcheckなども有効でしょう。

no-quorum-policyとstonith-helperについて十分に理解ができていないようなので
ご教示ください。

まず、no-quorum-policyですが、ignoreして分断が発生した場合でも
STONITHは実行されるのでしょうか?
no-quorum-policyではSTONITHは実行されないが、monitorの間隔で実行される
などの動作をするのでしょうか?

次にstonith-helperですが、run_standby_waitでのチェックが必要という
理解でよろしいでしょうか?
それとも、run_standby_wait自体はnoのままでも問題ないのでしょうか?
以前、run_standby_waitでactチェックし、NIC障害発生の確認をした際に
両系ともPassive状態となり復旧しなかったんですよね。。。

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

> 和田さん
>
> こんにちは、山内です。
>
>
>> こんにちは。
>> 和田です。
>>
>> 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を利用しない
>> というような構成が一般的なのでしょうか?
>
> 私個人の意見ですが、単純にActive/Passive構成を考えた場合、stonithは設定するべきだと思っています。
>
> ですので、no-quorum-policyはActive/Passiveの場合"ignore"に設定して、stonithを設定する構成です。
>
> ただし、2ノードの場合、分断時に落としあいが発生することを回避する為に、
> stonith-helperなどを利用することが望ましいです。
>
> stonith-helperは、日本コミュニティのpm_extrasパッケージにあります。
> また、場合によっては、vipcheckなども有効でしょう。
>
>
> 以上、宜しくお願いいたします。
>
>
>
>
>>
>> なお、構成は以前質問させて頂いたときと同様で、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 mailing list
>> Linux****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan
>>
>
> _______________________________________________
> Linux-ha-japan mailing list
> Linux****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan





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