パッケージのインストール
yum install pacemaker pm_logconv-cs pm_extras pcs corosync
設定ファイルの変更
corosync.confの設定
192.168.254.11と、192.168.254.12の2台構成のクラスタを設定場合の設定例。
以下の設定を両ノードに実施。
vi /etc/corosync/corosync.conf
# クラスタ間の通信方法定義
totem {
# 設定ファイルのバージョン設定(有効な値は2のみの模様)
version: 2
# メッセージの暗号設定
crypto_cipher: none
# メッセージの認証設定
crypto_hash: none
# ネットワーク設定
interface {
# リング番号
ringnumber: 0
# 各ノードが属するアドレスを設定
bindnetaddr: 192.168.254.0
# マルチキャストアドレスの設定
# (多くの場合、デフォルト値のままで動作する)
mcastaddr: 239.255.1.1
mcastport: 5405
ttl: 1
}
}
# クラスタ内のノードの設定
nodelist {
# name : ノードの名称
# ringX_addr : 対象のノードのIPアドレス (Xにはリング番号を指定する)
# nodeid : ノードの識別子 (0は予約済みとなっているので指定できない)
node {
name: node_name1
ring0_addr: 192.168.254.11
nodeid: 1
}
node {
name: node_name2
ring0_addr: 192.168.254.12
nodeid: 2
}
}
# ログ出力設定
logging {
fileline: off
to_stderr: no
to_logfile: yes
logfile: /var/log/cluster/corosync.log
to_syslog: yes
syslog_facility: local1
debug: off
timestamp: on
# サブシステムの識別名 (デフォルト設定を使用)
logger_subsys {
subsys: QUORUM
debug: off
}
}
# クラスタのPrimary/Secondaryの決定方法などの定義
quorum {
# Primary/Secondaryの決定方法のアルゴリズム(下記の設定で過半数ノードの合意により決定するアルゴリズムを指定)
provider: corosync_votequorum
# クラスタノードの過半数を指定
expected_votes: 2
}
- https://www.sraoss.co.jp/tech-blog/pacemaker/pacemaker-config-values/
- https://blog.drbd.jp/2015/05/corosync-conf-5
- https://gist.github.com/inokappa/124b1ee5f3e3fbe6b172
/etc/sysconfig/pacemakerの設定
vi /etc/sysconfig/pacemaker
# 以下の設定を追加
# Pacemakerの内部プロセスが異常になった場合もノード故障として取り扱う
PCMK_fail_fast=yes
systemdユニットファイルの変更
# systemdユニットファイルの編集
cp -p /usr/lib/systemd/system/corosync.service /etc/systemd/system
vi /etc/systemd/system/corosync.service
# 下記を参照にして以下の設定を追加
# https://linux-ha.osdn.jp/wp/archives/4591
Restart=on-failure
RestartSec=70
ExecStartPre=/sbin/modprobe softdog soft_margin=6
cp -p /usr/lib/systemd/system/pacemaker.service /etc/systemd/system
vi /etc/systemd/system/pacemaker.service
# Pacemakerの停止時にcorosyncを停止する設定を追加
# 下記を参照にして以下の設定を追加
# https://linux-ha.osdn.jp/wp/archives/4591
ExecStopPost=/bin/sh -c 'pidof crmd || killall -TERM corosync'
cp -pi /usr/lib/systemd/system/pm_logconv.service /etc/systemd/system/
systemctl daemon-reload
serviceの設定
systemctl enable pacemaker
systemctl enable corosync
systemctl enable pcsd
systemctl enable pm_logconv
clusterのセットアップ
# pcsdを起動
systemctl start pcsd
# haclusterユーザのパスワードを設定
echo "passwd" | passwd --stdin hacluster
# クラスタ内の認証パスワードを設定
pcs cluster auth node_name1 node_name2 -u hacluster -p passwd
# 失敗: Error: Unable to communicate with node_name2
# 成功: node_name2 : Authorized
# クラスタを構築する
# ※ (--nameに任意のクラスタ名を指定する)
pcs cluster setup --name cluster_name node_name1 node_name2
# corosyncの認証用の鍵を作成
corosync-keygen -l
ls -lir /etc/corosync/authkey
# corosyncの認証用の鍵をもう一つのノードに転送
scp -p /etc/corosync/authkey root@node_name2:/etc/corosync/authkey
# クラスタを起動(PacemakerとCorosync)
pcs cluster start --all
# ※ corosync → pacemakerの順に起動される
# https://sky-joker.tech/2017/03/26/centos7にpacemakerをインストールしてみる/
node_name1 : Starting Cluster (corosync)...
node_name2 : Starting Cluster (corosync)...
node_name2 : Starting Cluster (pacemaker)...
node_name1 : Starting Cluster (pacemaker)...
参考
HAジャパン
-
http://linux-ha.osdn.jp/wp/wp-content/uploads/076783ca53a363270d253bbb98b59e83.pdf
-
HAクラスタで PostgreSQLを高可用化 (後編) ~ レプリケーション編 ~
http://linux-ha.org/doc/man-pages/re-ra-pgsql.html