今回は、CentOS8でPacemakerをインストールし、クラスターを設定します。

手順

1.CentOS8 1号機と2号機にログイン
2.Pacemakerのインストール
3.セキュリティ設定
4.クラスタの起動
5.リソース登録
6.動作確認

1.CentOS8 1号機と2号機にログイン

TeraTermで、CentOS8 1号機と2号機にrootでログインします。

今回、クラスターで切り替えるアプリケーションはApacheです。
まずは、以下のページを参考にし、2号機にApacheをインストールします。
https://daredemose.com/linux/apache/

また、1号機のwebページと2号機のwebページを分かりやすくするために以下のように変更します。

i以下、1号機で実施

# 1号機のindex.htmlを編集
[root@CE08PRD101 ~]# vi /var/www/html/index.html
<html>
<body>
<div>
test 1号機
</div>
</body>
</html>

# ステータスサーバの有効化
[root@CE08PRD101 ~]# cat <<-END > /etc/httpd/conf.d/status.conf
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
</Location>
END


# httpdの自動起動を無効化
[root@CE08PRD101 ~]# systemctl disable-httpd

# httpdのサービス停止
[root@CE08PRD101 ~]# systemctl status httpd

i以下、2号機で実施

# 2号機のindex.htmlを編集
[root@CE08PRD102 ~]# vi /var/www/html/index.html
<html>
<body>
<div>
test 2号機
</div>
</body>
</html>

# ステータスサーバの有効化
[root@CE08PRD102 ~]# cat <<-END > /etc/httpd/conf.d/status.conf
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Allow from ::1
</Location>
END


# httpdの自動起動を無効化
[root@CE08PRD102 ~]# systemctl disable-httpd

# httpdのサービス停止
[root@CE08PRD102 ~]# systemctl status httpd

2.Pacemakerのインストール

i以下、1号機および2号機で実施。

# Pacemakerのインストール
[root@CE08PRD101 ~]# dnf --enablerepo=HighAvailability -y install pacemaker pcs
(省略)
pacemaker-2.0.3-5.el8_2.1.x86_64
pacemaker-cli-2.0.3-5.el8_2.1.x86_64
pacemaker-cluster-libs-2.0.3-5.el8_2.1.x86_64
pacemaker-libs-2.0.3-5.el8_2.1.x86_64
pacemaker-schemas-2.0.3-5.el8_2.1.noarch
pcs-0.10.4-6.el8_2.1.x86_64
(省略)
完了しました!

# サービス起動
[root@CE08PRD101 ~]# systemctl enable --now pcsd
Created symlink /etc/systemd/system/multi-user.target.wants/pcsd.service → /usr/lib/systemd/system/pcsd.service.

