Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

9.4. pacemaker_remote サービス

pacemaker_remote サービスを使用すると、corosync を実行していないノードをクラスターに統合し、クラスターが実際のクラスターノードであるかのようにリソースを管理できます。
pacemaker_remote サービスが提供する機能には以下が含まれます。
  • pacemaker_remote サービスを使用すると、RHEL 7.7 の Red Hat サポート制限である 32 ノードを超えた拡張が可能になります。
  • pacemaker_remote サービスを使用すると、仮想環境をクラスターリソースとして管理したり、仮想環境内の個別のサービスをクラスターリソースとして管理したりできます。
pacemaker_remote サービスの記述には、以下の用語が使用されます。
  • クラスターノード: 高可用性サービスを実行するノード(pacemaker および corosync)。
  • リモートノード: pacemaker_remote を実行するノードで、corosync クラスターのメンバーシップを必要とせずにクラスターにリモートで統合します。リモートノードは、ocf:pacemaker:remote リソースエージェントを使用するクラスターリソースとして設定されます。
  • ゲストノード: pacemaker_remote サービスを実行する仮想ゲストノード。仮想ゲストリソースはクラスターにより管理されます。クラスターにより起動し、リモートノードとしてクラスターに統合されます。
  • pacemaker_remote: Pacemaker クラスター環境のリモートノードおよびゲストノード (KVM および LXC) 内でリモートアプリケーション管理を実行できるサービスデーモン。このサービスは、corosync を実行していないノード上でリソースをリモートで管理できる Pacemaker のローカルリソース管理デーモン (LRMD) の強化バージョンです。
  • l xc - libvirt-lxc Linux コンテナードライバーで定義される Linux コンテナー。
pacemaker_remote サービスを実行している Pacemaker クラスターには、以下の特徴があります。
  • リモートノードおよびゲストノードは、pacemaker_remote サービスを実行します(仮想マシン側で必要な設定はほとんどありません)。
  • クラスターノードで実行しているクラスタースタック(pacemaker および corosync)はリモートノードで pacemaker_remote サービスに接続し、クラスターに統合できます。
  • クラスターノードで実行しているクラスタースタック(pacemaker および corosync)はゲストノードを起動し、ゲストノードで pacemaker_remote サービスに即座に接続して、クラスターに統合できます。
クラスターノードと、クラスターノードが管理するリモートおよびゲストノードの主な違いは、リモートおよびゲストノードはクラスタースタックを実行しないことです。そのため、リモートおよびゲストノードには以下の制限があります。
  • クォーラムでは実行されない
  • フェンスデバイスのアクションを実行しません
  • クラスターの指定コントローラー (DC) として機能できない
  • それ自体が完全な pcs コマンドを実行していない
その一方で、リモートノードおよびゲストノードは、クラスタースタックに関連するスケーラビリティーの制限に拘束されません。
このような制限事項以外に、リモートノードとゲストノードは、リソース管理に関してクラスターノードと同様に動作し、リモートノードとゲストノード自体をフェンスすることができます。クラスターは、各リモートノードおよびゲストノードのリソースを完全に管理および監視できます。このようなノードに制約を構築したり、スタンバイ状態にしたり、pcs コマンドを使用してクラスターノードでその他のアクションを実行したりできます。リモートノードおよびゲストノードは、クラスターノードと同様にクラスターステータスの出力に表示されます。

9.4.1. ホストとゲストの認証

クラスターノードと pacemaker_remote の間の接続には、TLS (Transport Layer Security) が使用され、PSK (Pre-Shared Key) の暗号化と TCP 上の認証 (デフォルトで 3121 ポートを使用) でセキュア化されます。つまり、クラスターノードと、pacemaker_remote を実行しているノードは、同じ秘密鍵を共有する必要があります。デフォルトでは、クラスターノードとリモートノードの両方でこのキーを /etc/pacemaker/authkey に配置する必要があります。
Red Hat Enterprise Linux 7.4 以降、pcs cluster node add-guest コマンドはゲストノードの authkey を設定し、pcs cluster node add-remote コマンドはリモートノードの authkey をセットアップします。

9.4.2. ゲストノードリソースのオプション

ゲストノードとして機能するように仮想マシンまたは LXC リソースを設定する場合、仮想マシンを管理する VirtualDomain リソースを作成します。VirtualDomain リソースに設定できるオプションの説明は、表9.3「仮想ドメインリソースのリソースオプション」 を参照してください。
VirtualDomain リソースオプションのほかにも、メタデータオプションはリソースをゲストノードとして定義し、接続パラメーターを定義します。Red Hat Enterprise Linux 7.4 では、pcs cluster node add-guest コマンドを使用してこれらのリソースオプションを設定する必要があります。7.4 以前のリリースでは、リソースを作成する際に、これらのオプションを設定できます。表9.4「KVM/LXC リソースをリモートノードとして設定するメタデータオプション」 では、このようなメタデータオプションについて説明します。

