[Linux-ha-jp] 2つのprimitiveのうち片方だけをフェイルオーバさせる方法

Back to archive index

renay****@ybb***** renay****@ybb*****
2011年 6月 21日 (火) 17:01:41 JST


上畑さん

山内です。

cibを忘れていました。
以下、抜粋します。(stonithなど考慮していませんのでご注意ください)

    <resources>
      <primitive id="vip1" class="ocf" type="IPaddr2" provider="heartbeat">
          <instance_attributes id="vip1-instance_attributes">
	    <nvpair id="vip1-params1" name="nic" value="eth0" />
	    <nvpair id="vip1-params2" name="ip" value="192.168.40.77" />
	    <nvpair id="vip1-params3" name="cidr_netmask" value="24" />
	  </instance_attributes>
          <operations>
            <op name="start" interval="0" id="op-vip1-start" timeout="300s" on-fail="restart" />
            <op name="monitor" interval="10s" id="op-vip1-monitor" timeout="60s" on-fail="restart"/>
            <op name="stop" interval="0" id="op-vip1-stop" timeout="300s" on-fail="block"/>
          </operations>
      </primitive>
      <primitive id="vip2" class="ocf" type="IPaddr2" provider="heartbeat">
          <instance_attributes id="vip2-instance_attributes">
	    <nvpair id="vip2-params1" name="nic" value="eth0" />
	    <nvpair id="vip2-params2" name="ip" value="192.168.40.78" />
	    <nvpair id="vip2-params3" name="cidr_netmask" value="24" />
	  </instance_attributes>
          <operations>
            <op name="start" interval="0" id="op-vip2-start" timeout="300s" on-fail="restart" />
            <op name="monitor" interval="10s" id="op-vip2-monitor" timeout="60s" on-fail="restart"/>
            <op name="stop" interval="0" id="op-vip2-stop" timeout="300s" on-fail="block"/>
          </operations>
      </primitive>
      <clone id="clnApache">
        <primitive class="ocf" id="clnApache-instance" provider="heartbeat" type="apache">
          <instance_attributes id="clnApache-instance_attributes">
            <nvpair id="clnApache-params2" name="configfile" value="/etc/httpd/conf/httpd.conf" />
            <nvpair id="clnApache-params3" name="port" value="80" />
            <nvpair id="clnApache-params4" name="statusurl" value="http://localhost/" />
            <nvpair id="clnApache-params5" name="httpd" value="/usr/sbin/httpd" />
            <nvpair id="clnApache-params6" name="testregex" value="*" />
          </instance_attributes>
          <operations>
            <op id="clnApache-start" interval="0" name="start" on-fail="restart" timeout="60s"/>
            <op id="clnApache-monitor" interval="10s" name="monitor" on-fail="restart" timeout="60s"/>
            <op id="clnApache-stop" interval="0" name="stop" on-fail="block" timeout="60s"/>
          </operations>
        </primitive>
      </clone>
    </resources>
    <constraints>
      <rsc_location id="rulvip1_location" rsc="vip1">
        <rule id="rule_vip_1_rule1" score="200">
          <expression attribute="#uname" id="expression.vip_1_rule1" operation="eq" value="srv01"/>
        </rule>
        <rule id="rule_vip_1_rule2" score="100">
          <expression attribute="#uname" id="expression.vip_1_rule2" operation="eq" value="srv02"/>
        </rule>
      </rsc_location>
      <rsc_location id="rulevip2_location" rsc="vip2">
        <rule id="rule_vip_2_rule1" score="100">
          <expression attribute="#uname" id="expression.vip_2_rule1" operation="eq" value="srv01"/>
        </rule>
        <rule id="rule_vip_2_rule2" score="200">
          <expression attribute="#uname" id="expression.vip_2_rule2" operation="eq" value="srv02"/>
        </rule>
      </rsc_location>
      <rsc_colocation id="rsc_colocation-vip1" rsc="vip1" score="INFINITY" with-rsc="clnApache"/>
      <rsc_colocation id="rsc_colocation-vip2" rsc="vip2" score="INFINITY" with-rsc="clnApache"/>
      <rsc_order first="clnApache" id="rsc_order-clnApache1" score="0" symmetrical="true" then="vip1"/>
      <rsc_order first="clnApache" id="rsc_order-clnApache2" score="0" symmetrical="true" then="vip2"/>
    </constraints>

