クラスタ構築(1)Pacemaker + Corosync の設定

障害が発生した場合でも継続してサービスを稼働可能な冗長性の高いサーバを構築する手法の1つに、複数のサーバを連携させるHAクラスタリングが存在する。今回は、PacemakerCorosyncという2つのOSSを使用して、HAクラスタリングを実現させる。1つのサーバに障害が発生した場合でも他方のサーバで処理をカバーするために、ダウンタイムを減少させることができる。

Pacemakerは、死活監視を行って、障害の発生を検知するサービスで、障害発生時にはシステムチェンジを行って待機系が処理を継続する。対象となるネットワークインタフェースや各サービスなどをリソースと呼び、リソース単位で障害検知や障害時の挙動を指定できる。ただし、Pacemakerは、Heartbeatプロジェクトの一部機能が切り出されたサービスであるため、これ単独では機能しない。そこで、ノードの監視を行うCorosyncというサービスと組み合わせて使用することが多い。

環境構築

Pacemaker + Corosync でクラスタを構築する手順は以下の通り。

必要なパッケージのインストール

yum install -y pacemaker, corosync, pcs, elfutils-libelf-devel

haclusterユーザの追加

PacemakerやCorosyncを制御するpcsコマンドを実行するためのユーザを作成する。

useradd hacluster  
passwd hacluster  

hostsファイルの編集

ホスト名でノードを指定できるようにするために、hostsファイルを編集する。今回の例では、cluster01 と cluster02 の2つのノードが存在するものとする。

vi /etc/hosts
192.168.0.11 cluster01
192.168.0.12 cluster02

クラスタ設定の初期化

念のため全てのクラスタ設定を一度初期化する。

pcs cluster destroy

クラスタサービスの起動

systemctl start pcsd
systemctl enable pcsd

クラスタのセットアップ

以下の作業は、クラスタを構成する複数のサーバのうちプライマリとなる1つのサーバのみで行う。

ユーザの認証

各ノードに対して、pcsコマンドを実行するhaclusterユーザの認証を行う。一度認証すると次から認証は求められない。なお、トークンなどの認証情報は/var/lib/pcsd/tokensに格納される。

pcs cluster auth cluster01 cluster02 -u hacluster -p hacluster

クラスタの作成

クラスタの生成を行う。今回の例では、cluster01 と cluster02 の2つのノードから構成される mycluster というクラスタを生成するものとする。

pcs cluster setup --name mycluster cluster01 cluster02

クラスタの開始

pcs cluster start --all
pcs cluster enable --all

STONITH機能の停止

クラスタ構成自体に異常が起きた場合の影響を最小限に抑えるために、異常が起きたノードのシャットダウンを行うSTONITH機能が存在するが、今回はとりあえず機能の停止を行い、STONITH機能については別途設定を行う。

pcs property set stonith-enabled=false
Pocket