Linuxのクラスタリングで利用されるPacemakerについてまとめました。インストールや設定、動作の確認はCentOS 7で実施していますので、Debian系(Ubuntuなど)ではインストール方法が異なります。
尚、SELinuxはdisabledに設定し、firewalldは停止してあります。
より実践的な内容については以下の記事で解説しています。
[kanren id=”5132″]
タップできる目次
用語と役割
リソース
Pacemakerでクラスタ化する対象のアプリケーションやIPアドレスをリソースといいます。
リソースエージェント(RA)
Pacemakerはリソースエージョントを介してリソースを起動、停止、監視します。

Pacemakerは主系ノードで障害を検知すると従系ノードのリソースを起動します。
PacemakerとHeartbeat
Pacemakerの役割は、故障発生を検知して待機系にフェイルオーバーさせる事です。PacemakerはHeartbeat2の後継ソフトウェアで、Heartbeat2のリソース制御部分を切り出したものです。
Pacemakerは複数のコンポーネントの組み合わせの総称で、Pacemaker+CorosyncもしくはPacemaker+Heartbeart3を指します。

Corosync
CorosyncはOpenAISコミュニティによって開発されたクラスタソフトウェアのクラスタ制御部を切り出したものです。
インストール
業務でpacemakerをインストールする場合、どちらかの方法を採る事になるかと思います。
- yum を使ってネットワークインストールする
- Linux-HA Japan提供のローカルリポジトリ + yum を使ってインストールする
ここでは、Linux-HA Japanが提供するローカルリポジトリからインストールする方法を採用します。
パッケージダウンロード
CentOS 7(RHEL 7)向けのパッケージは以下のサイトからダウンロードします。
[sanko href=”https://osdn.net/projects/linux-ha/releases/71663″ title=”Pacemaker-1.1系リポジトリパッケージ ” site=”Linux-HA Japan” target=”_blank” rel=”nofollow”]
インストール前の準備
Linux-HA Japanが提供するPacemakerとOS同梱のPacemakerを分けるためにCentOS-Base.repoのbaseとupdatesにexlude設定を追加します。
/etc/yum.repos.d/CentOS-Base.repo
exclude=pacemaker* corosync* resource-agents* crmsh* cluster-glue* libqb* fence-agents* pcs*
…
[updates]
exclude=pacemaker* corosync* resource-agents* crmsh* cluster-glue* libqb* fence-agents* pcs*
パッケージインストールする
2018年4月現在の最新パッケージは「pacemaker-repo-1.1.17-1.1」です。
# yum -y install pacemaker-repo-1.1.21-1.1.el7.x86_64.rpm
# yum -y install pacemaker-all
設定
環境
OSはCentOS 7.4を使用します。2台のサーバは192.168.0.0/24で接続しています。
基本設定としてPacemakerでVIPを設定します。

基本的なPacemakerの設定
クラスタ制御部の設定 – Corosync
サンプルの設定が /etc/corosync/corosync.conf.example にあるので /etc/corosync/corosync.conf にコピーして利用する事ができます。
最低限必要な設定は以下の通りです。
- totem
- logging
- nodelist
- quorum
node0とnode1でクラスタを組むにあたり、192.168.0.0/24のセグメントでクラスタ制御を行います。
totem {
version: 2
crypto_cipher: none
crypto_hash: none
interface {
ringnumber: 0
bindnetaddr: 192.168.0.0
mcastaddr: 239.255.1.1
mcastport: 5405
ttl: 1
}
}
logging {
fileline: off
to_stderr: no
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
debug: off
timestamp: on
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
expected_votes: 2
two_node: 1
}
設定を行ったら、pacemakerを起動してみます。node0とnode1でpacemakerを起動します。
# systemctl start pacemaker
このコマンドでcorosyncも起動します。エラーが発生しなければ、ステータスを確認します。
Stack: corosync
Current DC: node0 (version 1.1.17-1.el7-b36b869) – partition with quorum
Last updated: Sun Apr 8 12:39:16 2018
Last change: Sun Apr 8 12:36:45 2018 by hacluster via crmd on node0
2 nodes configured
0 resources configured
Online: [ node0 node1 ]
No active resources
node0とnode1でクラスタが組めている事を確認できます。ただし、この時点ではリソースを設定していないため「0 resources configured」と表示されています。
リソースの設定 – IPaddr2
VIP(仮想IP)のリソースを追加して、node0とnode1でIPアドレスを共有させます。
node0でのみ設定を実行しています。
# crm
crm(live)# configure
crm(live)configure# primitive vip_192.168.0.203 ocf:heartbeat:IPaddr2 params ip="192.168.0.203" cidr_netmask="24" nic="ens33"
crm(live)configure# property no-quorum-policy="ignore" stonith-enabled="false"
crm(live)configure# node node0
crm(live)configure# node node1
crm(live)configure# commit
crm(live)configure#
crm(live)configure# show
node 3232300745: node0
node 3232300746: node1
primitive vip_192.168.0.203 IPaddr2
params ip=192.168.0.203 cidr_netmask=24 nic=ens33
property cib-bootstrap-options:
have-watchdog=false
dc-version=1.1.17-1.el7-b36b869
cluster-infrastructure=corosync
no-quorum-policy=ignore
stonith-enabled=false
crm(live)configure#
crm(live)configure# exit
bye
#
設定が完了したらリソース状態を確認します。現在、node1がVIPを持っていることが分かります。
# crm_mon -A -1
Stack: corosync
Current DC: node1 (version 1.1.17-1.el7-b36b869) – partition with quorum
Last updated: Sun Apr 8 14:40:21 2018
Last change: Sun Apr 8 14:32:10 2018 by hacluster via crmd on node02 nodes configured
1 resource configuredOnline: [ node0 node1 ]Active resources:vip_192.168.0.203 (ocf::heartbeat:IPaddr2): Started node1Node Attributes:
* Node node0:
* Node node1:
#
