第3章 Pacemaker を使用した高可用性サービスの管理
Pacemaker サービスは、Galera、RabbitMQ、Redis、および HAProxy 等のコアコンテナーのサービスおよびアクティブパッシブのサービスを管理します。Pacemaker を使用して、マネージドサービス、仮想 IP アドレス、電源管理、およびフェンシングについての一般的な情報を表示および管理します。
3.1. Pacemaker リソースバンドルとコンテナー リンクのコピーリンクがクリップボードにコピーされました!
Pacemaker は、Red Hat OpenStack Platform (RHOSP) のサービスをバンドルセットリソース (バンドル) として管理します。これらのサービスのほとんどはアクティブ/アクティブのサービスで、それぞれのコントローラーノード上で同じように起動し常に動作しています。
ペースメーカーは以下のリソース種別を管理します。
- バンドル
- バンドルリソースはすべてのコントローラーノードで同じコンテナーを設定および複製し、必要なストレージパスをコンテナーディレクトリーにマッピングし、リソース自体に関連する特定の属性を設定します。
- Container
-
コンテナーは、HAProxy のような単純な
systemdサービスから、異なるノード上のサービスの状態を制御および設定する特定のリソースエージェントを必要とする Galera のような複雑なサービスまで、さまざまな種類のリソースを実行することができます。
-
バンドルまたはコンテナーを管理するのに、
podmanまたはsystemctlを使用することはできません。これらのコマンドを使用してサービスのステータスを確認することはできますが、これらのサービスに対してアクションを実行するには Pacemaker を使用する必要があります。 -
Pacemaker が制御する Podman コンテナーでは、Podman により
RestartPolicyがnoに設定されます。これは、Podman ではなく Pacemaker がコンテナーの起動と停止のアクションを制御するようにするためです。
3.1.1. 簡易バンドルセットリソース (簡易バンドル) リンクのコピーリンクがクリップボードにコピーされました!
簡易バンドルセットリソース (簡易バンドル) はコンテナーのセットで、それぞれのコンテナーには全コントローラーノードにわたってデプロイする同じ Pacemaker サービスが含まれます。
以下の例は、pcs status コマンドで出力される簡易バンドルのリストを示しています。
Podman container set: haproxy-bundle [192.168.24.1:8787/rhosp-rhel8/openstack-haproxy:pcmklatest] haproxy-bundle-podman-0 (ocf::heartbeat:podman): Started overcloud-controller-0 haproxy-bundle-podman-1 (ocf::heartbeat:podman): Started overcloud-controller-1 haproxy-bundle-podman-2 (ocf::heartbeat:podman): Started overcloud-controller-2
Podman container set: haproxy-bundle [192.168.24.1:8787/rhosp-rhel8/openstack-haproxy:pcmklatest]
haproxy-bundle-podman-0 (ocf::heartbeat:podman): Started overcloud-controller-0
haproxy-bundle-podman-1 (ocf::heartbeat:podman): Started overcloud-controller-1
haproxy-bundle-podman-2 (ocf::heartbeat:podman): Started overcloud-controller-2
各バンドルでは、以下の情報を確認することができます。
- Pacemaker がサービスに割り当てる名前
- バンドルに関連付けられたコンテナーへの参照
- 異なるコントローラーノードで実行中のレプリカのリストおよびステータス
以下の例は、haproxy-bundle 簡易バンドルの設定を示しています。
この例では、バンドル内のコンテナーについて以下の情報を示しています。
-
image: コンテナーによって使用されるイメージ。アンダークラウドのローカルレジストリーを参照します。 -
network: コンテナーのネットワーク種別。この例では"host"です。 -
options: コンテナーの特定のオプション -
replicas: クラスター内で実行する必要のあるコンテナーのコピーの数を示します。各バンドルには 3 つのコンテナーが含まれ、それぞれが各コントローラーノードに対応します。 -
run-command: コンテナーの起動に使用するシステムコマンド -
Storage Mapping: 各ホスト上のローカルパスからコンテナーへのマッピング。
haproxy設定は、/etc/haproxy/haproxy.cfgファイルではなく、/var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfgファイルにあります。
HAProxy は、トラフィックの負荷を選択したサービスに分散することによって高可用性サービスを提供しますが、ここでは HAProxy を Pacemaker のバンドルサービスとして管理することによって HAProxy を高可用性サービスに設定します。
3.1.2. 複合バンドルセットリソース (複合バンドル) リンクのコピーリンクがクリップボードにコピーされました!
複合バンドルセットリソース (複合バンドル) は、簡易バンドルに含まれる基本的なコンテナーの設定に加えて、リソース設定を指定する Pacemaker サービスです。
この設定は、マルチステートのリソース (実行するコントローラーノードに応じて異なる状態を取ることができるサービス) を管理するのに必要です。
以下の例には、pcs status コマンドで出力される複合バンドルのリストを示しています。
この出力は、各複合バンドルについての以下の情報を示しています。
- RabbitMQ: 簡易バンドルと同様に、3 つすべてのコントローラーノードが、サービスのスタンドアロンインスタンスを実行している。
- Galera: 3 つすべてのコントローラーノードが、同じ制約下で Galera マスターとして動作している。
- Redis: overcloud-controller-0 コンテナーはマスターとして動作し、一方、他の 2 つのコントローラーノードはスレーブとして動作している。それぞれのコンテナー種別は、異なる制約下で動作する可能性があります。
以下の例は、galera-bundle 複合バンドルの設定を示しています。
この出力は、簡易バンドルとは異なり、galera-bundle リソースには、multi-state リソースのあらゆる側面を決定する明示的なリソース設定が含まれていることを示しています。
また、サービスは同時に複数のコントローラーノードで実行される可能性がありますが、コントローラーノード自体は、これらのサービスにアクセスするのに必要な IP アドレスをリッスンしていない場合もあります。サービスの IP アドレスを確認する方法は、「高可用性クラスターでの仮想 IP のリソース情報の表示」 を参照してください。