表9.4 KVM/LXC リソースをリモートノードとして設定するメタデータオプション

フィールドデフォルト説明
remote-node
<none>
このリソースが定義するゲストノードの名前。リソースをゲストノードとして有効にし、ゲストノードの識別に使用される一意名を定義します。警告: この値を、リソースやノードの ID と重複させることはできません。
remote-port
3121
pacemaker_remoteへのゲスト接続に使用するカスタムポートを設定します
remote-addr
ホスト名として使用される remote-node
リモートノードの名前がゲストのホスト名ではない場合に接続する IP アドレスまたはホスト名
remote-connect-timeout
60s
保留中のゲスト接続がタイムアウトするまでの時間

9.4.3. リモートノードリソースのオプション

リモートノードは、ocf:pacemaker:remote がリソースエージェントとして指定されたクラスターリソースとして定義されます。Red Hat Enterprise Linux 7.4 では、pcs cluster node add-remote コマンドを使用してこのリソースを作成する必要があります。7.4 以前のリリースでは、pcs resource create コマンドを使用してこのリソースを作成できます。表9.5「リモートノードのリソースオプション」 は、remote リソースに設定できるリソースオプションを説明します。

表9.5 リモートノードのリソースオプション

フィールドデフォルト説明
reconnect_interval
0
リモートノードへのアクティブな接続が切断された後、リモートノードへの再接続を試みる前に待機する時間 (秒単位)。この待機期間は繰り返し発生します。待機期間の後に再接続に失敗した場合、待機期間の後に、新しい再接続が試行されます。このオプションが使用されると、Pacemaker は待機期間の後に無限にリモートノードへ接続を試みます。
server
接続するサーバーの場所。IP アドレスまたはホスト名を指定できます。
port
接続する TCP ポート。

9.4.4. ポートのデフォルトの場所の変更

Pacemaker または pacemaker_remote のいずれかのポートのデフォルトの場所を変更する必要がある場合は、これらのデーモンの両方に影響を与える PCMK_remote_port 環境変数を設定できます。この環境変数は、以下のように /etc/sysconfig/pacemaker ファイルに置くことで有効にできます。
#==#==# Pacemaker Remote
...
#
# Specify a custom port for Pacemaker Remote connections
PCMK_remote_port=3121
特定のゲストノードまたはリモートノードによって使用されるデフォルトのポートを変更する場合は、PCMK_remote_port 変数をそのノードの /etc/sysconfig/pacemaker ファイルに設定する必要があります。また、ゲストノードまたはリモートノードの接続を作成するクラスターリソースを同じポート番号で設定する必要があります(ゲストノードの場合は remote-port メタデータオプション、リモートノードの場合は port オプションを使用します)。

9.4.5. 設定の概要: KVM ゲストノード

