Pacemaker、Corosyncのインストールと主な設定(Appendix)

2台のCentOS7のマシンにPacemakerとCorosyncを導入して簡単なクラスタ構成を構築する方法を紹介します。(LinuCレベル2参考ドキュメント)

最終更新日:2024年02月28日

以下では 2台の CentOS 7マシンに PacemakerとCorosync を導入し、簡単なクラスタ構成を構築してみます。

PacemakerとCorosyncはyumコマンドでインストールできます。

$ yum install pacemaker-all

yumコマンドを使用することで、リソースエージェントのライブラリなども同時にインストールされます。

インストールが完了したら、クラスタ制御部(Corosync)とリソース制御部(Pacemaker)それぞれの設定を行います。

まずはクラスタの基本的な動作設定を行います。

/etc/corosync/corosync.conf という設定ファイルにクラスタの定義やハートビート(死活監視)の設定などを記述します。設定ファイルを作成したら、もう1台のマシンにSCPなどで転送して同じディレクトリに配置します。

compatibility: whitetank 
aisexec { # 実行ユーザーとグループの設定
user: root
group: root
}
service {
name: pacemaker # 使用するクラスタ
ver: 0 # バージョン番号
} 
totem { # ハートビート(死活監視)の通信方法の指定
version: 2 # 設定ファイルのバージョン
secauth: off  # メッセージの認証にHMAC/SHA1認証使用の有無
threads: 0 # 認証に使用するスレッド数
rrp_mode: none # 冗長リングのモード
clear_node_high_bit: yes # nodeidの最高位を0にするか
token: 4000 # タイムアウト値
consensus: 10000 # 新しい構成のラウンドを開始するまでの待機時間
rrp_problem_count_timeout: 3000 # 障害カウンタに減算処理をするまでの時間
interface { 
ringnumber: 0 # 冗長リングの番号
bindnetaddr: 192.168.10.0 # ネットワークアドレス
mcastaddr: 226.94.1.1 # マルチキャストアドレス
mcastport: 5405 # マルチキャストで使用するポート
}
} 
logging{ # ログの設定オプション
fileline: on # 表示されるファイルと行
to_syslog: yes # ログの出力先
syslog_facility: local1 # シスログのファシリティタイプ
syslog_priority: info # シスログのロギングレベル
debug: off  # デバッグ出力を記録するか
timestamp: on # 全ログにタイムスタンプをつけるか
}

/etc/syslog.confに先ほどの設定ファイルで指定したロギングの設定を追加します。local1について、/var/log/messagesではなく、/var/log/ha-logにログを記録するように設定しています。local.noneは/var/log/messagesにログを記録しない設定です。こちらも最初のマシンで設定を終えたら、もう1台のマシンにSCPなどでファイルを転送しておきます。

*.info;mail.none;authpriv.none;cron.none;local1.none /var/log/messages

local1.* /var/log/ha-log

上記の設定を終えたら、クラスタを起動します。クラスタに属する各サーバー上で起動します。これでリソースエージェントによるサービスの死活監視、ハートビートによるアクティブ・スタンバイのフェイルオーバーが開始されます。

$ systemctl start corosync.service

corosyncの動作を確認するには、1台目のマシンのcorosyncを停止させ、オンラインのマシンが切り替わるか確認します。

まずは、2台目のマシンでcrm_monを実行します。

[root@SRV2] crm_mon -Afro
Online: [ SRV1 SRV2 ]

Full list of resources:
 Resource Group: VM-1g
     SRV1-VIP   (ocf::heartbeat:IPaddr2):       	Started SRV1
     SRV1-apache        (lsb:httpd_vm1):       	Started SRV1

すると最初は2台ともオンラインと認識されています。

そして、1台目のcorosyncを停止します。

[root@SRV1]# service corosync stop
Signaling Corosync Cluster Engine (corosync) to terminate:	 [  OK  ]
Waiting for corosync services to unload:....               [  OK  ]

そして、2台目のcrm_monの表示を確認します。

Online: [ SRV2 ]
OFFLINE: [ SRV1 ]
Full list of resources:
 Resource Group: VM-1g
     SRV1-VIP   (ocf::heartbeat:IPaddr2):     Started SRV2
     SRV1-apache        (lsb:httpd_vm1):       Started SRV2	

するとcorosyncを停止した1台目のホストはオフラインになり、2台目のマシンでApacheが動作していることがわかります。


執筆者紹介

・太田 俊哉

・井上 博樹



このドキュメントは、LinuCレベル2の学習用の教材から抜粋して作成されたものです。教材全体は以下のPDFファイルをご覧ください。
LinuCレベル2学習教材

ページトップへ