Help us understand the problem. What is going on with this article?

pacemaker_remoteについて(その1) ベアメタル環境

More than 3 years have passed since last update.

pacemaker_remoteとは

Pacemaker1.1系で盛り込まれている機能でPacemaker本体で、他ノード(実マシン、仮想マシン、コンテナ)上のリソースを制御する機能です。
他ノード側には、Pacemaker本体プロセスは必要なく、pacemaker_remoteプロセスとresource-agentのみが(当然、起動するリソースの本体は必要:apacheや、postgresSQL)必要になります。

現時点では、まだまだ不安定な部分も有り不具合もありますが、起動・監視・停止の一連の動作は制限付きですが、可能です。
(リリース版はかなり不安定であり、問題はありますが、ある程度動作可能なのは、Pacemakerの開発中のトップの最新版です)

ベアメタルでのpacemaker_remoteでのクラスタ構成

実環境内で起動したpacemaker_remoteと通信を行って、Pacemakerを起動するノードからの指示に従って実環境内でリソースを起動する構成です。
この場合も先に書いた通り、実環境内に必要なのは、pacemaker_remoteとresource-agent(当然、起動するリソースの本体は必要:apacheや、postgresSQL)です。
本来は、ホスト複数台でPacemakerのクラスタを構成する事になると思いますが、まずは、pacemakerホスト1台(cent7-host)とベアメタルノード2台(cent7-remote1,cent7-remote2)を想定して、仮想マシン3台で構成してみます。
リソースは簡易にDummyのみとしています。
以下はstonith無の例ですが、実際にはstonith構成を組むことをお勧めします。
また、pacemakerホストでは、リソースを起動しないことがわかっている為、以下で説明しているdiscovery設定も行っています。
* http://qiita.com/HideoYamauchi/items/bf97069072a8ffcf807e

property no-quorum-policy="ignore" \
  stonith-enabled="false" \
  startup-fencing="false"

rsc_defaults resource-stickiness="INFINITY" \
  migration-threshold="INFINITY"

primitive remote1 ocf:pacemaker:remote \
  params \
        server="cent7-remote1" \
  op monitor interval=3 timeout=15

primitive remote2 ocf:pacemaker:remote \
  params \
        server="cent7-remote2" \
  op monitor interval=3 timeout=15

primitive dummy-remote Dummy \
  op start interval=0s timeout=60s \
  op monitor interval=30s timeout=60s \
  op stop interval=0s timeout=60s

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 cent7-host

動作について

pacemaker_remoteは、Pacemakerからの接続ホストの形で動作し、Pacemakerから接続を行います。
また、pacemaker_remote自体は、Pacemaker本体のlrmdプロセスの拡張として実装されていますので、単体で動作するlrmdプロセスという認識で良いと思います。
pacemaker_remoteの動作するノード側(実マシン、仮想マシン、コンテナ)でも、crm_monなどのコマンドは実行可能で、これは、Proxy機能を経由して、Pacemakerノードに要求が送られて処理される実装になっています。

remote構成.png

1) Paemaker/corosync環境を構築します。

  • 本来remoteで接続するノードにはcrosoyncなどは不要ですが、今回は綺麗にいれてあります。
  • また、現時点の最新版Pacemake:pacemaker-4e6f6d6e62d9418ce590a6f7471e96479cb0fdc8を入れています。
  • 今回も簡易な構成の為、firewalldは停止してあります。

2) ホスト側でキーを作成します。(/etc/pacemakerが無い場合はmkdirしてください)

dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4096 count=1

3) 作成したキーをリモートへコピーします。(/etc/pacemakerが無い場合はmkdirしてからコピーしてください)

4) remoteノードで先にpacemaker_remoteを起動して、hostノードでpacemakerを起動します。

[root@cent7-remote1 ~]# systemctl start pacemaker_remote

[root@cent7-remote2 ~]# systemctl start pacemaker_remote

[root@cent7-host ~]# systemctl start pacemaker

5) CLIファイルを投入します

[root@cent7-host ~]# crm configure load update bare.crm 
WARNING: loc1: referenced node remote1 does not exist
WARNING: loc1: referenced node remote2 does not exist
WARNING: remote1: default timeout 20s for start is smaller than the advised 60
WARNING: remote1: default timeout 20s for stop is smaller than the advised 60
WARNING: remote1: specified timeout 15 for monitor is smaller than the advised 30
WARNING: remote2: default timeout 20s for start is smaller than the advised 60
WARNING: remote2: default timeout 20s for stop is smaller than the advised 60
WARNING: remote2: specified timeout 15 for monitor is smaller than the advised 30