本セクションでは、libvirt と KVM 仮想ゲストを使用して、Pacemaker で仮想マシンを起動し、そのマシンをゲストノードとして統合する手順の概要を説明します。
  1. 「リソースとしての仮想ドメインの設定」 で説明するように、VirtualDomain リソースを設定します。
  2. Red Hat Enterprise Linux 7.3 以前を実行しているシステムでは、以下の手順に従って、すべてのクラスターノードと仮想マシン上で、パス /etc/pacemaker/authkey で同じ暗号鍵を配置します。これにより、リモート通信や認証を保護することができます。
    1. すべてのノードで以下のコマンドセットを入力して、セキュアなパーミッションを持つ authkey ディレクトリーを作成します。
      # mkdir -p --mode=0750 /etc/pacemaker
      # chgrp haclient /etc/pacemaker
    2. 以下のコマンドは、暗号化キーを作成する方法の 1 つを示しています。キーは 1 度だけ作成し、すべてのノードにコピーする必要があります。
      # dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4096 count=1
  3. Red Hat Enterprise Linux 7.4 では、すべての仮想マシンで以下のコマンドを実行し、pacemaker_remote パッケージをインストールし、pcsd サービスを起動し、これを起動時に実行できるようにし、ファイアウォールを介して TCP ポート 3121 を許可します。
    # yum install pacemaker-remote resource-agents pcs
    # systemctl start pcsd.service
    # systemctl enable pcsd.service
    # firewall-cmd --add-port 3121/tcp --permanent
    # firewall-cmd --add-port 2224/tcp --permanent
    # firewall-cmd --reload
    Red Hat Enterprise Linux 7.3 以前では、すべての仮想マシンで以下のコマンドを実行し、pacemaker_remote パッケージをインストールし、pacemaker_remote サービスを起動してこれを起動時に実行できるようにし、ファイアウォールを介して TCP ポート 3121 を許可します。
    # yum install pacemaker-remote resource-agents pcs
    # systemctl start pacemaker_remote.service
    # systemctl enable pacemaker_remote.service
    # firewall-cmd --add-port 3121/tcp --permanent
    # firewall-cmd --add-port 2224/tcp --permanent
    # firewall-cmd --reload
  4. 各仮想マシンに、すべてのノードが認識できる静的ネットワークアドレスと一意なホスト名を割り当てます。ゲスト仮想マシンに静的 IP アドレスを設定する方法については、『仮想化の導入および管理ガイド』を参照してください。
  5. Red Hat Enterprise Linux 7.4 以降では、以下のコマンドを使用して、既存の VirtualDomain リソースをゲストノードに変換します。このコマンドは、追加するゲストノードではなく、クラスターノードで実行する必要があります。リソースを変換する以外にも、このコマンドは /etc/pacemaker/authkey をゲストノードにコピーし、ゲストノードで pacemaker_remote デーモンを起動して有効にします。
    pcs cluster node add-guest hostname resource_id [options]
    
    Red Hat Enterprise Linux 7.3 以前では、以下のコマンドを使用して既存の VirtualDomain リソースをゲストノードに変換します。このコマンドは、追加するゲストノードではなく、クラスターノードで実行する必要があります。
    pcs cluster remote-node add hostname resource_id [options]
    
  6. VirtualDomain リソースの作成後は、クラスターの他のノードと同じように、ゲストノードを扱うことができます。たとえば、クラスターノードから実行される次のコマンドのように、リソースを作成し、リソースにリソース制約を設定してゲストノードで実行できます。Red Hat Enterprise Linux 7.3 時点では、ゲストノードをグループで含むことができ、ストレージデバイス、ファイルシステム、および VM をグループ化できます。
    # pcs resource create webserver apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s
    # pcs constraint location webserver prefers guest1

9.4.6. 設定概要: リモートノード (Red Hat Enterprise Linux 7.4)

本セクションでは、Red Hat Enterprise 7.4 において Pacemaker リモートノードを設定し、そのノードを既存の Pacemaker クラスター環境に統合する手順の概要を説明します。
  1. リモートノードを設定するノードで、ローカルファイアウォールを介してクラスター関連のサービスを許可します。
    # firewall-cmd --permanent --add-service=high-availability
    success
    # firewall-cmd --reload
    success
    
    注記
    iptables を直接使用する場合や、firewalld 以外のファイアウォールソリューションを使用する場合は、TCP ポート 2224 および 3121 のポートを開くだけです。
  2. リモートノードに pacemaker_remote デーモンをインストールします。
    # yum install -y pacemaker-remote resource-agents pcs
  3. リモートノードで pcsd を起動し、有効にします。
    # systemctl start pcsd.service
    # systemctl enable pcsd.service
  4. リモートノードとして追加するノードに pcs を認証していない場合は認証します。
    # pcs cluster auth remote1
  5. 以下のコマンドを使用して、リモートノードリソースをクラスターに追加します。このコマンドは、関連するすべての設定ファイルを新しいノードに同期し、ノードを起動し、起動時に pacemaker_remote を開始するように設定します。このコマンドは、追加するリモートノードではなく、クラスターノードで実行する必要があります。
    # pcs cluster node add-remote remote1
  6. remote リソースをクラスターに追加した後、リモートノードをクラスター内の他のノードを処理するのと同じように処理できます。たとえば、以下のコマンドをクラスターノードから実行すると、リソースを作成し、そのリソースにリソース制約を配置して、リモートノードで実行できます。
    # pcs resource create webserver apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s
    # pcs constraint location webserver prefers remote1
    警告
    リソースグループ、コロケーション制約、または順序制約でノード接続リソースを利用しないでください。
  7. リモートノードのフェンスリソースを設定します。リモートノードは、クラスターノードと同じ方法でフェンスされます。クラスターノードと同様に、リモートノードで使用するフェンスリソースを設定します。リモートノードはフェンスアクションを開始できないことに注意してください。クラスターノードのみが、実際に別のノードに対してフェンシング操作を実行できます。

9.4.7. 設定概要: リモートノード (Red Hat Enterprise Linux 7.3 以前)

