Pacemaker-1.1.12-1.1 リポジトリパッケージの簡単な使い方の説明です。

2015.06.12 にRHEL 7用のリポジトリパッケージもリリースしました!

このページの変更履歴

  • 2014.12.05 Pacemaker-1.1.12-1.1(RHEL 6用)リポジトリパッケージリリース
  • 2015.06.12 Pacemaker-1.1.12-1.1(RHEL 7用)リポジトリパッケージリリース
    • RHEL 7用の設定例を追記。合わせて RHEL 6の soft_margin 設定例も変更。
  • 2015.12.18 RHEL6.5以前の環境での推奨Errataについて追記

1. Pacemaker-1.1.12-1.1 の概要

Pacemaker-1.1.12-1.1 リポジトリパッケージは、従来の Pacemaker-1.0系から大幅な機能改善・拡張が行われたメジャーバージョンアップです。

主な改善点として以下のような点があります。

  • ノード管理機能が Heartbeat から Corosync へと置き換えられた。これによりフェイルオーバ時間の短縮、管理ノード数の拡大などの改善が可能となった。
  • 設定ユーザインタフェース・STONITHプラグインとして、従来の crmsh, cluster-glue に加え、新たに pcs, fence-agents が選択可能となった。
    • ただし Linux-HA Japan では従来通り crmsh, cluster-glue の利用を推奨します。
  • Pacemaker-remote と呼ばれる仮想マシン・コンテナのリモート監視機能などが追加された。
  • その他数えきれない程の機能改善…

Pacemaker-1.1.12-1.1を使った具体的な構成例・利用手順については、以下のOSCのセミナー資料が非常に参考になります。


2. ダウンロード

Pacemaker-1.1.12-1.1リポジトリパッケージのリリース版は以下のページよりダウンロードできます。


3. インストール

以下の手順で Pacemakerをインストールします。yum コマンドにより 必要な依存パッケージも自動的にインストールされますので、 OSのインストールメディア等が参照できるようにしておいてください。

# rpm -ivh pacemaker-repo-1.1.12-1.1.el6.x86_64.rpm
# yum install pacemaker-all

4. 設定例

4.1. corosync設定ファイルの設定

corosyncの動作に必要な設定を行います。 以下は最低限必要な設定例です。

/etc/corosync/corosync.conf 設定例

totem {
        version: 2
        token: 1000
        rrp_mode: active
        interface {
                ringnumber: 0
                bindnetaddr: 192.168.101.0
                mcastaddr: 239.255.1.1
                mcastport: 5405
        }
        interface {
                ringnumber: 1
                bindnetaddr: 192.168.102.0
                mcastaddr: 239.255.1.1
                mcastport: 5405
        }
}

logging {
        syslog_facility: daemon
        debug: off
}

quorum {
        provider: corosync_votequorum
        expected_votes: 2
}

ここで以下の設定項目は環境に合わせて設定してください。

  • bindnetaddr, mcastaddr, mcastport: ネットワークに合わせて設定します。
  • syslog_facility : ログの出力先を変更したい場合は適宜変更します。
  • expected_votes : クラスタを構成するノードの数を設定します。

詳細は corysync.conf(5) マニュアルページ等を参照してください。

4.2. corosync認証鍵ファイルの設定

corosyncの認証を行うための認証鍵ファイルを作成します。

どれか一つのノード上で corosync-keygen コマンドを実行し、生成された authkey ファイルをクラスタを構成する全てのノードにコピーします。 以下の手順例は node2 へコピーしている例です。

/etc/corosync/authkey 設定手順例

# corosync-keygen -l
# scp -p /etc/corosync/authkey root@node2:/etc/corosync/authkey

4.3. pacemaker設定ファイルの設定

Pacemakerの内部プロセスが故障した場合もノード故障として取り扱う ようにするため、以下の設定を追加します。

記述内容は RHEL 6(Upstart 利用)と RHEL 7(systemd 利用)で異なります。

