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 リソースをリモートノードとして設定するメタデータオプション」 では、このようなメタデータオプションについて説明します。
フィールド | デフォルト | 説明 |
---|---|---|
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
リソースに設定できるリソースオプションを説明します。
フィールド | デフォルト | 説明 |
---|---|---|
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 で仮想マシンを起動し、そのマシンをゲストノードとして統合する手順の概要を説明します。
- 「リソースとしての仮想ドメインの設定」 で説明するように、
VirtualDomain
リソースを設定します。 - Red Hat Enterprise Linux 7.3 以前を実行しているシステムでは、以下の手順に従って、すべてのクラスターノードと仮想マシン上で、パス
/etc/pacemaker/authkey
で同じ暗号鍵を配置します。これにより、リモート通信や認証を保護することができます。- すべてのノードで以下のコマンドセットを入力して、セキュアなパーミッションを持つ
authkey
ディレクトリーを作成します。#
mkdir -p --mode=0750 /etc/pacemaker
#chgrp haclient /etc/pacemaker
- 以下のコマンドは、暗号化キーを作成する方法の 1 つを示しています。キーは 1 度だけ作成し、すべてのノードにコピーする必要があります。
#
dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4096 count=1
- 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
- 各仮想マシンに、すべてのノードが認識できる静的ネットワークアドレスと一意なホスト名を割り当てます。ゲスト仮想マシンに静的 IP アドレスを設定する方法については、『仮想化の導入および管理ガイド』を参照してください。
- 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]
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 クラスター環境に統合する手順の概要を説明します。
- リモートノードを設定するノードで、ローカルファイアウォールを介してクラスター関連のサービスを許可します。
#
firewall-cmd --permanent --add-service=high-availability
success #firewall-cmd --reload
success注記iptables
を直接使用する場合や、firewalld
以外のファイアウォールソリューションを使用する場合は、TCP ポート 2224 および 3121 のポートを開くだけです。 - リモートノードに pacemaker_remote デーモンをインストールします。
#
yum install -y pacemaker-remote resource-agents pcs
- リモートノードで
pcsd
を起動し、有効にします。#
systemctl start pcsd.service
#systemctl enable pcsd.service
- リモートノードとして追加するノードに
pcs
を認証していない場合は認証します。#
pcs cluster auth remote1
- 以下のコマンドを使用して、リモートノードリソースをクラスターに追加します。このコマンドは、関連するすべての設定ファイルを新しいノードに同期し、ノードを起動し、起動時に
pacemaker_remote
を開始するように設定します。このコマンドは、追加するリモートノードではなく、クラスターノードで実行する必要があります。#
pcs cluster node add-remote remote1
remote
リソースをクラスターに追加した後、リモートノードをクラスター内の他のノードを処理するのと同じように処理できます。たとえば、以下のコマンドをクラスターノードから実行すると、リソースを作成し、そのリソースにリソース制約を配置して、リモートノードで実行できます。#
pcs resource create webserver apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s
#pcs constraint location webserver prefers remote1
警告リソースグループ、コロケーション制約、または順序制約でノード接続リソースを利用しないでください。- リモートノードのフェンスリソースを設定します。リモートノードは、クラスターノードと同じ方法でフェンスされます。クラスターノードと同様に、リモートノードで使用するフェンスリソースを設定します。リモートノードはフェンスアクションを開始できないことに注意してください。クラスターノードのみが、実際に別のノードに対してフェンシング操作を実行できます。
9.4.7. 設定概要: リモートノード (Red Hat Enterprise Linux 7.3 以前)
本セクションでは、Red Hat Enterprise 7.3 以前のシステムにおいて Pacemaker リモートノードを設定し、そのノードを既存の Pacemaker クラスター環境に統合する手順の概要を説明します。
- リモートノードを設定するノードで、ローカルファイアウォールを介してクラスター関連のサービスを許可します。
#
firewall-cmd --permanent --add-service=high-availability
success #firewall-cmd --reload
success注記iptables
を直接使用する場合や、firewalld
以外のファイアウォールソリューションを使用する場合は、TCP ポート 2224 および 3121 のポートを開くだけです。 - リモートノードに pacemaker_remote デーモンをインストールします。
#
yum install -y pacemaker-remote resource-agents pcs
- 適切に通信するには、すべてのノード (クラスターノードとリモートノードの両方) に同じ認証キーがインストールされている必要があります。既存ノードにすでにキーがある場合、そのキーを使用してリモートノードにコピーします。それ以外の場合はリモートノードで新しいキーを作成します。リモートノードで以下のコマンドを実行し、セキュアなパーミッションを持つ認証キーのディレクトリーを作成します。
#
mkdir -p --mode=0750 /etc/pacemaker
#chgrp haclient /etc/pacemaker
以下のコマンドは、リモートノードで暗号化キーを作成する方法の 1 つを示しています。#
dd if=/dev/urandom of=/etc/pacemaker/authkey bs=4096 count=1
- リモートノードで pacemaker_remote デーモンを開始して有効にします。
#
systemctl enable pacemaker_remote.service
#systemctl start pacemaker_remote.service
- クラスターノードにて、リモートノードの認証キーと同じパスを持つ共有された認証キーの保存場所を作成し、そのディレクトリーにキーをコピーします。この例では、キーが作成されたリモートノードからキーがコピーされます。
#
mkdir -p --mode=0750 /etc/pacemaker
#chgrp haclient /etc/pacemaker
#scp remote1:/etc/pacemaker/authkey /etc/pacemaker/authkey
- クラスターノードから以下のコマンドを入力して、
remote
リソースを作成します。この場合、リモートノードはremote1
になります。#
pcs resource create remote1 ocf:pacemaker:remote
remote
リソースの作成後、リモートノードをクラスター内の他のノードを処理するのと同じように処理できます。たとえば、以下のコマンドをクラスターノードから実行すると、リソースを作成し、そのリソースにリソース制約を配置して、リモートノードで実行できます。#
pcs resource create webserver apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s
#pcs constraint location webserver prefers remote1
警告リソースグループ、コロケーション制約、または順序制約でノード接続リソースを利用しないでください。- リモートノードのフェンスリソースを設定します。リモートノードは、クラスターノードと同じ方法でフェンスされます。クラスターノードと同様に、リモートノードで使用するフェンスリソースを設定します。リモートノードはフェンスアクションを開始できないことに注意してください。クラスターノードのみが、実際に別のノードに対してフェンシング操作を実行できます。
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
を停止する可能性のあるシステム管理を実行する前に、ノードをクラスターから外す必要があります。
- ノードからすべてのサービスを移動する pcs resource disable resourcename を使用して、ノードの接続リソースを停止します。ゲストノードの場合は、仮想マシンも停止するため、メンテナンスを実行するには、クラスターの外部で(たとえば、virshを使用して)VM を起動する必要があります。
- 必要なメンテナンスを実行します。
- ノードをクラスターに戻す準備ができたら、pcs resource enable でリソースを再度有効にします。