本セクションでは、Red Hat Enterprise 7.3 以前のシステムにおいて Pacemaker リモートノードを設定し、そのノードを既存の Pacemaker クラスター環境に統合する手順の概要を説明します。
  1. リモートノードを設定するノードで、ローカルファイアウォールを介してクラスター関連のサービスを許可します。
    # firewall-cmd --permanent --add-service=high-availability
    success
    # firewall-cmd --reload
    success
    
    注記
    iptables を直接使用する場合や、firewalld 以外のファイアウォールソリューションを使用する場合は、TCP ポート 2224 および 3121 のポートを開くだけです。
  2. リモートノードに pacemaker_remote デーモンをインストールします。
    # yum install -y pacemaker-remote resource-agents pcs
  3. 適切に通信するには、すべてのノード (クラスターノードとリモートノードの両方) に同じ認証キーがインストールされている必要があります。既存ノードにすでにキーがある場合、そのキーを使用してリモートノードにコピーします。それ以外の場合はリモートノードで新しいキーを作成します。
    リモートノードで以下のコマンドを実行し、セキュアなパーミッションを持つ認証キーのディレクトリーを作成します。
    # mkdir -p --mode=0750 /etc/pacemaker
    # chgrp haclient /etc/pacemaker
    以下のコマンドは、リモートノードで暗号化キーを作成する方法の 1 つを示しています。
    # dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4096 count=1
  4. リモートノードで pacemaker_remote デーモンを開始して有効にします。
    # systemctl enable pacemaker_remote.service
    # systemctl start pacemaker_remote.service
  5. クラスターノードにて、リモートノードの認証キーと同じパスを持つ共有された認証キーの保存場所を作成し、そのディレクトリーにキーをコピーします。この例では、キーが作成されたリモートノードからキーがコピーされます。
    # mkdir -p --mode=0750 /etc/pacemaker
    # chgrp haclient /etc/pacemaker
    # scp remote1:/etc/pacemaker/authkey /etc/pacemaker/authkey
  6. クラスターノードから以下のコマンドを入力して、remote リソースを作成します。この場合、リモートノードは remote1 になります。
    # pcs resource create remote1 ocf:pacemaker:remote
  7. remote リソースの作成後、リモートノードをクラスター内の他のノードを処理するのと同じように処理できます。たとえば、以下のコマンドをクラスターノードから実行すると、リソースを作成し、そのリソースにリソース制約を配置して、リモートノードで実行できます。
    # pcs resource create webserver apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s
    # pcs constraint location webserver prefers remote1
    警告
    リソースグループ、コロケーション制約、または順序制約でノード接続リソースを利用しないでください。
  8. リモートノードのフェンスリソースを設定します。リモートノードは、クラスターノードと同じ方法でフェンスされます。クラスターノードと同様に、リモートノードで使用するフェンスリソースを設定します。リモートノードはフェンスアクションを開始できないことに注意してください。クラスターノードのみが、実際に別のノードに対してフェンシング操作を実行できます。

9.4.8. システムアップグレードおよび pacemaker_remote

Red Hat Enterprise Linux 7.3 では、アクティブな Pacemaker リモートノードで pacemaker_remote サービスが停止すると、ノードを停止する前にクラスターがノードからリソースを正常に移行するようになりました。これにより、クラスターからノードを削除せずに、ソフトウェアのアップグレードやその他の定期的なメンテナンスを実行できるようになりました。ただし、pacemaker_remote がシャットダウンすると、クラスターは即座に再接続を試みます。リソースのモニタータイムアウト内に pacemaker_remote が再起動されない場合、クラスターは監視操作が失敗したと見なします。
アクティブな Pacemaker リモートノードで pacemaker_remote サービスが停止したときに監視が失敗しないようにするには、以下の手順に従って、pacemaker_remote を停止する可能性があるシステム管理を実行する前に、ノードをクラスターから外すことができます。
警告
Red Hat Enterprise Linux 7.2 以前のリリースでは、現在クラスターに統合されているノードで pacemaker_remote が停止すると、クラスターはそのノードをフェンスします。yum update のプロセスの一部として自動的に停止した場合、システムが使用不可の状態になる可能性があります(特に pacemaker_remoteと同時にカーネルもアップグレードされる場合)。Red Hat Enterprise Linux 7.2 以前のリリースでは、以下の手順にしたがって、pacemaker_remote を停止する可能性のあるシステム管理を実行する前に、ノードをクラスターから外す必要があります。
  1. ノードからすべてのサービスを移動する pcs resource disable resourcename を使用して、ノードの接続リソースを停止します。ゲストノードの場合は、仮想マシンも停止するため、メンテナンスを実行するには、クラスターの外部で(たとえば、virshを使用して)VM を起動する必要があります。
  2. 必要なメンテナンスを実行します。
  3. ノードをクラスターに戻す準備ができたら、pcs resource enable でリソースを再度有効にします。