4.3.1. pacemaker設定ファイルの設定(RHEL 6用)

/etc/sysconfig/pacemaker (追加設定行)

export PCMK_fail_fast=yes

4.3.2. pacemaker設定ファイルの設定(RHEL 7用)

/etc/sysconfig/pacemaker (追加設定行)

PCMK_fail_fast=yes

4.4. クラスタ起動スクリプトの設定

故障時の動作等のカスタマイズのためクラスタ起動スクリプトを一部修正します。

修正する内容は RHEL 6(Upstart 利用)と RHEL 7(systemd 利用)で異なります。

4.4.1. クラスタ起動スクリプトの設定(RHEL 6用)

RHEL 6では、以下の設定を行うためクラスタ起動スクリプトの一部を修正します。

  • ノードのshutdown時にPacemakerを正しく停止するため
  • hardware watchdog が利用可能な環境では hardware watchdogを利用可能にするため
  • corosyncプロセス故障時に watchdog 機能を有効にするため
  • corosyncプロセス故障検知を迅速(6秒以内)に行うため

以下に修正箇所を示します。

/etc/init/pacemaker.combined.conf (修正箇所抜粋)

--- pacemaker.combined.conf.org 2014-10-14 11:17:24.498010606 +0900
+++ pacemaker.combined.conf     2014-10-14 11:19:10.079010163 +0900
@@ -2,6 +2,7 @@
 #
 # Starts Corosync cluster engine and Pacemaker cluster manager.

+stop on runlevel [0123456]
 kill timeout 3600
 respawn

@@ -20,7 +21,7 @@
 pre-start script
     # setup the software watchdog which corosync uses.
     # rewrite according to environment.
-    modprobe softdog soft_margin=60
+    [ -c /dev/watchdog ] || modprobe softdog soft_margin=6
     pidof corosync || start corosync

     # if you use corosync-notifyd, uncomment the line below.
@@ -49,7 +50,7 @@
     rm -f /var/run/$prog.pid

     # if you use watchdog of corosync, uncomment the line below.
-    #pidof corosync || false
+    pidof corosync || false

     pidof crmd || stop corosync

4.4.2. クラスタ起動スクリプトの設定(RHEL 7用)

RHEL 7では、以下の設定を行うためクラスタ起動スクリプト(systemd の Unitファイル)の一部を修正します。

  • pacemakerサービス停止時に corosyncサービスも同時に停止させるため
  • corosyncプロセス故障時に watchdog 機能を有効にするため
  • corosyncプロセス故障検知を迅速(6秒以内)に行うため

修正は、Unitファイルをパッケージ標準ディレクトリ(/usr/lib/systemd/system/)からローカル設定用ディレクトリ(/etc/systemd/system/)にコピーして修正します。

以下に修正箇所を示します。

/etc/systemd/system/corosync.service (修正箇所抜粋)

# cp -p /usr/lib/systemd/system/corosync.service /etc/systemd/system
# vi /etc/systemd/system/corosync.service

--- /usr/lib/systemd/system/corosync.service    2015-05-28 15:32:09.000000000 +0900
+++ /etc/systemd/system/corosync.service        2015-06-08 15:36:15.664000000 +0900
@@ -15,11 +15,11 @@
 #  pacemaker.service, and if you want to exert the watchdog when a
 #  corosync process is terminated abnormally,
 #  uncomment the line of the following Restart= and RestartSec=.
-#Restart=on-failure
+Restart=on-failure
 #  Specify a period longer than soft_margin as RestartSec.
-#RestartSec=70
+RestartSec=70
 #  rewrite according to environment.
-#ExecStartPre=/sbin/modprobe softdog soft_margin=60
+ExecStartPre=/sbin/modprobe softdog soft_margin=6

 [Install]
 WantedBy=multi-user.target

/etc/systemd/system/pacemaker.service (修正箇所抜粋)

# cp -p /usr/lib/systemd/system/pacemaker.service /etc/systemd/system
# vi /etc/systemd/system/pacemaker.service

