本サイトはプロモーションを含みます。

Linux HA – Pacemaker/Corosync/Heartbeatまとめ

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

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

より実践的な内容については以下の記事で解説しています。

【Pacemaker+Corosync】Apacheクラスタを組んでフェイルオーバー/フェイルバックテストをおこなう

用語と役割

リソース

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

参考 Pacemaker-1.1系リポジトリパッケージ Linux-HA Japan

インストール前の準備

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.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:
#