以上です。

--- On Tue, 2011/6/21, renay****@ybb***** <renay****@ybb*****> wrote:

> 上畑さん
> 
> こんにちは、メイトリックスの山内です。
> 
> Failback設定は考慮していませんが、VIPを引き継いで両apcheがサービスを継続するということなので、基本的に両apacheは同じ設定が動いているということでいけば、
> 
> 1)apacheをclone
> 2)両vipをprimitive
> 
> で設定可能と思います。
> #ただし、リソースの起動順は、apache->vipの順で制約と依存をかけています。
> #pingdの依存もかけていません。
> 
> ●起動後
> ============
> Last updated: Wed Jun 22 01:42:07 2011
> Stack: Heartbeat
> Current DC: srv02 (dc6ef1be-dcd0-4fdb-af8b-9a46a4b1428d) - partition with quorum
> Version: 1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b
> 2 Nodes configured, unknown expected votes
> 3 Resources configured.
> ============
> 
> Online: [ srv01 srv02 ]
> 
>  vip1   (ocf::heartbeat:IPaddr2):       Started srv01
>  vip2   (ocf::heartbeat:IPaddr2):       Started srv02
>  Clone Set: clnApache
>      Started: [ srv01 srv02 ]
> 
> ●srv01のapacheをapache_ctlで停止してモニターエラーからFO後
> ============
> Last updated: Wed Jun 22 01:42:34 2011
> Stack: Heartbeat
> Current DC: srv02 (dc6ef1be-dcd0-4fdb-af8b-9a46a4b1428d) - partition with quorum
> Version: 1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b
> 2 Nodes configured, unknown expected votes
> 3 Resources configured.
> ============
> 
> Online: [ srv01 srv02 ]
> 
>  vip1   (ocf::heartbeat:IPaddr2):       Started srv02
>  vip2   (ocf::heartbeat:IPaddr2):       Started srv02
>  Clone Set: clnApache
>      Started: [ srv02 ]
>      Stopped: [ clnApache-instance:0 ]
> 
> Migration summary:
> * Node srv02: 
> * Node srv01: 
>    clnApache-instance:0: migration-threshold=1 fail-count=1
> 
> Failed actions:
>     clnApache-instance:0_monitor_10000 (node=srv01, call=6, rc=7, status=complete): not running
> 
> ●srv01をモニターエラーを起こさずに停止してFO
> ============
> Last updated: Wed Jun 22 01:48:28 2011
> Stack: Heartbeat
> Current DC: srv02 (dc6ef1be-dcd0-4fdb-af8b-9a46a4b1428d) - partition with quorum
> Version: 1.0.9-74392a28b7f31d7ddc86689598bd23114f58978b
> 2 Nodes configured, unknown expected votes
> 3 Resources configured.
> ============
> 
> Online: [ srv02 ]
> OFFLINE: [ srv01 ]
> 
>  vip1   (ocf::heartbeat:IPaddr2):       Started srv02
>  vip2   (ocf::heartbeat:IPaddr2):       Started srv02
>  Clone Set: clnApache
>      Started: [ srv02 ]
>      Stopped: [ clnApache-instance:0 ]
> 
> Migration summary:
> * Node srv02: 
> 
> #上記のように動いてはいますが、十分な動作確認が必要かと思います。
> 
> 
> その他、vipとApacheをそれぞれpritiveに設定してみる方法、vipとApacheをgroupのままでcolocated=falseに設定してみる方法などあるかも知れません。
> 
> また、確認したバージョンは少し古いバージョンで、色々とclone周りなどにも問題がある為、最新のバージョンの組み合わせを利用されることを望みます。
> 
> 以上、よろしく御願いいたします。
> 
> 
> 
> 
> --- On Sat, 2011/6/18, uehat****@first***** <uehat****@first*****> wrote:
> 
> > 
> > すみません。
> > 
> > 2台のHA構成で片方にApacheとVIP、もう片方にもApacheとVIPが動いている場合に
> > VIPだけフェイルオーバーさせる事はできるのでしょうか
> > (ただしApacheの停止時にもVIPをフェイルオーバさせる)
> > ※()の中の条件がなければ Apacheをprimitiveに設定しなければいいだけなので
> > す
> > が。。。
> > 
> > 一応下の設定で、ほぼ上記の動作が実現可能なのですが、フェイルオーバー時に
> > もう片方のApacheが起動しているノードにApacheとVIPの両方が移動するため、
> > Apacheに関しては、fail-countが発生してしまいます。
> > 
> > また、フェイルバック時に一旦、フェイルオーバ側のApacheが停止してからフェ
> > イルバックしてしまう。
> > 
> > ----------------------------------------------
> > # STONITHの無効 
> > property $id="cib-bootstrap-options" stonith-enabled="false" no-quorum-policy="ignore" 
> > 
> > # Fail-backは有効に
> > #rsc_defaults $id="rsc-options" resource-stickiness="-INFINITY" 
> > 
> > # Apache(node1)設定 
> > primitive apache_node1 ocf:heartbeat:apache \ 
> > params configfile="/etc/httpd/conf/httpd.conf" port="80" statusurl="http://localhost/" httpd="/usr/sbin/httpd" testregex="*" \ 
> > 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="block" 
> > 
> > # Apache(node2)設定 
> > primitive apache_node2 ocf:heartbeat:apache \ 
> > params configfile="/etc/httpd/conf/httpd.conf" port="80" statusurl="http://localhost/" httpd="/usr/sbin/httpd" testregex="*" \ 
> > 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="block" 
> > 
> > # VIP(node1-vip)設定 
> > primitive vip1 ocf:heartbeat:IPaddr2 \ 
> > params ip="192.168.0.101" nic="eth0" 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="block" 
> > 
> > # VIP(node2-vip)設定 
> > primitive vip2 ocf:heartbeat:IPaddr2 \ 
> > params ip="192.168.0.102" nic="eth0" 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="block" 
> > 
> > # apacheとvipをグループ化する(Apache -> Vip) 
> > group Group_rs1 apache_node1 vip1 
> > group Group_rs2 apache_node2 vip2 
> > 
> > # Gateway-PING監視 
> > primitive ping_gw ocf:pacemaker:pingd \ 
> > params name="default_ping_set_gw" host_list="192.168.0.254" dampen="0" \ 
> > op start interval="0" timeout="90s" on-fail="restart" \ 
> > op monitor interval="10s" timeout="60s" on-fail="restart" \ 
> > op stop interval="0" timeout="100s" on-fail="block" 
> > 
> > # NODE全てでPING監視 
> > clone Clone_ping ping_gw \ 
> > meta master-max="1" master-node-max="1" \ 
> > clone-max="2" clone-node-max="1" \ 
> > notify="true" 
> > 
> > # pingが切れたときにGroup_rs1を移動 
> > location Location_vip1 Group_rs1 \ 
> > rule 200: #uname eq node1 \ 
> > rule 100: #uname eq node2 \ 
> > rule -inf: default_ping_set_gw eq 0 
> > 
> > # pingが切れたときにGroup_rs2を移動 
> > location Location_vip2 Group_rs2 \ 
> > rule 200: #uname eq node2 \ 
> > rule 100: #uname eq node1 \ 
> > rule -inf: default_ping_set_gw eq 0
> > ----------------------------------------------
> > 
> > _______________________________________________
> > 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