--- /usr/lib/systemd/system/pacemaker.service   2015-05-29 17:30:30.000000000 +0900
+++ /etc/systemd/system/pacemaker.service       2015-06-08 15:35:12.594000000 +0900
@@ -43,7 +43,7 @@
 # If you want Corosync to stop whenever Pacemaker is stopped,
 # uncomment the next line too:
 #
-# ExecStopPost=/bin/sh -c 'pidof crmd || killall -TERM corosync'
+ExecStopPost=/bin/sh -c 'pidof crmd || killall -TERM corosync'

 # Uncomment this for older versions of systemd that didn't support
 # TimeoutStopSec

5. 起動・終了

起動コマンドは Pacemaker-1.0系とは異なり、Upstart経由(RHEL 6の場合) または systemd経由(RHEL 7の場合)で起動する手順が推奨です。

このため、RHEL 6とRHEL 7で Pacemaker の起動・終了コマンドが異なります。

5.1. 起動コマンド

Pacemakerを起動するには以下のコマンドを実行します。クラスタを構成する全てのノードで実行してください。

5.1.1. 起動コマンド(RHEL 6用)

# initctl start pacemaker.combined

5.1.2. 起動コマンド(RHEL 7用)

# systemctl start pacemaker

5.2. 起動確認コマンド

正常に起動すると、crm_mon コマンドの表示でノードが Online 状態となります。

# crm_mon -D1
Online: [ node1 node2 ]

5.3. 終了コマンド

Pacemakerを停止するには以下のコマンドを実行します。クラスタを構成する全てのノードで実行してください。

5.3.1. 終了コマンド (RHEL 6用)

# initctl stop pacemaker.combined

5.3.2. 終了コマンド (RHEL 7用)

# systemctl stop pacemaker

6. アンインストール

以下の手順で Pacemaker リポジトリパッケージを 全てアンインストールできます。

  • Pacemaker本体のアンインストール
# yum erase pacemaker corocync libqb cluster-glue cluster-glue-libs resource-agents \
pm_crmgen pm_logconv-cs pm_diskd pm_extras crmsh pssh
  • Pacemakerリポジトリパッケージのアンインストール
# rpm -e pacemaker-repo
# rpm -qa | grep pacemaker-repo
#

7. リポジトリパッケージ内容

リポジトリパッケージには以下のパッケージが含まれています。 このページに記載したインストール手順では★印のついたパッケージが インストールされます。

  • パッケージ一覧
    • ★ pacemaker-1.1.12-1
    • ★ cluster-glue-1.0.12-1
    • ★ corosync-2.3.4-1
    • ★ libqb-0.17.1-1
    • ★ resource-agents-3.9.5-1.589.b6443
    • ★ crmsh-2.1-1
    • ★ pssh-2.3.1-5
    • ★ pm_crmgen-2.0-1
    • ★ pm_diskd-2.0-1
    • ★ pm_extras-2.0-1
    • ★ pm_logconv-cs-2.0-1
    • pm_ctl-2.0-1
    • ldirectord-3.9.5-1.589.b6443
    • pcs-0.9.90-2
    • fence-agents-4.0.10-1
  • 補足
    • Heartbeatは今後非推奨とするためパッケージには含みません。
    • pcs は本パッケージでは Pacemaker の設定にのみ利用可能です。Corosyncの設定には利用できません。
    • 1.0.13リポジトリパッケージに含まれていた pm_kvm_tools, vm-ctl コンポーネントは本バージョンには対応していないためパッケージには含みません。
    • Errata RHBA-2014:1538-1 について
      • RHEL6.5以前の環境ではこのErrataの適用を推奨します。(RHEL6.6以降では不要です)
      • このErrata適用により下記の不具合が解消されます。
        • 運用中に大きな時刻補正を行うとリソース監視タイムアウトが発生する。(BZ #1139977 Statusはopenのままですが、このErrataで解消されることを確認済です)

以上です。