[Linux-ha-jp] auto balancing of resources

Back to archive index

OKADA Satoshi okada****@oss*****
2008年 12月 4日 (木) 12:37:59 JST


土屋さん

こんにちは。岡田です。


土屋さんの希望されている動作にぴったり当てはまる
かどうか分かりませんが、以下のような設定を考えてみました。

・default_resource_stickinessは0とする。
 ノードが復帰してきた時、そのノードにリソースを戻す。

・リソースに対して配置制約を付ける。
 各リソース対して、基本的に動作するノードを特定する
 ことによって、故障ノードの復帰時にもともと、その
 ノードで動いていたリソースを戻す。
 ※初期起動時に適当にリソースを割り振ってくれることは
  なくなってしまいますが。

---
     <constraints>
       <rsc_location id="rsc_location_A" rsc="resourceA">
         <rule id="prefered_rsc_location_A" score="100">
           <expression attribute="#uname" id="prefered_location_A_expr" operation="eq" value="node1"/>
         </rule>
       </rsc_location>

  <!-- resourceB 〜 resourceEも同様に設定 -->

       <rsc_location id="rsc_location_F" rsc="resourceF">
         <rule id="prefered_rsc_location_F" score="100">
           <expression attribute="#uname" id="prefered_location_F_expr" operation="eq" value="node3"/>
         </rule>
       </rsc_location>
     </constraints>
---

いかがでしょうか?


TSUCHIYA Masatoshi さんは書きました:
> 初めまして,土屋と申します.
> 
> Heartbeat2 で,負荷分散クラスタを実現しようとしているのですが,うまくい
> かずに困っています.
> 
> Heartbeat2 の環境で,node が3つ,resource が6個定義されていて,それぞれの
> resource は全く独立で,かつ,どの node でも動作するという状況を例にとり
> ます.正常運用時は,
> 
>     node1 => resourceA, resourceB
>     node2 => resourceC, resourceD
>     node3 => resourceE, resourceF
> 
> というように,均等に resource を振り分けておき,故障時には,
> 
>     node1 => resourceA, resourceB, resourceE
>     node2 => resourceC, resourceD, resourceF
>     node3 => (故障)
> 
> というように振り分け直して欲しいわけです.運用開始当初は,希望通りに振り
> 分けられて走っていたのですが,ある時,node3 が故障したところ,node3 を復
> 旧させても,元に戻らなくなりました.
> 
>     node1 => resourceA, resourceB, resourceE
>     node2 => resourceC, resourceD, resourceF
>     node3 => (復旧したにも関わらず,resource が割り当てられない)
> 
> ここで,node2 を停止させてみると,
> 
>     node1 => resourceA, resourceB, resourceE
>     node2 => (停止)
>     node3 => resourceC, resourceD, resourceF
> 
> となり,node2 を再開させてみると,
> 
>     node1 => resourceA, resourceB, resourceE
>     node2 => (再開させてみても,resource が割り当てられない)
>     node3 => resourceC, resourceD, resourceF
> 
> となっています.
> 
> constraints は指定せずに,以下の設定のみを行ってあります.
> 
>      <crm_config>
>         <cluster_property_set score="10" id="default_cluster_properties">
>          <attributes>
>            <nvpair id="symmetric_cluster" name="symmetric_cluster" value="true"/>
>            <nvpair id="default_resource_stickiness" name="default_resource_stickiness" value="100"/>
>          </attributes>
>        </cluster_property_set>
>      </crm_config>
> 
> default_resource_stickiness == 0 の状態で運用すると,正常運用状態から
> node3 が故障した場合に,
> 
>     node1 => resourceA, resourceB, resourceC
>     node2 => resourceD, resourceE, resourceF
>     node3 => (故障)
> 
> となり,無駄な resource の移動(resourceC が node2 から node1 に)が生じて
> しまうため,小さい値を指定しています.
> 
> という状況なのですが,どのように設定すれば良いか,お知恵を拝借できないで
> しょうか.
> 


-- 

NTTオープンソースソフトウェアセンタ
岡田 敏 <OKADA Satoshi>





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