忍者ブログ

ブランクがあるインフラエンジニアの備忘録

サーバ・ネットワーク構築のメモ

Pacemaker➁ Active/Passive Clusterの作成

前回の構成にActive/Passive Clusterの作成します。

◇リソースの追加
[root@pcmk-1 ~]# pcs resource create ClusterIP ocf:heartbeat:IPaddr2 \
    ip=10.0.1.103 cidr_netmask=24 op monitor interval=30s
「ocf:heartbeat:IPaddr2」は追加したい3つのリソースを伝えています。
最初のフィールド(上記ではocf)はリソースの基準となるもの
2つ目のフィールド(上記ではheartbeat)はプロバイダーと呼ばれ現在OCFリソースのみでサポートされています。
3つ目のフィールド(上記ではIPaddr2)はリソースエージェントの名前。
フィールドごとのリソースについて詳細を見て行きます。
最初のフィールドのリソース標準のリストを取得するには以下のコマンドを入力します。
[root@pcmk-1 ~]# pcs resource standards
lsb
ocf
service
systemd


2つ目のフィールドのプロバイダーのリソースのリストを取得するには以下のコマンドを入力します。
[root@pcmk-1 ~]# pcs resource providers
heartbeat
openstack
pacemaker

3つ目のフィールドの利用可能な全てのリソースエージェントを取得するには以下のコマンドを入力します。
root@pcmk-1 ~]# pcs resource agents ocf:heartbeat
apache
conntrackd
corosync-qnetd
(中略)
IPaddr2
(略)

システム上で利用可能なすべてのリソースエージェントをリストアップしたい場合は、以下のコマンドを入力します。
[root@pcmk-1 ~]# pcs resource list
ocf:heartbeat:CTDB - CTDB Resource Agent
ocf:heartbeat:Delay - Waits for a defined timespan
ocf:heartbeat:Dummy - Example stateless resource agent
ocf:heartbeat:Filesystem - Manages filesystem mounts
ocf:heartbeat:IPaddr2 - Manages virtual IPv4 and IPv6 addresses (Linux specific
                        version)
(略)

「Full List of Resources」の「ClusterIP   (ocf:heartbeat:IPaddr2)」が追加されている事を確認します。
[root@pcmk-1 ~]# pcs status
Cluster name: mycluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: pcmk-2 (version 2.1.10-1.1.el9_7-5693eaeee) - partition with quorum
  * Last updated: Wed Apr  1 01:46:45 2026 on pcmk-1
  * Last change:  Wed Apr  1 01:34:06 2026 by root via root on pcmk-1
  * 2 nodes configured
  * 1 resource instance configured
Node List:
  * Online: [ pcmk-1 pcmk-2 ]
Full List of Resources:
  * ClusterIP   (ocf:heartbeat:IPaddr2):         Started pcmk-1
Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

リソースが実行されているノードでIPアドレスが追加されているのを確認します。
以下の場合、「enp0s8」の行に「inet 10.0.1.103/24」が追加されています。
[root@pcmk-1 ~]# ip -o addr show
1: lo    inet 127.0.0.1/8 scope host lo\       valid_lft forever preferred_lft forever
1: lo    inet6 ::1/128 scope host \       valid_lft forever preferred_lft forever
2: enp0s3    inet 192.168.128.101/24 brd 192.168.128.255 scope global noprefixroute enp0s3\       valid_lft forever preferred_lft forever
2: enp0s3    inet6 2400:2200:5be:5f91:a00:27ff:fec5:4ceb/64 scope global dynamic mngtmpaddr \       valid_lft 86208sec preferred_lft 14208sec
2: enp0s3    inet6 fe80::a00:27ff:fec5:4ceb/64 scope link \       valid_lft forever preferred_lft forever
3: enp0s8    inet 10.0.1.101/24 brd 10.0.1.255 scope global noprefixroute enp0s8\       valid_lft forever preferred_lft forever
3: enp0s8    inet 10.0.1.103/24 brd 10.0.1.255 scope global secondary enp0s8\       valid_lft forever preferred_lft forever
3: enp0s8    inet6 fe80::a00:27ff:fe16:428/64 scope link \       valid_lft forever preferred_lft forever


◇フェイルオーバーを実行する
高可用性を確認する為に、リソース実行中のマシンを止めてフェイルオーバーをトリガーします。

[root@pcmk-1 ~]# pcs cluster stop pcmk-1
pcmk-1: Stopping Cluster (pacemaker)...
pcmk-1: Stopping Cluster (corosync)...
稼働していない事を確認します。
[root@pcmk-1 ~]# pcs status
Error: error running crm_mon, is pacemaker running?
  crm_mon: Connection to cluster failed: Connection refused

別のノードでクラスタ状態を確認します。
[root@pcmk-2 ~]# pcs status
Cluster name: mycluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: pcmk-2 (version 2.1.10-1.1.el9_7-5693eaeee) - partition with quorum
  * Last updated: Wed Apr  1 01:59:53 2026 on pcmk-2
  * Last change:  Wed Apr  1 01:34:06 2026 by root via root on pcmk-1
  * 2 nodes configured
  * 1 resource instance configured
Node List:
  * Online: [ pcmk-2 ]
  * OFFLINE: [ pcmk-1 ]
Full List of Resources:
  * ClusterIP   (ocf:heartbeat:IPaddr2):         Started pcmk-2
Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

上記の様にフェイルオーバーが起きたことを確認できます。
次に止めたノードを再起動して、暫くしてからクラスタの状態を確認します。

[root@pcmk-1 ~]# pcs cluster start pcmk-1
pcmk-1: Starting Cluster...

[root@pcmk-2 ~]# pcs status
Cluster name: mycluster
Cluster Summary:
  * Stack: corosync (Pacemaker is running)
  * Current DC: pcmk-2 (version 2.1.10-1.1.el9_7-5693eaeee) - partition with quorum
  * Last updated: Wed Apr  1 02:07:12 2026 on pcmk-2
  * Last change:  Wed Apr  1 01:34:06 2026 by root via root on pcmk-1
  * 2 nodes configured
  * 1 resource instance configured
Node List:
  * Online: [ pcmk-1 pcmk-2 ]
Full List of Resources:
  * ClusterIP   (ocf:heartbeat:IPaddr2):         Started pcmk-2
Daemon Status:
  corosync: active/disabled
  pacemaker: active/disabled
  pcsd: active/enabled

ノードリストでマシンが2台ともOnlineになっていることが確認出来ます。

逆のノードでも同じことを試してみます。
(内容省略)

◇回復後のリソース移動を防ぐ
AlmaLinux 9では、クラスタのセットアッププロセスが自動的に行われます デフォルトのリソース粘着度スコア

[root@pcmk-1 ~]# pcs resource defaults
Meta Attrs: build-resource-defaults
  resource-stickiness=1

以下の例ではデフォルトのリソースの固定度を100に上げています

[root@pcmk-1 ~]# pcs resource defaults update resource-stickiness=100
Warning: Defaults do not apply to resources which override them with their own defined values

[root@pcmk-1 ~]# pcs resource defaults
Meta Attrs: build-resource-defaults
  resource-stickiness=100
PR

コメント

プロフィール

HN:
のらくら
性別:
非公開
自己紹介:
介護と自身の手術でブランクが出来たインフラエンジニアの学習メモ。VirtualBOXで仮想サーバーを建て、GNS3でCiscoルーター&スイッチによるネットワークのエミュレーションもしています。GNS3ネットワーク内に仮想サーバーと連携させて、実際のネットワーク環境におけるサーバーをシミュレートする他、LinuC level3 300の対策もしています。

P R