Linux HA – Pacemaker/Corosync/Heartbeatまとめ

Linuxのクラスタリングで利用されるPacemakerについてまとめました。インストールや設定、動作の確認はCentOS 7で実施していますので、Debian系(Ubuntuなど)ではインストール方法が異なります。

尚、SELinuxはdisabledに設定し、firewalldは停止してあります。

スポンサーリンク
スポンサーリンク

用語と役割

リソース

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)向けのパッケージは以下のサイトからダウンロードします。

Release Pacemakerリポジトリパッケージ (RHEL7) 1.1.17-1.1 - Linux-HA Japan #osdn

インストール前の準備

Linux-HA Japanが提供するPacemakerとOS同梱のPacemakerを分けるためにCentOS-Base.repoのbaseとupdatesにexlude設定を追加します。

/etc/yum.repos.d/CentOS-Base.repo

[base]
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.17-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.254.0/24のセグメントでクラスタ制御を行います。

設定を行ったら、pacemakerを起動してみます。node0とnode1でpacemakerを起動します。

# systemctl start pacemaker
このコマンドでcorosyncも起動します。エラーが発生しなければ、ステータスを確認します。
crm_monを実行します。

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でのみ設定を実行しています。

設定が完了したらリソース状態を確認します。現在、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 node1

Node Attributes:
* Node node0:
* Node node1:
#

スポンサーリンク
スポンサーリンク