最後にKVM環境(KVM )でpacemaker_remoteを使ってみます。
KVM(VirtualDomain)でのクラスタ構成
ゲスト(VirtualDomain)で起動したpacemaker_remoteと通信を行って、Pacemakerを起動するノードからの指示に従ってゲスト内でリソースを起動する構成です。
pacemakerホスト1台(sl7-01)とあらかじめpacemakerリモートをインストールしているゲスト(remote1,remote2)で構成してみます。
リソースは簡易にDummyのみとしています。
以下はstonith無の例ですが、実際にはstonith構成を組むことをお勧めします。
また、pacemakerホストでは、リソースを起動しないことがわかっている為、discovery設定も行っています。
配置先はlocationで設定しています。
primitive dummy-remote Dummy \
op start interval=0s timeout=60s on-fail="restart" \
op monitor interval=5s timeout=60s on-fail="restart" \
op stop interval=0s timeout=60s on-fail="block"
primitive guest1 VirtualDomain \
meta remote-node=remote1 \
params hypervisor="qemu:///system" config="/tmp/remote1.xml" \
op start interval=0s timeout=90s \
op monitor interval=10s timeout=60s \
op stop interval=0s timeout=90s
primitive guest2 VirtualDomain \
meta remote-node=remote2 \
params hypervisor="qemu:///system" config="/tmp/remote2.xml" \
op start interval=0s timeout=90s \
op monitor interval=10s timeout=60s \
op stop interval=0s timeout=90s
location loc1 dummy-remote \
rule 300: #uname eq remote1 \
rule 200: #uname eq remote2
location loc2 dummy-remote resource-discovery="never" \
rule -inf: #uname eq sl7-01
order rsc-order-1 0: guest1 dummy-remote
order rsc-order-2 0: guest2 dummy-remote
rsc_defaults resource-stickiness="INFINITY" \
migration-threshold="1"
property cib-bootstrap-options: \
stonith-enabled=false \
no-quorum-policy=ignore
動作について
pacemaker_remoteは、Pacemakerからの接続ホストの形で動作し、Pacemakerから接続を行います。
KVM環境ではpacemaker_remote側と通信しています。
- Pacemakerを起動して、CLIファイルを投入します。WARNINGが出ますが、問題はありません。
[root@sl7-01 ~]# crm configure load update test-remote-virtual-non-stonith.crm
WARNING: loc1: referenced node remote1 does not exist
WARNING: loc1: referenced node remote2 does not exist
- crm_monコマンドで確認します。
[root@sl7-01 ~]# crm_mon -1 -Af
Last updated: Mon Nov 2 09:40:31 2015 Last change: Mon Nov 2 09:39:40 2015 by hacluster via crmd on sl7-01
Stack: corosync
Current DC: sl7-01 (version 1.1.13-4e6f6d6) - partition WITHOUT quorum
3 nodes and 5 resources configured
Online: [ sl7-01 ]
GuestOnline: [ remote1@sl7-01 remote2@sl7-01 ]
dummy-remote (ocf::heartbeat:Dummy): Started remote1
guest1 (ocf::heartbeat:VirtualDomain): Started sl7-01
guest2 (ocf::heartbeat:VirtualDomain): Started sl7-01
Node Attributes:
* Node remote1@sl7-01:
* Node remote2@sl7-01:
* Node sl7-01:
Migration Summary:
* Node sl7-01:
* Node remote2@sl7-01:
* Node remote1@sl7-01:
- 念の為、virshコマンドでゲストを確認しておきます。
[root@sl7-01 ~]# virsh list
Id 名前 状態
----------------------------------------------------
7 remote2 実行中
9 remote1 実行中
- remote1で稼働しているリソースをremote2に移動します。
crm_resource -M -r dummy-remote -H remote-node2 -f
[root@cent7-host ~]# crm_mon -1 -Af
Last updated: Wed Oct 28 18:00:56 2015 Last change: Wed Oct 28 18:00:54 2015 by root via crm_resource on cent7-host
Stack: corosync
Current DC: cent7-host (version 1.1.13-4e6f6d6) - partition WITHOUT quorum
3 nodes and 5 resources configured
Online: [ cent7-host ]
GuestOnline: [ remote-node1@cent7-host remote-node2@cent7-host ]
container1 (ocf::heartbeat:docker): Started cent7-host
container2 (ocf::heartbeat:docker): Started cent7-host
dummy-remote (ocf::heartbeat:Dummy): Started remote-node2
Node Attributes:
* Node cent7-host:
* Node remote-node1@cent7-host:
* Node remote-node2@cent7-host:
Migration Summary:
* Node cent7-host:
* Node remote-node2@cent7-host:
* Node remote-node1@cent7-host:
crm_resource -M -r dummy-remote -H remote-node2 -f
[root@cent7-host ~]# crm_mon -1 -Af
Last updated: Wed Oct 28 18:00:56 2015 Last change: Wed Oct 28 18:00:54 2015 by root via crm_resource on cent7-host
Stack: corosync
Current DC: cent7-host (version 1.1.13-4e6f6d6) - partition WITHOUT quorum
3 nodes and 5 resources configured
Online: [ cent7-host ]
GuestOnline: [ remote-node1@cent7-host remote-node2@cent7-host ]
container1 (ocf::heartbeat:docker): Started cent7-host
container2 (ocf::heartbeat:docker): Started cent7-host
dummy-remote (ocf::heartbeat:Dummy): Started remote-node2
Node Attributes:
* Node cent7-host:
* Node remote-node1@cent7-host:
* Node remote-node2@cent7-host:
Migration Summary:
* Node cent7-host:
* Node remote-node2@cent7-host:
* Node remote-node1@cent7-host:
[root@sl7-01 ~]# crm_resource -U -r dummy-remote
- remote2でリソースのモニターエラーを起こしてみます。migration-threshold="1"なので、リソースがremote1にフェイルオーバーします。
[root@sl7-01 ~]# ssh 192.168.40.180
root@192.168.40.180's password:
Last login: Mon Nov 2 09:43:30 2015 from 192.168.40.1
[root@remote2 ~]# rm -rf /var/run/resource-agents/Dummy-dummy-remote.state
[root@remote2 ~]#
[root@sl7-01 ~]# crm_mon -1 -Af
Last updated: Mon Nov 2 09:44:24 2015 Last change: Mon Nov 2 09:42:34 2015 by root via crm_resource on sl7-01
Stack: corosync
Current DC: sl7-01 (version 1.1.13-4e6f6d6) - partition WITHOUT quorum
3 nodes and 5 resources configured
Online: [ sl7-01 ]
GuestOnline: [ remote1@sl7-01 remote2@sl7-01 ]
dummy-remote (ocf::heartbeat:Dummy): Started remote1
guest1 (ocf::heartbeat:VirtualDomain): Started sl7-01
guest2 (ocf::heartbeat:VirtualDomain): Started sl7-01
Node Attributes:
* Node remote1@sl7-01:
* Node remote2@sl7-01:
* Node sl7-01:
Migration Summary:
* Node sl7-01:
* Node remote2@sl7-01:
dummy-remote: migration-threshold=1 fail-count=1 last-failure='Mon Nov 2 09:44:06 2015'
* Node remote1@sl7-01:
Failed Actions:
* dummy-remote_monitor_5000 on remote2 'not running' (7): call=16, status=complete, exitreason='No process state file found',
last-rc-change='Mon Nov 2 09:44:06 2015', queued=0ms, exec=0ms
- 停止します
[root@sl7-01 ~]# systemctl stop pacemaker
[root@sl7-01 ~]# virsh list
Id 名前 状態
----------------------------------------------------
[root@sl7-01 ~]#