23.8. ha_cluster システムロールを使用した高可用性クラスターでの Apache HTTP サーバーの設定
この手順では、ha_cluster
システムロールを使用して、2 ノードの Red Hat Enterprise Linux High Availability Add-On クラスターでアクティブ/パッシブな Apache HTTP サーバーを設定します。
前提条件
Playbook を実行するノードに
ansible-core
がインストールされている。注記ansible-core
をクラスターメンバーノードにインストールする必要はありません。-
Playbook を実行するシステムに
rhel-system-roles
パッケージがインストールされている。 - クラスターメンバーとして使用するシステムに、RHEL および RHEL High Availability Add-On の有効なサブスクリプション範囲が必要。
- システムに Apache に必要なパブリック仮想 IP アドレスが含まれている。
- システムに、iSCSI、ファイバーチャネル、またはその他の共有ネットワークブロックデバイスを使用する、クラスターのノードに対する共有ストレージが含まれます。
- Pacemaker クラスターで XFS ファイルシステムを持つ LVM ボリュームを設定する の説明に従って、XFS ファイルシステムを使用して LVM 論理ボリュームを設定している。
- Configuring an Apache HTTP Server の説明に従って、Apache HTTP サーバーを設定している。
- システムに、クラスターノードをフェンスするのに使用される APC 電源スイッチが含まれます。
ha_cluster
システムロールは、指定されたノードの既存のクラスター設定を置き換えます。ロールで指定されていない設定は失われます。
手順
-
ha_cluster
システムロールのインベントリーの指定 で説明されているように、クラスター内のノードを指定するインベントリーファイルを作成します。 Playbook ファイルを作成します (例:
http-cluster.yml
)。注記実稼働環境の Playbook ファイルを作成する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、パスワード vault を暗号化することが推奨されます。
以下の Playbook ファイルの例では、アクティブ/パッシブの 2 ノード HA クラスターで事前に作成した Apache HTTP サーバーを設定します。
この例では、ホスト名が
zapc.example.com
の APC 電源スイッチを使用します。クラスターが他のフェンスエージェントを使用しない場合は、以下の例のように、ha_cluster_fence_agent_packages
変数を定義するときに、クラスターが必要とするフェンスエージェントのみを任意で一覧表示できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
手順 1 で作成したインベントリーファイル inventory へのパスを指定して、Playbook を実行します。
ansible-playbook -i inventory http-cluster.yml
# ansible-playbook -i inventory http-cluster.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow apache
リソースエージェントを使用して Apache を管理する場合はsystemd
が使用されません。このため、Apache で提供されるlogrotate
スクリプトを編集して、systemctl
を使用して Apache を再ロードしないようにする必要があります。クラスター内の各ノードで、
/etc/logrotate.d/httpd
ファイルから以下の行を削除します。/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 8.6 以降では、削除した行を以下の 3 行に置き換え、Web サイトが Apache リソースの名前である PID ファイルパスとして
/var/run/httpd- website .pid
を指定します。この例では、Apache リソース名はWebsite
です。/usr/bin/test -f /var/run/httpd-Website.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /var/run/httpd-Website.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd-Website.pid" -k graceful > /dev/null 2>/dev/null || true
/usr/bin/test -f /var/run/httpd-Website.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /var/run/httpd-Website.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd-Website.pid" -k graceful > /dev/null 2>/dev/null || true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 8.5 以前の場合は、削除した行を以下の 3 行に置き換えます。
/usr/bin/test -f /run/httpd.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /run/httpd.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /run/httpd.pid" -k graceful > /dev/null 2>/dev/null || true
/usr/bin/test -f /run/httpd.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /run/httpd.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /run/httpd.pid" -k graceful > /dev/null 2>/dev/null || true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
クラスター内のノードのいずれかから、クラスターのステータスを確認します。4 つのリソースがすべて同じノード (
z1.example.com
) で実行されていることに注意してください。設定したリソースが実行していない場合は、
pcs resource debug-start resource
コマンドを実行して、リソースの設定をテストします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターが稼働したら、ブラウザーで、
IPaddr2
リソースとして定義した IP アドレスを指定して、Hello と単語が表示されるサンプル表示を確認します。Hello
Hello
Copy to Clipboard Copied! Toggle word wrap Toggle overflow z1.example.com
で実行しているリソースグループがz2.example.com
ノードにフェールオーバーするかどうかをテストするには、ノードz1.example.com
をstandby
にすると、ノードがリソースをホストできなくなります。pcs node standby z1.example.com
[root@z1 ~]# pcs node standby z1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノード
z1
をstandby
モードにしたら、クラスター内のノードのいずれかからクラスターのステータスを確認します。リソースはすべてz2
で実行しているはずです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定義している IP アドレスの Web サイトは、中断せず表示されているはずです。
スタンバイ
モードからz1
を削除するには、以下のコマンドを実行します。pcs node unstandby z1.example.com
[root@z1 ~]# pcs node unstandby z1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ノードを
スタンバイ
モードから削除しても、リソースはそのノードにフェイルオーバーしません。これは、リソースのresource-stickiness
値により異なります。resource-stickiness
メタ属性については、現在のノードを優先するようにリソースを設定する を参照してください。