■実験1 colocationのスコア値を-INFINITYにしてみる
まず、例のCRM設定でPacemakerを起動します。
以下のように起動するはずです。
# crm_mon -rfA
~略~
Online: [ pm01 pm02 ]
Full list of resources:
Resource Group: grp
resource1 (ocf::heartbeat:Dummy): Started pm01
resource2 (ocf::heartbeat:Dummy): Started pm01
Clone Set: clnResource
Started: [ pm01 pm02 ]
Node Attributes:
* Node pm01:
+ pm02-eth1 : up
+ pm02-eth2 : up
* Node pm02:
+ pm01-eth1 : up
+ pm01-eth2 : up
Migration summary:
* Node pm01:
* Node pm02:
次に、クラスタを稼働させたまま、以下コマンドでcolocationのスコア値を-INFINITYに書き換えます。
どちらのノードで実行してもかまいません。
# crm configure edit
→vi等のエディタが起動し、現在のCRM設定が編集可能になる。
以下部分の「inf」を「-inf」に書き換える。
colocation rsc_colocation-1 inf: grp clnResource
↓書き換え
colocation rsc_colocation-1 -inf: grp clnResource
書き換えたらエディタを保存終了する。(viの場合、Esc→:wq)
変更は即座にPacemakerに反映され、おそらく以下のようになります。
# crm_mon -rfA
~略~
Online: [ pm01 pm02 ]
Full list of resources:
Resource Group: grp
resource1 (ocf::heartbeat:Dummy): Stopped ★
resource2 (ocf::heartbeat:Dummy): Stopped ★
Clone Set: clnResource
Started: [ pm01 pm02 ]
Node Attributes:
* Node pm01:
+ pm02-eth1 : up
+ pm02-eth2 : up
* Node pm02:
+ pm01-eth1 : up
+ pm01-eth2 : up
Migration summary:
* Node pm01:
* Node pm02:
★部分でresource1,2が停止したことがわかります。
これは、grp(=resource1,2)とclnResource(=resource3)のcolocationのスコア値を-INFINITYに書き換えたことで、
制約が「grpとclnResourceは絶対に違うノードで起動する」という意味になったためです。
clnResourceはクローンのため両ノードで起動しており、そのままではこの制約を守ることはできないためgrpを停止せざるを得なかったのです。
この状態のまま、clnResourceを停止するとどうなるでしょう?
以下コマンドを実行してください。どちらのノードで実行してもかまいません。
# crm resource stop resource3
おそらく以下のようになったと思います。
# crm_mon -rfA
~略~
Online: [ pm01 pm02 ]
Full list of resources:
Resource Group: grp
resource1 (ocf::heartbeat:Dummy): Started pm01 ★
resource2 (ocf::heartbeat:Dummy): Started pm01 ★
Clone Set: clnResource
Stopped: [ resource3:0 resource3:1 ] ☆
Node Attributes:
* Node pm01:
+ pm02-eth1 : up
+ pm02-eth2 : up
* Node pm02:
+ pm01-eth1 : up
+ pm01-eth2 : up
Migration summary:
* Node pm01:
* Node pm02:
☆部分でclnResource(resource3)が停止し、★部分で停止していたresource1,2が起動したことがわかります。
clnResourceを手動で停止したことにより、colocation制約で抑止されていたresource1,2が起動可能になったためです。