# サービス起動確認
# Active:がactiveになっていることを確認する。
[root@CE08PRD101 ~]# systemctl status pcsd
● pcsd.service - PCS GUI and remote configuration interface
Loaded: loaded (/usr/lib/systemd/system/pcsd.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2020-09-04 02:24:48 JST; 32s ago
(省略)

# クラスタ管理ユーザのパスワード設定
[root@CE08PRD101 ~]# passwd hacluster
ユーザー hacluster のパスワードを変更。
新しいパスワード:

4.セキュリティ設定

# ファイヤーウォールの許可設定
[root@CE08PRD101 ~]# firewall-cmd --add-service=high-availability --permanent
success
[root@CE08PRD101 ~]# firewall-cmd --reload
success

# ファイヤーウォールの許可設定確認
# high-availabilityが追加されたことを確認する。
[root@CE08PRD101 ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: cockpit dhcpv6-client ftp high-availability http nfs ntp ssh
(省略)

4.クラスタの起動

以下、1号機で実施。

# クラスノード設定
# ユーザはhacluster、パスワードは設定したパスワードを入力。
[root@CE08PRD101 ~]# pcs host auth 192.168.0.101 192.168.0.102
Username: hacluster
Password:
192.168.0.102: Authorized
192.168.0.101: Authorized

# クラスタ設定
[root@node01 ~]# pcs cluster setup ha_cluster 192.168.0.101 192.168.0.102

# クラスタ起動
[root@node01 ~]# pcs cluster start --all
192.168.0.101: Starting Cluster…
192.168.0.102: Starting Cluster…

# クラスタ自動起動設定
[root@node01 ~]# pcs cluster enable --all
192.168.0.101: Cluster Enabled
192.168.0.102: Cluster Enabled

# 起動確認1
[root@CE08PRD101 ~]# pcs cluster status
Cluster Status:
(省略)
Node List:
Online: [ 192.168.0.101 192.168.0.102 ]
PCSD Status:
192.168.0.101: Online
192.168.0.102: Online

# 起動確認2
[root@CE08PRD101 ~]# pcs status corosync
Membership information
------------------------------------
Nodeid Votes Name
1 1 192.168.0.101 (local)
2 1 192.168.0.102

# フェンシング無効化
[root@CE08PRD101 ~]# pcs property set stonith-enabled=false

5.リソース登録

# 仮想IPアドレスリソース登録
[root@CE08PRD101 ~]# pcs resource create http_vip ocf:heartbeat:IPaddr2 ip=192.168.0.113 --group apachegroup

# Apacheリソース登録
[root@CE08PRD101 ~]# pcs resource create WebSite ocf:heartbeat:apache configfile=/etc/httpd/conf/httpd.conf statusurl="http://localhost/server-status" --group apachegroup


# リソース登録確認
# http_vipとWebSiteがStartedになっていることを確認する。
# 1号機も2号機もOnlineになっていることを確認する。
[root@CE08PRD101 ~]# pcs status
Cluster name: ha_cluster
Cluster Summary:
(省略)
Node List:
* Online: [ 192.168.0.101 192.168.0.102 ]
Full List of Resources:
* Resource Group: apachegroup:
* http_vip (ocf::heartbeat:IPaddr2): Started 192.168.0.101
* WebSite (ocf::heartbeat:apache): Started 192.168.0.101
(諸略)

6.動作確認

Chromeなどのブラウザで、設定した仮想IPアドレスにアクセスする。
1号機のWebページが表示されればOK.

次に、1号機がシャットダウンしたときに、自動的に2号機に切り替わるか確認する。
以下、1号機で実施

# 1号機をシャットダウンさせる。
[root@CE08PRD101 ~]# shutdown -h now

以下、2号機で実施

# 切り替え確認
# 1号機がOFFLINEになり、2号機のhttp_vipとWebSiteがStartedになっていることを確認する。
[root@CE08PRD101 ~]# pcs status
(省略)
Node List:
* OFFLINE:[192.168.0.101]
* Online: [ 192.168.0.102 ]
Full List of Resources:
* Resource Group: apachegroup:
* http_vip (ocf::heartbeat:IPaddr2): Started 192.168.0.102
* WebSite (ocf::heartbeat:apache): Started 192.168.0.102
(諸略)

Chromeなどのブラウザで、設定した仮想IPアドレスにアクセスする。
2号機のWebページが表示されればOK.

次に、手動で1号機から2号機に切り替える。
以下、1号機で実施。

# httpdを1号機から2号機に切り替え
[root@CE08PRD101 ~]# pcs standby 192.168.0.101

# 切り替え確認
# 1号機がstandbyになり、2号機のhttp_vipとWebSiteがStartedになっていることを確認する。
[root@CE08PRD101 ~]# pcs status
(省略)
Node List:
* Node 192.168.0.101: standby
* Online: [ 192.168.0.102 ]
Full List of Resources:
* Resource Group: apachegroup:
* http_vip (ocf::heartbeat:IPaddr2): Started 192.168.0.102
* WebSite (ocf::heartbeat:apache): Started 192.168.0.102
(諸略)

Chromeなどのブラウザで、設定した仮想IPアドレスにアクセスする。
2号機のWebページが表示されればOK.

最後に、手動で2号機から1号機に切り替える。
以下、1号機で実施。

# httpdを2号機から1号機に切り戻す
[root@CE08PRD101 ~]# pcs unstandby 192.168.0.101

以下、1号機および2号機で実施。

# 1号機と2号機でクラスターサービスを停止させる。
[root@CE08PRD101 ~]#pcs cluster stop --all

# 1号機と2号機でクラスターサービスを起動させる。
[root@CE08PRD101 ~]#pcs cluster start --all

# 切り戻し確認
# 1号機がstandbyになり、2号機のhttp_vipとWebSiteがStartedになっていることを確認する。
[root@CE08PRD101 ~]# pcs status
(省略)
Node List:
* Online: [ 192.168.0.101 192.168.0.102 ]
Full List of Resources:
* Resource Group: apachegroup:
* http_vip (ocf::heartbeat:IPaddr2): Started 192.168.0.101
* WebSite (ocf::heartbeat:apache): Started 192.168.0.101
(諸略)

Chromeなどのブラウザで、設定した仮想IPアドレスにアクセスする。
1号機のWebページが表示されればOK.

以上