[Linux-ha-jp] timeout値とdeadtime値の設定に関して。

Back to archive index

renay****@ybb***** renay****@ybb*****
2012年 12月 26日 (水) 15:01:10 JST


黄さん

こんにちは、山内です。

参考までに手元にあった2.1.4で使っていたstonith有りの設定のサンプルcib.xmlを開示します。
#ただし、動作確認したわけではありませんので、修正の必要があるかも知れません。

(サンプルの構成)
ACT/STB構成(Host01がACT,Host02がSTB)
リソースはgrpDummyで構成
stonithにはexternal/ssh(heartbeatに存在するstonithモジュール)を利用
リソースgrpDummyのstopで故障が発生するか(stopのon_fail=fence)、クラスタ構成中に
相手ノードがdead検出されるとstonithが発動します。
#ただし、この設定のままでは、相打ちが発生する可能性がありますので、Linux-HA JapanでHeartbeat用に開示されている拡張リソースエージェント・プラグイン (hb-extras)
に含まれるstonith-wrapper(http://sourceforge.jp/projects/linux-ha/releases/50887/note)を利用して相打ちを回避する必要があります。

(サンプルcib.xml)
<cib admin_epoch="0" epoch="0" num_updates="0">
  <configuration>
    <crm_config>
      <cluster_property_set id="cib-bootstrap-options">
        <attributes>
          <nvpair id="cib-bootstrap-options-no-quorum-policy" name="no-quorum-policy" value="ignore"/>
          <nvpair id="cib-bootstrap-options-stonith-enabled" name="stonith-enabled" value="true"/>
          <nvpair id="cib-bootstrap-options-default-resource-stickiness" name="default-resource-stickiness" value="INFINITY"/>
          <nvpair id="cib-bootstrap-options-default-resource-failure-stickiness" name="default-resource-failure-stickiness" value="-INFINITY"/>
          <nvpair id="cib-bootstrap-options-default-action-timeout" name="default-action-timeout" value="120s"/>
          <nvpair id="cib-bootstrap-options-startup-fencing" name="startup-fencing" value="true"/>
        </attributes>
      </cluster_property_set>
    </crm_config>
    <nodes/>
    <resources>
      <group id="grpDummy">
        <instance_attributes id="grpDummy-instance_attributes">
          <attributes/>
        </instance_attributes>
        <primitive class="ocf" id="prmDummy" provider="heartbeat" type="Dummy">
          <instance_attributes id="prmDummy-instance_attributes">
            <attributes/>
          </instance_attributes>
          <operations>
            <op id="prmDummy-stop" name="stop" on_fail="fence" timeout="60s"/>
            <op id="prmDummy-monitor" interval="10s" name="monitor" on_fail="restart" timeout="90s"/>
            <op id="prmDummy-start" name="start" on_fail="restart" prereq="fencing" timeout="300s"/>
          </operations>
        </primitive>
      </group>
      <primitive class="stonith" id="prmStonithN1" provider="heartbeat" resource_stickiness="INFINITY" type="external/ssh">
        <instance_attributes id="prmStonithN1-instance_attributes">
          <attributes>
            <nvpair id="prmStonithN1-instance_attributes-hostlist" name="hostlist" value="Host01"/>
          </attributes>
        </instance_attributes>
        <operations>
          <op id="prmStonithN1-stop" name="stop" timeout="90s"/>
          <op id="prmStonithN1-monitor" interval="10s" name="monitor" timeout="90s"/>
          <op id="prmStonithN1-start" name="start" prereq="nothing" timeout="90s"/>
        </operations>
      </primitive>
      <primitive class="stonith" id="prmStonithN2" provider="heartbeat" resource_stickiness="INFINITY" type="external/ssh">
        <instance_attributes id="prmStonithN2-instance_attributes">
          <attributes>
            <nvpair id="prmStonithN2-instance_attributes-hostlist" name="hostlist" value="Host02"/>
          </attributes>
        </instance_attributes>
        <operations>
          <op id="prmStonithN2-stop" name="stop" timeout="90s"/>
          <op id="prmStonithN2-monitor" interval="10s" name="monitor" timeout="90s"/>
          <op id="prmStonithN2-start" name="start" prereq="nothing" timeout="90s"/>
        </operations>
      </primitive>
    </resources>
    <constraints>
      <rsc_location id="grpDummy-node1" rsc="grpDummy">
        <rule id="grpDummy-node1-rule:1" score="200">
          <expression attribute="#uname" id="grpDummy-node1-rule:1-expression:1" operation="eq" value="Host01"/>
        </rule>
      </rsc_location>
      <rsc_location id="grpDummy-node2" rsc="grpDummy">
        <rule id="grpDummy-node2-rule:1" score="100">
          <expression attribute="#uname" id="grpDummy-node2-rule:1-expression:1" operation="eq" value="Host02"/>
        </rule>
      </rsc_location>
      <rsc_location id="prmStonithN1-node6" rsc="prmStonithN1">
        <rule id="prmStonithN1-node6-rule:1" score="-INFINITY">
          <expression attribute="#uname" id="prmStonithN1-node6-rule:1-expression:1" operation="eq" value="Host01"/>
        </rule>
      </rsc_location>
      <rsc_location id="prmStonithN2-node7" rsc="prmStonithN2">
        <rule id="prmStonithN2-node7-rule:1" score="-INFINITY">
          <expression attribute="#uname" id="prmStonithN2-node7-rule:1-expression:1" operation="eq" value="Host02"/>
        </rule>
      </rsc_location>
    </constraints>
  </configuration>
  <status/>
</cib>



--- On Wed, 2012/12/26, renay****@ybb***** <renay****@ybb*****> wrote:

> 黄さん
> 
> こんにちは、山内です。
> 
> 2.1.3の頃だと、stonithについては、あまり良い例がみあたらないのですが、
> 
> http://linux-ha.org/ja/ExternalStonithPlugins_ja
> 
> あたりなど参考にされると雰囲気はわかるかも知れません。
> 
> 詳細な設定は、本家のMLや日本語のMLの過去の投稿などから設定で参考に出来るものがあると思います。
> 
> 以上です。
> 
> --- On Wed, 2012/12/26, renay****@ybb***** <renay****@ybb*****> wrote:
> 
> > 黄さん
> > 
> > こんにちは、山内です。
> > 
> > まず、timeout(30s)とdeadtime(60s)の扱いが異なるので優先という意味では違うと思います。
> > 
> > ①timeout(30s)の扱い
> >    monitorのoperationを例にして書きますが、これは、設定されているinterval毎にmonitor処理を実行して、30sの応答がない場合に発生します。
> > 
> > ②deadtime(60s)の扱い
> >   クラスタ動作中に常にノード間でのHeartbeat通信を実行しているのですが、この通信が60s間途切れた場合に発生します。
> > 
> > 上記の通りで扱いが異なります。
> > ですが、どちらの場合でも、故障後(stopなどの設定によりますが)に、該当ノードでリソースが起動していた場合には、通常フェイルオーバー(待機系へのリソース移動)の動作を始めます。
> > 
> > > 今回、障害が起きたサーバはtimeout = 60で設定されていましたが、Heartbeatの 誤動作のため、 DB Connection failが起きました。
> > > timeout = 60も設定されているのに、 Heartbeatは現用系のeth1がdeadしたと判断して、 failoverをすすめ、結局、Split-Brain状態になりました。
> > > 
> > > Split-Brain状態を防ぐ根本的な解決策はあるんでしょうか?
> > 
> > 上記の状況から判断すると、「eth1がdead」となっているので、こちらは、deadtimeが有効になってフェイルオーバーをしたことになります。
> > #先の②が発生して、①は発生していない。
> > #どちらも設定によっては、フェイルオーバーは起きますので、正しい動作をいえば正しい動作です。
> > 
> > 誤動作で「eth1がdead」となってフェイルオーバーが発生したのであれば、その原因を回避することですが、
> > Split-Brainを回避するということであれば、stonithの利用をお勧めします。
> > 
> > stonithを設定することによって、「eth1がdead」し、リソース起動しているノードがdeadと判定された後、フェイルオーバー前に待機系ノードがまずは、リソース起動しているノードをリセット(電源断など)することによって、リソースを解放することが出来ます。
> > 
> > 
> > お使いのHeartbeatは2.1.3とかなり古いバージョンですね。
> > 現状、Heartbeatの環境をお使いになるのであれば、バグや動作不具合などを回避する為にも、Heartbeat+Pacemakerでのクラスタ構築をお勧めします。
> > 
> > #DRBDのあたりの設定については、詳しくありませんので、他の方からのコメントにゆだねます。
> > 
> > 以上です。
> > 
> > 
> > --- On Wed, 2012/12/26, 황세원 <swhwa****@linux*****> wrote:
> > 
> > > 山内さん、
> > > おはようございます。
> > > 
> > > 黄です。
> > > メールありがとうございます。
> > > 
> > > また、質問がありますが、
> > > もし、timeout = 30    deatime = 60だと設定されていると、障害が起こったと仮定したら、どちらを優先すべきですか?(例;30秒後にfailover or 60秒後にfailover)
> > > 
> > > 今回、障害が起きたサーバはtimeout = 60で設定されていましたが、Heartbeatの 誤動作のため、 DB Connection failが起きました。
> > > timeout = 60も設定されているのに、 Heartbeatは現用系のeth1がdeadしたと判断して、 failoverをすすめ、結局、Split-Brain状態になりました。
> > > 
> > > Split-Brain状態を防ぐ根本的な解決策はあるんでしょうか?
> > > 
> > > システム情報は以下になります。
> > > 
> > > システム情報
> > > OS Version:Red Hat Enterprise Linux Server release 5.4 (Tikanga)
> > > Kernel version:2.6.18-194.el5xen
> > > Memory:8GB
> > > 
> > > Software情報
> > > MySQLバージョン;MySQL-community 5.5.25a
> > > DRBD バージョン:8.3.8.1
> > > Heartbeatバージョン:2.1.3
> > > 
> > > 構成
> > > xxdb1 (Active) , xxdb2 (Standby)
> > > DRBD : /dev/drbd0 /MYSQL_DATA
> > > MySQL
> > > VIP :  172.18.79.26 / Heartbeat VIP : 200.200.200.151
> > > 
> > > 以上、教えをお願いいたします。
> > > 黄世元
> > > 
> > > 
> > > ==============================
> > > (주)리눅스데이타시스템
> > > 컨설팅사업부 DB팀 과장 황세원
> > > Mobile. 010-6718-1196
> > > Tel. 02-6207-1159,1160
> > > Fax. 02-6207-1161
> > > E-mail. swhwa****@linux*****
> > > 서울시 강남구 삼성동 166-5 홍선빌딩 2F
> > > 우:135-090
> > > 
> > > -----Original Message-----
> > > From: linux****@lists***** [mailto:linux****@lists*****] On Behalf Of renay****@ybb*****
> > > Sent: Wednesday, December 19, 2012 9:10 AM
> > > To: linux****@lists*****
> > > Subject: Re: [Linux-ha-jp] timeout値とdeadtime値の設定に関して。
> > > 
> > > 黄さん
> > > 
> > > こんにちは、山内です。
> > > 
> > > > timeout値とdeadtime値の中で、優先順位が高い設定値はどちでしょうか?
> > > > 
> > > > timeout値 とdeadtime値の 相関関係に関して、教えていただけましょうか?
> > > 
> > > cibの中のtimeoutが各リソースのop設定のtimeoutのことを言っていると仮定して
> > > 回答します。
> > > 
> > > timeoutとdeadtimeの値に関係はありません。
> > > 
> > > deadtimeは、ノード間のHeartbeat通信が切れた後、そのノードがクラスタ構成からいなくなったことを判断する値になります。(ノード離脱判定値)
> > > 
> > > timeoutは、リソースの操作(start,monitor,stop)を実行してから、その応答がない場合のタイムアウト判定値になります。(リソース操作判定値)
> > > 
> > > 以上です。
> > > 
> > > 
> > > 
> > > --- On Tue, 2012/12/18, 황세원 <swhwa****@linux*****> wrote:
> > > 
> > > > 
> > > > 
> > > > 
> > > > お疲れ様です。
> > > > 
> > > > 黄です。
> > > > 
> > > >   
> > > > 
> > > > 現在、運用している、システムの環境は以下になります。
> > > > 
> > > >   
> > > > 
> > > > システム情報
> > > > 
> > > > OS Version:Red Hat Enterprise Linux Server release 5.4 (Tikanga)
> > > > 
> > > > Kernel version:2.6.18-194.el5xen
> > > > 
> > > > Memory:8GB
> > > > 
> > > >   
> > > > 
> > > > Software情報
> > > > 
> > > > MySQLバージョン;MySQL-community 5.5.25a
> > > > 
> > > > DRBD バージョン:8.3.8.1
> > > > 
> > > > Heartbeatバージョン:2.1.3
> > > > 
> > > >   
> > > > 
> > > > 構成
> > > > 
> > > > xxdb1 (Active) , xxdb2 (Standby)
> > > > 
> > > > DRBD : /dev/drbd0 /MYSQL_DATA
> > > > 
> > > > MySQL
> > > > 
> > > > VIP :  172.18.79.26 / Heartbeat VIP : 200.200.200.151
> > > > 
> > > >   
> > > > 
> > > > Heartbeatのcib.xmlファイルを見ると、timeoutという設定値があります。
> > > > 
> > > > Ha.cfを見るとdeadtime値があります。
> > > > 
> > > > timeout値とdeadtime値の中で、優先順位が高い設定値はどちでしょうか?
> > > > 
> > > > timeout値 とdeadtime値の 相関関係に関して、教えていただけましょうか?
> > > > 
> > > >   
> > > > 
> > > > 以上、よろしくお願いいたします。
> > > > 
> > > > 黄世元
> > > > 
> > > >   
> > > > 
> > > >   
> > > > 
> > > > ==============================
> > > > 
> > > > (주)리눅스데이타시스템
> > > > 
> > > > 컨설팅사업부 DB팀 과장 황세원
> > > > 
> > > > Mobile. 010-6718-1196
> > > > 
> > > > Tel. 02-6207-1159,1160
> > > > 
> > > > Fax. 02-6207-1161
> > > > 
> > > > E-mail. swhwa****@linux*****
> > > > 
> > > > 서울시 강남구 삼성동 166-5 홍선빌딩 2F
> > > > 
> > > > 우:135-090
> > > > 
> > > >   
> > > 
> > > _______________________________________________
> > > 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 mailing list
> Linux****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/linux-ha-japan
> 





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