Pacemaker、Corosyncのインストールと主な設定(Appendix)
2台のCentOS7のマシンにPacemakerとCorosyncを導入して簡単なクラスタ構成を構築する方法を紹介します。(LinuCレベル2参考ドキュメント)
以下では 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学習教材