LoginSignup
7
16

More than 3 years have passed since last update.

Pacemaker + Corosync構築手順

Last updated at Posted at 2019-11-17

パッケージのインストール

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
}

/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ジャパン

構築手順

pcsコマンド例など

7
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
16