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>