pacemakerとcorosyncを使ってクラスタ環境作ってみる

仕事でpacemakerとか触る機会あったので、構築してみようかなと思いました。
今回はvmwareを利用して、以下図のような構成にします。
参考にしたサイト
・pacemakerやcorosyncのインストールおよび設定:
CentOS7.1でPacemaker+corosyncによるクラスタを構成する - とあるエンジニアの技術メモ
ApacheやVIPのリソース追加
CentOS 7 : Pacemaker : リソースを追加する (httpd) : Server World

<環境概要>
ホストOS:windows10 Pro
ゲストOS:CenOS7.4
ネットワーク含めた構成は以下図の通り
f:id:hatek47320:20180204235101p:plain

VIPとして192.168.14.100を、pacemakerの内部ネットワーク用LAN(pacemakerが生死監視をするための専用ネットワーク)としてそれぞれ192.168.15.1および2を設定します。

<準備>
VMWare上のCentOSへのインターコネクトLAN用NICの追加
NIC追加作業
pacemaker入れる前にインターコネクトLAN用のNICを追加します。仮想マシン上の遊んでいるNICがあればそれを使ってもよいですが、特にNICとか追加していない場合はこの設定が必要です、
まず、仮想マシンをいったんパワーオフし、VMWare仮想マシンを選択する画面の左側から、NICを追加したい仮想マシンを右クリックし、設定を開きます。
その次の画面下部にある「追加」ボタンを押下後現れるダイアログから「ネットワークアダプタ」を選択し「完了」ボタンを押下します。これでNICが追加できました。

NIC設定作業
以下の(2)OS設定を参考にNICの設定作業を行います。
CentOS7.1でPacemaker+corosyncによるクラスタを構成する - とあるエンジニアの技術メモ
なお、ここでIPを設定するときは、私の場合は「192.168.15.1」もう一つの仮想マシンのほうに「192.168.15.2」としました。
NICのIP設定や、ifcfgファイル作成、NIC再起動、hostsの設定など終わったら、いよいよpacemakerなどのインストールに入ります。

〇pacemakerとcorosyncをインストールとちょっとした下準備
以下作業は、仮想マシンごとに実施ください。

sudo yum install pcs

インストールしたらpacemakerのデーモンを起動します(rootユーザで)

systemctl start pcsd

OS起動時などでも自動起動するように設定します。

systemctl enable pcsd

pcsをインストールしたら、haclusterユーザが勝手に作成されますので、こちらのパスワードを設定します。(必須ではないですが。。。)

passwd hacluster
||
※パスワードは何でもよいです。

〇クラスタの設定および起動
すべての仮想マシンにインストールなど終わったら、いよいよ2台の仮想マシンをクラスタとして構成していきます。(ここからはルートユーザで)
まず、お互いのhaclusterユーザを認証します。(★どちらか1台で実行してください)
>|sh|
pcs cluster auth cluster01 cluster02

「Authorized」と表示されればOKです。

仮想マシン2台のクラスタを作成します。(★どちらか1台で実行してください)

pcs cluster setup --name mycluster cluster01 cluster02

これでcluster01ノードとcluster02ノードで構成される「mycluster」クラスタが作成されました。

次にクラスタを立ち上げます。。(★どちらか1台で実行してください)

pcs cluster start --all

立ち上がっているか確認しましょう。

pcs status

以下のように両方のノードがOnLineになっていればとりあえずOKです
f:id:hatek47320:20180205134531p:plain

〇VIPとApacheのリソース追加
pacemakerのリソースにVIPとApacheを追加します。
※リソース・・・pacemakerの監視対象にして、フェイルオーバー時に何もなかったのように動作させたいサービス群
★ここで注意いただきたいのですが、Apache(httpdサービス)を自動起動設定している人は、リソース追加する前に必ず停止し、自動起動もオフにしてください。
CentOS7では

systemctl disable httpd #httpdサービスの自動起動停止
systemctl stop httpd #httpdサービスの停止

これをしないと、pacemaker起動時にhttpdが立ち上がらなくなります。(私はこれでハマっていました)
さて、話を戻します。リソースは以下を参考に設定します。※私はIPやリソース名を変えています。
CentOS 7 : Pacemaker : リソースを追加する (httpd) : Server World
上記設定後にリソースが立ち上がっているか確認してみましょう

pcs status

f:id:hatek47320:20180205135611p:plain
VIPとWeb_Cluster(≒Apache)がcluster01で立ち上がっていることを確認できました。
また、これで設定したVIPで/var/www/html以下のファイルや、デフォルト設定の人はApacheのテストページにアクセスできるはずです。

〇その他
せっかくなので、cluster01から02に切り替えしてみましょう。

pcs status

以下の通りcluster01でリソースが動いています。
(これまでの手順で実施した場合、Group: Webという表示が違いますが無視して下さい)
f:id:hatek47320:20180205141751p:plain
cluster01のpacemakerをスタンバイ状態させます

pcs cluster standby cluster01

cluster02でリソースが動いています。VIP経由でも正しく接続できるはずです。
f:id:hatek47320:20180205142110p:plain