6) crm_monでremoteでリソースが起動していることが確認出来ます。

[root@cent7-host ~]# crm_mon -1 -Af
..
Stack: corosync
Current DC: cent7-host (version 1.1.13-4e6f6d6) - partition WITHOUT quorum
3 nodes and 3 resources configured

Online: [ cent7-host ]
RemoteOnline: [ remote1 remote2 ]

 dummy-remote   (ocf::heartbeat:Dummy): Started remote1
 remote1        (ocf::pacemaker:remote):        Started cent7-host
 remote2        (ocf::pacemaker:remote):        Started cent7-host

Node Attributes:
* Node cent7-host:
* Node remote1:
* Node remote2:

Migration Summary:
* Node cent7-host:
* Node remote1:
* Node remote2:

7)念の為、各ノードでプロセスを確認してみます。リモートノードでは、pacemaker_remotedのみが動いていることがわかります。

[root@cent7-host ~]# ps -ef |grep pace
root     15839     1  0 20:46 ?        00:00:00 /usr/sbin/pacemakerd -f
haclust+ 15840 15839  0 20:46 ?        00:00:00 /usr/libexec/pacemaker/cib
root     15841 15839  0 20:46 ?        00:00:00 /usr/libexec/pacemaker/stonithd
root     15842 15839  0 20:46 ?        00:00:00 /usr/libexec/pacemaker/lrmd
haclust+ 15843 15839  0 20:46 ?        00:00:00 /usr/libexec/pacemaker/attrd
haclust+ 15844 15839  0 20:46 ?        00:00:00 /usr/libexec/pacemaker/pengine
haclust+ 15845 15839  0 20:46 ?        00:00:00 /usr/libexec/pacemaker/crmd
root     15907 12074  0 20:48 pts/0    00:00:00 grep --color=auto pace
[root@cent7-host ~]# ps -ef |grep coro
root     14494     1  1 20:09 ?        00:00:24 corosync
root     15909 12074  0 20:48 pts/0    00:00:00 grep --color=auto coro

[root@cent7-remote1 ~]# ps -ef |grep pace
root      2248     1  0 20:46 ?        00:00:00 /usr/sbin/pacemaker_remoted
root      2304  2190  0 20:48 pts/0    00:00:00 grep --color=auto pace
[root@cent7-remote1 ~]# ps -ef |grep coro
root      2306  2190  0 20:48 pts/0    00:00:00 grep --color=auto coro
[root@cent7-remote2 ~]# ps -ef |grep pace
root      7037     1  0 20:46 ?        00:00:00 /usr/sbin/pacemaker_remoted
root      7063  1088  0 20:48 pts/0    00:00:00 grep --color=auto pace
[root@cent7-remote2 ~]# ps -ef |grep coro
root      7065  1088  0 20:48 pts/0    00:00:00 grep --color=auto coro

8)リモートノードでリソースを移動させてみます

[root@cent7-host ~]# crm_resource -M -r  dummy-remote -N remote2 -f
WARNING: Creating rsc_location constraint 'cli-ban-dummy-remote-on-remote1' with a score of -INFINITY for resource dummy-remote on remote1.
        This will prevent dummy-remote from running on remote1 until the constraint is removed using the 'crm_resource --clear' command or manually with cibadmin
        This will be the case even if remote1 is the last node in the cluster
        This message can be disabled with --quiet

[root@cent7-host ~]# crm_mon -1 -Af
....
Stack: corosync
Current DC: cent7-host (version 1.1.13-4e6f6d6) - partition WITHOUT quorum
3 nodes and 3 resources configured

Online: [ cent7-host ]
RemoteOnline: [ remote1 remote2 ]

 dummy-remote   (ocf::heartbeat:Dummy): Started remote2
 remote1        (ocf::pacemaker:remote):        Started cent7-host
 remote2        (ocf::pacemaker:remote):        Started cent7-host

Node Attributes:
* Node cent7-host:
* Node remote1:
* Node remote2:

Migration Summary:
* Node cent7-host:
* Node remote1:
* Node remote2:

注意点

pacemaker_remoteとPacemaker本体の同居は出来きません。
* pacemakre_remoteを起動して、Pacemaker本体の起動は出来ないという意味。

リンク(詳細が本家のリンク先に記載してあります)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away