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

#<b>本記事の目的や範囲など
Pacemaker+Corosyncを利用してクラスタ構成を実現します。VMWareを利用します。
参考にしたサイト
・pacemakerやcorosyncのインストールおよび設定：
http://kan3aa.hatenablog.com/entry/2015/06/05/135150
・ApacheやVIPのリソース追加
https://www.server-world.info/query?os=CentOS_7&p=pacemaker&f=2


#<b>環境概要
ホストOS：windows10 Pro
ゲストOS：CenOS7.4
ネットワーク含めた構成は以下図の通り
![20180204235101.png](https://qiita-image-store.s3.amazonaws.com/0/239124/477c02bc-ea4d-7b10-c6c2-efa2de1cc803.png)

VIP（クラスタ構成にアクセスする際の一意なIP）として192.168.14.100を、pacemakerの内部ネットワーク用LAN（pacemakerが生死監視をするための専用ネットワーク）としてそれぞれ192.168.15.1および2を設定します。

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

##<b>1.2 NIC設定作業
以下の（２）OS設定を参考にNICの設定作業を行います。
http://kan3aa.hatenablog.com/entry/2015/06/05/135150
なお、ここでIPを設定するときは、私の場合は「192.168.15.1」もう一つの仮想マシンのほうに「192.168.15.2」としました。
NICのIP設定や、ifcfgファイル作成、NIC再起動、hostsの設定など終わったら、いよいよpacemakerなどのインストールに入ります。

#<b>2.pacemakerとcorosyncの設定
まず、pacemakerとcorosyncをインストールします。以下作業は、仮想マシンごとに実施ください。(以下でcorosyncも入ります）
```
sudo yum install pcs
```
インストールしたらpacemakerのデーモンを起動します(rootユーザで)
```
systemctl start pcsd
```
OS起動時などでも自動起動するように設定します。
```
systemctl enable pcsd
```
pcsをインストールしたら、haclusterユーザが勝手に作成されますので、こちらのパスワードを設定します。（必須ではないですが。。。）
```
passwd hacluster
```
※パスワードは何でもよいです。

#<b>3.クラスタの設定および起動
すべての仮想マシンにインストールなど終わったら、いよいよ２台の仮想マシンをクラスタとして構成していきます。（ここからはルートユーザで）
まず、お互いのhaclusterユーザを認証します。（★どちらか１台で実行してください）
```
pcs cluster auth cluster01 cluster02
```
「Authorized」と表示されればOKです。
仮想マシン２台のクラスタを作成します。（★どちらか１台で実行してください）
```
pcs cluster setup --name mycluster cluster01 cluster02
```
これでcluster01ノードとcluster02ノードで構成される「mycluster」クラスタが作成されました。
次にクラスタを立ち上げます。。（★どちらか１台で実行してください）
```
pcs cluster start --all
```
立ち上がっているか確認しましょう。
```
pcs status
```

以下のように両方のノードがOnLineになっていればとりあえずOKです
![20180205134531.png](https://qiita-image-store.s3.amazonaws.com/0/239124/ffc7d1c4-f8c5-a042-6541-b1f31b708bc3.png)

#<b>4.VIPとApacheのリソース追加
pacemakerのリソースにVIPとApacheを追加します。
※リソース・・・pacemakerの監視対象にして、フェイルオーバー時に何もなかったのように動作させたいサービス群
★ここで注意いただきたいのですが、Apache(httpdサービス)を自動起動設定している人は、リソース追加する前に必ず停止し、自動起動もオフにしてください。
CentOS7では
```
systemctl disable httpd #httpdサービスの自動起動停止
systemctl stop httpd #httpdサービスの停止
```
これをしないと、pacemaker起動時にhttpdが立ち上がらなくなります。（私はこれでハマっていました）
さて、話を戻します。リソースは以下を参考に設定します。※私はIPやリソース名を変えています。
https://www.server-world.info/query?os=CentOS_7&p=pacemaker&f=2
上記設定後にリソースが立ち上がっているか確認してみましょう
```
pcs status
```
![20180205135611.png](https://qiita-image-store.s3.amazonaws.com/0/239124/acabfad5-e5f9-dc4b-a13a-35e98faf23a9.png)
5611p:plain
VIPとWeb_Cluster(≒Apache)がcluster01で立ち上がっていることを確認できました。
また、これで設定したVIPで/var/www/html以下のファイルや、デフォルト設定の人はApacheのテストページにアクセスできるはずです。

#5.<b>その他
せっかくなので、cluster01から02に切り替えしてみましょう。
```
pcs status
```
以下の通りcluster01でリソースが動いています。
（これまでの手順で実施した場合、Group: Webという表示が違いますが無視して下さい）
![20180205141751.png](https://qiita-image-store.s3.amazonaws.com/0/239124/1a2d7d95-60f9-0122-8f4b-355b0e8c1230.png)

cluster01のpacemakerをスタンバイ状態させます
```
pcs cluster standby cluster01
```
cluster02でリソースが動いています。VIP経由でも正しく接続できるはずです。
![20180205142110.png](https://qiita-image-store.s3.amazonaws.com/0/239124/25eea261-4028-0171-a151-44e4047d2d5e.png)