Red Hat Training

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

High Availability Add-On リファレンス

Red Hat Enterprise Linux 7

Red Hat Enterprise Linux 7 向け High Availability Add-On のリファレンスドキュメント

Logo

Steven Levine

Red Hat Customer Content Services

概要

Red Hat High Availability Add-On リファレンス』は、Red Hat Enterprise Linux 7 向けの Red Hat High Availability Add-On をインストール、設定、および管理するための参考情報を提供します。

第1章 Red Hat High Availability Add-On の設定と管理のリファレンス概要

本章では、Pacemaker を使用する Red Hat High Availability Add-On がサポートするオプションと機能について説明します。ステップごとの基本設定の例は『Red Hat High Availability Add-On の管理』を参照してください。
Red Hat High Availability Add-On クラスターを設定するには、pcs 設定インターフェースまたは pcsd GUI インターフェースを使用します。

1.1. 新機能と変更点

本セクションでは、Red Hat Enterprise Linux 7 の初回リリース以降に追加された Red Hat High Availability Add-On の新機能を取り上げます。

1.1.1. Red Hat Enterprise Linux 7.1 の新機能および変更された機能

Red Hat Enterprise Linux 7.1 には、ドキュメントや機能を対象とする以下の更新および変更が含まれています。
  • 「クラスターリソースのクリーンアップ」 に記載されているように、pcs resource cleanup コマンドがすべてのリソースのリソース状態と failcount をリセットするようになりました。
  • 「リソースを手作業で移動する」 に記載されているように、pcs resource move コマンドの lifetime パラメーターを指定できるようになりました。
  • Red Hat Enterprise Linux 7.1 以降では pcs acl コマンドを使用してローカルユーザーのパーミッションを設定し、アクセス制御リスト (ACL) を使用してクラスター設定への読み取り専用または読み書きアクセスを許可できるようになりました。ACL の詳細は 「ユーザーのパーミッション設定」 を参照してください。
  • 「順序付けされたリソースセット」 および 「リソースのコロケーション」 が大幅に更新および明確化されました。
  • 「リソースの作成」 に、pcs resource create コマンドの disabled パラメーターに関する内容が追加され、作成されたリソースは自動的に起動しないことが明記されました。
  • 「クォーラムオプションの設定」 に、クォーラムの確立時にクラスターがすべてのノードを待たないようにする cluster quorum unblock 機能の説明が追加されました。
  • 「リソースの作成」 に、リソースグループの順序付けを設定するために使用できる pcs resource create コマンドの before および after パラメーターの説明が追加されました。
  • Red Hat Enterprise Linux 7.1 リリース以降ではクラスター設定を tarball にバックアップし、pcs config コマンドで backup および restore オプションを使用してバックアップからすべてのノードのクラスター設定ファイルを復元できるようになりました。この機能の詳細は 「クラスター設定のバックアップおよび復元」 を参照してください。
  • 内容を明確にするため本書全体に小変更が加えられました。

1.1.2. Red Hat Enterprise Linux 7.2 の新機能および変更された機能

Red Hat Enterprise Linux 7.2 ではドキュメントと機能が以下のように更新/変更されています。
  • pcs resource relocate run コマンドを使用して、現在のクラスター状態、制約、リソースの場所、およびその他の設定によって決定される優先ノードにリソースを移動できるようになりました。このコマンドの詳細は、「リソースの優先ノードへの移動」 を参照してください。
  • 外部プログラムを実行してクラスター通知の処理を判断するために ClusterMon を設定する方法をより明確に説明するため、「モニタリングのリソースを使ったイベント通知」 が変更および拡大されました。
  • 冗長な電源供給用のフェンスを設定する場合に各デバイスを 1 度のみ設定する必要があり、ノードのフェンシングには両方のデバイスが必要になることを指定する必要があります。冗長な電源供給にフェンスを設定する方法の詳細は、「冗長電源のフェンシング設定」 を参照してください。
  • 本ドキュメントの 「クラスターノードの追加」 に、ノードを既存のクラスターに追加する手順が追加されました。
  • 表7.1「簡単な場所の制約オプション」 の説明にあるように、新しい resource-discovery の場所の制約オプションにより、Pacemaker が指定されたリソースのノード上でリソースの検索を実行すべきかどうかを指定できるようになりました。
  • ドキュメント全体にわたり、記載内容の明確化を図り、若干の修正を加えました。

1.1.3. Red Hat Enterprise Linux 7.3 の新機能および変更された機能

Red Hat Enterprise Linux 7.3 ではドキュメントと機能が以下のように更新、変更されています。
  • 本バージョンでは、「pacemaker_remote サービス」 全体が書き直されました。
  • アラートエージェントを使用して Pacemaker アラートを設定できます。アラートエージェントは、リソース設定と操作を処理するためにクラスター呼び出しのリソースエージェントと同様にクラスターが呼び出す外部プログラムです。Pacemaker アラートエージェントの説明は 「Pacemaker アラートエージェント (Red Hat Enterprise Linux 7.3 以降)」 を参照してください。
  • 本リリースでは新しいクォーラム管理コマンドがサポートされ、クォーラムの状態を表示し、expected_votes パラメーターを変更することができます。これらのコマンドの説明は 「クォーラム管理コマンド (Red Hat Enterprise Linux 7.3 以降)」 を参照してください。
  • 「クォーラムオプションの変更 (Red Hat Enterprise Linux 7.3 以降)」 に記載されているように、 pcs quorum update コマンドを使用して一般的なクォーラムオプションを変更できるようになりました。
  • クラスターのサードパーティー判別デバイスとして動作する個別のクォーラムデバイスを設定できます。この機能は主に、標準のクォーラムルールが許可するよりも多くのノード障害をクラスターで維持できるようにするために使用されます。この機能はテクニカルリビューとしてのみ提供されます。クォーラムデバイスの説明は 「クォーラムデバイス」 を参照してください。
  • Red Hat Enterprise Linux 7.3 には、Booth クラスターチケットマネージャーを使用して複数のサイトにまたがる高可用性クラスターを設定する機能が提供されます。 この機能はテクニカルプレビューとしてのみ提供されます。Booth クラスターチケットマネージャーの説明は 14章Pacemaker を用いたマルチサイトクラスターの設定 を参照してください。
  • pacemaker_remote サービスを実行している KVM ゲストノードを設定する場合、グループにゲストノードを含めることができます。これにより、ストレージデバイス、ファイルシステムおよび VM をグループ化できます。KVM ゲストノードの設定に関する詳細は 「設定の概要: KVM ゲストノード」 を参照してください。
さらに、ドキュメント全体にわたり記載内容の明確化を図り、若干の修正を加えました。

1.1.4. Red Hat Enterprise Linux 7.4 の新機能および変更された機能

Red Hat Enterprise Linux 7.4 では、ドキュメントと機能が以下のように更新、変更されています。
  • Red Hat Enterprise Linux 7.4 には、Booth クラスターチケットマネージャーを使用して複数のサイトにまたがる高可用性クラスターを設定する機能が完全に提供されます。 Booth クラスターチケットマネージャーの説明は 14章Pacemaker を用いたマルチサイトクラスターの設定 を参照してください。
  • Red Hat Enterprise Linux 7.4 は、個別のクォーラムを設定する機能に完全に対応しています。この機能は主に、標準のクォーラムルールが許可するよりも多くのノード障害をクラスターで維持できるようにするために使用されます。クォーラムデバイスの説明は 「クォーラムデバイス」 を参照してください。
  • ノード名で適用した正規表現と、ノード属性とその値によってフェンシングトポロジーでノードを指定できるようになりました。フェンシングレベルの説明は、「フェンスレベルの設定」を参照してください。
  • Red Hat Enterprise Linux 7.4は、NodeUtilization リソースエージェントに対応しています。これは利用可能な CPU、ホストメモリの可用性、ハイパーバイザーメモリの可用性のシステムパラメーターを検出し、これらのパラメーターを CIB に追加できます。このリソースエージェントの説明は、「NodeUtilization リソースエージェント (Red Hat Enterprise Linux 7.4 以降)」を参照してください。
  • Red Hat Enterprise Linux 7.4 では、cluster node add-guestcluster node remove-guest コマンドは、remote-node addcluster remote-node remove コマンドに代わります。 pcs cluster node add-guest コマンドは、ゲストノードの authkey を設定し、pcs cluster node add-remote は、リモートノードの authkey を設定します。更新したゲストとリモートノード設定手順は、「リソースとしての仮想ドメインの設定」を参照してください。
  • Red Hat Enterprise Linux 7.4 は systemd resource-agents-deps ターゲットに対応しています。これにより、「Pacemaker で管理されていないリソースの依存関係の起動順の設定 (Red Hat Enterprise Linux 7.4 以降)」 で説明しているように、クラスターにより管理されない依存関係を持つリソースを含むクラスターに適切な起動順序を設定できるようになります。
  • マスター/スレーブクローンとしてリソースを作成するコマンドの形式は、このリリースで変更されています。マスター/スレーブクローンの作成の説明は、「多状態のリソース: 複数モードのリソース」を参照してください。

1.1.5. Red Hat Enterprise Linux 7.5 の新機能および変更された機能

Red Hat Enterprise Linux 7.5 では、ドキュメントと機能が以下のように更新、変更されています。

1.2. Pacemaker 設定ツールのインストール

以下の yum install コマンドを使って Red Hat High Availability Add-On ソフトウェアのパッケージおよび利用可能なフェンスエージェントを High Availability チャネルからインストールします。
# yum install pcs pacemaker fence-agents-all
このコマンドの代わりに以下のコマンドを実行すると、Red Hat High Availability Add-On ソフトウェアパッケージと必要なフェンスエージェントのみをインストールできます。
# yum install pcs pacemaker fence-agents-model
以下のコマンドは、利用できるフェンスエージェントの一覧を表示します。
# rpm -q -a | grep fence
fence-agents-rhevm-4.0.2-3.el7.x86_64
fence-agents-ilo-mp-4.0.2-3.el7.x86_64
fence-agents-ipmilan-4.0.2-3.el7.x86_64
...
lvm2-clustergfs2-utils のパッケージは ResilientStorage チャンネルの一部になります。必要に応じて次のコマンドでインストールを行ってください。
# yum install lvm2-cluster gfs2-utils

警告

Red Hat High Availability Add-On パッケージのインストール後、必ずソフトウェア更新に関する設定で自動インストールが行われないよう設定してください。実行中のクラスターでインストールが行われると予期しない動作の原因となる場合があります。

1.3. ファイアウォールでクラスターコンポーネントを許可する iptables 設定

注記

クラスターコンポーネントの理想的なファイアウォール設定は、ローカル環境によって異なります。ここでは、ノードに複数のネットワークインターフェースがあるかどうか、またはオフホストのファイアウォールがあるかどうかを考慮する必要があります。ここの例では、Pacemaker クラスターが通常必要とするポートを開放するものが、ローカル条件に見合うように変更する必要があります。
表1.1「High Availability Add-On で有効にするポート」 では、Red Hat High Availability Add-On に有効化するポートと、使用するポートについて説明しています。また、以下のコマンドを実行して firewalld デーモンですべてのポートを有効化することもできます。
# firewall-cmd --permanent --add-service=high-availability
# firewall-cmd --add-service=high-availability

表1.1 High Availability Add-On で有効にするポート

ポート必要になる場合
TCP 2224
すべてのノードで必須 (pcsd Web UI で必要となり、ノード間通信に必須)
任意のノードの pcs が、それ自体も含め、クラスター内のすべてのノードに通信できる方法でポート 2224 を開くことは重要です。Booth クラスターチケットマネージャーまたはクォーラムデバイスを使用する場合は、Booth Arbiter、またはクォーラムデバイスなどのすべての関連ホストで、ポート 2224 を開く必要があります。
TCP 3121
クラスターに Pacemaker リモートノードがある場合にすべてのノードで必須です。
完全なクラスターノード上の Pacemaker の cmd デーモンは、ポート 3121 で Pacemaker リモートノードの pacemaker_remoted デーモンに通信できます。クラスターの通信に別個のインターフェースが使用される場合、ポートは単にそのインターフェースで開いておく必要があります。最低限でも、ポートは完全なクラスターノードに対して Pacemaker リモートノードで開いている必要があります。ユーザーは完全なノードとリモートノード間でホストを変換する可能性があるか、またはホストのネットワークを使用してコンテナー内でリモートノードを実行する可能性があるため、すべてのノードに対してポートを開くことは役に立ちます。ノード以外のホストに対してポートを開く必要はありません。
TCP 5403
corosync-qnetd でクォーラムデバイスを使用する場合にクォーラムデバイスで必須。デフォルト値は、corosync-qnetd コマンドの -p オプションを使用して変更できます。
UDP 5404
corosync がマルチキャスト UDP に設定されている場合は、corosync ノードで必須
UDP 5405
すべての corosync ノードで必須 (corosync で必要)
TCP 21064
DLM を必要とするリソースがクラスターに含まれる場合は、すべてのノードで必須です (例: clvm または GFS2)。

1.4. クラスターと Pacemaker の設定ファイル

Red Hat High Availability Add-On の設定ファイルは、corosync.conf および cib.xml です。
corosync.conf は、Pacemaker が構築されているクラスターマネージャーの corosync によって使用されるクラスターパラメーターを与えます。一般的に、corosync.conf は直接編集せずに、pcs または pcsd インターフェイスを使用してください。ただし、このファイルを直接編集する必要のある状況も考えられます。corosync.conf ファイルの編集は、Editing the corosync.conf file in Red Hat Enterprise Linux 7を参照してください。
cib.xml ファイルは、クラスターの設定、およびクラスターの全リソースの現在の状態を表す XML ファイルです。このファイルは Pacemaker のクラスター情報ベース (CIB) により使用されます。CIB の内容は、自動的にクラスター全体に同期されます。cib.xml ファイルは直接編集せず、代わりに pcs または pcsd インターフェースを使用してください。

1.5. クラスター設定の注意事項

Red Hat High Availability Add-On クラスターの設定時、以下の注意事項を考慮する必要があります。
  • Red Hat は完全なクラスターノードが 17 個以上あるクラスターデプロイメントをサポートしません。しかし、pacemaker_remote サービスを実行しているリモートノードを使用すると、この制限を超えた拡張が可能になります。pacemaker_remote サービスの説明は 「pacemaker_remote サービス」 を参照してください。
  • DHCP (Dynamic Host Configuration Protocol) を使用して corosync デーモンによって使用されるネットワークインターフェースで IP アドレスを取得することはサポートされません。アドレスの更新中、DHCP クライアントは割り当てられたインターフェースに対して定期的に IP アドレスを削除および再追加することができます。これにより、corosync によって接続障害が検出され、クラスターの他のノードからのフェンシングアクティビティーによってハートビート接続性に corosync が使用されます。

1.6. Red Hat Enterprise Linux High Availability クラスターの更新

RHEL High Availability および Resilient Storage Add-On を構成するパッケージを、個別または全体として更新するには、2 つの一般的な方法の内のいずれかを使用できます。
  • ローリングアップデート - サービスからノードを、一度に 1 つずつ削除し、そのソフトウェアを更新してから、これをクラスターに戻します。これにより、各ノードが更新されている間に、クラスターがサービスの提供とリソースの管理を継続できます。
  • クラスター全体の更新 - クラスター全体を停止し、更新をすべてのノードに適用してから、クラスターのバックアップを開始します。

警告

Red Hat Enterprise LInux High Availability および Resilient Storage クラスターのソフトウェア更新手順を実行する際に、それらの更新が開始される前に、更新を行うノードがクラスターのアクティブなメンバーではないことを確認する必要があります。
これらの各方法の詳細な説明および更新手順は「Recommended Practices for Applying Software Updates to a RHEL High Availability or Resilient Storage Cluster」を参照してください。

1.7. RHEL クラスターでの VM のライブ移行についての問題

仮想化クラスターメンバーとの RHEL 高可用性クラスターのサポートポリシーの説明は、「Support Policies for RHEL High Availability Clusters - General Conditions with Virtualized Cluster Members」 を参照してください。説明にもあるように、Red Hat はハイパーバイザーやホストにわたるアクティブなクラスターノードのライブ移行をサポートしていません。ライブ移行を行う必要がある場合は、最初に VM 上のクラスターを停止してクラスターからノードを削除し、移行を行った後にクラスターのバックアップを開始する必要があります。
以下の手順では、クラスターから VM を削除し、VM を移行して、クラスターに VM を復元する手順を説明しています。

注記

この操作を行う前に、クラスターノードの削除によるクラスタークォーラムにおける影響を考慮してください。3 つのノードクラスターがあり、1 つのノードを削除する場合、クラスターが耐えられるのは、あと 1 つのノードエラーのみです。3 つのノードクラスターの 1 つが既にダウンしている場合は、2 つ目のノードを削除すると、クォーラムが失われます。
  1. 移行する VM 上で実行しているリソースやソフトウェアの停止または削除を行う前に準備を行う必要がある場合は、次の手順を実行します。
  2. 管理リソースを VM から移動します。リソースの割り当てに関する特定の要件や条件がある場合は、正しいノードにリソースを配置するための新しい場所の制約を作成することを考慮してください。
  3. VM をスタンバイモードにして、サービスで考慮されていないことや、残りのリソースが別の場所に再配置され、停止されるようにします。
    # pcs cluster standby VM
  4. VM 上で以下のコマンドを実行して、VM 上のクラスターソフトウェアを停止します。
    # pcs cluster stop
  5. VM のライブ移行を実行します。
  6. VM 上でクラスターサービスを開始します。クラスターサービスが移行の前に有効化されている場合は、再び有効化できます。
    # pcs cluster start
    # pcs cluster enable
  7. VM をスタンバイモードから解除します。
    # pcs cluster unstandby VM
  8. VM をスタンバイモードにする前に一時的な場所の制約を作成した場合、これらの制約を調整または削除して、リソースが通常の優先場所に戻れるようにします。

第2章 pcsd Web UI

本章では、pcsd Web UI を用いた Red Hat High Availability クラスターの設定について説明します。

2.1. pcsd Web UI の設定

pcsd Web UI を使用してクラスターを設定するようシステムを設定するには、以下の手順に従います。
  1. 「Pacemaker 設定ツールのインストール」 の説明に従って Pacemaker 設定ツールをインストールします。
  2. クラスターの一部である各ノードで、passwd コマンドを使用してユーザー hacluster のパスワードを設定します。各ノードに同じパスワードを使用してください。
  3. 各ノードの pcsd デーモンを開始し、有効にします。
    # systemctl start pcsd.service
    # systemctl enable pcsd.service
  4. クラスターの 1 つのノードで、以下のコマンドを使用してクラスターを構成するノードを認証します。このコマンドを実行すると、UsernamePassword を指定するよう要求されます。Username には hacluster を指定してください。
    # pcs cluster auth node1 node2 ... nodeN
  5. いずれかのシステムで、以下の URL をブラウザーで開き、承認したノードの 1 つを指定します (https プロトコルを使用することに注意してください)。指定すると pcsd Web UI のログイン画面が表示されます。
    https://nodename:2224
  6. ユーザー hacluster としてログインします。図2.1「クラスターページの管理」 に記載されている Manage Clusters ページが表示されます。
    クラスターページの管理

    図2.1 クラスターページの管理

2.2. pcsd Web UI を用いたクラスターの作成

Manage Clusters ページでは新しいクラスターを作成できます。また、既存クラスターを Web UI へ追加したり、クラスターを Web UI から削除したりすることができます。
  • クラスターを作成するには、 Create New をクリックし、作成するクラスターとクラスターを構成するノードの名前を入力します。また、この画面では 「高度なクラスター設定オプション」 に記載されているクラスター通信のトランスポートメカニズムなどの高度なクラスターオプションを設定することもできます。クラスター情報の入力後、Create Cluster をクリックします。
  • 既存のクラスターを Web UI に追加するには、Add Existing をクリックし、Web UI で管理したいクラスターのノードのホスト名または IP アドレスを入力します。
クラスターの作成または追加後、クラスター名が Manage Cluster ページに表示されます。クラスターを選択すると、そのクラスターの情報が表示されます。

注記

pcsd Web UI を使用してクラスターを設定する場合、多くのオプションを説明するテキストの上にマウスを移動すると、tooltip 表示としてそのオプションの詳細を表示することができます。

2.2.1. 高度なクラスター設定オプション

クラスターの作成時、 図2.2「クラスターページの作成」 の説明のように Advanced Options をクリックすると追加のクラスターオプションを設定できます。表示されるオプションのテキスト上にマウスを移動すると、そのオプションの情報を確認できます。
各ノードのインターフェースを指定すると、クラスターに冗長リングプロトコル (Redundant Ring Protocol) を設定できます。クラスターのトランスポートメカニズムのデフォルト値である UDPU の代わりに UDP を選択すると、冗長リングプロトコル (Redundant Ring Protocol) 設定の表示が変更されます。
クラスターページの作成

図2.2 クラスターページの作成

2.2.2. クラスター管理パーミッションの設定

ユーザーに付与可能なクラスターパーミッションには以下の 2 つのセットがあります。
  • Web UI でクラスターを管理するためのパーミッション。これはネットワーク上でノードに接続する pcs コマンドを実行するためのパーミッションも付与します。このセクションでは、これらのパーミッションを Web UI で設定する方法を説明します。
  • ACL を使用した、クラスター設定に読み込み専用または読み書きアクセスをローカルユーザーに許可するパーミッション。Web UI での ACL 設定は、「ACL の設定」 で説明しています。
ユーザーパーミッションの詳細は、「ユーザーのパーミッション設定」 で説明しています。
ユーザー hacluster 以外の特定のユーザーにパーミッションを付与することができます。グループ haclient に追加することで Web UI からクラスターを管理し、ネットワークからノードに接続する pcs コマンドを実行できます。クラスターの管理 ページの パーミッション をクリックして、結果画面でパーミッションを設定することで、グループ haclient の個別のメンバーに設定したパーミッションを設定できます。この画面からは、グループのパーミッションを設定することもできます。
付与できるパーミッションは以下の通りです。
  • 読み取りパーミッション (クラスター設定の表示)
  • 書き込みパーミッション (パーミッションおよび ACL を除くクラスター設定の変更)
  • 付与パーミッション (クラスターパーミッションおよび ACL の変更)
  • フルパーミッション (ノードの追加や削除などのクラスターへの無制限アクセス、およびキーや証明書へのアクセス)

2.3. クラスターコンポーネントの設定

クラスターのコンポーネントと属性を設定するには、Manage Clusters 画面に表示されるクラスターの名前をクリックします。これにより 「クラスターノード」 に記載されている Nodes ページが表示されます。図2.3「クラスターコンポーネントのメニュー」 の説明どおり、このページの上部には以下のエントリーが含まれるメニューが表示されます。
クラスターコンポーネントのメニュー

図2.3 クラスターコンポーネントのメニュー

2.3.1. クラスターノード

クラスター管理ページの上部にあるメニューから Nodes オプションを選択すると、ノードで実行されているリソースやリソースの場所設定などの、現在設定されているノードと現在選択されたノードの状態が表示されます。このページは、Manage Clusters 画面でクラスターを選択すると表示されるデフォルトページです。
このページでノードを追加または削除することができ、ノードを起動、停止、および再起動することができます。ノードをスタンバイモードにすることもできます。スタンバイモードの詳細は、「スタンバイモード」 を参照してください。
「フェンスデバイス」 に説明があるように、Configure Fencing を選択するとこのページで直接フェンスデバイスを設定することもできます。

2.3.2. クラスターリソース

クラスター管理ページの上部にあるメニューから Resources オプションを選択すると、クラスターの現在設定されているリソースがリソースグループに応じて表示されます。グループまたはリソースを選択すると、そのグループまたはリソースの属性が表示されます。
この画面では、リソースの追加または削除、既存リソースの設定変更、およびリソースグループの作成を行うことができます。
新しいリソースをクラスターに追加するには、Add をクリックし、Add Resource 画面を表示します。Type ドロップダウンメニューからリソースタイプを選択すると、そのリソースに指定する必要がある引数がメニューに表示されます。リソースに指定できる任意の引数を表示するには、Optional Arguments をクリックします。作成するリソースのパラメーターを入力したら、Create Resource をクリックします。
リソースの引数を設定するとき、引数の簡単な説明がメニューに表示されます。カーソルをフィールドに移動すると、その引数の詳細な説明が表示されます。
リソースは、クローンされたリソースまたはマスター/スレーブリソースして定義できます。これらのリソースタイプの詳細は 9章高度な設定 を参照してください。
最低でも 1 つのリソースを作成したら、リソースグループを作成できます。リソースグループの詳細は 「リソースグループ」 を参照してください。
リソースグループを作成するには、グループの一部になるリソースを Resources から選択し、Create Group をクリックします。Create Group 画面が表示されたらグループ名を入力し、Create Group をクリックします。すると、Resources 画面に戻り、リソースのグループ名が表示されます。リソースグループの作成後、追加のリソースを作成または編集するときにグループ名をリソースパラメーターとして示すことができます。

2.3.3. フェンスデバイス

クラスター管理ページの上部にあるメニューから Fence Devices オプションを選択すると、Fence Devices 画面が表示され、現在設定されているフェンスデバイスが表示されます。
新しいフェンスデバイスをクラスターに追加するには、Add をクリックし、Add Fence Device 画面を表示します。Type ドロップダウンメニューからフェンスデバイスタイプを選択すると、そのフェンスデバイスに指定する必要がある引数がメニューに表示されます。フェンスデバイスに指定できる任意の引数を表示するには、Optional Arguments をクリックします。新しいフェンスデバイスのパラメーターを入力したら Create Fence Instance をクリックします。
Pacemaker を用いたフェンスデバイスの設定の詳細は 5章フェンス機能: STONITH の設定 を参照してください。

2.3.4. ACL の設定

クラスター管理ページの上部にあるメニューから ACLS オプションを選択すると、ローカルユーザーのパーミッションを設定できる画面が表示されます。アクセス制御リスト (ACL) を使用すると、クラスター設定への読み取り専用または読み書きアクセスが可能になります。
ACL パーミッションを割り当てるには、ロールを作成し、そのロールのアクセスパーミッションを定義します。XPath クエリーまたは特定要素の ID のいずれかに適用される各ロールのパーミッション (Read (読み取り)/write (書き込み/deny (拒否)) の数は無制限です。

2.3.5. クラスターのプロパティ

クラスター管理ページの上部にあるメニューから Cluster Properties オプションを選択するとクラスタープロパティーが表示され、これらのプロパティーの値をデフォルト値から他の値に変更できます。Pacemaker クラスタープロパティーの詳細は 12章Pacemaker クラスターのプロパティ を参照してください。

第3章 pcs コマンドラインインターフェース

pcs コマンドラインインターフェースは、インターフェースを corosync.conf および cib.xml ファイルに提供し、corosync と Pacemaker を制御および設定します。
pcs コマンドの一般的な形式を以下に示します。
pcs [-f file] [-h] [commands]...

3.1. pcs コマンド

pcs コマンドを以下に示します。

3.2. pcs Usage Help Display

pcs-h オプションを使用すると pcs のパラメーターとその詳細を表示させることができます。例えば、次のコマンドでは pcs resource コマンドのパラメーターが表示されます。次の例は出力の一部です。
# pcs resource -h
Usage: pcs resource [commands]...
Manage pacemaker resources
Commands:
    show [resource id] [--all]
        Show all currently configured resources or if a resource is specified
        show the options for the configured resource.  If --all is specified
        resource options will be displayed

    start <resource id>
        Start resource specified by resource_id
...

3.3. raw クラスター設定の表示

クラスター設定ファイルは直接編集すべきではありませんが、pcs cluster cib コマンドを使用すると raw クラスター設定を表示できます。
「設定の変更をファイルに保存」 に記載されているように、pcs cluster cib filename コマンドを使うと raw クラスター設定を指定のファイルに保存することができます。

3.4. 設定の変更をファイルに保存

pcs コマンドを使用する際、-f オプションを使うとアクティブの CIB に影響を与えずに設定変更をファイルに保存することができます。
クラスターが設定済みでアクティブな CIB が存在する場合は、次のコマンドを使用すると raw xml ファイルを保存できます。
pcs cluster cib filename
たとえば、次のコマンドを使用すると CIB の raw xml が testfile という名前のファイルに保存されます。
pcs cluster cib testfile
次のコマンドでは testfile1 ファイル内にリソースをひとつ作成しています。ただし、そのリソースは現在実行中のクラスター構成には追加されません。
# pcs -f testfile1 resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.120 cidr_netmask=24 op monitor interval=30s
次のコマンドで testfile の現在のコンテンツを CIB にプッシュします。
pcs cluster cib-push filename

3.5. 状態の表示

次のコマンドでクラスターおよびクラスターリソースの状態を表示します。
pcs status commands
commands パラメーターを指定しないとクラスターおよびリソースの全情報が表示されます。resourcesgroupsclusternodespcsd などを指定すると特定のクラスターコンポーネントの状態のみを表示させることができます。

3.6. 全クラスター設定の表示

現在の全クラスター設定を表示させる場合は次のコマンドを使います。
pcs config

3.7. 現在の pcs バージョンの表示

実行中の pcs の現行バージョンを表示します。
pcs --version

3.8. クラスター設定のバックアップおよび復元

Red Hat Enterprise Linux 7.1 リリース以降では、以下のコマンドを使用してクラスター設定を tarball にバックアップできます。ファイル名を指定しないと、標準出力が使用されます。
pcs config backup filename
以下のコマンドを使用して、バックアップからすべてのノードのクラスター設定ファイルを復元します。ファイル名を指定しないと、標準出力が使用されます。--local オプションを指定すると、現在のノードのファイルのみが復元されます。
pcs config restore [--local] [filename]

第4章 クラスターの作成と管理

本章ではクラスターの作成、クラスターコンポーネントの管理、クラスターの状態表示など Pacemaker で行うクラスターの基本的な管理について見ていきます。

4.1. クラスターの作成

クラスターを作成するため次のステップを行って行きます。
  1. クラスターの各ノードで pcsd を開始します。
  2. クラスターを構成するノードを認証します。
  3. クラスターノードの設定と同期を行います。
  4. クラスターノードでクラスターサービスを起動します。
次のセクションでは、上記の手順で使用するコマンドについて詳しく見ていきます。

4.1.1. pcsd デーモンの開始

以下のコマンドは pcsd サービスを開始し、システムの起動時に pcsd を有効にします。これらのコマンドはクラスターの各ノードで実行する必要があります。
# systemctl start pcsd.service
# systemctl enable pcsd.service

4.1.2. クラスターノードの認証

次のコマンドではクラスター内のノード上にある pcs デーモンに対して pcs の認証を行います。
  • すべてのノードで pcs 管理者のユーザー名を hacluster にする必要があります。ユーザー hacluster のパスワードも各ノードで同じパスワードを使用することが推奨されます。
  • usernamepassword を指定しないと、コマンドの実行時にノードごとにこれらのパラメーターを入力するよう要求されます。
  • ノードを指定しないと、前回実行した pcs cluster setup コマンドで指定されているノードの pcs を認証することになります。
pcs cluster auth [node] [...] [-u username] [-p password]
たとえば、以下のコマンドは z1.example.comz2.example.com の両方で構成されるクラスターのノード両方に対して z1.example.com のユーザー hacluster を認証します。このコマンドは、クラスターノードのユーザー hacluster に対するパスワードを要求します。
root@z1 ~]# pcs cluster auth z1.example.com z2.example.com
Username: hacluster
Password:
z1.example.com: Authorized
z2.example.com: Authorized
認証トークンが ~/.pcs/tokens (または /var/lib/pcsd/tokens) ファイルに格納されます。

4.1.3. クラスターノードの設定と起動

次のコマンドでクラスター設定ファイルの構成、指定ノードに対する設定の同期を行います。
  • --start オプションを使用すると指定ノードでクラスターサービスが起動されます。必要に応じて、別途 pcs cluster start コマンドを使ってクラスターサービスを起動させることもできます。
    pcs cluster setup --start コマンドでクラスターを作成する場合、または pcs cluster start コマンドでクラスターサービスを開始する場合、クラスターが稼働するまでに若干の遅延が発生することがあります。クラスターおよび設定の作業を続行する前に、pcs cluster status コマンドを使用してクラスターが稼働していることを確認することが推奨されます。
  • --local オプションを使用するとローカルノードでのみ変更を実行します。
pcs cluster setup [--start] [--local] --name cluster_ name node1 [node2] [...]
次のコマンドは指定ノード (複数指定可) でクラスターサービスを起動します。
  • --all オプションを使用すると全ノードでクラスターサービスを起動します。
  • ノードを指定しないとクラスターサービスはローカルのノードでしか起動されません。
pcs cluster start [--all] [node] [...]

4.2. クラスターのタイムアウト値の設定

pcs cluster setup コマンドを使用してクラスターを作成する場合、クラスターのタイムアウト値はほとんどのクラスター設定に適するデフォルト値に設定されます。システムに他のタイムアウト値が必要な場合は、表4.1「タイムアウトオプション」 に記載されている pcs cluster setup オプションを使用してデフォルト値を変更できます。

表4.1 タイムアウトオプション

オプション説明
--token timeoutトークンを受信しなかった後にトークンの損失が宣言されるまでの時間をミリ秒単位で設定します (デフォルトは 1000 ms です)。
--join timeoutjoin メッセージの待ち時間をミリ秒単位で設定します (デフォルトは 50 ms です)。
--consensus timeout新しいメンバーシップの設定を開始する前に合意が得られるまでの待ち時間をミリ秒単位で設定します (デフォルトは 1200 ms です)。
--miss_count_const count再送信が行われる前に、トークンの受信時に再送信のメッセージがチェックされる最大回数を設定します。デフォルトは 5 (5 つのメッセージ) です。
--fail_recv_const failures新しい設定の構成前に、受信しなければならないメッセージが発生する可能性がある場合、メッセージを受信せずにトークンをローテーションする回数を指定します (デフォルトの失敗数は 2500 です)。
たとえば、以下のコマンドは new_cluster というクラスターを作成し、トークンのタイムアウト値を 10000 ミリ秒 (10 秒)、join タイムアウト値を 100 ミリ秒に設定します。
# pcs cluster setup --name new_cluster nodeA nodeB --token 10000 --join 100

4.3. 冗長リングプロトコル (RRP) の設定

注記

Red Hat は、 Support Policies for RHEL High Availability Clusters - Cluster Interconnect Network Interfaces の「Redundant Ring Protocol (RRP)」の項で説明している条件に依存する、クラスターでの冗長リングプロトコルに対応しています。
pcs cluster setup コマンドを使用してクラスターを作成する場合、各ノードの両方のインターフェースを指定すると冗長リングプロトコル (RRP) を用いてクラスターを設定できます。デフォルトの udpu トランスポートを使用する場合にクラスターノードを指定するには、リング 0 アドレス、「,」、リング 1 アドレスの順に指定します。
たとえば、以下のコマンドはノード A とノード B の 2 つのノードを持つ my_rrp_clusterM というクラスターを設定します。ノード A には nodeA-0nodeA-1 の 2 つのインターフェースがあります。ノード B には nodeB-0nodeB-1 の 2 つのインターフェースがあります。RRP を使用してこれらのノードをクラスターとして設定するには、以下のコマンドを実行します。
# pcs cluster setup --name my_rrp_cluster nodeA-0,nodeA-1 nodeB-0,nodeB-1 
udp トランスポートを使用するクラスターに RRP を設定する場合の詳細は、pcs cluster setup コマンドのヘルプスクリーンを参照してください。

4.4. クラスターノードの管理

次のセクションではクラスターサービスの起動や停止、クラスターノードの追加や削除などクラスターノードの管理で使用するコマンドについて説明します。

4.4.1. クラスターサービスの停止

次のコマンドで指定ノード (複数指定可) のクラスターサービスを停止します。pcs cluster start と同様に --all オプションを使うと全ノードのクラスターサービスが停止されます。ノードを指定しない場合はローカルノードのクラスターサービスのみが停止されます。
pcs cluster stop [--all] [node] [...]
次のコマンドでローカルノードでのクラスターサービスの停止を強制することができます。このコマンドは kill -9 コマンドを実行します。
pcs cluster kill

4.4.2. クラスターサービスの有効化および無効化

指定ノード (複数指定可) の起動時にクラスターサービスが実行されるよう設定する場合は次のコマンドを使用します。
  • --all オプションを使用すると全ノードでクラスターサービスが有効になります。
  • ノードを指定しないとローカルノードでのみクラスターサービスが有効になります。
pcs cluster enable [--all] [node] [...]
指定ノード (複数指定可) の起動時にクラスターサービスが実行されないよう設定する場合は次のコマンドを使用します。
  • --all オプションを使用すると、全ノードでクラスターサービスが無効になります。
  • ノードを指定しないと、ローカルノードでのみクラスターサービスが無効になります。
pcs cluster disable [--all] [node] [...]

4.4.3. クラスターノードの追加

注記

運用保守期間中に、既存のクラスターにノードを追加することが強く推奨されます。これにより、新しいノードとそのフェンシング設定に対して、適切なリソースとデプロイメントのテストを実行できます。
以下の手順にしたがって既存のクラスターに新しいノードを追加します。この例では、既存のクラスターノードは clusternode-01.example.comclusternode-02.example.com、および clusternode-03.example.com になります。新たに追加するノードは newnode.example.com になります。
クラスターに追加する新しいノードで、以下の作業を行います。
  1. クラスターパッケージをインストールします。クラスターで SBD、Booth チケットマネージャー、または定足数デバイスを使用する場合は、対応するパッケージ (sbdbooth-sitecorosync-device) 新しいノードにもインストールする必要があります。
    [root@newnode ~]# yum install -y pcs fence-agents-all
  2. firewalld デーモンを実行している場合は、以下のコマンドを実行して Red Hat High Availability Add-On が必要とするポートを有効にします。
    # firewall-cmd --permanent --add-service=high-availability
    # firewall-cmd --add-service=high-availability
  3. ユーザー ID hacluster のパスワードを設定します。クラスターの各ノードに同じパスワードを使用することが推奨されます。
    [root@newnode ~]# passwd hacluster
    Changing password for user hacluster.
    New password:
    Retype new password:
    passwd: all authentication tokens updated successfully.
  4. 次のコマンドを実行して pcsd サービスを開始し、システムの起動時に pcsd が有効になるようにします。
    # systemctl start pcsd.service
    # systemctl enable pcsd.service
既存クラスターのノードの 1 つで以下の作業を行います。
  1. 新しいクラスターノードでユーザー hacluster を認証します。
    [root@clusternode-01 ~]# pcs cluster auth newnode.example.com
    Username: hacluster
    Password:
    newnode.example.com: Authorized
  2. 新しいノードを既存のクラスターに追加します。さらに、このコマンドは corosync.conf クラスター設定ファイルをクラスターのすべてのノード (追加する新しいノードを含む) に対して同期します。
    [root@clusternode-01 ~]# pcs cluster node add newnode.example.com
クラスターに追加する新しいノードで、以下の作業を行います。
  1. 新しいノードでクラスターサービスを開始および有効化します。
    [root@newnode ~]# pcs cluster start
    Starting Cluster...
    [root@newnode ~]# pcs cluster enable
  2. 新しいクラスターノードのフェンスデバイスを設定してテストするようにしてください。フェンスデバイスの設定は 5章フェンス機能: STONITH の設定 を参照してください。

4.4.4. クラスターノードの削除

以下のコマンドは指定のノードをシャットダウンし、クラスターのその他すべてのノードで corosync.conf クラスター設定ファイルから指定のノードを削除します。クラスターに関するすべての情報をクラスターノード全体で削除し、クラスターを永久的に破壊する方法については、「クラスター設定の削除」 を参照してください。
pcs cluster node remove node

4.4.5. スタンバイモード

次のコマンドでは指定したノードをスタンドバイモードにします。指定ノードはリソースのホストが行えなくなります。このノード上で現在実行中のリソースはすべて別のノードに移行されます。--all を使用すると全ノードがスタンバイモードになります。
リソースのパッケージを更新する場合にこのコマンドを使用します。また、設定をテストして実際にはノードのシャットダウンを行わずにリカバリーのシミュレーションを行う場合にも使用できます。
pcs cluster standby node | --all
次のコマンドは指定したノードのスタンバイモードを外します。コマンドを実行すると指定ノードはリソースをホストできるようになります。--all を使用すると全ノードのスタンバイモードを外します。
pcs cluster unstandby node | --all
pcs cluster standby コマンドを実行すると指定したノードでのリソースの実行を阻止する制約が追加されることになります。制約を取り除く場合は pcs cluster unstandby コマンドを実行します。このコマンドは必ずしもリソースを指定ノードに戻すわけではありません。最初にどのようにリソースを設定したかにより、その時点で実行できるノードに移動されます。リソースの制約については 7章リソースの制約 を参照してください。

4.5. ユーザーのパーミッション設定

ユーザー hacluster 以外の特定のユーザーにもクラスターを管理するパーミッションを付与できます。個別のユーザーに付与できるパーミッションには以下の 2 セットあります。
  • 「ネットワーク上でのノードアクセスのパーミッション設定」 で説明しているように、個別のユーザーが Web UI からクラスターを管理でき、ネットワークからノードに接続できる pcs コマンドを実行可能なパーミッション。ネットワークカラノードに接続するコマンドには、クラスタをセットアップするコマンドや、クラスターからノードの追加または削除を行うコマンドが含まれます。
  • 「ACL を使用したローカルパーミッションの設定」 で説明しているように、クラスター設定への読み込み専用または書き込み専用アクセスをローカルユーザーに許可するパーミッション。ネットワークからの接続を必要としないコマンドには、リソースを作成して制約を設定するような、クラスター設定を編集するコマンドが含まれます。
両方のセットのパーミッションが割り当てられるような状況では、ネットワーク上で接続するコマンドのパーミッションが最初に適用され、ローカルノード上のクラスター設定を編集するパーミッションが次に適用されます。多くの pcs コマンドは、ネットワークアクセスを必要とせず、ネットワークパーミッションが適用されません。

4.5.1. ネットワーク上でのノードアクセスのパーミッション設定

Web UI からクラスターを管理し、ネットワークからノードに接続する pcs コマンドを実行するために、特定のユーザーにパーミッションを付与するには、これらのユーザーをグループ haclient に追加します。「クラスター管理パーミッションの設定」 で説明しているように、Web UI を使用することで、これらのユーザーにパーミッションを付与することができます。

4.5.2. ACL を使用したローカルパーミッションの設定

Red Hat Enterprise Linux 7.1 以降では、pcs acl コマンドを使用してローカルユーザーのパーミッションを設定し、アクセス制御リスト (ACL) を使用してクラスター設定への読み取り専用または読み書きアクセスを許可できます。また、「ACL の設定」 で説明しているように、pcsd Web UI を使用して ACL を設定することも可能です。デフォルトでは、root ユーザーと、haclient グループのメンバーのユーザーは、クラスター構成への完全なローカル読み込み/書き込みアクセスを持ちます。
以下の 2 つのステップにしたがって、ローカルユーザーのパーミッションを設定します。
  1. pcs acl role create... コマンドを実行して role を作成しそのロールのパーミッションを定義します。
  2. pcs acl user create コマンドで作成したロールをユーザーに割り当てます。
以下の例では rouser というローカルユーザーにクラスター設定に対する読み取り専用アクセスを与えています。
  1. この手順では、rouser ユーザーがローカルシステムに存在し、rouser ユーザーが haclient グループのメンバーである必要があります。
    # adduser rouser
    # usermod -a -G haclient rouser
  2. enable-acl クラスタープロパティを使って Pacemaker ACL を有効にします。
    # pcs property set enable-acl=true --force 
  3. cib に対して読み取り専用のパーミッションを持つ read-only という名前のロールを作成します。
    # pcs acl role create read-only description="Read access to cluster" read xpath /cib
  4. pcs ALC システムでユーザー rouser を作成し、read-only ロールをユーザーに割り当てます。
    # pcs acl user create rouser read-only
  5. 現在の ACL を表示させます。
    # pcs acl
    User: rouser
      Roles: read-only
    Role: read-only
      Description: Read access to cluster
      Permission: read xpath /cib (read-only-read)
次の例では wuser と言うローカルユーザーにクラスター設定に対する書き込みアクセスを与えています。
  1. この手順では、wuser ユーザーがローカルシステムに存在し、wuser ユーザーが haclient グループのメンバーである必要があります。
    # adduser wuser
    # usermod -a -G haclient wuser
  2. enable-acl クラスタープロパティを使って Pacemaker ACL を有効にします。
    # pcs property set enable-acl=true --force 
  3. cib に対して書き込みパーミッションを持つ write-access という名前のロールを作成します。
    # pcs acl role create write-access description="Full access" write xpath /cib
  4. pcs ACL システム内に wuser というユーザーを作成し、write-access ロールを割り当てます。
    # pcs acl user create wuser write-access
  5. 現在の ACL を表示させます。
    # pcs acl
    User: rouser
      Roles: read-only
    User: wuser
      Roles: write-access
    Role: read-only
      Description: Read access to cluster
      Permission: read xpath /cib (read-only-read)
    Role: write-access
      Description: Full Access
      Permission: write xpath /cib (write-access-write)
クラスター ACL の詳細については pcs acl コマンドのヘルプ画面を参照してください。

4.6. クラスター設定の削除

クラスター設定ファイルをすべて削除し全クラスターサービスを停止、クラスターを永久的に破棄する場合は次のコマンドを使用します。

警告

作成したクラスター設定をすべて永久に削除します。先に pcs cluster stop を実行してからクラスターの破棄を行うことを推奨しています。
pcs cluster destroy

4.7. クラスターの状態表示

次のコマンドで現在のクラスターとクラスターリソースの状態を表示します。
pcs status
次のコマンドを使用すると現在のクラスターの状態に関するサブセット情報を表示させることができます。
このコマンドはクラスターの状態は表示しますがクラスターリソースの状態は表示しません。
pcs cluster status
クラスターリソースの状態は次のコマンドで表示させます。
pcs status resources

4.8. クラスターメンテナンス

クラスターのノード上でメンテナンスを実行するには、そのクラスターで実行しているリソースおよびサービスを停止するか、または移行する必要がある場合があります。または、サービスを変更しない状態で、クラスターソフトウェアを停止する必要がある場合があります。Pacemaker は、システムメンテナンスを実行するための各種の方法を提供します。
  • クラスターの別のノードでサービスが継続的に実行している状態で、クラスター内のあるノードを停止する必要がある場合は、そのクラスターノードをスタンバイモードにできます。スタンバイノードのノードはリソースをホストすることができなくなります。ノード上で現在アクティブなリソースは、他のノードに移行するか、または他のノードがそのリソースを実行できない場合は停止します。
    スタンバイモードの説明は、「スタンバイモード」 を参照してください。
  • リソースを停止せずに、実行しているノードから個別のリソースを移行する必要がある場合、pcs resource move コマンドを使用してリソースを別のノードに移行できます。pcs resource move コマンドの詳細は、「リソースを手作業で移動する」を参照してください。
    pcs resource move コマンドを実行すると、現在実行しているノードでそれが実行されないように、制約がリソースに追加されます。リソースを戻す準備ができたら、pcs resource clear または pcs constraint delete コマンドを実行すると、制約を削除できます。このコマンドを実行してもリソースが必ずしも元のノードに戻る訳ではありません。この時点でリソースが実行できる場所は、リソースの最初の設定方法によって異なるためです。「現在のノードからリソースを移動」 の説明通りに、リソースは pcs resource relocate run コマンドを実行して、指定のノードに移動できます。
  • 完全にリソースの実行を停止して、クラスターが再び起動しないようにするには、pcs resource disable コマンドを使用します。pcs resource disable コマンドの説明は、「クラスターリソースの有効化、無効化、および禁止」 を参照してください。
  • Pacemaker がリソースに対するアクションを実行するのを防ぐ必要がある場合 (たとえば、リソースに対するメンテナンスの実行中に復元アクションを無効にする必要がある場合や、/etc/sysconfig/pacemaker 設定をリロードする必要がある場合)、「管理リソース」 で説明しているように pcs resource unmanage コマンドを使用します。Pacemaker Remote 接続リソースはアンマネージドモードにすることはできません。
  • クラスターを、サービスが開始したり停止したりしない状態にする必要がある場合は、maintenance-mode クラスターのプロパティを設定します。クラスターをメンテナンスモードにすると、すべてのリソースが自動的にアンマネージドモードになります。クラスターのプロパティの詳細は表12.1「クラスターのプロパティ」を参照してください。
  • Pacemaker リモートノードでメンテナンスを実行する必要がある場合、「システムアップグレードおよび pacemaker_remote」で説明しているように、リモートノードリソースを無効にすることで、ノードをクラスターから削除できます。

第5章 フェンス機能: STONITH の設定

STONITH は「Shoot The Other Node In The Head」の略語です。問題のあるノードや同時アクセスによるデータ破損を防止します。
ノードが無反応だからと言ってデータにアクセスしていないとは限りません。STONITH を使ってノードを排他処理することが唯一 100% 確実にデータの安全を確保する方法になります。排他処理することによりそのノードを確実にオフラインにしてから、別のノードに対してデータへのアクセスを許可することができます。
STONITH はクラスター化したサービスを停止できない場合にも役に立ちます。このようなことが発生した場合は、STONITH で全ノードを強制的にオフラインにしてからサービスを別の場所で開始すると安全です。
フェンシングの概要と、Red Hat High Availability クラスターにおけるフェンシングの重要性は「RHEL 高可用性クラスターでフェンシングが重要なのはなぜですか?」を参照してください。

5.1. STONITH (フェンス) エージェント

次のコマンドは利用できる全 STONITH エージェントを表示します。フィルターを指定するとフィルターに一致する STONITH エージェントのみを表示します。
pcs stonith list [filter]

5.2. フェンスデバイスの一般的なプロパティ

クラスターノードは、フェンスリソースが開始しているかどうかに関わらず、フェンスデバイスでその他のクラスターノードをフェンスできます。以下の例外を除き、リソースが開始しているかどうかは、デバイスの定期的なモニターのみを制御するものとなり、使用可能かどうかは制御しません。
  • フェンスデバイスは、pcs stonith disable stonith_id コマンドを実行して無効にできます。これにより、ノードがそのデバイスを使用できないようにすることができます。
  • 特定のノードがフェンスデバイスを使用できないようにするには、pcs constraint location …​ avoids コマンドで、フェンスリソースの場所制約を設定できます。
  • stonith-enabled=false を設定すると、フェンシングがすべて無効になります。ただし、実稼働環境でフェンシングを無効にすることは適していないため、Red Hat は、フェンシングが無効になっている時のクラスターはサポートしないことに注意してください。
フェンスデバイスに設定できる汎用プロパティについては 表5.1「フェンスデバイスの一般的なプロパティ」 に記載されています。特定のフェンスデバイスに設定できるフェンスプロパティについては 「デバイス固有のフェンスオプションの表示」 を参照してください。

注記

より高度なフェンス設定プロパティについては 「その他のフェンス設定オプション」 を参照してください。

表5.1 フェンスデバイスの一般的なプロパティ

フィールドタイプデフォルト説明
pcmk_host_map文字列 ホスト名に対応していないデバイスのポート番号とホスト名をマッピングします。例えば、node1:1;node2:2,3 なら node1 にはポート 1 を使用し node2 にはポート 2 と 3 を使用するようクラスターに指示します。
pcmk_host_list文字列 このデバイスで制御するマシンの一覧です (オプション、pcmk_host_check=static-list を除く)。
pcmk_host_check文字列dynamic-listデバイスで制御するマシンを指定します。使用できる値: dynamic-list (デバイスに問い合わせ)、static-list (pcmk_host_list 属性をチェック)、なし (すべてのデバイスで全マシンのフェンスが可能とみなされる)

5.3. デバイス固有のフェンスオプションの表示

指定した STONITH エージェントのオプションを表示するには次のコマンドを使用します。
pcs stonith describe stonith_agent
次のコマンドでは telnet または SSH 経由の APC 用フェンスエージェントのオプションを表示します。
# pcs stonith describe fence_apc
Stonith options for: fence_apc
  ipaddr (required): IP Address or Hostname
  login (required): Login Name
  passwd: Login password or passphrase
  passwd_script: Script to retrieve password
  cmd_prompt: Force command prompt
  secure: SSH connection
  port (required): Physical plug number or name of virtual machine
  identity_file: Identity file for ssh
  switch: Physical switch number on device
  inet4_only: Forces agent to use IPv4 addresses only
  inet6_only: Forces agent to use IPv6 addresses only
  ipport: TCP port to use for connection with device
  action (required): Fencing Action
  verbose: Verbose mode
  debug: Write debug information to given file
  version: Display version information and exit
  help: Display help and exit
  separator: Separator for CSV created by operation list
  power_timeout: Test X seconds for status change after ON/OFF
  shell_timeout: Wait X seconds for cmd prompt after issuing command
  login_timeout: Wait X seconds for cmd prompt after login
  power_wait: Wait X seconds after issuing ON/OFF
  delay: Wait X seconds before fencing is started
  retry_on: Count of attempts to retry power on

警告

method オプションを提供するフェンスエージェントでは cycle がサポートされず、データの破損が生じる可能性があるため、この値は指定できません。

5.4. フェンスデバイスの作成

次のコマンドで stonith デバイスを作成します。
pcs stonith create stonith_id stonith_device_type [stonith_device_options]
# pcs stonith create MyStonith fence_virt pcmk_host_list=f1 op monitor interval=30s 
各ノードの異なるポートを使って複数のノードに 1 つのフェンスデバイスを使用する場合はノードごと別々にデバイスを作成する必要はありません。pcmk_host_map オプションを使用すると、ノードとポートのマッピングを定義できます。たとえば、次のコマンドは west-apc という APC 電源スイッチを使用し、ノード west-13 に 15 番ポートを使用する myapc-west-13 という名前のフェンスデバイスを 1 つ作成します。
# pcs stonith create myapc-west-13 fence_apc pcmk_host_list="west-13" ipaddr="west-apc" login="apc" passwd="apc" port="15"
以下の例は、15 番ポートを使用するフェンスノード west-13、17 番ポートを使用するフェンスノード west-14、18 番ポートを使用するフェンスノード west-15、および 19 番ポートを使用するフェンスノード west-16west-apc という APC 電源スイッチを使用します。
# pcs stonith create myapc fence_apc pcmk_host_list="west-13,west-14,west-15,west-16" pcmk_host_map="west-13:15;west-14:17;west-15:18;west-16:19" ipaddr="west-apc" login="apc" passwd="apc" 
フェンスデバイスを設定したら、デバイスをテストして正しく機能していることを確認してください。フェンスデバイスのテストは「フェンスデバイスのテスト」を参照してください。

5.5. フェンスデバイスの表示

以下のコマンドは現在設定されているフェンスデバイスをすべて表示します。stonith_id が指定されていると、指定された stonith デバイスのオプションのみが表示されます。--full オプションが指定されていると、設定された stonith のオプションがすべて表示されます。
pcs stonith show [stonith_id] [--full]

5.6. フェンスデバイスの修正と削除

現在設定されているフェンスデバイスのオプションを修正したり、新たにオプションを追加する場合は次のコマンドを使用します。
pcs stonith update stonith_id [stonith_device_options]
現在の設定からフェンスデバイスを削除する場合は次のコマンドを使用します。
pcs stonith delete stonith_id

5.7. フェンスデバイスが接続されているノードの管理

手作業でのノードの排他処理は次のコマンドで行うことができます。--off を使用すると stonith に対して off API コールが使用されノードは再起動ではなく電源オフになります。
pcs stonith fence node [--off]
ノードがアクティブでない場合でも、そのノードを stonith デバイスがフェンスできない状況では、そのノードのリソースをクラスターが復旧できない可能性があります。この場合は、ノードの電源を手動でオフにしたあと、以下のコマンドを実行して、ノードの電源が切れていて、そのリソースが解放される復旧できる状態であることが確認できます。

警告

指定したノードが実際にオフになっていない状態で、クラスターソフトウェア、または通常クラスターが制御するサービスを実行すると、データ破損またはクラスター障害が発生します。
pcs stonith confirm node

5.8. その他のフェンス設定オプション

フェンスデバイスに設定できるその他のプロパティは 表5.2「フェンスデバイスの高度なプロパティ」 にまとめられています。これらのオプションは高度な設定を行う場合にのみ使用されます。

表5.2 フェンスデバイスの高度なプロパティ

フィールドタイプデフォルト説明
pcmk_host_argument文字列portポートの代わりに提供する代替のパラメーターです。デバイスによっては、標準のポートパラメーターをサポートしなかったり、追加のパラメーターを提供することがあります。このパラメーターを使用して、フェンスするマシンを示すデバイス固有の代替パラメーターを指定します。クラスターが追加のパラメーターを提供しないようにするには、 none を値として使用します。
pcmk_reboot_action文字列rebootreboot の代わりに実行する代替のコマンドです。標準的なコマンドに対応していないデバイスや別のコマンドを提供しているデバイスがあります。このような場合、このパラメーターを使って再起動の動作を実行するデバイス固有の代替コマンドを指定します。
pcmk_reboot_timeout時間60sstonith-timeout の代わりに再起動の動作に対して使用する代替タイムアウトです。再起動が完了するまでに通常より長い時間を要するデバイスもあれば通常より短い時間で完了するデバイスもあります。再起動の動作に対してデバイス固有の代替タイムアウトを指定する場合に使用します。
pcmk_reboot_retries整数2タイムアウト期間内で reboot コマンドを再試行させる最大回数です。複数接続に対応していないデバイスがあります。別のタスクでビジー状態になるとデバイスが動作に失敗する場合があるため、Pacemaker は残り時間内で動作を自動的に再試行させます。Pacemaker による再起動の動作の再試行回数を変更する場合に使用します。
pcmk_off_action文字列オフoff の代わりに実行する代替コマンドです。標準的なコマンドに対応していないデバイスや別のコマンドを提供しているデバイスがあります。このような場合、このパラメーターを使ってオフの動作を実行するデバイス固有の代替コマンドを指定します。
pcmk_off_timeout時間60sstonith-timeout の代わりにオフの動作に対して使用する代替タイムアウトです。オフに通常より長い時間を要するデバイスもあれば通常より短い時間でオフするデバイスもあります。オフの動作に対してデバイス固有の代替タイムアウトを指定する場合に使用します。
pcmk_off_retries整数2タイムアウト期間内で off コマンドを再試行させる最大回数です。複数接続に対応していないデバイスがあります。別のタスクでビジー状態になるとデバイスが動作に失敗する場合があるため、Pacemaker は残り時間内で動作を自動的に再試行させます。Pacemaker によるオフ動作の再試行回数を変更する場合に使用します。
pcmk_list_action文字列listlist の代わりに実行する代替のコマンドです。標準的なコマンドに対応していないデバイスや別のコマンドを提供しているデバイスがあります。このような場合、このパラメーターを使って list の動作を実行するデバイス固有の代替コマンドを指定します。
pcmk_list_timeout時間60sstonith-timeout の代わりに list の動作に対して使用する代替タイムアウトです。list の完了に通常より長い時間を要するデバイスもあれば通常より短い時間で list するデバイスもあります。list の動作に対してデバイス固有の代替タイムアウトを指定する場合に使用します。
pcmk_list_retries整数2タイムアウト期間内で list コマンドを再試行させる最大回数です。複数接続に対応していないデバイスがあります。別のタスクでビジー状態になるとデバイスが動作に失敗する場合があるため、Pacemaker は残り時間内で動作を自動的に再試行させます。Pacemaker による list 動作の再試行回数を変更する場合に使用します。
pcmk_monitor_action文字列monitormonitor の代わりに実行する代替のコマンドです。標準的なコマンドに対応していないデバイスや別のコマンドを提供しているデバイスがあります。このような場合、このパラメーターを使ってモニタリングの動作を実行するデバイス固有の代替コマンドを指定します。
pcmk_monitor_timeout時間60sstonith-timeout の代わりにモニターの動作に対して使用する代替タイムアウトです。モニターに通常より長い時間を要するデバイスもあれば通常より短い時間でオフするデバイスもあります。モニターの動作に対してデバイス固有の代替タイムアウトを指定する場合に使用します。
pcmk_monitor_retries整数2タイムアウト期間内で monitor コマンドを再試行させる最大回数です。複数接続に対応していないデバイスがあります。別のタスクでビジー状態になるとデバイスが動作に失敗する場合があるため、Pacemaker は残り時間内で動作を自動的に再試行させます。Pacemaker によるモニター動作の再試行回数を変更する場合に使用します。
pcmk_status_action文字列statusstatus の代わりに実行する代替のコマンドです。標準的なコマンドに対応していないデバイスや別のコマンドを提供しているデバイスがあります。このような場合、このパラメーターを使って status の動作を実行するデバイス固有の代替コマンドを指定します。
pcmk_status_timeout時間60sstonith-timeout の代わりに status の動作に対して使用する代替タイムアウトです。status に通常より長い時間を要するデバイスもあれば通常より短い時間でオフするデバイスもあります。status の動作に対してデバイス固有の代替タイムアウトを指定する場合に使用します。
pcmk_status_retries整数2タイムアウト期間内に、status コマンドを再試行する回数の上限です。デバイスによっては、複数接続に対応しておらず、別のタスクでビジー状態になるとデバイスが操作に失敗する場合があるため、タイムアウトに達していなければ、Pacemaker が操作を自動的に再試行します。このオプションは、Pacemaker による status 操作の再試行回数を変更する場合に使用します。
pcmk_delay_base時間0sstonith 操作のベース遅延を有効にし、ベース遅延の値を指定します。これにより、複数の異なる遅延がノードに設定されている場合に、ダブルフェンシングが発生しなくなります。このオプションを使用して、stonith 操作の静的な遅延を有効にします。全体の遅延は、合計が最大遅延を下回るように、ランダムな遅延値に静的遅延を加算します。
pcmk_delay_max時間0sstonith 動作のランダムな遅延を有効にし、ランダムな遅延の最大値を指定します。これにより、SBD などの低速デバイスを使用している場合に、ダブルフェンシングが発生しなくなります。このオプションを使用して、stonith 操作のランダムな遅延を有効にします。全体の遅延は、合計が最大遅延を下回るように、このランダムな遅延値に静的遅延を加算します。
pcmk_action_limit整数1このデバイスで並行して実行できる操作の上限です。最初に、クラスタープロパティの concurrent-fencing=true を設定する必要があります。値を -1 にすると無制限になります。
pcmk_on_action文字列on高度な使用 - on の代替コマンドです。デバイスによっては、標準コマンドに対応していない場合や、そのデバイス固有のパラメーターも提供している場合があります。このような場合は、このパラメーターを使用して、on 操作を実行するデバイス固有のコマンドを指定します。
pcmk_on_timeout時間60s高度な使用 - stonith-timeout の代替コマンドで、on 操作にタイムアウトを指定します。デバイスにより、この操作が完了するのにかかる時間が通常より長く、または短くなります。このパラメーターを使用して、on 操作にデバイス固有のタイムアウトを指定します。
pcmk_on_retries整数2高度な使用 - タイムアウト期間内に、on コマンドを再試行する回数の上限です。デバイスによっては、複数接続に対応しておらず、別のタスクでビジー状態になるとデバイス操作がエラーする場合があるため、タイムアウトに達していなければ、Pacemaker が操作を自動的に再試行します。このオプションは、Pacemaker による on 操作の再試行回数を変更する場合に使用します。

5.9. フェンスレベルの設定

Pacemaker はフェンストポロジーと呼ばれる機能を用いて複数デバイスのノードのフェンシングをサポートします。トポロジーを実装するには、通常どおりに各デバイスを作成し、設定のフェンストポロジーセクションで 1 つ以上のフェンスレベルを定義します。
  • 各レベルは 1 から昇順で試行されていきます。
  • 任意のフェンスデバイスに障害が発生すると、現行レベルの排他処理は終了します。同レベルのデバイスには試行されず、次のレベルが試行されます。
  • すべてのデバイスの排他処理が正常に完了するとそのレベルが継承され他のレベルは試行されません。
  • 任意のレベルで成功するまたはすべてのレベルが試行される (失敗する) と動作は終了します。
ノードにフェンスレベルを追加する場合に次のコマンドを使用します。複数デバイスの指定は stonith ID を使ってコンマで区切ります。指定されたデバイスが指定されたレベルで試行されます。
pcs stonith level add level node devices
次のコマンドを使用すると現在設定されている全フェンスレベルが表示されます。
pcs stonith level
以下の例では、my_ilo という ilo フェンスデバイスと my_apc という apc フェンスデバイスの 2 つがノード rh7-2 に対して設定されています。これらのコマンドはフェンスレベルを設定します。デバイス my_ilo に障害が発生し、ノードをフェンスできない場合、Pacemaker はデバイス my_apc の使用を試みます。この例では、レベル設定後の pcs stonith level コマンドの出力も表示されています。
# pcs stonith level add 1 rh7-2 my_ilo
# pcs stonith level add 2 rh7-2 my_apc
# pcs stonith level
 Node: rh7-2
  Level 1 - my_ilo
  Level 2 - my_apc
以下のコマンドは指定されたノードおよびデバイスのフェンスレベルを削除します。指定されたノードやデバイスがない場合、指定したフェンスレベルがすべてのノードから削除されます。
pcs stonith level remove level [node_id] [stonith_id] ... [stonith_id]
次のコマンドを使用すると指定ノードや stonith id のフェンスレベルが消去されます。ノードや stonith id を指定しないと全フェンスレベルが消去されます。
pcs stonith level clear [node|stonith_id(s)]
複数の stonith IDを指定する場合はコンマで区切って指定します。空白は入れないでください。例を示します。
# pcs stonith level clear dev_a,dev_b
次のコマンドで定義したフェンスデバイスとノードが実際に存在しているか確認します。
pcs stonith level verify
Red Hat Enterprise Linux 7.4 では、フェンストポロジーのノードは、ノード名に適用する正規表現と、ノードの属性 (およびその値) で指定できます。たとえば、次のコマンドでは、ノード node1node2、および `node3 で、フェンスデバイス apc1 および `apc2 を使用するように設定し、ノード `node4、`node5、および `node6 には、フェンスデバイス apc3 および `apc4 を使用するように設定します。
pcs stonith level add 1 "regexp%node[1-3]" apc1,apc2
pcs stonith level add 1 "regexp%node[4-6]" apc3,apc4
次のコマンドでは、ノード属性のマッチングを使用して、同じように設定します。
pcs node attribute node1 rack=1
pcs node attribute node2 rack=1
pcs node attribute node3 rack=1
pcs node attribute node4 rack=2
pcs node attribute node5 rack=2
pcs node attribute node6 rack=2
pcs stonith level add 1 attrib%rack=1 apc1,apc2
pcs stonith level add 1 attrib%rack=2 apc3,apc4

5.10. 冗長電源のフェンシング設定

冗長電源のフェンシングを設定する場合、ホストを再起動するときに両方の電源をオフにしてからどちらかの電源をオンにするよう、クラスターによる確認が必要になります。
ノードの電源が完全にオフにならなかった場合、ノードがリソースを解放しないことがあります。この場合、ノードがこのようなリソースに同時にアクセスし、リソースを破損する可能性があります。
Red Hat Enterprise Linux 7.2 より古いバージョンでは、オンまたはオフのアクションを使用するデバイスで異なるバージョンを明示的に設定する必要がありました。Red Hat Enterprise Linux 7.2 では、以下の例のように各デバイスを 1 度定義して、ノードのフェンシングに両方が必要であることを指定するだけで済むようになりました。
# pcs stonith create apc1 fence_apc_snmp ipaddr=apc1.example.com login=user passwd='7a4D#1j!pz864' pcmk_host_map="node1.example.com:1;node2.example.com:2"

# pcs stonith create apc2 fence_apc_snmp ipaddr=apc2.example.com login=user passwd='7a4D#1j!pz864' pcmk_host_map="node1.example.com:1;node2.example.com:2"

# pcs stonith level add 1 node1.example.com apc1,apc2
# pcs stonith level add 1 node2.example.com apc1,apc2

5.11. 統合フェンスデバイスで使用する ACPI の設定

クラスターが統合フェンスデバイスを使用する場合は、即時かつ完全なフェンシングを実行できるように、ACPI (Advanced Configuration and Power Interface) を設定する必要があります。
クラスターノードが統合フェンスデバイスでフェンシングされるように設定されている場合は、そのノードの ACPI Soft-Off を無効にします。ACPI Soft-Off を無効にすることにより、統合フェンスデバイスは、クリーンシャットダウンを試行する代わりに、ノードを即時に、かつ完全にオフにできます (例: shutdown -h now)。ACPI Soft-Off が有効になっている場合は、統合フェンスデバイスがノードをオフにするのに 4 秒以上かかる可能性があります (以下の注記部分を参照してください)。さらに、ACPI Soft-Off が有効になっていて、ノードがシャットダウン時にパニック状態になるか、フリーズすると、統合フェンスデバイスがノードをオフにできない場合があります。このような状況では、フェンシングは遅延するか、または成功しません。したがって、ノードが統合フェンスデバイスでフェンシングされ、ACPI Soft-Off が有効になっている場合は、クラスターが徐々に復元します。または管理者の介入による復旧が必要になります。

注記

ノードのフェンシングにかかる時間は、使用している統合フェンスデバイスによって異なります。統合フェンスデバイスの中には、電源ボタンを押し続けるのと同じ動作を実行するものもあります。この場合は、ノードがオフになるのに 4 秒から 5 秒かかります。また、電源ボタンを押してすぐ離すのと同等の動作を行い、ノードの電源をオフにする行為はオペレーティングシステムに依存する統合フェンスデバイスもあります。この場合は、ノードがオフになるのにかかる時間は 4~ 5 秒よりも長くなります。
  • ACPI Soft-Off を無効にする場合は、BIOS 設定を「instant-off」、またはこれに類似する設定に変更することが推奨されます。これにより、「BIOS で ACPI Soft-Off を無効化」 で説明しているように、ノードは遅延なくオフになります。
システムによっては、BIOS で ACPI Soft-Off を無効にできません。お使いのクラスターでは、BIOS で ACPI Soft-Off を無効にできない場合は、以下のいずれかの方法で ACPI Soft-Off を無効にできます。
  • 「logind.conf ファイルでの ACPI Soft-Off の無効化」 で説明しているように、HandlePowerKey=ignore/etc/systemd/logind.conf ファイルに設定し、ノードがフェンシングされるとすぐにオフになることを確認します。これが、ACPI Soft-Off を無効にする 1 つ目の代替方法です。
  • 「GRUB 2 ファイルでの ACPI の完全な無効化」 で説明しているように、カーネル起動コマンドラインに acpi=off を追加します。これは、ACPI Soft-Off を無効にする 2 つ目の代替方法です。この方法の使用が推奨されるか、1 つ目の代替方法が利用できない場合に使用してください。

    重要

    この方法は ACPI を完全に無効にします。コンピューターの中には、ACPI が完全に無効になっているとシステムが正しく起動しないものもあります。お使いのクラスターに別の方法が適していない場合に 限り、この方法を使用してください。

5.11.1. BIOS で ACPI Soft-Off を無効化

以下の手順で、各クラスターノードの BIOS を設定して、ACPI Soft-Off を無効にできます。

注記

BIOS で ACPI Soft-Off を無効にする手順は、サーバーシステムにより異なる場合があります。この手順は、お使いのハードウェアのドキュメントで確認する必要があります。
  1. ノードを再起動して BIOS CMOS Setup Utility プログラムを起動します。
  2. 電源メニュー (または同等の電源管理メニュー) に移動します。
  3. 電源 メニューで、Soft-Off by PWR-BTTN 機能 (または同等の機能) を Instant-Off (または、電源ボタンで遅延なしでノードをオフに切り替える同等の設定) に設定します。例5.1「BIOS CMOS Setup Utility: Soft-Off by PWR-BTTN を to Instant-Off に設定」 では、ACPI FunctionEnabled に設定され、 Soft-Off by PWR-BTTNInstant-Off に設定された電源が表示されています。

    注記

    ACPI FunctionSoft-Off by PWR-BTTNInstant-Off と同等の機能は、コンピューターによって異なることがあります。ただし、この手順の目的は、電源ボタンで遅延なしにコンピューターをオンに切り替えるように BIOS を設定することです。
  4. BIOS CMOS Setup Utility プラグラムを終了します。BIOS 設定が保存されます。
  5. フェンシングされたときノードがすぐにオフに切り替わることを確認します。フェンスデバイスのテストは、「フェンスデバイスのテスト」を参照してください。

例5.1 BIOS CMOS Setup Utility: Soft-Off by PWR-BTTN を to Instant-Off に設定

+---------------------------------------------|-------------------+
|    ACPI Function             [Enabled]      |    Item Help      |
|    ACPI Suspend Type         [S1(POS)]      |-------------------|
|  x Run VGABIOS if S3 Resume   Auto          |   Menu Level   *  |
|    Suspend Mode              [Disabled]     |                   |
|    HDD Power Down            [Disabled]     |                   |
|    Soft-Off by PWR-BTTN      [Instant-Off   |                   |
|    CPU THRM-Throttling       [50.0%]        |                   |
|    Wake-Up by PCI card       [Enabled]      |                   |
|    Power On by Ring          [Enabled]      |                   |
|    Wake Up On LAN            [Enabled]      |                   |
|  x USB KB Wake-Up From S3     Disabled      |                   |
|    Resume by Alarm           [Disabled]     |                   |
|  x  Date(of Month) Alarm       0            |                   |
|  x  Time(hh:mm:ss) Alarm       0 :  0 :     |                   |
|    POWER ON Function         [BUTTON ONLY   |                   |
|  x KB Power ON Password       Enter         |                   |
|  x Hot Key Power ON           Ctrl-F1       |                   |
|                                             |                   |
|                                             |                   |
+---------------------------------------------|-------------------+
この例では、ACPI FunctionEnabled に設定され、Soft-Off by PWR-BTTNInstant-Off に設定されている状態を示しています。

5.11.2. logind.conf ファイルでの ACPI Soft-Off の無効化

/etc/systemd/logind.conf ファイルで電源キーの処理を無効にするには、以下の手順を行います。
  1. /etc/systemd/lodingd.conf ファイルに、以下の設定を定義します。
    HandlePowerKey=ignore
  2. systemd 設定をリロードします。
    # systemctl daemon-reload
  3. フェンシングされたときノードがすぐにオフに切り替わることを確認します。フェンスデバイスのテストは、「フェンスデバイスのテスト」を参照してください。

5.11.3. GRUB 2 ファイルでの ACPI の完全な無効化

ACPI Soft-Off は、カーネルの GRUB メニューエントリーに acpi=off を追加して無効にできます。

重要

この方法は ACPI を完全に無効にします。コンピューターの中には、ACPI が完全に無効になっているとシステムが正しく起動しないものもあります。お使いのクラスターに別の方法が適していない場合に 限り、この方法を使用してください。
以下の手順で、GRUB 2 ファイルで ACPI を無効にします。
  1. grubby ツールの --update-kernel オプションと組み合わせて --args オプションを使用し、以下のように各クラスターの grub.cfg ファイルを変更します。
    # grubby --args=acpi=off --update-kernel=ALL
    GRUB 2 の概要は、 『システム管理者のガイド』「GRUB 2 での作業」を参照してください。
  2. ノードを再起動します。
  3. フェンシングされたときノードがすぐにオフに切り替わることを確認します。フェンスデバイスのテストは、「フェンスデバイスのテスト」を参照してください。

5.12. フェンスデバイスのテスト

フェンシングは、Red Hat Cluster インフラストラクチャーの基本的な部分を構成しているため、フェンシングが適切に機能していることの確認またはテストを行うことは重要です。
以下の手順で、フェンスデバイスをテストします。
  1. デバイスへの接続に使用する ssh、telnet、HTTP などのリモートプロトコルを使用して、手動でログインしてフェンスデバイスをテストしたり、出力される内容を確認します。たとえば、IPMI 対応デバイスのフェンシングを設定する場合は、ipmitool を使用してリモートでのログインを試行します。手動でログインする際に使用するオプションに注意してください。これらのオプションは、フェンスエージェントを使用する際に必要になる場合があります。
    フェンスデバイスにログインできない場合は、そのデバイスが ping 可能であること、ファイアウォール設定フェンスデバイスへのアクセスを妨げていないこと、フェンスエージェントでリモートアクセスが有効になっていること、認証情報が正しいことなどを確認します。
  2. フェンスエージェントスクリプトを使用して、フェンスエージェントを手動で実行します。フェンスエージェントを実行するのに、クラスターサービスが実行している必要はないため、デバイスをクラスターに設定する前にこのステップを完了できます。これにより、先に進む前に、フェンスデバイスが適切に応答することを確認できます。

    注記

    本セクションの例では、iLO デバイスの fence_ilo フェンスエージェントスクリプトを使用します。実際に使用するフェンスエージェントと、そのエージェントを呼び出すコマンドは、お使いのサーバーハードウェアによって異なります。指定するオプションを確認するには、フェンスエージェントの man ページを参照してください。通常は、フェンスデバイスのログインとパスワードなどの情報を把握しておく必要があります。
    以下の例は、-o status パラメーターを指定して fence_ilo フェンスエージェントスクリプトを実行する場合に使用する形式になります。このコマンドを実行すると、フェンシングを実行せずに、別のノードのフェンスデバイスインターフェースのステータスを確認します。ノードの再起動を試行する前にデバイスをテストして、機能させることができます。このコマンドを実行する際に、iLO デバイスの電源をオン/オフにするパーミッションを持つ iLO ユーザーの名前およびパスワードを指定します。
    # fence_ilo -a ipaddress -l username -p password -o status
    以下の例は、-o reboot パラメーターを指定して fence_ilo フェンスエージェントスクリプトを実行するために使用する形式になります。このコマンドをノードで実行すると、フェンスエージェントを設定した別のノードが再起動します。
    # fence_ilo -a ipaddress -l username -p password -o reboot
    フェンスエージェントがステータス、オフ、オン、または再起動の動作を適切に実行しない場合は、ハードウェア、フェンスデバイスの設定、およびコマンドの構文を確認する必要があります。さらに、デバッグ出力を有効にした状態で、フェンスエージェントスクリプトを実行できます。デバッグ出力は、一部のフェンスエージェントで、フェンスデバイスにログインする際に、フェンスエージェントスクリプトに問題が発生しているイベントシーケンスの場所を確認するのに役に立ちます。
    # fence_ilo -a ipaddress -l username -p password -o status -D /tmp/$(hostname)-fence_agent.debug
    発生した障害を診断する際に、フェンスデバイスに手動でログインする際に指定したオプションが、フェンスエージェントスクリプトでフェンスエージェントに渡した内容と同一であることを確認する必要があります。
    フェンスエージェントが、暗号化した接続に対応する場合は、証明書の検証で障害が生じているためにエラーが出力される場合があり、ホストを信頼することや、フェンスエージェントの ssl-insecure パラメーターを使用することが求められます。同様に、ターゲットデバイスで SSL/TLS を無効にした場合は、フェンスエージェントの SSL パラメーターを設定する際にこれを考慮しないといけない場合があります。

    注記

    テストしているフェンスエージェントが fence_drac または fence_ilo の場合、もしくはその他の、継続して失敗しているシステム管理デバイスのフェンスエージェントの場合は、フォールバックして fence_ipmilan を試行します。大半のシステム管理カードは IPMI リモートログインに対応しており、フェンスエージェントとしては fence_ipmilan だけに対応しています。
  3. フェンスデバイスを、手動で機能したオプションと同じオプションでクラスターに設定し、クラスターを起動したら、以下の例にあるように、任意のノードから pcs stonith fence コマンドを実行してフェンシングをテストします (または複数のノードから複数回実行します)。pcs stonith fence コマンドはmクラスター設定を CIB から読み取り、フェンス動作を実行するように設定したフェンスエージェントを呼び出します。これにより、クラスター設定が正確であることが確認できます。
    # pcs stonith fence node_name
    pcs stonith fence コマンドに成功した場合は、フェンスイベントの発生時に、クラスターのフェンシング設定が機能します。このコマンドが失敗した場合は、クラスター管理が検出した設定でフェンスデバイスを起動することができません。以下の問題を確認し、必要に応じてクラスター設定を更新します。
    • フェンス設定を確認します。たとえば、ホストマップを使用したことがある場合は、システムが指定したホスト名を使用して、システムがノードを見つけられるようにする必要があります。
    • デバイスのパスワードおよびユーザー名に、bash シェルが誤って解釈する可能性がある特殊文字が含まれるかどうかを確認します。パスワードおよびユーザー名は引用符で囲み、この問題に対応してください。
    • pcs stonith コマンドで IP アドレスまたはホスト名を使用してデバイスに接続できるかどうかを確認してください。たとえば、stonith コマンドでホスト名を指定し、IP アドレスを使用して行ったテストは有効ではありません。
    • お使いのフェンスデバイスが使用するプロトコルにアクセスできる場合は、そのプロトコルを使用してデバイスへの接続を試行します。たとえば、多くのエージェントのが ssh または telnet を使用します。デバイスへの接続は、デバイスの設定時に指定した認証情報を使用して試行する必要があります。これにより、有効なプロンプトを取得し、そのデバイスにログインできるかどうかを確認できます。
    すべてのパラメーターが適切であることが確認できたものの、フェンスデバイスには接続できない時に、フェンスデバイスでログ機能が使用できる場合は、ログを確認できます。これにより、ユーザーが接続したかどうかと、ユーザーが実行したコマンドが表示されます。/var/log/messages ファイルで stonith やエラーを確認すれば、発生している問題のヒントが得られる可能性もありますが、エージェントによっては、より詳細な情報が得られる場合があります。
  4. フェンスデバイステストに成功し、クラスターが稼働したら、実際の障害をテストします。このテストでは、クラスターで、トークンの損失を生じさせる動作を実行します。
    • ネットワークを停止します。ネットワークの利用方法は設定によって異なりますが、多くの場合は、ホストからネットワークケーブルまたは電源ケーブルを引き抜くことができます。

      注記

      ネットワークや電源ケーブルを物理的に切断せずに、ローカルホストのネットワークインターフェースを無効にすることは、フェンシングのテストとしては推奨されません。実際に発生する障害を正確にシミュレートしていないためです。
    • ローカルのファイアウォールを使用して、corosync の受信トラフィックおよび送信トラフィックをブロックします。
      以下の例では corosync をブロックします。ここでは、デフォルトの corosync ポートと、ローカルのファイアウォールとして firewalld が使用されていることと、corosync が使用するネットワークインターフェースがデフォルトのファイアウォールゾーンにあることが前提となっています。
      # firewall-cmd --direct --add-rule ipv4 filter OUTPUT 2 -p udp --dport=5405 -j DROP
      # firewall-cmd --add-rich-rule='rule family="ipv4" port port="5405" protocol="udp" drop'
    • sysrq-trigger でクラッシュをシミュレートし、マシンをクラッシュします。ただし、カーネルパニックを発生させると、データが損失する可能性があることに注意してください。クラッシュする前に、クラスターリソースを無効にすることが推奨されます。
      # echo c > /proc/sysrq-trigger

第6章 クラスターリソースの設定

本章ではクラスター内にリソースを設定する方法について説明していきます。

6.1. リソースの作成

次のコマンドを使用してクラスターリソースを作成します。
pcs resource create resource_id [standard:[provider:]]type [resource_options] [op operation_action operation_options [operation_action operation options]...] [meta meta_options...] [clone [clone_options] | master [master_options] | --group group_name [--before resource_id | --after resource_id] | [bundle bundle_id] [--disabled] [--wait[=n]]
--group オプションを指定すると、リソースはその名前のリソースグループへ追加されます。指定のグループが存在しない場合、グループが作成され、グループにリソースが追加されます。リソースグループの詳細は「リソースグループ」 を参照してください。
--before および --after オプションは、リソースグループにすでに存在するリソースを基準として、追加されたリソースの相対的な位置を指定します。
--disabled オプションを指定すると、リソースが自動的に起動されません。
以下のコマンドを実行すると VirtualIP という名前のリソースが作成され、標準 ocfheartbeat プロバイダー、および IPaddr2 タイプが指定されます。このリソースのフローティングアドレスは 192.168.0.120 で、システムはリソースが 30 秒毎に実行されるかどうかをチェックします。
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.120 cidr_netmask=24 op monitor interval=30s
standardprovider のフィールドを省略して次のようにすることもできます。標準とプロバイダーはそれぞれ ocfheartbeat にデフォルト設定されます。
# pcs resource create VirtualIP IPaddr2 ip=192.168.0.120 cidr_netmask=24 op monitor interval=30s
設定したリソースを削除する場合は次のコマンドを使用します。
pcs resource delete resource_id
例えば、次のコマンドでは VirtualIP というリソース ID の既存リソースを削除しています。
# pcs resource delete VirtualIP
  • pcs resource create コマンドのフィールド resource_idstandardprovidertype については 「リソースのプロパティー」 を参照してください。
  • リソースごとにパラメーターを指定する方法は 「リソース固有のパラメーター」 を参照してください。
  • リソースの動作をクラスターが決定する場合に使用するリソースのメタオプションを定義する方法は 「リソースのメタオプション」 を参照してください。
  • リソースで行う動作を定義する方法は 「リソースの動作」 を参照してください。
  • clone オプションを指定するとクローンリソースが作成されます。master オプションを指定するとマスター/スレーブリソースが作成されます。リソースのクローンや、複数モードのリソースに関する詳細は 9章高度な設定 を参照してください。

6.2. リソースのプロパティー

リソースに定義するプロパティを使ってリソースに使用するスクリプト、スクリプトの格納先、準拠すべき標準をクラスターに指示します。表6.1「リソースのプロパティー」 に詳細を示します。

表6.1 リソースのプロパティー

フィールド説明
resource_id
リソースの名前
standard
スクリプトが準拠する標準、使用できる値: ocfserviceupstartsystemdlsbstonith
type
使用するリソースエージェントの名前、例えば IPaddrFilesystem など
provider
OCF 仕様により複数のベンダーで同じリソースエージェントが供給可能、Red Hat で配信するエージェントのほとんどはプロバイダーに heartbeat を使用
利用可能なリソースプロパティーを表示するコマンドは 表6.2「リソースプロパティを表示させるコマンド」 を参照してください。

表6.2 リソースプロパティを表示させるコマンド

pcs Display Command出力
pcs resource list利用できる全リソースの一覧を表示
pcs resource standards利用できるリソースエージェントの標準を表示
pcs resource providers 利用できるリソースエージェントのプロバイダーを表示
pcs resource list string利用できるリソースを指定文字列でフィルターした一覧を表示、標準名、プロバイダー名、タイプ名などでフィルターした一覧を表示させることが可能

6.3. リソース固有のパラメーター

リソースごとに以下のコマンドを使用すると、そのリソースに設定できるパラメーターが表示されます。
# pcs resource describe standard:provider:type|type
たとえば、以下のコマンドはタイプ LVM のリソースに設定できるパラメーターを表示します。
# pcs resource describe LVM
Resource options for: LVM
  volgrpname (required): The name of volume group.
  exclusive: If set, the volume group will be activated exclusively.
  partial_activation: If set, the volume group will be activated even
  only partial of the physical volumes available. It helps to set to
  true, when you are using mirroring logical volumes.

6.4. リソースのメタオプション

リソース固有のパラメーターの他にも追加のリソースオプションを設定することができます。これらのオプションはリソースの動作を決定するためクラスターによって使用されます。表6.3「リソースのメタオプション」 に詳細を示します。

表6.3 リソースのメタオプション

フィールドデフォルト説明
priority
0
すべてのリソースを実行できない場合は優先度の高いリソースの実行を維持するため低い方のリソースを停止します
target-role
Started
維持するリソースの状態、使用できる値:
* Stopped - リソースの強制停止
* Started - リソースの起動を許可 (多状態リソースの場合マスターには昇格されません)
* Master - リソースの起動を許可、また適切であれば昇格されます
is-managed
true
クラスターによるリソースの起動と停止を許可または許可しない、使用できる値: truefalse
resource-stickiness
0
リソースをそのノードに留まらせる優先度の値
requires
Calculated
リソースの起動を許可する条件
以下の条件の場合を除き fencing にデフォルト設定、可能な値:
* nothing - クラスターによるリソースの起動を常に許可
* quorum - 設定されているノードの過半数がアクティブな場合にのみクラスターはこのリソースを起動可能、stonith-enabledfalse に設定されている場合またはリソースの standardstonith の場合はこのオプションがデフォルト値となる
* fencing -設定されているノードの過半数がアクティブで 且つ 障害が発生しているノードや不明なノードの電源がすべてオフになっている場合にのみ、クラスターによるこのリソースの起動を許可
* unfencing - 設定されているノードの過半数がアクティブで 且つ 障害が発生しているノードや不明なノードの電源がすべてオフになっている場合にのみ アンフェンス が行われたノードに 限定 してこのリソースの起動を許可、フェンスデバイスに provides=unfencingstonith メタオプションが設定されていた場合はこれがデフォルト値。
migration-threshold
INFINITY
指定したリソースが任意のノードで失敗した回数です。この回数を超えると、そのノードは、このリソースのホストとして不適格とするマークがつけられます。値を 0 にするとこの機能は無効になり、ノードに不適格マークがつけられることはありません。INFINITY (デフォルト) に設定すると、クラスターは、これを非常に大きい有限数として扱われます。このオプションが、失敗した操作に on-fail=restart (デフォルト) が設定されていて、かつ失敗した起動操作に対してクラスタープロパティー start-failure-is-fatalfalse に設定されている場合に限り有効です。migration-threshold の設定の説明は、「障害発生によるリソースの移動」 を参照してください。start-failure-is-fatal オプションの説明は、表12.1「クラスターのプロパティ」を参照してください。
failure-timeout
0 (無効)
migration-threshold オプションと併用、障害は発生していなかったとして動作するまでに待機させる秒数、リソースの実行に失敗したノードで再度そのリソースの実行を許可する可能性がある (failure-timeout オプションの設定は 「障害発生によるリソースの移動」 を参照)
multiple-active
stop_start
リソースが複数のノードで実行していることが検出された場合にクラスターに行わせる動作、使用できる値:
* block - リソースに unmanaged のマークを付ける
* stop_only - 実行しているインスタンスをすべて停止する (これ以上の動作は行わない)
* stop_start - 実行中のインスタンスをすべて停止してから一ヶ所でのみ起動する
リソースオプションのデフォルト値を変更する場合は次のコマンドを使用します。
pcs resource defaults options
例えば、次のコマンドでは resource-stickiness のデフォルト値を 100 にリセットしています。
# pcs resource defaults resource-stickiness=100
pcs resource defaultsoptions パラメーターを省略すると現在設定しているリソースオプションのデフォルト値の一覧を表示します。次の例では resource-stickiness のデフォルト値を 100 にリセットした後の出力を示しています。
# pcs resource defaults
resource-stickiness:100
リソースのメタオプションのデフォルト値をリセットしていたかいないかによって、リソース作成の際に特定リソースのリソースオプションをデフォルト以外の値に設定することができます。リソースのメタオプションの値を指定する時に使用する pcs resource create コマンドの形式を以下に示します。
pcs resource create resource_id standard:provider:type|type [resource options] [meta meta_options...]
例えば、次のコマンドでは resource-stickiness の値を 50 に設定したリソースを作成しています。
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.120 cidr_netmask=24 meta resource-stickiness=50
また、次のコマンドを使用すると既存のリソース、グループ、クローン作成したリソース、マスターリソースなどのリソースメタオプションの値を作成することもできます。
pcs resource meta resource_id | group_id | clone_id | master_id  meta_options
次の例では、既存の dummy_resource と言うリソースに failure-timeout メタオプションの値を 20 秒に設定しているコマンドの例を示します。これにより 20 秒でリソースが同じノード上で再起動試行できるようになります。
# pcs resource meta dummy_resource failure-timeout=20s 
上記のコマンドを実行した後、failure-timeout=20s が設定されているか確認するためリソースの値を表示させることができます。
# pcs resource show dummy_resource
 Resource: dummy_resource (class=ocf provider=heartbeat type=Dummy)
  Meta Attrs: failure-timeout=20s
  Operations: start interval=0s timeout=20 (dummy_resource-start-timeout-20)
              stop interval=0s timeout=20 (dummy_resource-stop-timeout-20)
              monitor interval=10 timeout=20 (dummy_resource-monitor-interval-10)
リソースの clone メタオプションについては 「リソースのクローン」 を参照してください。リソースの master メタオプションについては 「多状態のリソース: 複数モードのリソース」 を参照してください。

6.5. リソースグループ

一緒に配置され、順番に起動され、逆順で停止される必要のあるリソースのセットは、クラスターの最も一般的な要素の 1 つです。この設定を簡単にするため、 Pacemaker はグループの概念をサポートします。
以下のコマンドを使用してリソースグループを作成し、グループに含まれるリソースを指定します。グループが存在しない場合は、このコマンドによってグループが作成されます。グループが存在する場合は、このコマンドによって追加のリソースがグループに追加されます。リソースは、このコマンドで指定された順序で起動され、その逆順で停止されます。
pcs resource group add group_name resource_id [resource_id] ... [resource_id]
[--before resource_id | --after resource_id
このコマンドの --before および --after オプションを使用すると、リソースグループにすでに存在するリソースを基準として、追加されたリソースの相対的な位置を指定できます。
また、以下のコマンドを使用するとリソースの作成時に新しいリソースを既存グループへ追加できます。作成するリソースは group_name というグループに追加されます。
pcs resource create resource_id standard:provider:type|type [resource_options] [op operation_action operation_options] --group group_name
以下のコマンドを使用してグループからリソースを削除します。グループにリソースがない場合、このコマンドはグループ自体を削除します。
pcs resource group remove group_name resource_id...
以下のコマンドは、現在設定されているリソースグループをすべて表示します。
pcs resource group list
以下の例では、既存リソースの IPaddrEmail が含まれる shortcut というリソースグループが作成されます。
# pcs resource group add shortcut IPaddr Email
グループに含まれるリソースの数に制限はありません。グループの基本的なプロパティーは次のとおりです。
  • リソースは指定された順序で起動されます (この例では、最初に IPaddr が起動された後、Email が起動されます)。
  • リソースは指定された順序の逆順で停止されます (Email が停止された後、IPaddr が停止されます)。
グループのリソースの 1 つを実行できない場合、そのリソースの後に指定されたリソースは実行できません。
  • IPaddr を実行できない場合は Email も実行できません。
  • Email を実行できなくても IPaddr には影響しません。
グループが大きくなると、リソースグループ作成の設定作業を軽減することが重要になります。

6.5.1. グループオプション

リソースグループは、リソースグループに含まれるリソースから prioritytarget-role、および is-managed オプションを継承します。リソースオプションの詳細は 表6.3「リソースのメタオプション」 を参照してください。

6.5.2. グループの Stickiness (粘着性)

Stickiness はリソースが現在の場所に留まりたい度合いを示し、グループで加算されます。グループのアクティブなリソースが持つ stickness 値の合計は、グループの合計になります。そのため、resource-stickiness のデフォルト値が 100 で、グループに 7 つのメンバーがあり、そのメンバーの 5 つがアクティブな場合、グループ全体のスコアは 500 になります。

6.6. リソースの動作

リソースに健全性を維持させるためリソースの定義にモニタリングの動作を追加することができます。モニタリングの動作を指定しないと、pcs コマンドはデフォルトでモニタリングの動作を作成します。モニタリングの間隔はリソースエージェントで確定されます。リソースエージェントでデフォルトのモニタリング間隔が提供されない場合は pcs コマンドにより 60 秒間隔のモニタリング動作が作成されます。
表6.4「動作のプロパティ」 にリソースのモニタリング動作のプロパティを示します。

表6.4 動作のプロパティ

フィールド説明
id
動作に固有となる名前、動作を設定するとシステムによって割り当てられる
name
実行する動作、一般的な値:monitorstartstop
interval
ゼロ以外の値に設定した場合、秒単位で繰り返しを行う繰り返し操作が作成されます。ゼロ以外の値は、アクション namemonitor に設定される場合にのみ意味を成します。繰り返しの操作は、リソースの起動が完了してからすぐに実行されます。後続のモニターアクションが、以前のモニターアクションが完了したときに開始されるようにスケジュール設定されます。例えば、interval=20s のモニターアクションが 01:00:00 に実行される場合は、次のモニターアクションは 01:00:20 ではなく、最初のモニターアクションが完了してから 20 秒後に実行されます。
デフォルト値である 0 に設定すると、このパラメーターにより、クラスターは作成される操作に使用する値を与えられるようになります。例えば、interval が 0 に設定されると、操作の namestart に設定されます。timeout の値が 40 に設定されると、このリソースが起動するときに Pacemaker は 40 秒のタイムアウトを使用します。0 間隔の monitor 操作では、Pacemaker がスタートアップで行うプローブに timeout/on-fail/enabled の値を設定し、デフォルトが適切でないときに、すべてのリソースの現在のステータスを取得します。
timeout
操作がこのパラメーターで設定された時間内に完了しない場合は、その操作が中止され、エラーとみなされます。デフォルトの値は、pcs resource op defaults コマンドで設定した場合は、timeout の値です。設定しない場合は、20 秒になります。操作 (startstop、または monitor など) を実行するのにシステムが許可する以上の時間を必要とするリソースを、お使いのシステムが含む場合は、原因を調べ、実行時間が長いと考えラレル場合には、この値を高く設定することができます。
タイムアウト期間が完了する前に操作が返される場合は、timeout 値はいかなる遅延でもなく、クラスターがタイムアウト時間をすべて待つことにはなりません。
on-fail
この動作が失敗した場合に実行する動作、使用できる値:
* ignore - リソースが失敗していなかったように振る舞う
* block - リソースでこれ以上、一切の動作を行わない
* stop - リソースを停止して別の場所で起動しない
* restart - リソースを停止してから再起動する (おそらく別の場所)
* fence - 失敗したリソースがあるノードを STONITH する
* standby - 失敗したリソースがあるノード上の すべてのリソース を移動させる
STONITH が有効でblock に設定されていると stop 動作のデフォルトは fence になります。これ以外は restart にデフォルト設定されます。
enabled
false に設定するとその動作はないものとして処理される、使用できる値: truefalse

6.6.1. リソース操作の設定

次のコマンドでリソースを作成するとモニタリングの動作を設定することができます。
pcs resource create resource_id standard:provider:type|type [resource_options] [op operation_action operation_options [operation_type operation_options]...]
例えば、次のコマンドはモニタリング動作付きの IPaddr2 リソースを作成します。新しいリソースには VirtualIP という名前が付けられ、eth2 で IP アドレス 192.168.0.99、ネットマスク 24 になります。モニタリング動作は 30 秒毎に実施されます。
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2 op monitor interval=30s
また、次のコマンドで既存のリソースにモニタリング動作を追加することもできます。
pcs resource op add resource_id operation_action [operation_properties]
設定されているリソースの動作を削除する場合は次のコマンドを使用します。
pcs resource op remove resource_id operation_name operation_properties

注記

操作プロパティーを正しく指定して既存の操作を適切に削除する必要があります。
モニタリングオプションの値を変更には、リソースを更新します。たとえば、以下のコマンドで VirtualIP を作成できます。
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2
デフォルトでは次の動作を作成します。
Operations: start interval=0s timeout=20s (VirtualIP-start-timeout-20s)
            stop interval=0s timeout=20s (VirtualIP-stop-timeout-20s)
            monitor interval=10s timeout=20s (VirtualIP-monitor-interval-10s)
stop の timeout 操作を変更するには、以下のコマンドを実行します。
# pcs resource update VirtualIP op stop interval=0s timeout=40s

# pcs resource show VirtualIP
 Resource: VirtualIP (class=ocf provider=heartbeat type=IPaddr2)
  Attributes: ip=192.168.0.99 cidr_netmask=24 nic=eth2
  Operations: start interval=0s timeout=20s (VirtualIP-start-timeout-20s)
              monitor interval=10s timeout=20s (VirtualIP-monitor-interval-10s)
              stop interval=0s timeout=40s (VirtualIP-name-stop-interval-0s-timeout-40s)

6.6.2. グローバルリソース操作のデフォルトの設定

以下のコマンドを使用して、モニタリング操作のグローバルデフォルト値を設定できます。
pcs resource op defaults [options]
たとえば、以下のコマンドはすべてのモニタリング操作に対して timeout 値のグローバルデフォルトを 240 秒に設定します。
# pcs resource op defaults timeout=240s
モニタリング操作の現在設定されているデフォルト値を表示するには、 pcs resource op defaults コマンドをオプションを指定せずに実行します。
たとえば、以下のコマンドはクラスターのモニタリング操作のデフォルト値を表示します。この例では timeout 値は 240 秒に設定されています。
# pcs resource op defaults
timeout: 240s
オプションがクラスターリソース定義で指定されていない場合のみ、クラスターリソースがグローバルデフォルトを使用することに注意してください。デフォルトでは、リソースエージェントは、すべての操作の timeout オプションを定義します。受け入れられるグローバル操作タイムアウト値は、timeout オプションなしでクラスターリソースを作成する必要があります。あるいは、以下のコマンドなどのように、クラスターリソースを更新することで timeout オプションを削除する必要があります。
# pcs resource update VirtualIP op monitor interval=10s
例えば、すべてのモニタリング操作の 240 秒という timeout のグローバルデフォルトを設定してクラスターリソース VirtualIP を更新し、monitor 操作のタイムアウト値を削除すると、リソース VirtualIPstartstopmonitor のタイムアウト値がそれぞれ 20、40、240 に設定されます。タイムアウト操作のグローバルデフォルト値は、monitor 操作のにみ適用されます。これは、デフォルトの timeout オプションが以前のコマンドによって削除されます。
# pcs resource show VirtualIP
 Resource: VirtualIP (class=ocf provider=heartbeat type=IPaddr2)
   Attributes: ip=192.168.0.99 cidr_netmask=24 nic=eth2
   Operations: start interval=0s timeout=20s (VirtualIP-start-timeout-20s)
               monitor interval=10s (VirtualIP-monitor-interval-10s)
               stop interval=0s timeout=40s (VirtualIP-name-stop-interval-0s-timeout-40s)

6.7. 設定されているリソースの表示

設定されているリソースの全一覧を表示する場合は次のコマンドを使用します。
pcs resource show
例えば、VirtualIP と言う名前のリソースと WebSite という名前のリソースでシステムを設定していた場合、pcs resource show コマンドを実行すると次のような出力が得られます。
# pcs resource show
 VirtualIP	(ocf::heartbeat:IPaddr2):	Started 
 WebSite	(ocf::heartbeat:apache):	Started
設定されたすべてのリソースのリストおよびこれらのリソースに対して設定されたパラメーターを表示するには、以下の例のように pcs resource show コマンドの --full オプションを使用します。
# pcs resource show --full
 Resource: VirtualIP (type=IPaddr2 class=ocf provider=heartbeat)
  Attributes: ip=192.168.0.120 cidr_netmask=24 
  Operations: monitor interval=30s
 Resource: WebSite (type=apache class=ocf provider=heartbeat)
  Attributes: statusurl=http://localhost/server-status configfile=/etc/httpd/conf/httpd.conf 
  Operations: monitor interval=1min
設定されているリソースのパラメーターを表示する場合は次のコマンドを使用します。
pcs resource show resource_id
例えば、次のコマンドは現在設定されているリソース VirtualIP のパラメーターを表示しています。
# pcs resource show VirtualIP
 Resource: VirtualIP (type=IPaddr2 class=ocf provider=heartbeat)
  Attributes: ip=192.168.0.120 cidr_netmask=24
  Operations: monitor interval=30s

6.8. リソースパラメーターの変更

設定されているリソースのパラメーターを変更する場合は次のコマンドを使用します。
pcs resource update resource_id [resource_options]
設定されているリソース VirtualIP のパラメーターの値を示すコマンドと初期値を表示している出力、ip パラメーターの値を変更するコマンド、変更されたパラメーター値を表示している出力を以下に示します。
# pcs resource show VirtualIP
 Resource: VirtualIP (type=IPaddr2 class=ocf provider=heartbeat)
  Attributes: ip=192.168.0.120 cidr_netmask=24
  Operations: monitor interval=30s
# pcs resource update VirtualIP ip=192.169.0.120
# pcs resource show VirtualIP
 Resource: VirtualIP (type=IPaddr2 class=ocf provider=heartbeat)
  Attributes: ip=192.169.0.120 cidr_netmask=24
  Operations: monitor interval=30s

6.9. 複数のモニタリング動作

リソースエージェントが対応する範囲で一つのリソースに複数のモニタリング動作を設定することができます。これにより毎分、表面的なヘルスチェックを行ったり、徐々に頻度を上げてより正確なチェックを行うこともできます。

注記

複数のモニタリング動作を設定する場合は 2 種類の動作が同じ間隔で実行されないよう注意してください。
リソースに異なるレベルで徹底的なヘルスチェックに対応する追加モニタリング動作を設定するには OCF_CHECK_LEVEL=n オプションを追加します。
例えば、 以下のように IPaddr2 リソースを設定するとデフォルトでは 10 秒間隔でタイムアウト値が 20 秒のモニタリング動作が作成されます。
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2 
仮想 IP で深さ 10 の異なるチェックに対応する場合は、次のコマンドを発行すると Pacemaker で 10 秒間隔の通常仮想 IP チェックの他に 60 秒間隔の高度なモニタリングチェックが実行されるようになります。(説明されているように 10 秒間隔の追加モニタリング動作は設定しないでください。)
# pcs resource op add VirtualIP monitor interval=60s OCF_CHECK_LEVEL=10

6.10. クラスターリソースの有効化と無効化

次のコマンドは resource_id で指定されているリソースを有効にします。
pcs resource enable resource_id
次のコマンドは resource_id で指定されているリソース無効にします。
pcs resource disable resource_id

6.11. クラスターリソースのクリーンアップ

リソースに障害が発生すると、クラスターの状態を表示するときに障害メッセージが表示されます。このリソースを解決する場合、pcs resource cleanup コマンドで障害状態を消去できます。このコマンドはリソースの状態と failcount をリセットし、リソースの動作履歴を消去して現在の状態を再検出するようクラスターに指示します。
以下のコマンドは、resource_id によって指定されたリソースをクリーンアップします。
pcs resource cleanup resource_id
resource_id を指定しないと、このコマンドはすべてのリソースのリソース状態と failcount をリセットします。
Red Hat Enterprise Linux 7.5 では、pcs resource cleanup コマンドは、失敗したアクションとして表示されるリソースのみを検証します。全ノードの全リソースを調査するには、次のコマンドを入力します。
pcs resource refresh
デフォルトでは、 pcs resource refresh コマンドは、リソースの状態がわかっているノードだけを調べます。状態が分からないリソースもすべて調べるには、以下のコマンドを入力します。
pcs resource refresh --full

第7章 リソースの制約

リソースの制約を設定することでクラスター内のそのリソースの動作を決めることができます。設定できる制約は以下のカテゴリーになります。
  • location 制約 — 場所の制約はリソースを実行できるノードを決めます。場所の制約については「場所の制約」 で説明しています。
  • order 制約 — 順序の制約はリソースが実行される順序を決めます。順序の制約については 「順序の制約」 で説明しています。
  • colocation 制約 — コロケーションの制約は他のリソースと相対的となるリソースの配置先を決めます。コロケーションの制約については 「リソースのコロケーション」 で説明しています。
複数リソース一式を一緒に配置、それらを順番に起動させ、また逆順で停止させるため複数の制約を設定する場合、その簡易な方法として Pacemaker ではリソースグループという概念に対応しています。リソースグループについては 「リソースグループ」 を参照してください。

7.1. 場所の制約

場所の制約ではリソースを実行させるノードを指定します。場所の制約を設定することで特定のノードで優先してリソースを実行する、または特定のノードでのリソースの実行を避けるなどの指定を行うことができます。

7.1.1. 基本的な場所の制約

基本的な場所の制約を設定して、リソースの実行を特定のノードで優先するか、または回避するかを指定できます。オプションの score 値を使用して、制約の相対的な優先度を指定できます。
以下のコマンドは、リソースの実行を、指定した 1 つまたは複数のノードで優先するように、場所の制約を作成します。1 回のコマンドで、特定のリソースの制約を複数のノードに対して作成できます。
pcs constraint location rsc prefers node[=score] [node[=score]] ...
次のコマンドはリソースが指定ノードを避けて実行される場所の制約を作成します。
pcs constraint location rsc avoids node[=score] [node[=score]] ...
表7.1「簡単な場所の制約オプション」 では、最も簡単な形式で場所の制約を設定する場合のオプションの意味をまとめています。

表7.1 簡単な場所の制約オプション

フィールド説明
rsc
リソース名
node
ノード名
score
リソースを特定ノードで優先的に実行するか、または実行を回避するかを示す正の整数値。score のデフォルト値は、INFINITY です。
リソースを特定ノードで優先的に実行するように設定するコマンドで score の値を INFINITY にすると、そのノードが利用可能な場合はそのノードでリソースを優先的に実行しますが、利用できない場合に別のノードでそのリソースを実行しないようにする訳ではありません。リソースがノードを回避するように設定するコマンドで INFINITY を設定した場合は、他のノードが利用できない場合でも、リソースがそのノードで実行されないことを示します。
以下のコマンドは、リソース Webserver が、ノード node1 で優先的に実行するように指定する場所の制約を作成します。
# pcs constraint location Webserver prefers node1
Red Hat Enterprise Linux 7.4 の pcs では、コマンドラインの場所の制約に正規表現に対応しています。この制約は、リソース名に一致する正規表現に基づいて、複数のリソースに適用されます。これにより、1 つのコマンドラインで複数の場所の制約を設定できます。
以下のコマンドは、dummy0 から dummy9 までのリソースの実行が node1 に優先されるように指定する場所の制約を作成します。
# pcs constraint location 'regexp%dummy[0-9]' prefers node1
Pacemaker は、 http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04 で説明しているように、POSIX 拡張正規表現を使用するため、以下のコマンドを実行しても同じ制約を指定できます。
# pcs constraint location 'regexp%dummy[[:digit:]]' prefers node1

7.1.2. 高度な場所の制約

ノードに場所の制約を設定する際に、pcs constraint location コマンドの resource-discovery オプションを使用して、指定のリソース対して Pacemaker がこのノードでリソース検出を実行するかどうかの優先度を指定できます。リソースが物理的に稼働可能なノードのサブセットにリソース検出を制限すると、ノードが大量に存在する場合にパフォーマンスを大幅に改善できます。pacemaker_remote を使用して、ノード数を100 単位で拡大する場合は、このオプションの使用を検討してください。
以下のコマンドでは、pcs constraint location コマンドの resource-discovery オプションを指定する形式を示しています。id は制約 id であることに注意してください。rscnodescore の意味は 表7.1「簡単な場所の制約オプション」 で説明しています。このコマンドでは、score の正の値は、ノードを推奨するリソースの設定を行う場所の基本的な制約に一致しています。score の負の値は、ノードを避けるリソースを設定する場所の基本的な制約に一致しています。場所の基本的な制約では、これらの制約とともに、リソースに対して正規表現を使用できます。
pcs constraint location add id rsc node score [resource-discovery=option]
表7.2「リソース検出の値」 では、resource-discovery オプションに指定できる値を説明しています。

表7.2 リソース検出の値

説明
always
このノードに指定したリソースで、リソース検出を常に実行します。リソースの場所の制約のresource-discovery のデフォルト値です。
never
このノードで指定ししたリソースでのリソース検出は実行しません。
exclusive
このノード (および exclusive と同様のマークが付いている他のノード) に指定したリソースに限定してリソース検出を行います。複数のノードで、同じリソースの exclusive 検出を使用して場所の制約を複数設定すると、resource-discovery が排他的に実行するノードのサブセットが作成されます。1 つ以上のノードでリソースに exclusive 検出のマークが付いている場合、リソースはノード内で該当するサブセットにのみ置くことができます。
resource-discovery オプションを never または exclusive に設定すると、クラスターが認識しなくても、該当する場所でリソースがアクティブになる可能性があります。この場合は、(systemd または管理者による起動などの) クラスターが制御できる範囲外でサービスが起動すると、複数の場所でリソースがアクティブになる可能性があります。また、クラスターの一部がダウンしたりスプリットブレインが発生しているときに resource-discovery プロパティーが変更した場合や、ノードでリソースがアクティブなときにそのリソースやノードに対して resource-discovery プロパティーが変更した場合にも、複数の場所でリソースがアクティブになる可能性があります。そのため、ノードの数が 9 以上で、特定の場所しかリソースを実行できない場合 (必要なソフトウェアが他の場所にインストールされていない場合など) に限り、このオプションは適しています。

7.1.3. ルールを使用したリソースの場所の確定

より複雑な場所の制約は、Pacemaker ルールを使用してリソースの場所を判断することができます。Pacemaker ルールや設定できるパロパティの概要は、11章Pacemaker ルール を参照してください。
以下のコマンドを使用して、ルールを使用する Pacemaker 制約を設定します。score が省略される場合は、デフォルトで INFINITY に設定されます。resource-discovery が省略される場合は、デフォルトで always に設定されます。resource-discovery オプションの説明は、「高度な場所の制約」 を参照してください。基本的な場所の制約と同様に、これらの制約にリソースの正規表現を使用することもできます。
ルールを使用して場所の制約を設定する場合、score は正または負の値にすることができ、正の値は「prefers」および負の値は「avoids」を示します。
pcs constraint location rsc rule [resource-discovery=option] [role=master|slave] [score=score | score-attribute=attribute] expression
表11.5「日付詳細のプロパティー」 で説明しているように、expression オプションは、duration_optionsdate_spec_options が monthdays、weekdays、yeardays、months、weeks、years、weekyears、moon の以下のいずれです。
  • defined|not_defined attribute
  • attribute lt|gt|lte|gte|eq|ne [string|integer|version] value
  • date gt|lt date
  • date in-range date to date
  • date in-range date to duration duration_options ...
  • date-spec date_spec_options
  • expression and|or expression
  • (expression)
以下の場所の制約は、現在が 2018 年の任意の時点である場合に true の式を設定します。
# pcs constraint location Webserver rule score=INFINITY date-spec years=2018 
以下のコマンドは、月曜日から金曜日までの 9 am から 5 pm までが true となる式を設定します。hours の値 16 には時間の値が一致する 16:59:59 までが含まれます。
# pcs constraint location Webserver rule score=INFINITY date-spec hours="9-16" weekdays="1-5"
以下のコマンドは、 13 日の金曜日が満月であると true になる式を設定します。
# pcs constraint location Webserver rule date-spec weekdays=5 monthdays=13 moon=4

7.1.4. 場所の制約ストラテジー

「基本的な場所の制約」「高度な場所の制約」「ルールを使用したリソースの場所の確定」で説明している場所の制約のいずれかを使用することで、リソースを実行できるノードを指定するための一般的なストラテジーを設定できます。
  • オプトインクラスター — クラスターを設定し、デフォルトではいずれのノードでもリソース実行を許可せず、特定のリソース用に選択的に許可ノードを有効にします。オプトインクラスターの設定方法は 「「オプトイン」クラスターの設定」 で説明しています。
  • オプトアウトクラスター — クラスターを設定し、デフォルトでは全ノードでリソース実行を許可してから、特定ノードでの実行を許可しない場所の制約を作成します。オプトアウトクラスターの設定方法は 「「オプトアウト」クラスターの設定」 で説明しています。これは、デフォルトの Pacemaker ストラテジーです。
クラスターでオプトインまたはオプトアウトのどちらを選択するかは、独自に優先する設定やクラスターの構成により異なります。ほとんどのリソースをほとんどのノードで実行できるようにする場合は、オプトアウトを使用した方が設定が簡単になる可能性があります。ほとんどのリソースを、一部のノードでのみ実行する場合は、オプトインを使用した方が設定がより簡単になる可能性があります。

7.1.4.1. 「オプトイン」クラスターの設定

オプトインクラスターを作成する場合はクラスタープロパティ symmetric-clusterfalse に設定してデフォルトではリソースの実行をいずれのノードでも許可しないようにします。
# pcs property set symmetric-cluster=false
個々のリソースでノードを有効にします。以下のコマンドは、場所の制約を設定し、Webserver リソースは example-1 ノードを優先し、Database リソースは example-2 ノードを優先するようにし、いずれのリソースも優先ノードに障害が発生した場合は example-3 ノードにフェールオーバーできるようにします。オプトインクラスターに場所の制約を設定する場合は、スコアをゼロに設定すると、リソースに対してノードの優先や回避を指定せずに、リソースをノードで実行できます。
# pcs constraint location Webserver prefers example-1=200
# pcs constraint location Webserver prefers example-3=0
# pcs constraint location Database prefers example-2=200
# pcs constraint location Database prefers example-3=0

7.1.4.2. 「オプトアウト」クラスターの設定

オプトアウトクラスターを作成する場合はクラスタープロパティ symmetric-clustertrue に設定しデフォルトではリソースの実行をすべてのノードに許可します。
# pcs property set symmetric-cluster=true
以下のコマンドを実行すると、「「オプトイン」クラスターの設定」 の例と同じ設定になります。すべてのノードのスコアは暗黙的に 0 になるため、優先ノードに障害が発生した場合はいずれのリソースも example-3 ノードにフェールオーバーできます。
# pcs constraint location Webserver prefers example-1=200
# pcs constraint location Webserver avoids example-2=INFINITY
# pcs constraint location Database avoids example-1=INFINITY
# pcs constraint location Database prefers example-2=200
上記コマンドでは score に INFINITY を指定する必要はありません。INFINITY が score のデフォルト値になります。

7.2. 順序の制約

順序の制約でリソースを実行する順序を指定します。
次のコマンドを使って順序の制約を設定します。
pcs constraint order [action] resource_id then [action] resource_id [options]
表7.3「順序の制約のプロパティ」 では順序の制約を設定する場合のプロパティとオプションについて簡単に示します。

表7.3 順序の制約のプロパティ

フィールド説明
resource_id
動作を行うリソースの名前
action
リソースで行う動作、action プロパティで使用できる値:
* start - リソースを起動する
* stop - リソースを停止する
* promote - スレーブリソースからマスターリソースにリソースの昇格を行う
* demote - マスターリソースからスレーブリソースにリソースの降格を行う
動作を指定しな射場愛はデフォルトの動作 start が設定されます。マスターリソースとスレーブリソースについての詳細は 「多状態のリソース: 複数モードのリソース」 を参照してください。
kind オプション
制約の実施方法、kind オプションで使用できる値:
* Optional - 両方のリソースが指定のアクションを実行する場合のみ適用されます。順序は 「勧告的な順序付け」 を参照してください。
* Mandatory - 常に実施 (デフォルト値)、1 番目に指定したリソースが停止しているまたは起動できない場合は、2 番目に指定されているリソースを停止しなければなりません (「強制的な順序付け」 を参照)。
* Serialize - リソースセットに対して 2 種類の動作、停止と起動が同時に発生しないようにする
symmetrical オプション
If true, which is the default, stop the resources in the reverse order. Default value: true

7.2.1. 強制的な順序付け

mandatory 制約では 1 番目に指定しているリソースが実行されない限り 2 番目に指定しているリソースは実行できません。 これが kind オプションのデフォルトです。デフォルト値のままにしておくと 1 番目に指定しているリソースの状態が変化した場合、2 番目に指定したリソー スが必ず反応するようになります。
  • 1 番目に指定している実行中のリソースを停止すると 2 番目に指定しているリソースも停止されます (実行していれば)。
  • 1 番目に指定しているリソースが実行されていない状態でまた起動できない場合には 2 番目に指定しているリソースが停止されます (実行していれば)。
  • 2 番目に指定しているリソースの実行中に 1 番目に指定しているリソースが再起動されると、2 番目に指定しているリソースが停止され再起動されます。

7.2.2. 勧告的な順序付け

順序の制約に kind=Optional オプションが指定された場合、制約は任意として考慮され、両方のリソースが指定のアクションを実行する場合のみ適用されます。最初に指定するリソースによる状態の変更は 2 番目に指定するリソースに影響を与えません。
次のコマンドは VirtualIP というリソースと dummy_resource というリソースに勧告的な順序付けの制約を設定します。
# pcs constraint order VirtualIP then dummy_resource kind=Optional 

7.2.3. 順序付けされたリソースセット

一般的に、管理者は、複数のリソースを作成する際に順序を設定します (例: リソース A が開始してからリソース B を開始し、その後にリソース C を開始)。複数のリソースを作成して同じ場所に配置し (コロケーションを指定)、起動の順序を設定する必要がある場合は、「リソースグループ」に従って、これらのリソースが含まれるリソースグループを設定できます。ただし、リソースグループとして指定した順序で起動する必要があるリソースを設定することが適切でない状況もあります。
  • リソースを順番に起動するように設定する必要があるものの、リソースは必ずしも同じ場所に配置しない場合。
  • リソース C の前にリソース A または B のいずれかが起動する必要があるものの、A と B の間には関係が設定されていない場合。
  • リソース C およびリソース D の前にリソース A およびリソース B の両方が起動している必要があるものの、A と B、または C と D の間には関係が設定されていない場合。
このような状況では、pcs constraint order set コマンドを使用して、リソースの 1 つまたは複数のセットに対して順序の制約を作成できます。
pcs constraint order set コマンドを使用すると、以下のオプションをリソースのセットに設定できます。
  • sequential: true または false に設定でき、リソースのセットが相対的に順序付けされる必要があるかどうかを示します。
    sequentialfalse に設定すると、順序付けの制約で他のセットに対して相対的に順序付けすることができますが、セットのメンバーは相対的に順序付けされません。そのため、このオプションは制約に複数のセットがリストされている場合のみ有効です。それ以外の場合、制約の効果はありません。
  • require-all: true または false を設定でき、続行する前にセットのすべてのリソースがアクティブである必要があるかどうかを示します。require-allfalse に設定した場合、次のセットに継続する前にセットの 1 つのリソースのみが開始される必要があります。require-allfalse に設定した場合、sequentialfalse に設定された順序付けされていないセットと併用しないと効果がありません。
  • action: 表7.3「順序の制約のプロパティ」 の説明どおり、startpromotedemote、または stop に設定できます。
pcs constraint order set コマンドの setoptions パラメーターの後に、リソースのセットに対する以下の制約オプションを設定できます。
pcs constraint order set resource1 resource2 [resourceN]... [options] [set resourceX resourceY ... [options]] [setoptions [constraint_options]]
D1D2D3 という 3 つのリソースがあると仮定した場合、次のコマンドはこの 3 つのリソースを順序付けされたひとつのリソースセットとして設定します。
# pcs constraint order set D1 D2 D3

7.2.4. 順序の制約からリソースを削除

次のコマンドを使用するとすべての順序の制約からリソースを削除します。
pcs constraint order remove resource1 [resourceN]...

7.3. リソースのコロケーション

任意のリソースの場所を別のリソースの場所に依存するよう定義するのがコロケーションの制約です。
2 つのリソース間にコロケーションの制約を作成する場合は重要な副作用がある点に注意してください。ノードにリソースを割り当てる順序に影響します。つまり、リソース B の場所がわからないとリソース B に相対的となるようリソース A を配置することはできません。このため、コロケーションの制約を作成する場合は、リソース A をリソース B に対してコロケートするのか、リソース B をリソース A に対してコロケートするのかが重要となります。
また、コロケーションの制約を作成する際に注意しておきたいもう 1 つの点として、リソース A をリソース B に対してコロケーションすると仮定した場合、クラスターがリソース B に選択するノードを決定する際、リソース A の優先度も考慮に入れます。
次のコマンドはコロケーションの制約を作成します。
pcs constraint colocation add [master|slave] source_resource with [master|slave] target_resource [score] [options]
マスターリソース、スレーブリソースの詳細は 「多状態のリソース: 複数モードのリソース」 を参照してください。
表7.4「コロケーション制約のプロパティ」 にコロケーション制約設定用のプロパティおよびオプションを示します。

表7.4 コロケーション制約のプロパティ

フィールド説明
source_resource
コロケーションソース、制約の条件を満たせない場合はこのリソースの実行を全く許可しないと判断されることがあります。
target_resource
コロケーションターゲット、このリソースの実行先が最初に決定されてからソースリソースの実行先が決定されます。
score
正の値を指定するとリソースは同じノードで実行され、負の値を指定するとリソースは同じノードで実行されません。デフォルト値である + INFINITYsource_resourcetarget_resource と同じノードで実行されなければならないことを示しています。INFINITYsource_resourcetarget_resource と同じノードで実行されてはならないことを示しています。

7.3.1. 強制的な配置

制約スコアが +INFINITY または -INFINITY の場合は常に強制的な配置が発生します。制約条件が満たされないと source_resource の実行が許可されません。score=INFINITY の場合、target_resource がアクティブではないケースが含まれます。
myresource1 を常に myresource2 と同じマシンで実行する場合は次のような制約を追加します。
# pcs constraint colocation add myresource1 with myresource2 score=INFINITY
INFINITY を使用しているため myresource2 がクラスターのいずれのノードでも実行できない場合には (理由の如何に関わらず) myresource1 の実行は許可されません。
また、逆の設定、つまり myresource1myresource2 と同じマシンでは実行できないようクラスターを設定することもできます。この場合は score=-INFINITY を使用します。
# pcs constraint colocation add myresource1 with myresource2 score=-INFINITY
-INFINITY を指定することで制約が結合しています。このため、実行できる場所として残っているノードで myresource2 がすでに実行されている場合には myresource1 はいずれのノードでも実行できなくなります。

7.3.2. 勧告的な配置

必ず実行する場合や必ず実行しない場合が「強制的な配置」であれば「勧告的な配置」はある状況下で優先される場合を言います。制約のスコアが -INFINITY より大きく INFINITY より小さい場合、クラスターはユーザーの希望を優先しようとしますが、クラスターリソースを一部停止することを希望する場合は無視します。勧告的なコロケーション制約と設定の他の要素を組み合わせると、強制的であるように動作させることができます。

7.3.3. 複数リソースのコロケート

使用する設定で、コロケーションと順序が適用されるリソースのセットを作成する必要がある場合は、「リソースグループ」に従って、これらのリソースを含むリソースグループを設定できます。ただし、コロケーションする必要があるリソースをリソースグループとして設定することが適切ではない場合があります。
  • リソースのセットをコロケーションする必要があるものの、リソースが必ずしも順番に起動する必要がない場合。
  • リソース C の前にリソース A または B のいずれかがコロケーションする必要があるものの、A と B の間には関係が設定されていない場合。
  • リソース C およびリソース D を、リソース A およびリソース B の両方とコロケーションする必要があるものの、A と B の間、または C と D の間に関係が設定されていない場合。
このような状況では、pcs constraint colocation set コマンドを使用して、リソースの 1 つまたは複数のセットでコロケーションの制約を作成できます。
pcs constraint colocation set コマンドを使用すると、以下のオプションをリソースのセットに設定できます。
  • sequential: true または false に設定でき、セットのメンバーがお互いをコロケートする必要があるかどうかを示します。
    sequentialfalse に設定すると、このセットのメンバーがアクティブであるかどうかに関係なく、このセットのメンバーを制約の後にリストされている他のセットとコロケートすることができます。そのため、このオプションは制約でこのセットの後に他のセットがリストされている場合のみ有効です。それ以外の場合、制約の効果はありません。
  • role: StoppedStartedMaster、または Slave に設定できます。マルチステートリソースの詳細は 「多状態のリソース: 複数モードのリソース」 を参照してください。
pcs constraint colocation set コマンドの setoptions パラメーターの後に、リソースのセットに対する以下の制約オプションを設定できます。
  • kind: 制約の実行方法を示します。このオプションの詳細は 表7.3「順序の制約のプロパティ」 を参照してください。
  • symmetrical: リソースを停止する順序を示します。デフォルト値は true で、リソースを逆順で停止します。
  • id: 定義する制約の名前を指定します。
セットのメンバーをリストする場合、各メンバーはその前のメンバーとコロケートされます。たとえば、「set A B」は B が A とコロケートされることを意味します。しかし、複数のセットをリストする場合、各セットはその後のメンバーとコロケートされます。たとえば、「set C D sequential=false set A B」は C と D のセット (C と D との関係がない) が A と B のセット (B は A とコロケートされる) とコロケートされることを意味します。
以下のコマンドは、リソースのセットにコロケーションの制約を作成します。
pcs constraint colocation set resource1 resource2 [resourceN]... [options] [set resourceX resourceY ... [options]] [setoptions [constraint_options]]

7.3.4. コロケーション制約の削除

コロケーション制約を削除する場合はコマンドに source_resource を付けて使用します。
pcs constraint colocation remove source_resource target_resource

7.4. 制約の表示

設定した制約を表示させるコマンドがいくつかあります。
次のコマンドは現在の場所、順序、ロケーションの制約を表示します。
pcs constraint list|show
次のコマンドは現在の場所の制約を表示します。
  • resources を指定すると場所制約がリソースごとに表示されます。デフォルトの動作です。
  • nodes を指定すると場所制約がノードごとに表示されます。
  • 特定のリソースまたはノードを指定するとそのリソースまたはノードの情報のみが表示されます。
pcs constraint location [show resources|nodes [specific nodes|resources]] [--full]
次のコマンドは現在の全順序制約を表示します。--full オプションを指定すると制約の内部 ID を表示します。
pcs constraint order show [--full]
次のコマンドは現在の全コロケーション制約を表示します。--full オプションを指定すると制約の内部 ID を表示します。
pcs constraint colocation show [--full]
次のコマンドは特定リソースを参照する制約を表示します。
pcs constraint ref resource ...

第8章 クラスターリソースの管理

本章ではクラスターのリソース管理に使用する各種コマンドについて説明します。次のような手順が含まれます。

8.1. リソースを手作業で移動する

クラスターの設定を無視して強制的にリソースを現在の場所から移動させることができます。次のような 2 タイプの状況が考えられます。
  • ノードのメンテナンスのためそのノードで実行中の全リソースを別のノードに移動する必要がある
  • 個別に指定されたリソースを移動する必要がある場合
ノードで実行中の全リソースを別のノードに移動する場合はそのノードをスタンバイモードにします。クラスターノードをスタンバイモードにする方法については 「スタンバイモード」 を参照してください。
個別に指定されたリソースは以下の方法のいずれかで移動することができます。
  • 「現在のノードからリソースを移動」 の説明にしたがって、pcs resource move コマンドを使用して現在稼働しているノードからリソースを移動します。
  • pcs resource relocate run コマンドを使用して、現在のクラスター状態、制約、リソースの場所、およびその他の設定によって決定される優先ノードへリソースを移動します。このコマンドの詳細は 「リソースの優先ノードへの移動」 を参照してください。

8.1.1. 現在のノードからリソースを移動

現在稼働しているノードからリソースを移動するには以下のコマンドを使用し、ノードの resource_id を定義どおりに指定します。移動するリソースを実行する移動先のノードを指定する場合は destination_node を指定します。
pcs resource move resource_id [destination_node] [--master] [lifetime=lifetime]

注記

pcs resource move コマンドを実行すると、現在稼働しているノードで実行されないよう、リソースに制約が追加されます。pcs resource clear または pcs constraint delete コマンドを実行すると制約を削除できます。これらのコマンドを実行してもリソースが必ずしも元のノードに戻るわけではありません。この時点でリソースが実行できる場所は、リソースの最初の設定によって異なります。
pcs resource ban コマンドの --master パラメーターを指定すると、制約の範囲がマスターロールに限定され、resource_id の代わりに master_id を指定する必要があります。
任意で pcs resource move コマンドの lifetime パラメーターを設定すると、制限が維持される期間を指定できます。ISO 8601 に定義された形式に従って lifetime パラメーターの単位を指定できます。ISO 8601 では、Y (年)、M (月)、W (週)、D (日)、H (時)、M (分)、S (秒) のように、単位を大文字で指定する必要があります。
分単位の M と月単位の M を区別するには、分単位の値の前に PT を指定する必要があります。たとえば、5M の lifetime パラメーターは 5 カ月の間隔を示し、PT5M の lifetime パラメーターは 5 分の間隔を示します。
lifetime パラメーターは cluster-recheck-interval クラスタープロパティーによって定義された間隔でチェックされます。デフォルト値は 15 分です。このパラメーターを頻繁にチェックする必要がある場合、以下のコマンドを実行してこの値をリセットできます。
pcs property set cluster-recheck-interval=value
任意で、pcs resource ban コマンドに --wait[=n] パラメーターを設定し、移動先のノードでリソースが起動するまでの待機時間 (秒単位) を指定することができます。待機時間がこの値を超えると、リソースが起動した場合は 0 が返され、リソースが起動しなかった場合は 1 が返されます。n の値を指定しないと、デフォルトのリソースタイムアウト値が使用されます。
以下のコマンドは、リソース resource1 をノード example-node2 へ移動し、1 時間 30 分以内に元のノードへ戻らないようにします。
pcs resource move resource1 example-node2 lifetime=PT1H30M
以下のコマンドは、リソース resource1 をノード example-node2 へ移動し、30 分以内に元のノードへ戻らないようにします。
pcs resource move resource1 example-node2 lifetime=PT30M
リソースの制約の詳細は 7章リソースの制約 を参照してください。

8.1.2. リソースの優先ノードへの移動

フェイルオーバーや管理者の手作業によるノードの移動によって、リソースが移動された後、フェイルオーバーの原因となった状況が改善されてもそのリソースは必ずしも元のノードに戻るわけではありません。リソースを優先ノードへ移動するには、以下のコマンドを実行します。優先ノードは、現在のクラスター状態、制約、リソースの場所、およびその他の設定によって決定され、時間とともに変更する可能性があります。
pcs resource relocate run [resource1] [resource2] ...
リソースを指定しないと、すべてのリソースが優先ノードに移動されます。
このコマンドは resource stickiness を無視して各リソースの優先ノードを算出します。優先ノードの算出後、リソースが優先ノードへ移動する原因となる場所の制約を作成します。リソースが移動した後、制約は自動的に削除されます。pcs resource relocate run コマンドによって作成された制約をすべて削除するには、pcs resource relocate clear コマンドを入力します。リソースの現在の状態と、resource stickiness を無視した最適なノードを表示するには、pcs resource relocate show コマンドを実行します。

8.2. 障害発生によるリソースの移動

リソースの作成時、リソースに migration-threshold オプションをセットし、セットした回数の障害が発生するとリソースが新しいノードに移動されるよう設定することができます。このしきい値に一旦達してしまうと、このノードは障害が発生したリソースを実行できなくなります。解除には以下が必要になります。
  • 管理者は pcs resource failcount コマンドを使用して手作業でリソースの failcount をリセットします。
  • リソースの failure-timeout 値に達する
デフォルトで migration-threshold の値が INFINITY に設定されています。INFINITY は、内部的に非常に大きく有限の数として定義されます。0 にすると、migration-threshold 機能を無効にします。

注記

リソースの migration-threshold を設定するのと、リソースの状態を維持しながら別の場所に移動させるリソースの移行を設定するのは異なります。
次の例では dummy_resource というリソースに移行しきい値 10 を追加しています。この場合、障害が 10 回発生するとそのリソースは新しいノードに移動されます。
# pcs resource meta dummy_resource migration-threshold=10
次のコマンドを使用するとクラスター全体にデフォルトの移行しきい値を追加することができます。
# pcs resource defaults migration-threshold=10
リソースの現在の障害回数とリミットを確認するには pcs resource failcount コマンドを使用します。
移行しきい値の概念には、リソース起動の失敗とリソース停止の失敗の 2 つの例外があります。クラスタープロパティー start-failure-is-fataltrue に設定された場合 (デフォルト)、起動の失敗によって failcountINFINITY に設定され、リソースが常に即座に移動するようになります。start-failure-is-fatal オプションの説明は、表12.1「クラスターのプロパティ」を参照してください。
停止時の失敗は起動時とは若干異なり重大です。リソースの停止に失敗し STONITH が有効になっている場合、リソースを別のノードで起動できるようクラスターによるノードの排他処理が行われます。STONITH を有効にしていない場合にはクラスターに続行する手段がないため別のノードでのリソース起動は試行されません。ただし、障害タイムアウト後に停止が再度試行されます。

8.3. 接続状態変更によるリソースの移動

以下の 2 つのステップにしたがって、外部の接続が失われた場合にリソースが移動するようクラスターを設定します。
  1. ping リソースをクラスターに追加します。ping リソースは同じ名前のシステムユーティリティーを使用して、マシン (DNS ホスト名または IPv4/IPv6 アドレスによって指定される) にアクセス可能であるかをテストし、その結果を使用して pingd と呼ばれるノード属性を維持します。
  2. 接続が失われたときに別のノードにリソースを移動させるためのリソース場所制約を設定します。
表6.1「リソースのプロパティー」 では ping リソースに設定できるプロパティを示します。

表8.1 ping リソースのプロパティ

フィールド説明
dampen
さらに変化が起こった場合に備えて待機させる時間 (dampen)、ノードによって接続が失われたことを認識する時間にずれが生じた場合にクラスター内のノード間で何度も移動が行われないようにするための待機時間です
multiplier
接続している ping ノード数にこの値をかけてスコアを取得、ping ノードが複数設定されている場合に役立ちます
host_list
現在の接続状態を判断するために通信するマシン。許可される値には解決可能な DNS ホスト名、IPv4 および IPv6 アドレスが含まれます。ホストリストのエントリーはスペース区切りです。
次のコマンド例は、gateway.example.com への接続を検証する ping リソースを作成します。実際には、ネットワークゲートウェイやルーターへの接続を検証します。リソースがすべてのクラスターノードで実行されるよう、ping リソースをクローンとして設定します。
# pcs resource create ping ocf:pacemaker:ping dampen=5s multiplier=1000 host_list=gateway.example.com clone
以下の例は、Webserver という既存のリソースの場所制約ルールを設定します。これにより、Webserver リソースが現在実行されているホストが www.example.com へ ping できない場合に、 Webserver リソースを www.example.com へ ping できるホストに移動します。
# pcs constraint location Webserver rule score=-INFINITY pingd lt 1 or not_defined pingd

8.4. クラスターリソースの有効化、無効化、および禁止

「リソースを手作業で移動する」 に説明されている pcs resource move および pcs resource relocate コマンドの他にも、クラスターリソースの動作を制御するために使用できるコマンドは複数あります。
実行中のリソースを手作業で停止し、クラスターが再起動しないようにするには、以下のコマンドを使用します。その他の設定 (制約、オプション、失敗など) によってはリソースが起動した状態のままになる可能性があります。--wait オプションを指定すると、pcs はリソースが停止するまで「n」秒間待機します。リソースが停止した場合は 0 を返し、リソースが停止しなかった場合は 1 を返します。指定されていない場合は、60 分がデフォルトとなります。
pcs resource disable resource_id [--wait[=n]]
クラスターによるリソースの起動を許可する場合は次のコマンドを使用します。他の設定によってはリソースが起動したままになることがあります。--wait オプションを指定すると pcs はリソースの停止を最長で「n」秒間待ってから、リソースが停止した場合には 0、リソースが停止しなかった場合には 1 を返します。指定されていない場合は、60 分がデフォルトとなります。
pcs resource enable resource_id [--wait[=n]]
指定したノードでリソースが実行されないようにする場合は次のコマンドを使用します。ノードを指定しないと現在実行中のノードになります。
pcs resource ban resource_id [node] [--master] [lifetime=lifetime] [--wait[=n]]
pcs resource ban コマンドを実行すると、場所制約である -INFINITY がリソースに追加され、リソースが指定のノードで実行されないようにします。pcs resource clear または pcs constraint delete コマンドを実行すると制約を削除できます。これらのコマンドを実行してもリソースが必ずしも指定のノードに戻るわけではありません。この時点でリソースが実行できる場所は、リソースの最初の設定によって異なります。リソース制約の詳細は 7章リソースの制約 を参照してください。
pcs resource ban コマンドの --master パラメーターを指定すると、制約の範囲がマスターロールに限定され、resource_id の代わりに master_id を指定する必要があります。
任意で、pcs resource ban コマンドの lifetime パラメーターを設定すると、制約を維持する期間を指定できます。lifetime パラメーターの単位や、lifetime パラメーターがチェックされる間隔を指定する方法については、「リソースを手作業で移動する」 を参照してください。
任意で、pcs resource ban コマンドに --wait[=n] パラメーターを設定し、移動先のノードでリソースが起動するまでの待機時間 (秒単位) を指定することができます。待機時間がこの値を超えると、リソースが起動した場合は 0 が返され、リソースが起動しなかった場合は 1 が返されます。n の値を指定しないと、デフォルトのリソースタイムアウト値が使用されます。
指定したリソースを現在のノードで強制起動する場合は pcs resource コマンドの debug-start パラメーターを使用します。クラスターの推奨は無視され強制起動しているリソースからの出力を表示します。このコマンドは主にリソースをデバッグする際に使用されます。クラスターでのリソースの起動はほぼ毎回、Pacemaker で行われるため、直接 pcs コマンドを使った起動は行われません。リソースが起動しない場合、大抵はリソースが誤って設定されている、リソースが起動しないよう制約が設定されている、リソースが無効になっているのいずれかが原因です。このような場合に、このコマンドを使ってリソースの設定をテストすることができます。ただし、クラスター内でのリソースの通常起動には使用しないでください。
debug-start コマンドの形式を以下に示します。
pcs resource debug-start resource_id

8.5. モニター操作の無効化

モニタリングが再実行されないようにする最も簡単な方法はモニタリングを削除することです。しかし、場合によっては一時的に無効にしたいときがあります。このような場合は enabled="false" を操作の定義に追加します。モニタリング操作を再度有効にするには、enabled="true" を操作の定義に設定します。

8.6. 管理リソース

リソースを unmanaged モードに設定できます。このモードでは、リソースは設定に維持されますが Pacemaker はリソースを管理しません。
以下のコマンドは指定のリソースを unmanaged モードに設定します。
pcs resource unmanage resource1  [resource2] ...
以下のコマンドは、リソースをデフォルトの managed モードに設定します。
pcs resource manage resource1  [resource2] ...
pcs resource manage または pcs resource unmanage コマンドを使用してリソースグループの名前を指定できます。コマンドはグループのすべてのリソースに対して実行されるため、1 つのコマンドでグループのリソースすべてを managed または unmanaged モードに設定し、リソースを個別に管理できます。

第9章 高度な設定

本章では Pacemaker で対応している高度なリソースタイプと高度な設定機能について説明しています。

9.1. リソースのクローン

リソースが複数のノードでアクティブになるよう、リソースをクローンすることができます。たとえば、クローンしたリソースを使用して IP リソースの複数のインスタンスを設定し、クラスター全体で分散することができます。リソースエージェントがサポートするリソースはすべてクローンできます。クローンは 1 つのリソースまたは 1 つのリソースグループで構成されます。

注記

クローンに適しているのは同時に複数のノードで実行することができるリソースのみです。たとえば、共有ストレージデバイスから ext4 などのクラスター化していないファイルシステムをマウントする Filesystem リソースなどのクローンは作成しないでください。ext4 パーティションはクラスターを認識しないため、同時に複数のノードから繰り返し行われる読み取りや書き込み操作には適していません。

9.1.1. クローンリソースの作成と削除

リソースの作成とそのリソースのクローン作成を同時に行う場合は次のコマンドを使用します。
pcs resource create resource_id standard:provider:type|type [resource options]  \
clone  [meta clone_options]
クローンの名前は resource_id-clone になります。
リソースグループの作成とそのリソースグループのクローン作成は一つのコマンドではできません。
作成済みリソースまたはリソースグループのクローンは次のコマンドで作成できます。
pcs resource clone resource_id | group_name [clone_options]...
クローンの名前は resource_id-clone または group_name-clone になります。

注記

リソース設定の変更が必要なのは一つのノードのみです。

注記

制約を設定する場合はグループ名またはクローン名を必ず使用します。
リソースのクローンを作成すると、その名前はリソース名に -clone を付けた名前が付けられます。次のコマンドではタイプが apachewebfarm というリソースとそのクローンとして webfarm-clone というリソースを作成します。
# pcs resource create webfarm apache clone
リソースまたはリソースグループのクローンを削除する場合は次のコマンドを使用します。リソースやリソースグループ自体は削除されません。
pcs resource unclone resource_id | group_name
リソースオプションについては 「リソースの作成」 を参照してください。
クローンのリソースに指定できるオプションを 表9.1「クローンのリソース用オプション」 に示します。

表9.1 クローンのリソース用オプション

フィールド説明
priority, target-role, is-managed
表6.3「リソースのメタオプション」 の説明どおり、クローンされたリソースから継承されるオプション。
clone-max
How many copies of the resource to start. Defaults to the number of nodes in the cluster.
clone-node-max
How many copies of the resource can be started on a single node; the default value is 1.
notify
When stopping or starting a copy of the clone, tell all the other copies beforehand and when the action was successful. Allowed values: false, true. The default value is false.
globally-unique
各クローンのコピーに異なる機能を行わせるかどうか、使用できる値: falsetrue
このオプションの値が false の場合はリソースが実行しているいずれのノードであってもすべて同じ動作を行うため、1 台のマシンごと実行できるクローンのコピーは 1 つ
このオプションの値が true の場合は任意のマシンで実行中のクローンのコピーは別のマシンまたは同じマシンで実行している他のコピーとは同じにならない、clone-node-max の値が「1」より大きい場合にはデフォルト値は true になり、これ以外の場合は false がデフォルト値になる
ordered
Should the copies be started in series (instead of in parallel). Allowed values: false, true. The default value is false.
interleave
Changes the behavior of ordering constraints (between clones/masters) so that copies of the first clone can start or stop as soon as the copy on the same node of the second clone has started or stopped (rather than waiting until every instance of the second clone has started or stopped). Allowed values: false, true. The default value is false.

9.1.2. 制約のクローン作成

ほとんどの場合、アクティブなクラスターノードに対してクローンのコピーはひとつです。ただし、clone-max にはクラスター内のノード合計数より小さい数をリソースのクローン数の値として設定することができます。この場合、リソースの場所制約を付けたコピーを優先的に割り当てるノードを示すことができます。クローンの ID を使用する点以外、制約は通常のリソースの場合と全く変わらずクローンに記述されます。
次のコマンドでは場所の制約を作成し、リソースのクローン webfarm-clonenode1 に優先的に割り当てられるようにしています。
# pcs constraint location webfarm-clone prefers node1
順序制約の動作はクローンでは若干異なります。以下の例では、開始される必要がある webfarm-clone のコピーがすべて開始されるまで待機した後に webfarm-stats が開始されます。webfarm-clone のコピーを 1 つも開始できない場合、webfarm-stats はアクティブになりません。さらに、webfarm-stats が停止されるまで待機してから webfarm-clone が停止されます。
# pcs constraint order start webfarm-clone then webfarm-stats
通常のリソース (またはリソースグループ) をクローンとコロケートすると、そのリソースはクローンの複数コピーが実行されている複数マシンいずれでも実行できるということになります。どのコピーが実行しているマシンでそのリソースを実行させるかはクローンが実行している場所とそのリソース自体の場所の優先度に応じて選択されます。
クローン同士でのコロケーションも可能です。この場合、クローンに対して許可できる場所はそのクローンが実行中のノード (または実行するノード) に限定されます。割り当ては通常通り行われます。
以下のコマンドは、コロケーション制約を作成し、webfarm-stats リソースが webfarm-clone のアクティブなコピーと同じノードで実行されるようにします。
# pcs constraint colocation add webfarm-stats with webfarm-clone

9.1.3. 粘着性のクローン作成

安定性のある割り当てパターンにするためクローンはデフォルトで若干の粘着性を備えています。resource-stickiness に値を与えないとクローンは 1 の値を使用します。値を小さくすることで他のリソースのスコア計算への阻害を最小限に抑えながら、Pacemaker によるクラスターノード内での不必要なコピーの移動を適切に阻止することができます。

9.2. 多状態のリソース: 複数モードのリソース

多状態リソースはクローンリソースの特殊化です。多状態リソースにより、インスタンスは Master および Slave の 2 つの操作モードのいずれかになることができます。モードの名前に特別な意味はありませんが、インスタンスの起動時に Slave 状態にならなければならない制限があります。
以下のコマンドを実行すると、リソースをマスター/スレーブクローンとして作成できます。
pcs resource create resource_id standard:provider:type|type [resource options] master [master_options]
マスター/スレーブクローンの名前は resource_id-master になります。

注記

Red Hat Enterprise Linux のリリース 7.3 以前では、マスター/スレーブのクローンの作成は以下の形式で行ってください。
pcs resource create resource_id standard:provider:type|type [resource options] --master [meta master_options]
また、作成済みのリソースまたはリソースグループからマスター/スレーブリソースを作成することもできます。このコマンドを使用する場合はマスター/スレーブクローンの名前を指定することができます。名前を指定しない場合は resource_id-master または group_name-master になります。
pcs resource master master/slave_name resource_id|group_name [master_options]
リソースオプションについては 「リソースの作成」 を参照してください。
表9.2「多状態リソースのプロパティー」 には、多状態リソースに指定できるオプションが記載されています。

表9.2 多状態リソースのプロパティー

フィールド説明
id
多状態リソースに付ける名前
prioritytarget-roleis-managed
clone-maxclone-node-maxnotifyglobally-uniqueorderedinterleave
master-max
How many copies of the resource can be promoted to master status; default 1.
master-node-max
How many copies of the resource can be promoted to master status on a single node; default 1.

9.2.1. 多状態リソースの監視

マスターリソースのみに監視操作を追加するには、リソースに別の監視操作を追加します。同じリソース上では各監視操作の間隔が異なるようにする必要があります。
以下の例は、ms_resource のマスターリソースに 11 秒間隔の監視操作を設定します。この監視操作は、10 秒間隔で行われるデフォルトの監視操作とは別に追加されます。
# pcs resource op add ms_resource interval=11s role=Master

9.2.2. 多状態制約

ほとんどの場合、多状態リソースにはアクティブなクラスターノードごとに 1 つのコピーがあります。そうではない場合、リソースの場所制約を使用して、クラスターが優先的にコピーを割り当てるノードを指定できます。これらの制約は、通常のリソースと同様に記述されます。
リソースの場所制約については 「場所の制約」 を参照してください。
リソースをマスターにするかスレーブにするかを指定するコロケーション制約を作成することができます。次のコマンドはリソースのコロケーション制約を作成しています。
pcs constraint colocation add [master|slave] source_resource with [master|slave] target_resource [score] [options]
コロケーション制約の詳細は 「リソースのコロケーション」 を参照してください。
多状態リソースが含まれる順序制約を設定する場合、リソースに指定できるアクションの 1 つがリソースのスレーブからマスターへの昇格を指定する promote です。さらに、demote を指定するとリソースをマスターからスレーブに降格できます。
順序制約を設定するコマンドを以下に示します。
pcs constraint order [action] resource_id then [action] resource_id [options]
リソースの順序制約については 「順序の制約」 を参照してください。

9.2.3. 多状態の粘着性 (Stickiness)

To achieve a stable allocation pattern, multistate resources are slightly sticky by default. If no value for resource-stickiness is provided, the multistate resource will use a value of 1. Being a small value, it causes minimal disturbance to the score calculations of other resources but is enough to prevent Pacemaker from needlessly moving copies around the cluster.

9.3. リソースとしての仮想ドメインの設定

pcs resource create コマンドを使用し、VirtualDomain をリソースタイプとして指定して、libvirt 仮想化フレームワークにより管理される仮想ドメインを設定できます。
仮想ドメインをリソースとして設定する場合、以下を考慮してください。
  • 仮想ドメインは、クラスターリソースとして設定する前に停止している必要があります。
  • 仮想ドメインがクラスターリソースになる場合は、クラスターツールを使用しない限り、起動したり、停止したり、移行したりすることはできません。
  • クラスターリソースとして設定した仮想ドメインを、ホストの起動時に起動するように設定することはできません。
  • すべてのノードは、それぞれの管理される仮想ドメインの必要な設定ファイルおよびストレージデバイスにアクセスできる必要があります。
クラスターが仮想ドメイン自体のサービスを管理するようにする必要がある場合は、仮想ドメインをゲストノードとして設定できます。ゲストノードの設定は、「pacemaker_remote サービス」を参照してください。
仮想ドメインの設定は、『仮想化の導入および管理ガイド』を参照してください。
表9.3「仮想ドメインリソースのリソースオプション」では、VirtualDomain リソースに設定できるリソースオプションを説明しています。

表9.3 仮想ドメインリソースのリソースオプション

フィールドデフォルト説明
config
(必須) この仮想ドメインの libvirt 設定ファイルへの絶対パス。
hypervisor
システムに依存
接続先のハイパーバイザー URI。virsh --quiet uri コマンドを実行してシステムのデフォルト URI を判別できます。
force_stop
0
停止時にドメインを常に強制的にシャットダウン (「破棄」) します。デフォルト動作では、正常なシャットダウンの試行に失敗した後にのみ強制的なシャットダウンを実行します。仮想ドメイン (または仮想化バックエンド) が正常なシャットダウンをサポートしない場合にのみ、これを true に設定する必要があります。
migration_transport
システムに依存
移行中にリモートハイパーバイザーに接続するのに使用されるトランスポート。このパラメーターを省略すると、リソースは libvirt のデフォルトトランスポートを使用してリモートハイパーバイザーに接続します。
migration_network_suffix
専用の移行ネットワークを使用します。移行 URI は、このパラメーターの値をノード名の末尾に追加することにより構成されます。ノード名が完全修飾ドメイン名 (FQDN) の場合は、FQDN の最初のピリオド (.) の直前にサフィックスを挿入します。この構成されたホスト名がローカルに解決可能であり、関連付けられた IP アドレスが優先ネットワークを介して到達可能であることを確認してください。
monitor_scripts
仮想ドメイン内でサービスの監視を追加で実行するには、このパラメーターを監視するスクリプトの一覧と共に追加します。注記: 監視スクリプトが使用される場合、start および migrate_from 操作は、すべての監視スクリプトが正常に完了した場合にのみ完了します。これらの操作のタイムアウトを設定し、この遅延に対応できるようにします。
autoset_utilization_cpu
true
true に設定されると、監視の実行時にエージェントは virsh から domainUvCPU の数を検出し、これをリソースの CPU 利用率に組み込みます。
autoset_utilization_hv_memory
true
true に設定すると、監視の実行時に、エージェントは virsh から Max memor の数を検出し、これをリソースの hv_memory の利用率に組み込みます。
migrateport
ランダムハイポート
このポートは、qemu 移行 URI で使用されます。これを設定しないと、ポートにはランダムハイポートが使用されます。
snapshot
仮想マシンイメージが保存されるスナップショットディレクトリー。このパラメーターが設定されている場合、仮想マシンの RAM 状態は、停止時にスナップショットディレクトリーのファイルに保存されます。起動時に、状態ファイルはドメインに表示し、ドメインは最後に停止された直前の状態と同じ状態に復元されます。このオプションには force_stop オプションとの互換性がありません。
VirtualDomain リソースオプション以外にも、allow-migrate メタデータオプションを、リソースの別のノードへのライブ移行を許可するように設定できます。このオプションが true に設定されている場合、リソースは状態を失うことなく移行されます。このオプションがデフォルトの状態である false に設定されている場合、仮想ドメインは、ノード間で移行される際に最初のノードでシャットダウンし、2 番目のノードで再起動します。
以下の手順を使用して VirtualDomain リソースを作成します。
  1. 仮想マシンを管理するために VirtualDomain リソースエージェントを作成する場合、Pacemaker は仮想マシンの xml 設定ファイルをディスクのファイルにダンプすることを必要とします。たとえば、guest1 という名前の仮想マシンを作成し、ホストにあるファイルに xml をダンプします。好きなファイル名を使用できますが、この例では /etc/pacemaker/guest1.xml を使用します。
    # virsh dumpxml guest1 > /etc/pacemaker/guest1.xml
  2. ゲストノードが実行されている場合はシャットダウンします。そのノードがクラスターで設定されると Pacemaker によって開始されます。
  3. VirtualDoman リソースを pcs resource create コマンドを使用して設定します。たとえば、以下のコマンドは VM という名前のVirtualDomain リソースを設定します。allow-migrate オプションは true に設定されるため、pcs move VM nodeX コマンドはライブ移行として実行されます。
    # pcs resource create VM VirtualDomain config=.../vm.xml \
           migration_transport=ssh meta allow-migrate=true

9.4. pacemaker_remote サービス

pacemaker_remote サービスを使用すると、corosync を実行していないノードをクラスターに統合し、それらのノードのリソースはクラスターによって実際のクラスターノードと同様に管理されます。
pacemaker_remote サービスが提供する機能には以下が含まれます。
  • pacemaker_remote サービスは corosync の 16 ノード制限を超えた拡張を可能にします。
  • pacemaker_remote サービスを使用すると、仮想環境をクラスターリソースとして管理でき、さらに仮想環境内の個別のサービスをクラスターリソースとして管理できます。
pacemaker_remote サービスは以下の用語を使用して記述されます。
  • cluster node: 高可用性サービスを実行しているノード (pacemaker および corosync)。
  • remote node: corosync クラスターメンバーシップを必要としないクラスターにリモートで統合するために pacemaker_remote を実行しているノード。リモートノードは、ocf:pacemaker:remote リソースエージェントを使用するクラスターリソースとして設定されます。
  • guest nodepacemaker_remote サービスを実行する仮想ゲストノード。仮想ゲストリソースはクラスターにより管理されます。これはクラスターにより起動し、リモートノードとしてクラスターに統合されます。
  • pacemaker_remote: Pacemaker クラスター環境のリモートノードおよびゲストノード (KVM および LXC) 内でリモートアプリケーション管理を実行できるサービスデーモン。このサービスは、corosync を実行していないノード上でリソースをリモートで管理できる Pacemaker のローカルリソース管理デーモン (LRMD) の強化バージョンです。
  • LXClibvirt-lxc Linux コンテナードライバーで定義される Linux Container
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 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. 以下のコマンドを使用してリモートノードリソースをクラスターに追加します。このコマンドは、関連するすべての設定ファイルを新規ノードに追加し、ノードを起動し、これを起動時に pacemaker_remote を開始するように設定することもできます。このコマンドはクラスターノードで実行する必要があり、追加するゲストノードで実行することはできません。
    # pcs cluster node add-remote remote1
  5. remote リソースのクラスーへの追加後に、リモートノードをクラスターの他のノードと同じように扱うことができます。たとえば、以下のコマンドをクラスターノードから実行すると、リソースを作成し、そのリソースにリソース制約を配置して、リモートノードで実行できます。
    # pcs resource create webserver apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s
    # pcs constraint location webserver prefers remote1

    警告

    リソースグループ、コロケーション制約、または順序制約でノード接続リソースを利用しないでください。
  6. リモートノードのフェンスリソースを設定します。リモートノードは、クラスターノードと同様にフェンスされます。クラスターノードと同様に、リモートノードと使用するフェンスリソースを設定します。リモートノードはフェンスアクションを開始してはならないことに注意してください。他のノードに対してフェンス操作を実行できるのはクラスターノードのみです。

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 コマンドを使用して、ノードの接続リソースを停止します。ゲストノードでは VM も停止されるため、VM をクラスターの外部で起動して (virsh などを使用) メンテナンスを実行する必要があります。
  2. 必要なメンテナンスを実行します。
  3. ノードをクラスターに戻す準備ができたら、pcs resource enable でリソース再度有効にします。

9.5. Docker コンテナーの Pacemaker サポート (テクノロジープレビュー)

重要

Docker コンテナーの Pacemaker サポートは、テクノロジープレビュー目的でのみ実現されています。「テクノロジープレビュー」の意味については、テクノロジプレビュー機能のサポート範囲 を参照してください。
テクノロジープレビューであるこの機能には 1 つの例外があります。Red Hat Enterprise Linux 7.4 以降、Red Hat は、Red Hat Openstack Platform (RHOSP) デプロイメントで Pacemaker バンドルの使用を完全にサポートします。
Pacemaker は、必要なインフラストラクチャで Docker コンテナーを起動するための特殊構文 (bundle) に対応しています。Pacemaker バンドルを作成すれば、バンドルがカプセル化を行う Pacemaker リソースを作成できます。

9.5.1. Pacemaker バンドルリソースの設定

Docker コンテナーの Pacemaker バンドルを作成するコマンド構文は以下の通りです。このコマンドを使用すると、その他のリソースをカプセル化しないバンドルが作成されます。バンドルでクラスターリソースを作成する説明は、「バンドルでの Pacemaker リソースの設定」を参照してください。
pcs resource bundle create bundle_id container docker [container_options] [network network_options] [port-map port_options]...  [storage-map storage_options]... [meta meta_options] [--disabled] [--wait[=n]]
必要な bundle_id パラメーターは、バンドルに対する一意の名前にする必要があります。--disabled オプションを指定すると、バンドルは自動的に起動しません。--wait オプションを指定すると、Pacemaker はバンドル開始まで最大 n 秒待ち、成功すれば 0 を、失敗すれば 1 を返します。n を指定しないと、デフォルトで 60 分に指定されます。
以下のセクションでは、Pacemaker バンドルの各要素に設定できるパラメーターを説明します。

9.5.1.1. Docker パラメーター

表9.6「Docker コンテナーのパラメーター」 は、バンドルに設定できる docker コンテナーオプションを説明します。

注記

Pacemaker で docker バンドルを設定する前に、Docker をインストールし、バンドルの実行が許可されている各ノード上に完全に設定した Docker イメージを展開します。

表9.6 Docker コンテナーのパラメーター

フィールドデフォルト説明
image
Docker イメージタグ (必須)
replicas
正であれば promoted-max の値。それ以外は 1。
起動するコンテナーインスタンスの数を指定する正の整数
replicas-per-host
1
単一ノードで起動できるコンテナーインスタンスの数を指定する正の整数
promoted-max
0
正であれば、非負の整数は、マスターロールにおいてサービスを実行できる多くのレプリカとともに、コンテナー化されたサービスが複数のサービスとして扱われる必要があることを示しています。
network
これが指定されると、Docker コンテナーのネットワーク設定として docker run コマンドに渡されます。
run-command
/usr/sbin/pacemaker_remoted バンドルがリソースを含む場合、それ以外はなし
このコマンドは、起動する際にコンテナー内で実行されます (”PID 1”)。バンドルにリソースが含まれる場合、このコマンドは pacemaker_remoted デーモンを起動する必要があります (ただし、その他のタスクも実行するスクリプトでも問題ありません)。
options
docker run コマンドに渡す、その他のコマンドラインオプション

9.5.1.2. (バンドルネットワークパラメーター

表9.7「バンドルリソースネットワークパラメーター」 では、バンドルに設定できる network オプションを説明します。

表9.7 バンドルリソースネットワークパラメーター

フィールドデフォルト説明
add-host
TRUE
TRUE で ip-range-start が使用される場合は、Pacemaker により自動的に、コンテナー内の /etc/hosts ファイルに、各レプリカ名と割り当てられている IP のエントリーが指定されるようにします。
ip-range-start
これが指定されると、Pacemaker は、各コンテナーインスタンスに対して暗黙的な ocf:heartbeat:IPaddr2 リソースを作成します。これは、この IP アドレスで始まり、Docker 要素の replicas として指定されている限りのシーケンシャルアドレスとして使用します。これらのアドレスは、ホストのネットワークから使用して、コンテナー内のサービスに到達できます。ただし、コンテナー自身の中では表示されません。現在サポートされているアドレスは、IPv4 のみです。
host-netmask
32
ip-range-start が指定されると、IP アドレスがこの CIDR ネットマスクで (多数のビットとして) 作成されます。
host-interface
ip-range-start が指定されていると、IP アドレスがこのホストインターフェイスで作成されます (デフォルトでは、IP アドレスから決まります)。
control-port
3121
バンドルに Pacemaker リソースが含まれる場合、クラスターは、コンテナー内の Pacemaker Remote との通信に、この整数 の TCP ポートを使用します。コンテナーがデフォルトポートでリッスンできない場合は、このポートを変更すると便利です。このような状況は、コンテナーが ip-range-start ではなく、ホストのネットワークを使用すると起こることがあります (この場合、replicas-per-host は 1 に設定されている必要があります)。あるいは、バンドルが、デフォルトのポートで既にリッスンしている Pacemaker Remote ノードで実行している場合も考えられます。ホストやコンテナーで設定されている PCMK_remote_port 環境変数は、バンドル接続に対しては無視されます。

注記

レプリカは、バンドル ID とダッシュそしてゼロから始まる整数カウンターで名前が付けられます。httpd-bundle というバンドル名により replicas=2 が設定されれば、 そのコンテナーの名前は httpd-bundle-0httpd-bundle-1 になります。
ネットワークパラメーターに加え、バンドルに port-map パラメーターを任意で指定できます。表9.8「バンドルリソースポートマップパラメーター」 では、これらの port-map パラメーターを説明しています。

表9.8 バンドルリソースポートマップパラメーター

フィールドデフォルト説明
id
ポートマッピングの一意の名前 (必須)
port
これが指定されると、ホストネットワーク上 ((ip-range-start が指定されていル場合は、コンテナーの、割り当てられた IP アドレス上)) のこの TCP ポート番号に対する接続 がコンテナーネットワークに転送されます。port または range のいずれ 1 つがポートマッピングで指定される必要があります。
internal-port
port の値
portinternal-port が指定されている場合は、ホストネットワーク上の port に対する接続が、コンテナーネットワーク上のこのポートに転送されます。
range
range が指定されると、ホストネットワーク上 ((ip-range-start が指定されている場合は、コンテナーの、割り当てられた IP アドレス上)) のこれらの TCP ポート番号 (first_port-last_port) に対する接続 が、コンテナーネットワークの同じポートに転送されます。port または range のいずれ 1 つがポートマッピングで指定される必要があります。

注記

バンドルにソースが含まれる場合、Pacemaker は自動的に control-port をマッピングします。そのため、ポートマッピングでは、そのポートを指定する必要はありません。

9.5.1.3. バンドルストレージパラメーター

必要に応じて、バンドルに storage-map パラメーターを設定することができます。表9.9「バンドルリソースストレージマッピングパラメーター」 では、これらのパラメーターを説明しています。

表9.9 バンドルリソースストレージマッピングパラメーター

フィールドデフォルト説明
id
ストレージマッピングの一意の名前 (必須)
source-dir
コンテナーにマッピングされるホストファイルシステム上の絶対パス。storage-map パラメーターを設定する際には、source-dirsource-dir-root のいずれかを指定する必要があります。
source-dir-root
各コンテナーインスタンスのホスト上で異なるサブディレクトリーを使用した、コンテナーにマッピングされるホストのファイルシステム上のパスの開始。このサブディレクトリーには、バンドル名と同じ名前が付けられ、ダッシュと 0 から始まる整数カウンターも加えられます。storage-map パラメーターを設定するときには、source-dirsource-dir-root のいずれかを完全に指定する必要があります。
target-dir
ホストストレージがマッピングされるコンテナー内のパス名 (必須)
options
ストレージをマッピングする際に使用するファイルシステムマウントオプション
ホスト上のサブディレクトリーが source-dir-root パラメーターで名前が付けられる仕組みの例として、source-dir-root=/path/to/my/directorytarget-dir=/srv/appdata、バンドルに replicas=2mybundle という名前が指定されている場合、クラスターは、mybundle-0mybundle-1 というホスト名で 2 つのコンテナーインスタンスを作成します。また、コンテナーを実行しているホスト上で 2 つのディレクトリー (/path/to/my/directory/mybundle-0/path/to/my/directory/mybundle-1) を作成します。各コンテナーには、いずれかのディレクトリーが与えられ、そのコンテナー内で実行しているアプリケーションには、/srv/appdata というディレクトリが表示されます。

注記

Pacemaker は、ソースディレクトリが既にホストに存在しない場合の動作を定義しません。ただし、コンテナーテクノロジーまたはそのリソースエージェントがソースディレクトリーを作成します。

注記

If the bundle contains a Pacemaker resource, Pacemaker will automatically map the equivalent of source-dir=/etc/pacemaker/authkeytarget-dir=/etc/pacemaker/authkey and source-dir-root=/var/log/pacemaker/bundlestarget-dir=/var/log into the container, so it is not necessary to specify those paths in when configuring storage-map parameters.

重要

PCMK_authkey_location 環境変数は、クラスターのノード上の /etc/pacemaker/authkey のデフォルト以外に設定することはできません。

9.5.2. バンドルでの Pacemaker リソースの設定

バンドルは必要に応じて、1 つの Pacemaker クラスターリソースを含めることができます。バンドルに含まれていないリソースと同様に、クラスターリソースには、操作、インスタンス属性、メタデータ属性を定義することができます。バンドルにリソースが含まれる場合、コンテナーイメージは Pacemaker Remote デーモンを含む必要があります。また、ip-range-start または control-port はバンドルで設定する必要があります。Pacemaker は、接続に対して暗黙的な ocf:pacemaker:remote リソースを作成し、コンテナー内で Peacemaker Remote を起動して、Pacemaker Remote でリソースを監視・管理します。バンドルに 2 つ以上のコンテナーインスタンス (レプリカ) がある場合、Pacemaker リソースは暗黙的なクローンとして機能します。バンドルが promoted-max オプションを、0 を超えるように設定した場合、これは多状態クローンになります。
pcs resource create コマンドで Pacemaker バンドルでリソースを作成します。これは、コマンドに bundleを指定し、リソースを含むバンドル ID を指定して行います。リソースを含む Pacemaker バンドルの作成例は、「Pacemaker バンドル設定の例」 を参照してください。

重要

リソースを含むバンドルのコンテナーにはアクセス可能なネットワーク環境が必要です。これにより、クラスターノードの Pacemaker はコンテナー内の Pacemaker Remote に問い合わせることができます。例えば、docker オプションの --net=none は、リソースとは使うべきではありません。デフォルト (コンテナー内の一意なネットワークスペースを使用して) ip-range-start とともに動作します。docker オプションの --net=host が使用されている場合 (コンテナーにホストのネットワークスペースを共有させて)、一意な control-port パラメーターを各バンドルに指定する必要があります。ファイアウォールでは、control-port にアクセスできるように設定を行う必要があります。

9.5.2.1. ノード属性とバンドルリソース

バンドルにクラスターリソースが含まれる場合、リソースエージェントはマスタースコアなどのノード属性を設定する可能性があります。ただし、コンテナーでは、ノードが属性を取得するべきかどうかはっきりしません。
コンテナーがホストされているノードに関係なく、コンテナーが同じ共有ストレージを使用している場合は、バンドルノード自体でマスタースコアを使用することが適切です。一方、コンテナーが、基礎となるホストからエクスポートされたストレージを使用する場合は、基礎となるホストでマスタースコアを使用することがより適切です。これは特定の状況に依存するため、container-attribute-target リソースメタデータ属性では、ユーザーは使用するアプローチを指定することができます。host に設定されると、ユーザー定義型のノード属性は、基礎となるホストでチェックされます。その他の場合は、ローカルノード (この場合はバンドルノード) が使用されます。この動作は、ユーザー定義属性にのみ適用されます。クラスターは、#uname などのクラスター定義型の属性に対してローカルノードを常にチェックします。
container-attribute-targethost に設定されると、クラスターは、追加の環境変数をリソースエージェノに渡します。これにより、ノード属性を正しく設定できるようになります。

9.5.2.2. メタデータ属性とバンドルリソース

バンドルで設定されているメタデータ属性は、バンドルに含まれるリソースや、バンドルに対して Pacemaker によって作成されたリソースによって継承されます。これには、prioritytarget-roleis-managed などのオプションが含まれます。

9.5.3. Pacemaker バンドルの制限

Pacemaker バンドルは以下の制限で動作します。
  • バンドルはグループに含まれていないことや、pcs コマンドで明示的にクローン化されていないことがあります。これには、バンドルが含むリソースや、バンドルに対して Pacemaker によって明示的に作成されたリソースが含まれます。ただし、バンドルの replicas の値が 1 未満で設定されると、バンドルはクローンであるかのように動作することに注意してください。
  • バンドルが管理されていない場合や、クラスターがメンテナンスモードの際に Pacemaker を再起動すると、バンドルが不具合を起こすことがあります。
  • バンドルには、インスタンス属性、使用率属性、または操作がありません。しかし、バンドルに含まれるリソースには、これらがあります。
  • リソースを含むバンドルは、バンドルが、一意な異なる control-port を使用する場合にのみ、Pacemaker Remote ノードで実行できます。

9.5.4. Pacemaker バンドル設定の例

以下の例では、httpd-bundle というバンドル ID で Pacemaker bundle を作成します。これには、httpd というリソース ID を持つ ocf:heartbeat:apache が含まれます。
この手順には、以下の前提設定が必要です。
  • Docker が、クラスターの各ノードでインストールされ有効化されている。
  • pcmktest:http という既存の Docker イメージが存在する。
  • コンテナーイメージに、Pacemaker Remote デーモンが含まれている。
  • コンテナーイメージに、設定済みの Apache Web サーバーが含まれている。
  • クラスターの各ノードに、/var/local/containers/httpd-bundle-0/var/local/containers/httpd-bundle-1/var/local/containers/httpd-bundle-2 というディレクトリがあり、Web サーバーの root に index.html ファイルが含まれている。稼働中は、単一の共有ドキュメント root が対象となるが、この例では、この設定により、各ホスト上の index.html ファイルを別のものにすることが可能。そのため、Web サーバーに接続して、サービスされる index.html ファイルを確認することが可能。
この手順により、Pacemaker バンドルに以下のパラメーターが設定されます。
  • バンドル ID は httpd-bundle です。
  • 以前設定した Docker コンテナーイメージは pcmktest:http です。
  • この例は、3 コンテナーインスタンスを起動します。
  • この例では、コマンドラインオプション --log-driver=journalddocker run コマンドに渡します。このパラメーターは必要ではありませんが、その他のオプションを docker コマンドに渡す方法を示すために追加しています。 --log-driver=journald の値は、コンテナー内のシステムログが、基礎となるホストの systemd ジャーナルに記録されます。
  • Pacemaker は、3 つの連続した暗黙的な ocf:heartbeat:IPaddr2 リソースを作成します。これは、各コンテナに対して1 つ作成され、IP アドレス 192.168.122.131 で始まります。
  • IP アドレスは、ホストインターフェイス eth0 で作成されます。
  • IP アドレスは、CIDR ネットマスクが 24 で作成されます。
  • この例では、http-port というポートマップ ID を作成します。コンテナーに割り当てられている IP アドレスのポート 80 に対する接続がコンテナーネットワークに転送されます。
  • この例では、httpd-root というストレージマップ ID を作成します。このストレージマッピングについて以下で説明します。
    • source-dir-root の値は /var/local/containers です。これは各コンテナーインスタンスに対して、ホスト上の異なるサブディレクトリーを使用し、コンテナーにマッピングされるホストのファイルシステム上のパスの開始を指定します。
    • target-dir の値は /var/www/html で、ホストストレージがマッピングされるコンテナー内のパス名を指定します。
    • このファイルシステム rw マウントオプションは、ストレージのマッピングの際に使用されます。
    • この例のコンテナーはリソースを含むため、Pacemaker は自動的に、コンテナーに source-dir=/etc/pacemaker/authkey と同等のものをマッピングします。このコンテナーでは、ストレージマッピングにそのパスを指定する必要はありません。
この例では、既存のクラスター設定が、temp-cib.xml という名前の一時ファイルに配置され、temp-cib.xml.deltasrc にコピーされます。クラスター設定に対する設定のすべては、tmp-cib.xml ファイルに対して行われます。更新が完了すると、pcs cluster cib-pushdiff-against オプションを使用するため、設定ファイルに対する更新のみがアクティブな設定ファイルに対して行われます。
# pcs cluster cib tmp-cib.xml
# cp tmp-cib.xml tmp-cib.xml.deltasrc
# pcs -f tmp.cib.xml resource bundle create httpd-bundle \
container docker image=pcmktest:http replicas=3 \
options=--log-driver=journald \
network ip-range-start=192.168.122.131 host-interface=eth0 \
host-netmask=24 port-map id=httpd-port port=80 \
storage-map id=httpd-root source-dir-root=/var/local/containers \
target-dir=/var/www/html options=rw \
# pcs -f tmp-cib.xml resource create httpd ocf:heartbeat:apache \
statusurl=http://localhost/server-status bundle httpd-bundle
# pcs cluster cib-push tmp-cib.xml diff-against=tmp-cib.xml.deltasrc

9.6. 使用と配置ストラテジー

Pacemaker は、各ノードのリソース割り当てスコアによってリソースの配置場所を決めます。このリソースは、リソーススコアが最も高い場所のノードに割り当てられます。この割り当てスコアは、リソース制約、resource-stickiness 設定、各ノードにおける以前のエラー履歴、各ノードの使用率を含む要素の組み合わせから派生します。
すべてのノードにおけるリソースの割り当てスコアが同じ場合、デフォルトの配置ストラテジーでは、Pacemaker は負荷分散を行うために割り当てられたリソースの最も少ないノードを選択します。各ノードのリソースの数が同じ場合は、CIB の最初の対象ノードがリソースの実行に選択されます。
ただし、多くの場合、リソースが使用するノードの容量 (メモリまたは I/O など) の割合は状況によって大きく異なります。そのため、ノードに割り当てられているリソースの数のみを考慮して負荷分散を理想的に行うことはできません。また、複合要件が指定の容量を上回るような状況でリソースが配置されると、全く起動できないことや、パフォーマンスが低下した状態で起動することがあります。これらの事を考慮するためにも、Pacemaker では、以下のコンポーネントの設定を行うことができます。
  • 特定のノードの容量
  • 特定のリソースが必要な容量
  • リソースの配置の全体的なストラテジー
以下のセクションでは、これらのコンポーネントの設定方法を説明します。

9.6.1. 使用率属性

ノードの容量、またはリソースが必要な容量を設定するには、ノードとリソースに utilization attributes を使用します。これは、リソースの使用率の変数を設定して、その変数に値を割り当て、リソースの要件を示します。そして、同じ使用率の変数をノードに設定し、その変数に値を割り当て、そのノードの容量を示します。
使用率属性は、好みの名前を付け、設定ニーズに応じて名前や値ペアを必要なだけ定義することができます。使用率属性の値は整数である必要があります。
Red Hat Enterprise Linux 7.3 では、pcs コマンドを使用して使用率属性を設定できます。
以下の例では、2 つのノードに対して CPU キャパシティの使用率属性を設定します。これは、変数 cpu として設定します。また、RAM の容量の使用率属性も設定します。これは、変数 memory として、この属性を設定します。例:
  • ノード 1 は、2 つの CPU キャパシティと 2048 という RAM 容量を指定するように定義されています。
  • ノード 2 は、4 つの CPU キャパシティと 2048 の RAM 容量を指定するように定義されています。
# pcs node utilization node1 cpu=2 memory=2048
# pcs node utilization node2 cpu=4 memory=2048
以下の例では、3 種類のリソースが必要な同じ使用率属性を指定します。例:
  • リソース dummy-small は、1 つの CPU キャパシティと 1024 の RAM 容量を必要とします
  • dummy-medium は、2 つの CPU キャパシティと 2048 の RAM 容量を必要とします
  • リソース dummy-large には、1 つの CPU キャパシティと 3072 の RAM 容量が必要です。
# pcs resource utilization dummy-small cpu=1 memory=1024
# pcs resource utilization dummy-medium cpu=2 memory=2048
# pcs resource utilization dummy-large cpu=3 memory=3072
使用率属性で定義されているように、リソースの要件を満たすのに十分な空き容量があれば、ノードはリソース対象として考慮されます。

9.6.2. 配置ストラテジー

使用するノードの容量と必要なリソースの容量を設定した後は、placement-strategy クラスターの優先度を設定する必要があります。これを設定しなければ、容量設定が適用されません。クラスタープロパティの設定の説明は、12章Pacemaker クラスターのプロパティを参照してください。
placement-strategy クラスタープロパティには、4 つの値を利用できます。
  • default — 使用率の値は全く考慮されません。リソースは、割り当てスコアによって割り当てられます。スコアが同じであれば、リソースはノードにわたり均等に分配されます。
  • utilization — 使用率の値は、ノードが対象と考慮されるかどうかを決める際 (リソースの要件を満たすための十分な空き容量があるかどうか) にのみ考慮されます。負荷分散は依然として、ノードに割り当てられているリソースの数に基づいて行われます。
  • balanced — 使用率の値は、ノードがリソースをサービスすることができるかどうかを決める際と、負荷分散を行う際に荒涼されます。そのため、リソースパフォーマンスを最適化する方法でリソースを分散するために試行されます。
  • minimal — 使用率の値は、ノードがリソースをサービスできるかどうか決めるときにのみ考慮されます。負荷分散は、可能な限り少ないノードでリースを集中する際に試行されます。
以下の例のコマンドでは、placement-strategy の値を balanced に設定します。このコマンドを実行すると、Pacemaker は、複雑な一連のコロケーション制約なしで、リソースの負荷がクラスターにわたり均等に分散されるようにします。
# pcs property set placement-strategy=balanced

9.6.3. リソースの割り当て

以下のサブセクションでは、Pacemaker がリソースを割り当てる仕組みをまとめています。

9.6.3.1. ノード設定

Pacemaker は、以下のストラテジーに従ってリソースを割り当てる際に優先されるノードを判断します。
  • 最もウェイトの高いノードが最初に消費されます。ノードウェイトは、クラスターがノードの正常性を示すことで維持されるスコアです。
  • 複数のノードに同じノードウェイがある場合:
    • placement-strategy クラスタープロパティが default または utilization である場合:
      • 最もリソースが割り当てられていないノードが最初に消費されます。
      • 割り当てられているリソースの数が同じ場合、CIB にリストされている最初の対象ノードが最初に消費されます。
    • placement-strategy クラスタープロパティが balanced である場合:
      • 最も空き容量の多いノードが最初に消費されます。
      • ノードの空き容量が同じ場合は、リソースが最も割り当てられていないノードが最初に消費されます。
      • ノードの空き容量が同じで、割り当てられてるリソースの数が同じである場合は、CIB にリストされている最初の対象ノードが消費されます。
    • placement-strategy クラスタープロパティが minimal であれば、CIB にリストされている最初の対象のノードが最初に消費されます。

9.6.3.2. ノード容量

Pacemaker は、最も多くの空き容量を持つノードを以下のストラテジーで判断します。
  • 単一タイプの使用率属性のみが定義されている場合、空き容量は簡単な数値比較となります。
  • 複数のタイプの使用率属性が定義されている場合は、多くの属性タイプにおいて数値的に最も高いノードが最も多くの空き容量を持っています。例:
    • NodeA にはより多くの空き CPU 容量があり、NodeB にはより多くの空きメモリがあるとすると、これらの空き容量は同等となります。
    • NodeA にはより多くの空き CPU 容量があり、NodeBにはより多くのメモリとストレージの空き容量がある場合は、NodeBの空き容量の方が高くなります。

9.6.3.3. リソースの割り当て設定

Pacemaker は、以下のストラテジーで最初に割り当てられるリソースを判断します。
  • 優先度の最も高いリソースが最初に割り当てられます。リソースの優先度の設定は、表6.3「リソースのメタオプション」 を参照してください。
  • リソースの優先度が等しい場合、実行しているノードにおいて最も高いスコアを持つリソースが最初に割り当てられ、リソースのシャッフルを防ぎます。
  • リソースが実行されているノード上のリソーススコアが等しい場合や、リソースが実行されていない場合は、優先ノード上において最高スコアを持つリソースが最初に割り当てられます。優先ノード上のリソーススコアが同じであれば、CIB にリストされている最初の実行可能なリソースが最初に割り当てられます。

9.6.4. リソース配置ストラテジーガイドライン

リソースに対する Pacemaker の配置ストラテジーの動作効率を最適化するためにも、システムを設定する際には以下を考慮してください。
  • 十分な物理メモリがあることを確認します。
    ノードの物理容量が通常の状況においてほぼ最大で使用されているとすると、フェールオーバーの際に問題が発生する可能性があります。使用率機能なしでも、タイムアウトや二次障害が発生する可能性があります。
  • ノードに設定する容量にバッファをいくつか構築します。
    物理的に存在するよりもやや多いノードリソースが通知されます。これは、Pacemaker リソースが、設定した CPU、メモリなどを常に 100% 使用しないことを想定しています。このような状況は、オーバーコミットと呼ばれます。
  • リソースの優先度を指定します。
    クラスターがサービスを犠牲にする場合、そのサービスは最も重要でないことが理想的です。リソースの優先度が適切に設定されていることを確認してください。これにより、最も重要なリソースが最初にスケジュールされます。リソースの優先度の設定は、表6.3「リソースのメタオプション」を参照してください。

9.6.5. NodeUtilization リソースエージェント (Red Hat Enterprise Linux 7.4 以降)

Red Hat Enterprise Linux 7.4 は NodeUtilization リソースエージェントに対応しています。NodeUtilization エージェントは、利用可能な PU、ホストメモリの可用性、ハイパーバイザーメモリの可用性のシステムパラメーターを検出し、これらのパラメーターを CIB に追加できます。これらのパラメーターを各ノード上でエージェントを設定するために、クローンリソースとしてエージェントを実行することも可能です。
NodeUtilization リソースエージェントと、このエージェントのリソースオプションの説明は、pcs resource describe NodeUtilization コマンドを実行してください。

9.7. Pacemaker で管理されていないリソースの依存関係の起動順の設定 (Red Hat Enterprise Linux 7.4 以降)

クラスターは、そのクラスターで管理されていない依存関係を持つリソースを含めることができます。この場合、これらの依存関係が、Pacemaker が起動する前に起動し、Pacemaker が停止した後に停止されるようにする必要があります。
Red Hat Enterprise Linux 7.4 では、この状況を明らかにするには、systemd resource-agents-deps ターゲットで、スタートアップ順を設定します。このターゲットの systemd ドロップインユニットを作成することができます。Pacemaker は、このターゲットに対して適切に順序を決めます。
たとえば、クラスターに、そのクラスターが管理しない外部サービス foo に依存するリソースが含まれる場合は、以下を含むドロップインユニット /etc/systemd/system/resource-agents-deps.target.d/foo.conf を作成できます。
[Unit]
Requires=foo.service
After=foo.service
ドロップインユニットを作成した後に、systemctl daemon-reload コマンドを実行します。
このように指定したクラスターの依存関係は、サービス以外でも構いません。例えば、/srv にファイルをマウントする依存関係も考えられます。この場合、systemd ドキュメンテーションに従って、systemd ファイル srv.mount を作成して、ここで説明しているように .conf ファイルの srv.mount foo.service の代わりにドロップインユニットを作成します。

9.8. SNMP での Pacemaker クラスターを照会 (Red Hat Enterprise Linux 7.5 以降)

Red Hat Enterprise Linux 7.5 では、pcs_snmp_agent デーモンを使用して、データについて Pacemaker クラスターの照会を SNMP で行うことができます。pcs_snmp_agent デーモンは、agentx プロトコルでマスターエージェント (snmpd) に接続する SNMP エージェントです。pcs_snmp_agent エージェントは、マスターエージェントにデータを提供するのみなので、スタンドアローンとして動作しません。
以下の手順では、システムが Pacemaker クラスターで SNMP を使うための基本的な設定を行います。この手順は、SNMP を使用してクラスターのデータを取得する、クラスターの各ノードで行います。
  1. クラスターの各ノードに pcs-snmp パッケージをインストールします。これにより、snmp を使うことのできる net-snmp パッケージもインストールされています。
    # yum install pcs-snmp
  2. /etc/snmp/snmpd.conf 設定ファイルに以下の行を追加して、master agentx として snmpd を設定します。
    master agentx
  3. /etc/snmp/snmpd.conf 設定ファイルに以下の行を追加して、同じ SNMP 設定で pcs_snmp_agent を有効にします。
    view    systemview    included   .1.3.6.1.4.1.32723.100
  4. pcs_snmp_agent サービスを開始します。
    # systemctl start pcs_snmp_agent.service
    # systemctl enable pcs_snmp_agent.service
  5. 設定を確認するには、pcs status を使用してクラスターステータスを表示してから、SNMP からのデータの取得を試行し、出力と一致しているかどうかを見てください。SNMP を使用してデータを取得する際には、プリミティブなリソースのみが与えられることに注意してください。
    以下の例では、アクションに 1 回失敗した状態で実行しているクラスター上での pcs status コマンドの出力を示しています。
    # pcs status
    Cluster name: rhel75-cluster
    Stack: corosync
    Current DC: rhel75-node2 (version 1.1.18-5.el7-1a4ef7d180) - partition with quorum
    Last updated: Wed Nov 15 16:07:44 2017
    Last change: Wed Nov 15 16:06:40 2017 by hacluster via cibadmin on rhel75-node1
    
    2 nodes configured
    14 resources configured (1 DISABLED)
    
    Online: [ rhel75-node1 rhel75-node2 ]
    
    Full list of resources:
    
     fencing        (stonith:fence_xvm):    Started rhel75-node1
     dummy5 (ocf::pacemaker:Dummy): Stopped (disabled)
     dummy6 (ocf::pacemaker:Dummy): Stopped
     dummy7 (ocf::pacemaker:Dummy): Started rhel75-node2
     dummy8 (ocf::pacemaker:Dummy): Started rhel75-node1
     dummy9 (ocf::pacemaker:Dummy): Started rhel75-node2
     Resource Group: group1
         dummy1     (ocf::pacemaker:Dummy): Started rhel75-node1
         dummy10    (ocf::pacemaker:Dummy): Started rhel75-node1
     Clone Set: group2-clone [group2]
         Started: [ rhel75-node1 rhel75-node2 ]
     Clone Set: dummy4-clone [dummy4]
         Started: [ rhel75-node1 rhel75-node2 ]
    
    Failed Actions:
    * dummy6_start_0 on rhel75-node1 'unknown error' (1): call=87, status=complete, exitreason='',
        last-rc-change='Wed Nov 15 16:05:55 2017', queued=0ms, exec=20ms
    # snmpwalk -v 2c -c public localhost PACEMAKER-PCS-V1-MIB::pcmkPcsV1Cluster
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterName.0 = STRING: "rhel75-cluster"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterQuorate.0 = INTEGER: 1
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterNodesNum.0 = INTEGER: 2
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterNodesNames.0 = STRING: "rhel75-node1"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterNodesNames.1 = STRING: "rhel75-node2"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterCorosyncNodesOnlineNum.0 = INTEGER: 2
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterCorosyncNodesOnlineNames.0 = STRING: "rhel75-node1"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterCorosyncNodesOnlineNames.1 = STRING: "rhel75-node2"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterCorosyncNodesOfflineNum.0 = INTEGER: 0
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterPcmkNodesOnlineNum.0 = INTEGER: 2
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterPcmkNodesOnlineNames.0 = STRING: "rhel75-node1"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterPcmkNodesOnlineNames.1 = STRING: "rhel75-node2"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterPcmkNodesStandbyNum.0 = INTEGER: 0
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterPcmkNodesOfflineNum.0 = INTEGER: 0
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesNum.0 = INTEGER: 11
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.0 = STRING: "fencing"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.1 = STRING: "dummy5"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.2 = STRING: "dummy6"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.3 = STRING: "dummy7"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.4 = STRING: "dummy8"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.5 = STRING: "dummy9"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.6 = STRING: "dummy1"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.7 = STRING: "dummy10"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.8 = STRING: "dummy2"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.9 = STRING: "dummy3"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterAllResourcesIds.10 = STRING: "dummy4"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesNum.0 = INTEGER: 9
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.0 = STRING: "fencing"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.1 = STRING: "dummy7"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.2 = STRING: "dummy8"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.3 = STRING: "dummy9"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.4 = STRING: "dummy1"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.5 = STRING: "dummy10"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.6 = STRING: "dummy2"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.7 = STRING: "dummy3"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterRunningResourcesIds.8 = STRING: "dummy4"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterStoppedResroucesNum.0 = INTEGER: 1
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterStoppedResroucesIds.0 = STRING: "dummy5"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterFailedResourcesNum.0 = INTEGER: 1
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterFailedResourcesIds.0 = STRING: "dummy6"
    PACEMAKER-PCS-V1-MIB::pcmkPcsV1ClusterFailedResourcesIds.0 = No more variables left in this MIB View (It is past the end of the MIB tree)

第10章 クラスタークォーラム

Red Hat Enterprise Linux High Availability Add-On クラスターは votequorum サービスとフェンシングを併用してスプリットブレインが発生しないようにします。クラスターの各システムには投票数が割り当てられ、過半数の票がある場合のみクラスターの操作を続行できます。サービスはすべてのノードにロードするか、すべてのノードにロードしない必要があります。サービスがクラスターノードのサブセットにロードされると、結果が予想不可能になります。votequorum サービスの設定および操作の詳細は、votequorum(5) の man ページを参照してください。

10.1. クォーラムオプションの設定

pcs cluster setup コマンドを使用してクラスターを作成する場合、クォーラム設定の特別な機能を設定できます。これらのオプションは 表10.1「クォーラムオプション」 に記載されています。

表10.1 クォーラムオプション

オプション説明
--auto_tie_breaker
有効にすると、クラスターは決定論的に最大 50% のノードが同時に失敗しても存続されます。クラスターパーティションや、auto_tie_breaker_node に設定された nodeid (設定されていない場合は最小の nodeid) と通信するノードのセットはクォーラムに達した状態を維持します。その他のノードはクォーラムに達しません。
auto_tie_breaker オプションを指定すると、クラスターは均等の分割では操作を継続できるため、偶数個のノードを持つクラスターで使用されます。複数で不均等の分割など、より複雑な障害では 「クォーラムデバイス」 に説明されているクォーラムデバイスの使用が推奨されます。auto_tie_breaker オプションは、クォーラムデバイスと互換性がありません。
--wait_for_all
有効にすると、最低 1 回同時にすべてのノードが現れた後にクラスターは初回だけクォーラムに達します。
wait_for_all オプションは、主にクォーラムデバイスの lms (last man standing) アルゴリズムを使用する、2 ノードまたは偶数のノードで構成されるクラスターによって使用されます。
wait_for_all オプションは、クラスターに 2 つのノードがあり、クォーラムデバイスを使用せず、auto_tie_breaker が無効になっている場合に自動的に有効になります。wait_for_all を明示的に 0 に設定すると、このオプションをオーバーライドできます。
--last_man_standing有効にすると、クラスターは特定の状況で expected_votes とクォーラムを再計算します。このオプションを有効にするには wait_for_all を有効にする必要があります。last_man_standing オプションにはクォーラムデバイスとの互換性がありません。
--last_man_standing_windowクラスターのノードが失われた後、expected_votes およびクォーラムを再計算するまでの待ち時間 (ミリ秒単位)。
これらのオプションの設定および使用に関する詳細は、votequorum(5) の man ページを参照してください。

10.2. クォーラム管理コマンド (Red Hat Enterprise Linux 7.3 以降)

クラスターの稼働後、以下のクラスタークォーラムコマンドを実行できます。
次のコマンドはクォーラムの設定を表示します。
pcs quorum [config]
以下のコマンドはクォーラムのランタイム状態を表示します。
pcs quorum status
長時間クラスターからノードを除去したためクォーラムの損失が発生した場合、pcs quorum expected-votes コマンドを使用するとライブクラスターの expected_votes パラメーターの値を変更できます。これにより、クラスターはクォーラムがなくても操作を継続できます。

警告

ライブクラスターで期待される票数 (vote) を変更する場合は、細心の注意を払って行ってください。期待される票数を手作業で変更したことにより実行されているクラスターが 50% 未満となる場合、クラスターの他のノードを別々に起動でき、クラスターサービスを開始できるため、データの破損や予期せぬ結果が発生することがあります。この値を変更する場合、 wait_for_all パラメーターが有効になっていることを確認してください。
以下のコマンドは、ライブクラスターの期待される票数を指定の値に設定します。これはライブクラスターのみに影響し、設定ファイルは変更されません。リロードが発生した場合、expected_votes の値は設定ファイルの値にリセットされます。
pcs quorum expected-votes votes

10.3. クォーラムオプションの変更 (Red Hat Enterprise Linux 7.3 以降)

Red Hat Enterprise Linux 7.3 より、pcs quorum update コマンドを使用してクラスターの一般的なクォーラムオプションを変更できるようになりました。このコマンドを実行するにはクラスターを停止する必要があります。クォーラムオプションの詳細は votequorum(5) の man ページを参照してください。
pcs quorum update コマンドの形式は次のとおりです。
pcs quorum update [auto_tie_breaker=[0|1]] [last_man_standing=[0|1]] [last_man_standing_window=[time-in-ms] [wait_for_all=[0|1]]
以下のコマンドは、wait_for_all クォーラムオプションを変更し、このオプションの更新された状態を表示します。クラスターの稼働中はこのコマンドを実行できないことに注意してください。
[root@node1:~]# pcs quorum update wait_for_all=1
Checking corosync is not running on nodes...
Error: node1: corosync is running
Error: node2: corosync is running

[root@node1:~]# pcs cluster stop --all
node2: Stopping Cluster (pacemaker)...
node1: Stopping Cluster (pacemaker)...
node1: Stopping Cluster (corosync)...
node2: Stopping Cluster (corosync)...

[root@node1:~]# pcs quorum update wait_for_all=1
Checking corosync is not running on nodes...
node2: corosync is not running
node1: corosync is not running
Sending updated corosync.conf to nodes...
node1: Succeeded
node2: Succeeded

[root@node1:~]# pcs quorum config
Options:
  wait_for_all: 1

10.4. クォーラムアンブロック (quorum unblock) コマンド

クォーラムに達していない状態でクラスターにリソース管理を続行させたい場合、以下のコマンドを使用してクォーラムの確立時にクラスターがすべてのノードを待たないようにします。

注記

このコマンドは細心の注意を払って使用する必要があります。このコマンドを実行する前に、現在クラスターにないノードを無効にし、共有リソースにアクセスできない状態であることを確認する必要があります。
# pcs cluster quorum unblock

10.5. クォーラムデバイス

Red Hat Enterprise Linux 7.4 は、クラスター用のサードパーティーのアービトレーションデバイスとして機能する別のクォーラムデバイスの設定に完全に対応しています。主要な用途は、クォーラムルールによって許容されるノード障害の数よりも多くのノード障害をクラスターが許容するようにすることです。クォーラムデバイスは、偶数のノードで構成されるクラスターに推奨され、2 ノード構成のクラスターには強く推奨されます。
クォーラムデバイスの設定時に以下を考慮する必要があります。
  • クォーラムデバイスを使用するクラスターと同じ場所にある異なる物理ネットワークでクォーラムデバイスを実行することが推奨されます。理想的には、クォーラムデバイスホストはメインクラスターとは別のラックに置くようにし、最低でも別の PSU に置くようにしてください。corosync リングと同じネットワークセグメントには置かないでください。
  • 複数のクォーラムデバイスをクラスターで同時に使用することはできません。
  • 複数のクォーラムデバイスをクラスターで同時に使用することはできませんが、複数のクラスターが 1 つのクォーラムデバイスを同時に使用することはできます。アルゴリズムやクォーラムオプションはクラスターノード自体に保存されるため、同じクォーラムデバイスを使用する各クラスターは異なるアルゴリズムやクォーラムオプションを使用できます。たとえば、ffsplit ((fifty/fifty split) アルゴリズムを使用するクラスターと、lms (last man standing) アルゴリズムを使用する別のクラスターが 1 つのクォーラムデバイスを使用することができます。
  • クォーラムデバイスは既存のクラスターノードで実行しないでください。

10.5.1. クォーラムデバイスパッケージのインストール

クラスターにクォーラムデバイスを設定するには、以下のパッケージをインストールする必要があります。
  • 既存クラスターのノードで、corosync-qdevice をインストールします。
    [root@node1:~]# yum install corosync-qdevice
    [root@node2:~]# yum install corosync-qdevice
  • クォーラムデバイスホストで、pcs および corosync-qnetd をインストールします。
    [root@qdevice:~]# yum install pcs corosync-qnetd
  • pcsd サービスを起動し、システムの起動時に pcsd がクォーラムデバイスホストで有効になるようにします。
    [root@qdevice:~]# systemctl start pcsd.service
    [root@qdevice:~]# systemctl enable pcsd.service

10.5.2. クォーラムデバイスの設定

本セクションでは、Red Hat High Availability クラスターでクォーラムデバイスを設定する手順例を説明します。以下の手順はクォーラムデバイスを設定し、クラスターに追加します。この例では以下を前提とします。
  • クォーラムデバイスに使用されるノードは qdevice です。
  • クォーラムデバイスモデルは net で、これは現在サポートされている唯一のクォーラムデバイスモデルです。net モデルは、以下のアルゴリズムをサポートします。
    • ffsplit (fifty-fifty split) - この場合は、アクティブなノードの数が最も多いパーティションに 1 票が提供されます。
    • lms (last-man-standing) - ノードが qnetd サーバーを確認できるクラスター内に残っている唯一のノードである場合に、票が返されます。

      警告

      LMS アルゴリズムは、残りのノードが 1 つしかなくても、クラスターがクォーラムに達した状態であることを許可しますが、これは number_of_nodes - 1 と同じであるため、クォーラムデバイスの議決権が強いことも意味します。クォーラムデバイスとの接続を失うことは、number_of_nodes - 1 票を失うことを意味し、これはすべてのノードがアクティブであるクラスターのみが (クォーラムデバイスへの投票過多により) クォーラムに達した状態にあることを意味し、その他のクラスターはクォーラムに達しない状態になることを意味します。
    これらのアルゴリズムの実装の詳細は、man ページの corosync-qdevice(8) を参照してください。
  • クラスターノードは node1node2 です。
以下の手順は、クォーラムデバイスを設定し、そのクォーラムデバイスをクラスターに追加します。
  1. クォーラムデバイスをホストするために使用するノードで以下のコマンドを使用し、クォーラムデバイスを設定します。このコマンドは、クォーラムデバイスモデルである net を設定および開始し、デバイスが起動時に開始されるよう設定します。
    [root@qdevice:~]# pcs qdevice setup model net --enable --start
    Quorum device 'net' initialized
    quorum device enabled
    Starting quorum device...
    quorum device started
    クォーラムデバイスの設定後、その状態をチェックできます。corosync-qnetd デーモンが実行され、この時点では接続されているクライアントがないはずです。--full コマンドオプションを指定すると詳細が出力されます。
    [root@qdevice:~]# pcs qdevice status net --full
    QNetd address:                  *:5403
    TLS:                            Supported (client certificate required)
    Connected clients:              0
    Connected clusters:             0
    Maximum send/receive size:      32768/32768 bytes
  2. 以下のコマンドを実行して、firewalldhigh-availability サービスを有効にし、 pcsd デーモンで必要なファイアウォールのポートおよび net クォーラムデバイスを有効にします。
    [root@qdevice:~]# firewall-cmd --permanent --add-service=high-availability
    [root@qdevice:~]# firewall-cmd --add-service=high-availability
  3. 既存のクラスターのノードのいずれかから、クォーラムデバイスをホストしているノード上で認証ユーザー haclusterを認証します。
    [root@node1:~] # pcs cluster auth qdevice
    Username: hacluster
    Password:
    qdevice: Authorized
  4. クォーラムデバイスをクラスターに追加します。
    クォーラムデバイスを追加する前に、クォーラムデバイスの現在の設定と状況をチェックして後で比較することができます。これらのコマンドの出力はクラスターがクォーラムデバイスを使用していないことを示しています。
    [root@node1:~]# pcs quorum config
    Options:
    [root@node1:~]# pcs quorum status
    Quorum information
    ------------------
    Date:             Wed Jun 29 13:15:36 2016
    Quorum provider:  corosync_votequorum
    Nodes:            2
    Node ID:          1
    Ring ID:          1/8272
    Quorate:          Yes
    
    Votequorum information
    ----------------------
    Expected votes:   2
    Highest expected: 2
    Total votes:      2
    Quorum:           1  
    Flags:            2Node Quorate 
    
    Membership information
    ----------------------
        Nodeid      Votes    Qdevice Name
             1          1         NR node1 (local)
             2          1         NR node2
    
    以下のコマンドは、以前に作成したクォーラムデバイスをクラスターに追加します。複数のクォーラムデバイスをクラスターで同時に使用することはできませんが、複数のクラスターが 1 つのクォーラムデバイスを同時に使用することはできます。このコマンド例は、クォーラムデバイスが ffsplit アルゴリズムを使用するよう設定します。クォーラムデバイスの設定オプションに関する情報は、man ページの corosync-qdevice(8) を参照してください。
    [root@node1:~]# pcs quorum device add model net host=qdevice algorithm=ffsplit
    Setting up qdevice certificates on nodes...
    node2: Succeeded
    node1: Succeeded
    Enabling corosync-qdevice...
    node1: corosync-qdevice enabled
    node2: corosync-qdevice enabled
    Sending updated corosync.conf to nodes...
    node1: Succeeded
    node2: Succeeded
    Corosync configuration reloaded
    Starting corosync-qdevice...
    node1: corosync-qdevice started
    node2: corosync-qdevice started
  5. クォーラムデバイスの設定状態をチェックします。
    クラスター側から以下のコマンドを実行すると、設定の変更内容を確認することができます。
    pcs quorum config は設定されたクォーラムデバイスを表示します。
    [root@node1:~]# pcs quorum config
    Options:
    Device:
      Model: net
        algorithm: ffsplit
        host: qdevice
    pcs quorum status コマンドは、使用中のクォーラムデバイスとクォーラムのランタイム状態を表示します。
    [root@node1:~]# pcs quorum status
    Quorum information
    ------------------
    Date:             Wed Jun 29 13:17:02 2016
    Quorum provider:  corosync_votequorum
    Nodes:            2
    Node ID:          1
    Ring ID:          1/8272
    Quorate:          Yes
    
    Votequorum information
    ----------------------
    Expected votes:   3
    Highest expected: 3
    Total votes:      3
    Quorum:           2  
    Flags:            Quorate Qdevice 
    
    Membership information
    ----------------------
        Nodeid      Votes    Qdevice Name
             1          1    A,V,NMW node1 (local)
             2          1    A,V,NMW node2
             0          1            Qdevice
    pcs quorum device status はクォーラムデバイスのランタイム状態を表示します。
    [root@node1:~]# pcs quorum device status
    Qdevice information
    -------------------
    Model:                  Net
    Node ID:                1
    Configured node list:
        0   Node ID = 1
        1   Node ID = 2
    Membership node list:   1, 2
    
    Qdevice-net information
    ----------------------
    Cluster name:           mycluster
    QNetd host:             qdevice:5403
    Algorithm:              ffsplit
    Tie-breaker:            Node with lowest node ID
    State:                  Connected
    クォーラムデバイス側から以下のコマンドを実行すると、corosync-qnetd デーモンの状態を表示できます。
    [root@qdevice:~]# pcs qdevice status net --full
    QNetd address:                  *:5403
    TLS:                            Supported (client certificate required)
    Connected clients:              2
    Connected clusters:             1
    Maximum send/receive size:      32768/32768 bytes
    Cluster "mycluster":
        Algorithm:          ffsplit
        Tie-breaker:        Node with lowest node ID
        Node ID 2:
            Client address:         ::ffff:192.168.122.122:50028
            HB interval:            8000ms
            Configured node list:   1, 2
            Ring ID:                1.2050
            Membership node list:   1, 2
            TLS active:             Yes (client certificate verified)
            Vote:                   ACK (ACK)
        Node ID 1:
            Client address:         ::ffff:192.168.122.121:48786
            HB interval:            8000ms
            Configured node list:   1, 2
            Ring ID:                1.2050
            Membership node list:   1, 2
            TLS active:             Yes (client certificate verified)
            Vote:                   ACK (ACK)

10.5.3. クォーラムデバイスサービスの管理

以下のコマンド例のとおり、PCS はローカルホスト (corosync-qnetd) でクォーラムデバイスサービスを管理する機能を提供します。これらのコマンドは corosync-qnetd サービスのみに影響することに注意してください。
[root@qdevice:~]# pcs qdevice start net
[root@qdevice:~]# pcs qdevice stop net
[root@qdevice:~]# pcs qdevice enable net
[root@qdevice:~]# pcs qdevice disable net
[root@qdevice:~]# pcs qdevice kill net

10.5.4. クラスターでのクォーラムデバイス設定の管理

以下のセクションは、クラスターでクォーラムデバイス設定を管理するために使用する PCS コマンドについて説明し、「クォーラムデバイスの設定」 のクォーラムデバイス設定を基にした例を使用します。

10.5.4.1. クォーラムデバイス設定の変更

クォーラムデバイスの設定を変更するには pcs quorum device update コマンドを使用します。

警告

クォーラムデバイスモデル nethost オプションを変更するには、pcs quorum device remove および pcs quorum device add コマンドを使用し、設定プロパティーを設定します (変更前のホストと変更後のホストが同じマシンである場合を除く)。
以下のコマンドは、クォーラムデバイスアルゴリズムを lms に変更します。
[root@node1:~]# pcs quorum device update model algorithm=lms
Sending updated corosync.conf to nodes...
node1: Succeeded
node2: Succeeded
Corosync configuration reloaded
Reloading qdevice configuration on nodes...
node1: corosync-qdevice stopped
node2: corosync-qdevice stopped
node1: corosync-qdevice started
node2: corosync-qdevice started

10.5.4.2. クォーラムデバイスの削除

以下のコマンドを使用して、クラスターノードに設定されたクォーラムデバイスを削除します。
[root@node1:~]# pcs quorum device remove
Sending updated corosync.conf to nodes...
node1: Succeeded
node2: Succeeded
Corosync configuration reloaded
Disabling corosync-qdevice...
node1: corosync-qdevice disabled
node2: corosync-qdevice disabled
Stopping corosync-qdevice...
node1: corosync-qdevice stopped
node2: corosync-qdevice stopped
Removing qdevice certificates from nodes...
node1: Succeeded
node2: Succeeded
クォーラムデバイスの削除後、クォーラムデバイスの状態を確認すると以下のエラーメッセージが表示されます。
[root@node1:~]# pcs quorum device status
Error: Unable to get quorum status: corosync-qdevice-tool: Can't connect to QDevice socket (is QDevice running?): No such file or directory

10.5.4.3. クォーラムデバイスの破棄

クォーラムデバイスホストのクォーラムデバイスを無効化および停止し、設定ファイルをすべて削除するには、以下のコマンドを実行します。
[root@qdevice:~]# pcs qdevice destroy net
Stopping quorum device...
quorum device stopped
quorum device disabled
Quorum device 'net' configuration files removed

第11章 Pacemaker ルール

ルールは、設定をより動的にするのに使用できます。ルールには、(ノード属性を使用して) 時間ベースで異なる処理グループにマシンを割り当て、場所の制約の作成時にその属性を使用する方法があります。
各ルールには日付の式など各種の式の他、他のルールも含ませることができます。各種の式の結果が boolean-op フィールドに応じて処理され、最終的にそのルールが true または false どちらの評価になるかが確定されます。ルールが使用された状況に応じて次に起こる動作は異なります。

表11.1 ルールのプロパティー

フィールド説明
role
リソースが指定のロールである場合のみルールの適用を制限します。使用できる値は StartedSlave、および Master です。注意: role="Master" が指定されたルールはクローンインスタンスの最初の場所を判断できません。昇格するアクティブなインスタンスの選択のみが影響を受けます。
score
ルールが true の評価になった場合に適用するスコア
score-attribute
ルールが true の評価になった場合に検索しスコアとして使用するノードの属性、場所の制約の一部となるルールにのみ使用を限定
boolean-op
複数の式オブジェクトからの結果の処理方法、使用できる値: andor、デフォルトは and

11.1. ノード属性の式

ノードで定義される属性に応じてリソースを制御する場合にノード属性の式を使用します。

表11.2 式のプロパティー

フィールド説明
attribute
テスト用のノード属性
type
値のテスト方法を指定、使用できる値: stringintegerversionデフォルトの値は string
operation
実行する比較動作、使用できる値:
* lt - ノード属性の値が value 未満の場合に True
* gt - ノード属性の値が value を越える場合に True
* lte - ノード属性の値が value 未満または同等になる場合に True
* gte - 属性の値が value を越えるまたは同等になる場合に True
* eq - ノード属性の値が value と同等になる場合に True
* ne - ノード属性の値が value と同等ではない場合に True
* defined - ノードに指定属性がある場合に True
* not_defined - ノードに指定属性がない場合に True
value
比較のためユーザーによって入力される値
管理者が追加する属性のほかに、表11.3「組み込みノード属性」で説明されているように、クラスターは使用可能な各ノードに特殊な組み込みノード属性を定義します。

表11.3 組み込みノード属性

名前説明
#uname
ノード名
#id
ノード ID
#kind
ノードタイプ、使用できる値は cluster remote、および container です。 kind の値は、ocf:pacemaker:remote リソースで作成された Pacemaker リモートノードの remote、および Pacemaker リモートゲストノードおよびバンドルノードの container です。
#is_dc
このノードが指定コントローラー (DC) の場合は true、それ以外の場合は false
#cluster_name
cluster-name クラスタープロパティーの値 (設定されている場合)
#site_name
site-name ノード属性の値 (設定されている場合)、それ以外は #cluster-name と同じ。
#role
関連する多状態リソースがこのノードで果たす役割。多状態リソースの場所の制約のルール内でのみ有効です。

11.2. 時刻と日付ベースの式

現在の日付と時刻に応じてリソースまたはクラスターオプションを制御する場合に日付の式を使用します。オプションで日付の詳細を含ませることができます。

表11.4 日付の式のプロパティ

フィールド説明
start
ISO8601 仕様に準じた日付と時刻
end
ISO8601 仕様に準じた日付と時刻
operation
状況に応じて現在の日付と時刻を start と end のいずれかの日付、または両方の日付と比較します。使用できる値は次のとおりです。
* gt - 現在の日付と時刻が start 以降の場合は True
* lt - 現在の日付と時刻が end 以前の場合は True
* in-range - 現在の日付と時刻が start 以降で且つ end 以前の場合は True
* date-spec - 現在の日付と時刻に対して cron のような比較を行う

11.3. 日付の詳細

日付の詳細は、時間に関係する cron のような式を作成するために使用されます。各フィールドには 1 つの数字または範囲が含まれます。指定のないフィールドは無視され、デフォルトの 0 としてみなされません。
たとえば、monthdays="1" は各月の最初の日と一致し、hours="09-17" は午前 9 時から午後 5 時までの時間と一致しますが、複数の範囲が含まれる weekdays="1,2"weekdays="1-2,5-6" は指定できません。

表11.5 日付詳細のプロパティー

フィールド説明
id
日付の固有となる名前
hours
使用できる値: 0-23
monthdays
使用できる値: 0-31 (月および年による)
weekdays
使用できる値: 1-7 (1=月曜日、7=日曜日)
yeardays
使用できる値: 1-366 (年による)
months
使用できる値: 1-12
weeks
使用できる値: 1-53 (weekyear による)
years
グレゴリオ暦 (新暦) に準じる
weekyears
グレゴリオ暦 (新暦) とは異なる場合がある、例: 2005-001 Ordinal2005-01-01 Gregorianであり 2004-W53-6 Weeklyでもある
moon
使用できる値: 0-7 (0 は新月、4 は満月)

11.4. 期間

operation=in_range で end の値が与えられていない場合は期間を使ってその値を算出します。date_spec オブジェクトと同じフィールドがありますが制限はありません (つまり 19 ヶ月の期間を持たせることが可能)。date_specs 同様、未入力のフィールドは無視されます。

11.5. pcs でのルールの設定

pcs を使用してルールを設定するには、「ルールを使用したリソースの場所の確定」 で説明しているように、ルールを使用する場所の制約を設定してください。
ルールを削除する場合は次のコマンドを使用します。削除するルールがその制約内で最後のルールになる場合はその制約も削除されることになります。
pcs constraint rule remove rule_id

第12章 Pacemaker クラスターのプロパティ

クラスター動作中に起こる可能性がある状況に直面した場合にクラスターのプロパティでクラスターの動作を制御します。

12.1. クラスタープロパティとオプションの要約

Pacemaker クラスターのプロパティのデフォルト値および設定可能な値などを 表12.1「クラスターのプロパティ」 で簡単に示します。

注記

表に記載しているプロパティ以外にもクラスターソフトウェアで公開されるクラスタープロパティがあります。このようなプロパティについては、そのデフォルト値を別の値には変更しないよう推奨しています。

表12.1 クラスターのプロパティ

オプションデフォルト説明
batch-limit0
TE (Transition Engine) に並列実行を許可するジョブ数 (ネットワークおよびクラスターノードの負荷および速度により正しい値は異なる)
migration-limit-1 (無制限)
一つのノードで TE に並列実行を許可する移行ジョブ数
no-quorum-policystop
クラスターが定足数を持たない場合に行う動作、使用できる値:
* ignore - 全リソースの管理を続行
* freeze - リソースの管理は続行するが、影響を受けるパーティション外のノードのリソースは復帰させない
* stop - 影響を受けるクラスターパーティション内の全リソースを停止する
* suicide - 影響を受けるクラスターパーティション内の全ノードを排他処理する
symmetric-clustertrue
デフォルトでいずれのノード上でもリソースの実行を許可するかどうかを指定
stonith-enabledtrue
障害が発生しているノードおよび停止できないリソースがあるノードを排他処理するかどうかを指定、データ保護が必要な場合は true に設定すること
true または未設定の場合、STONITH リソースが設定されていない限りクラスターによりリソースの起動が拒否される
stonith-actionreboot
STONITH デバイスに送信する動作、使用できる値: rebootoff (poweroff の値も使用できるがレガシーデバイスでの使用に限定)
cluster-delay60s
ネットワーク経由の往復遅延 (動作の実行は除く)、ネットワークおよびクラスターノードの負荷および速度により正しい値は異なる
stop-orphan-resourcestrue
削除したリソースの停止を行うかどうかを指定
stop-orphan-actionstrue
削除した動作の取り消しを行うかどうかを指定
start-failure-is-fataltrue
特定ノードでのリソースの開始に失敗した場合、そのノードでリソースの開始を再試行できるかどうかを指定。false に設定すると、リソースの現在の失敗数と移行しきい値を基にしてクラスターが同じノードの開始を再試行するかどうかを決定。リソースの migration-threshold オプションの設定は 「障害発生によるリソースの移動」 を参照。
start-failure-is-fatalfalse に設定すると、リソースを起動できない障害があるノードが、すべての依存アクションを遅らせる可能性があるというリスクが発生します。これにより、start-failure-is-fatal のデフォルトは true となっています。start-failure-is-fatal=false を設定するリスクは、移行のしきい値を下げることで、何度も失敗しても他のアクションは発生させることができるようにすることげ軽減できます。
pe-error-series-max-1 (all)
ERROR で保存する PE インプットの数、問題の報告時に使用
pe-warn-series-max-1 (all)
WARNING で保存する PE インプットの数、問題の報告時に使用
pe-input-series-max-1 (all)
保存する通常の PE インプットの数、問題の報告時に使用
cluster-infrastructure 
Pacemaker が現在実行中のメッセージングスタック、情報および診断目的で使用 (ユーザー設定不可)
dc-version 
クラスターの DC (Designated Controller) 上にある Pacemaker のバージョン、診断目的で使用 (ユーザー設定不可)
last-lrm-refresh 
Local Resource Manager による最後のリフレッシュ (epoca のため秒単位)、診断目的で使用 (ユーザー設定不可)
cluster-recheck-interval15分
オプション、リソースのパラメーター、制約に対する時間ベースの変更のポーリング間隔、使用できる値: ゼロの場合ポーリング無効、正の値の場合は秒単位の間隔 (5min など他の SI 単位の指定がない限り)
maintenance-modefalse
クラスターに無干渉モードになり別途指示があるまでサービスを起動または停止しないよう指示します。メンテナンスモードが完了するとクラスターはサービスの現在の状態に対してサニティーチェックを行い、必要な場合はサービスを停止または開始します。
shutdown-escalation20min
指定した時間を過ぎると正しいシャットダウンの試行を中断し終了 (高度な使用目的に限定)
stonith-timeout60s
STONITH 動作の完了まで待機する時間
stop-all-resourcesfalse
クラスターによる全リソースの停止
enable-aclfalse
(Red Hat Enterprise Linux 7.1 以降) pcs acl コマンドで設定したアクセス制御リストをクラスターが使用できるかどうかを示します。
placement-strategydefault
クラスターノード上のリソースの配置を決定する際に、クラスターが利用率属性を考慮にいれるかどうかと、どのぐらい考慮するかを示します。使用率属性と配置ストラテジーについては、「使用と配置ストラテジー」 を参照してください。

12.2. クラスターのプロパティの設定と削除

クラスタープロパティの値を設定する場合は次の pcs コマンドを使用します。
pcs property set property=value
例えば、symmetric-cluster の値を false に設定する場合は次のコマンドを使用します。
# pcs property set symmetric-cluster=false
設定からクラスタープロパティを削除する場合は次のコマンドを使用します。
pcs property unset property
代わりに pcs property set コマンドの値フィールドを空白にしてもクラスタープロパティを削除することができます。これによりそのプロパティの値がデフォルト値に戻されます。例えば、以前に symmetric-cluster プロパティを false に設定したことがある場合は、次のコマンドにより設定した値が削除され、symmetric-cluster の値がデフォルト値の true に戻されます。
# pcs property set symmetic-cluster=

12.3. クラスタープロパティ設定のクエリー

ほとんどの場合、各種のクラスターコンポーネントの値を表示するため pcs コマンドを使用する際、pcs list または pcs show を交互に使用することができます。次の例では pcs list は複数プロパティのすべての設定の全一覧表示に使用する形式になります。一方、pcs show は特定のプロパティの値を表示する場合に使用する形式になります。
クラスターに設定されたプロパティ設定の値を表示する場合は次の pcs コマンドを使用します。
pcs property list
明示的には設定されていなかったプロパティ設定のデフォルト値も含め、クラスターのプロパティ設定のすべての値を表示する場合は次のコマンドを使用します。
pcs property list --all
特定のクラスタープロパティの現在の値を表示する場合は次のコマンドを使用します。
pcs property show property
例えば、cluster-infrastructure プロパティの現在の値を表示する場合は次のコマンドを実行します。
# pcs property show cluster-infrastructure
Cluster Properties:
 cluster-infrastructure: cman
情報としてプロパティの全デフォルト値の一覧を表示させ、その値がデフォルト以外で設定されているかどうかを確認することができます。次のコマンドを使用します。
pcs property [list|show] --defaults

第13章 クラスターイベントのスクリプトのトリガー

Pacemaker クラスターはイベント駆動型のシステムで、イベントはリソースやノードの障害、設定の変更、またはリソースの開始や停止になります。Pacemaker クラスターアラートを設定すると、クラスターイベントの発生時に外部で一部の処理を行うことができます。クラスターアラートを設定するには、以下の 2 つの方法の 1 つを使用します。
  • Red Hat Enterprise Linux 7.3 より、アラートエージェントを使用して Pacemaker アラートを設定できるようになりました。アラートエージェントは、リソース設定と操作を処理するためにクラスター呼び出しのリソースエージェントと同様にクラスターが呼び出す外部プログラムです。これは推奨される方法で、クラスターアラートをより簡単に設定できます。Pacemaker アラートエージェントの説明は 「Pacemaker アラートエージェント (Red Hat Enterprise Linux 7.3 以降)」 を参照してください。
  • ocf:pacemaker:ClusterMon リソースはクラスターの状態を監視でき、クラスターイベントごとにアラートをトリガーできます。このリソースは、標準の間隔で crm_mon コマンドをバックグランドで実行します。 ClusterMon リソースの詳細は 「モニタリングのリソースを使ったイベント通知」 を参照してください。

13.1. Pacemaker アラートエージェント (Red Hat Enterprise Linux 7.3 以降)

クラスターイベントの発生時に Pacemaker アラートエージェントを作成して外部で一部の処理を行うことができます。クラスターは環境変数を用いてイベントの情報をエージェントに渡します。エージェントは、E メールメッセージの送信、ログのファイルへの記録、監視システムの更新など、この情報を自由に使用できます。

13.1.1. サンプルアラートエージェントの使用

サンプルアラートエージェントの 1 つを使用するとき、必要性に見合うようスクリプトを確認してください。サンプルエージェントは、特定のクラスター環境のカスタムスクリプトを作成するためのテンプレートとして提供されます。
サンプルアラートエージェントの 1 つ を使用するには、クラスターの各ノードにエージェントをインストールする必要があります。たとえば、以下のコマンドは alert_file.sh.sample スクリプトを alert_file.sh としてインストールします。
# install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh
スクリプトをインストールした後は、スクリプトを使用するアラートを作成できます。
以下の例では、インストールした alert_file.sh エージェントを使用してイベントをファイルに記録するアラートを設定しています。アラートエージェントは、最低限のパーミッションを持つユーザー hacluster として実行しています。
この例では、イベントの記録に使用するログファイル pcmk_alert_file.log を作成します。また、アラートエージェントを作成し、その受信先としてログファイルへのパスを追加します。
# touch /var/log/pcmk_alert_file.log
# chown hacluster:haclient /var/log/pcmk_alert_file.log
# chmod 600 /var/log/pcmk_alert_file.log 
# pcs alert create id=alert_file description="Log events to a file." path=/var/lib/pacemaker/alert_file.sh 
# pcs alert recipient add alert_file id=my-alert_logfile value=/var/log/pcmk_alert_file.log 
以下の例では、alert_snmp.sh.sample スクリプトを alert_snmp.sh としてインストールし、インストールした alert_snmp.sh アラートエージェントを使用してクラスターイベントを NSMP トラップとして送信するアラートを設定します。デフォルトでは、正常なモニター呼び出し以外のすべてのイベントを SNMP サーバーに送信します。この例では、タイムスタンプの形式はメタオプションとして設定されます。メタオプションの詳細は、「アラートメタオプション」 を参照してください。アラートの設定後にアラートの受信側が設定され、アラート設定が表示されます。
# install --mode=0755 /usr/share/pacemaker/alerts/alert_snmp.sh.sample /var/lib/pacemaker/alert_snmp.sh
# pcs alert create id=snmp_alert path=/var/lib/pacemaker/alert_snmp.sh meta timestamp-format="%Y-%m-%d,%H:%M:%S.%01N"
# pcs alert recipient add snmp_alert value=192.168.1.2
# pcs alert
Alerts:
 Alert: snmp_alert (path=/var/lib/pacemaker/alert_snmp.sh)
  Meta options: timestamp-format=%Y-%m-%d,%H:%M:%S.%01N.
  Recipients:
   Recipient: snmp_alert-recipient (value=192.168.1.2)
以下の例は alert_smtp.sh エージェントをインストールし、インストールされたアラートエージェントを使用するアラートを設定してクラスターイベントを E メールメッセージとして送信します。アラートの設定後に受信側が設定され、アラート設定が表示されます。
# install --mode=0755 /usr/share/pacemaker/alerts/alert_smtp.sh.sample /var/lib/pacemaker/alert_smtp.sh
# pcs alert create id=smtp_alert path=/var/lib/pacemaker/alert_smtp.sh options email_sender=donotreply@example.com
# pcs alert recipient add smtp_alert value=admin@example.com
# pcs alert
Alerts:
 Alert: smtp_alert (path=/var/lib/pacemaker/alert_smtp.sh)
  Options: email_sender=donotreply@example.com
  Recipients:
   Recipient: smtp_alert-recipient (value=admin@example.com)
pcs alert create および pcs alert recipient add コマンドの形式に関する情報は 「アラートの作成」 and 「アラートの受信側」 を参照してください。

13.1.2. アラートの作成

以下のコマンドはクラスターアラートを作成します。設定するオプションは、追加の環境変数として指定するパスでアラートエージェントスクリプトに渡されるエージェント固有の設定値です。id の値を指定しないと、値が生成されます。アラートメタオプションに関する情報は、「アラートメタオプション」 を参照してください。
pcs alert create path=path [id=alert-id] [description=description] [options [option=value]...] [meta [meta-option=value]...]
複数のアラートエージェントを設定できます。この場合、クラスターは各イベントですべてのアラートエージェントを呼び出します。アラートエージェントはクラスターノード上でのみ呼び出されます。アラートエージェントは Pacemaker リモートノードが関係するイベントに対して呼び出されますが、これらのノード上では呼び出されません。
以下の例は、各イベントで my-script.sh を呼び出す簡単なアラートを作成します。
# pcs alert create id=my_alert path=/path/to/myscript.sh
サンプルアラートエージェントの 1 つを使用するクラスターアラートの作成方法の例は、「サンプルアラートエージェントの使用」 を参照してください。

13.1.3. アラートの表示、編集、および削除

以下のコマンドは、設定されたすべてのアラートと設定されたオプションの値を表示します。
pcs alert [config|show]
以下のコマンドは、指定した alert-id 値を持つ既存のアラートを更新します。
pcs alert update alert-id [path=path] [description=description] [options [option=value]...] [meta [meta-option=value]...]
以下のコマンドは、指定の alert-id 値を持つアラートを削除します。
pcs alert remove alert-id

13.1.4. アラートの受信側

通常、アラートは受信側に送信されます。よって、各アラートに 1 つ以上の受信側を追加設定できます。クラスターは受信側ごとに別々にエージェントを呼び出します。
受信側は、IP アドレス、E メールアドレス、ファイル名など、エージェントがサポートし認識できるものになります。
以下のコマンドは新しい受信側を指定のアラートに追加します。
pcs alert recipient add alert-id value=recipient-value [id=recipient-id] [description=description] [options [option=value]...] [meta [meta-option=value]...]
以下のコマンドは、既存のアラート受信側を更新します。
pcs alert recipient update recipient-id [value=recipient-value] [description=description] [options [option=value]...] [meta [meta-option=value]...]
以下のコマンドは指定のアラート受信側を削除します。
pcs alert recipient remove recipient-id
以下のコマンド例は、受信者 ID が my-recipient-id のアラート受信側 my-alert-recipient をアラート my-alert に追加します。これにより、 my-alert に設定されたアラートスクリプトを各イベントで呼び出すよう、クラスターが設定されます。
#  pcs alert recipient add my-alert value=my-alert-recipient id=my-recipient-id options value=some-address

13.1.5. アラートメタオプション

リソースエージェントと同様に、メタオプションをアラートエージェントに対して設定すると、Pacemaker の呼び出し方法を調整できます。アラートメタオプションの説明は 表13.1「アラートメタオプション」 を参照してください。メタオプションは、アラートエージェントごとまたは受信側ごとに設定できます。

表13.1 アラートメタオプション

メタ属性デフォルト説明
timestamp-format
%H:%M:%S.%06N
イベントのタイムスタンプをエージェントに送信するときにクラスターが使用する形式。この文字列は date(1) コマンドと使用されます。
timeout
30s
アラートエージェントがこの時間内に完了しないと終了させられます。
以下の例は、my-script.sh スクリプトを呼び出すアラートを設定し、2 つの受信側をアラートに追加します。最初の受信側の ID は my-alert-recipient1 で、2 つ目の受信側の ID は my-alert-recipient2 です。スクリプトは各イベントで 2 回呼び出され、呼び出しのタイムアウト値はそれぞれ 15 秒です。1 つの呼び出しは受信側 someuser@example.com に渡され、タイムスタンプの形式は %D %H:%M になります。もう 1 つの呼び出しは受信側 otheruser@example.com へ渡され、タイムスタンプの形式は %c になります。
# pcs alert create id=my-alert path=/path/to/my-script.sh meta timeout=15s
# pcs alert recipient add my-alert value=someuser@example.com id=my-alert-recipient1 meta timestamp-format=%D %H:%M
# pcs alert recipient add my-alert value=otheruser@example.com id=my-alert-recipient2 meta timestamp-format=%c

13.1.6. アラート設定コマンドの例

以下の例は、基本的なアラート設定コマンドの一部と、アラートの作成、受信側の追加、および設定されたアラートの表示に使用される形式を表しています。
以下のコマンドは簡単なアラートを作成し、アラートに 2 つの受信側を追加した後、設定された値を表示します。
  • アラート ID の値が指定されていないため、alert が値となるアラート ID が作成されます。
  • 最初の受信側作成コマンドは、rec_value の受信側を指定します。このコマンドには受信側 ID が指定されていないため、受信側 ID の値として alert-recipient が使用されます。
  • 2 番目の受信側作成コマンドは、rec_value2 の受信側を指定します。このコマンドは、my-recipient を受信側 ID として指定します。
# pcs alert create path=/my/path
# pcs alert recipient add alert value=rec_value
# pcs alert recipient add alert value=rec_value2 id=my-recipient
# pcs alert config
Alerts:
 Alert: alert (path=/my/path)
  Recipients:
   Recipient: alert-recipient (value=rec_value)
   Recipient: my-recipient (value=rec_value2)
以下のコマンドは 2 番目のアラートとそのアラートの受信側を追加します。2 番目のアラートのアラート ID は my-alert で、受信側の値は my-other-recipient です。受信側 ID が指定されていないため、my-alert-recipient が受信側 ID として使用されます。
# pcs alert create id=my-alert path=/path/to/script description=alert_description options option1=value1 opt=val meta meta-option1=2 m=val
# pcs alert recipient add my-alert value=my-other-recipient
# pcs alert
Alerts:
 Alert: alert (path=/my/path)
  Recipients:
   Recipient: alert-recipient (value=rec_value)
   Recipient: my-recipient (value=rec_value2)
 Alert: my-alert (path=/path/to/script)
  Description: alert_description
  Options: opt=val option1=value1
  Meta options: m=val meta-option1=2
  Recipients:
   Recipient: my-alert-recipient (value=my-other-recipient)
以下のコマンドは、アラート my-alert と受信側 my-alert-recipient のアラート値を変更します。
# pcs alert update my-alert options option1=newvalue1 meta m=newval
# pcs alert recipient update my-alert-recipient options option1=new meta metaopt1=newopt
# pcs alert
Alerts:
 Alert: alert (path=/my/path)
  Recipients:
   Recipient: alert-recipient (value=rec_value)
   Recipient: my-recipient (value=rec_value2)
 Alert: my-alert (path=/path/to/script)
  Description: alert_description
  Options: opt=val option1=newvalue1
  Meta options: m=newval meta-option1=2
  Recipients:
   Recipient: my-alert-recipient (value=my-other-recipient)
    Options: option1=new
    Meta options: metaopt1=newopt
以下のコマンドは、受信側 my-alert-recipientalert から削除します。
# pcs alert recipient remove my-recipient
# pcs alert
Alerts:
 Alert: alert (path=/my/path)
  Recipients:
   Recipient: alert-recipient (value=rec_value)
 Alert: my-alert (path=/path/to/script)
  Description: alert_description
  Options: opt=val option1=newvalue1
  Meta options: m=newval meta-option1=2
  Recipients:
   Recipient: my-alert-recipient (value=my-other-recipient)
    Options: option1=new
    Meta options: metaopt1=newopt
以下のコマンドは設定から myalert を削除します。
# pcs alert remove my-alert
# pcs alert
Alerts:
 Alert: alert (path=/my/path)
  Recipients:
   Recipient: alert-recipient (value=rec_value)

13.1.7. アラートエージェントの作成

Pacemaker アラートには、ノードアラート、フェンスアラート、およびリソースアラートの 3 種類があります。アラートエージェントに渡される環境変数は、アラートの種類によって異なります。アラートエージェントに渡される環境変数と、特定のアラートの種類に関連する環境変数の説明は、表13.2「アラートエージェントに渡される環境変数」 を参照してください。

表13.2 アラートエージェントに渡される環境変数

環境変数説明
CRM_alert_kind
アラートの種類 (ノード、フェンス、またはリソース)
CRM_alert_version
アラートを送信する Pacemaker のバージョン
CRM_alert_recipient
設定された送信側
CRM_alert_node_sequence
アラートがローカルノードで発行されるたびに増加するシーケンス番号。Pacemaker によってアラートが発行された順序を参照するために使用することができます。後で発生したイベントのアラートは、先に発生したイベントのアラートよりも確実にシーケンス番号が大きくなります。この番号は、クラスター全体を対象とする番号ではないことに注意してください。
CRM_alert_timestamp
エージェントの実行前に timestamp-format メタオプションによって指定された形式で作成されたタイムスタンプ。これにより、エージェント自体が呼び出されたタイミング (システムの負荷やその他の状況によって遅延される可能性があります) に関係なく、エージェントは信頼できる精度が高いイベント発生時間を使用できます。
CRM_alert_node
影響を受けるノードの名前
CRM_alert_desc
イベントの詳細。ノードアラートの場合はノードの現在の状態 (番号または lost) になります。フェンスアラートの場合は、フェンス操作の要求元、ターゲット、フェンス操作のエラーコードなどを含む要求されたフェンス操作の概要になります。リソースアラートの場合は CRM_alert_status と同等の読み取り可能な文字列になります。
CRM_alert_nodeid
状態が変更したノードの ID (ノードアラートの場合のみ提供)。
CRM_alert_task
要求されたフェンスまたはリソース操作 (フェンスおよびリソースアラートの場合のみ提供)。
CRM_alert_rc
フェンスまたはリソース操作の数値の戻りコード (フェンスおよびリソースアラートの場合のみ提供)。
CRM_alert_rsc
影響を受けるリソースの名前 (リソースアラートのみ)。
CRM_alert_interval
リソース操作の間隔 (リソースアラートのみ)
CRM_alert_target_rc
操作の予期される数値の戻りコード (リソースアラートのみ)。
CRM_alert_status
操作の結果を示すために Pacemaker によって使用される数値コード (リソースアラートのみ)。
アラートエージェントを記述するとき、以下を考慮する必要があります。
  • アラートエージェントは受信側がない状態で呼び出されることがあります (受信側が設定されていない場合)。そのため、エージェントはこの状態に対応できなければなりません (このような状況では終了する場合でも)。設定を段階的に変更し、後で受信側を追加することもできます。
  • 1 つのアラートに複数の受信側が設定された場合、アラートエージェントは受信側ごとに 1 回呼び出されます。エージェントが同時実行できない場合、受信側を 1 つのみ設定する必要があります。エージェントは受信側をリストとして解釈することができます。
  • クラスターイベントの発生時、すべてのアラートは別々のプロセスとして同時に発生します。設定されたアラートと受信側の数や、アラートエージェント内で実行されることによって、負荷が急激に増加する可能性があります。リソースが集中するアクションを直接実行せずに他のインスタンスのキューに置くなど、これを考慮してエージェントを記述する必要があります。
  • アラートエージェントは最低限のパーミッションを持つ hacluster ユーザーとして実行されます。アラートエージェントに追加のパーミッションが必要な場合は、sudo を設定してアラートエージェントが適切な特権を持つ別ユーザーとして必要なコマンドを実行できるようにすることが推奨されます。
  • CRM_alert_timestamp (このコンテンツはユーザー設定の timestamp-format によって指定)、CRM_alert_recipient、およびすべてのアラートオプションなど、ユーザー設定のパラメーターを検証およびサニタイズする場合は十分注意してください。設定エラーから保護する必要があります。また、クラスターへの hacluster レベルのアクセスがなくても CIB を変更できるユーザーが存在する場合、セキュリティーの問題が発生する可能性もあり、コードを挿入できないようにする必要があります。
  • onfail パラメーターが fence に設定されているリソースがクラスターに含まれる場合、障害時に複数のフェンス通知が送信されます (このパラメーターが設定されたリソースごとに 1 つの通知とそれに加えてさらに 1 つの通知)。STONITH デーモンと crmd デーモンの両方が通知を送信します。この場合、送信される通知の数に関係なく、Pacemaker は 1 つのフェンス操作のみを実際に実行します。

注記

アラートインターフェースは、ocf:pacemaker:ClusterMon リソースによって使用される外部スクリプトインターフェースと後方互換性を維持するよう設計されています。この互換性を維持するには、先頭に CRM_notify_ および CRM_alert_ が付けられたアラートエージェントに渡される環境変数を使用できます。ClusterMon リソースは root ユーザーとして実行し、アラートエージェントは hacluster ユーザーとして実行することがこの互換性の例外になります。ClusterMon によるスクリプトの設定に関する情報は、「モニタリングのリソースを使ったイベント通知」 を参照してください。

13.2. モニタリングのリソースを使ったイベント通知

ocf:pacemaker:ClusterMon リソースはクラスターの状態を監視でき、クラスターイベントごとにアラートをトリガーできます。このリソースは、標準の間隔で crm_mon コマンドをバックグランドで実行します。
デフォルトでは、crm_mon コマンドはリソースイベントのみをリッスンします。フェンスイベントをリッスンできるようにするには、ClusterMon リソースの設定時に --watch-fencing オプションをコマンドに指定します。crm_mon コマンドはメンバーシップの問題を監視しませんが、フェンスが開始され、そのノードに対して監視が開始されたときにメッセージが出力されます。これはメンバーがクラスターに参加したことを意味します。
ClusterMon リソースは外部プログラムを実行し、extra_options パラメーターを用いてクラスター通知の処理を判断します。表13.3「外部監視プログラムへ渡される環境変数」 には、プログラムに渡される環境変数が記載されています。

表13.3 外部監視プログラムへ渡される環境変数

環境変数説明
CRM_notify_recipient
リソース定義からの静的な外部受信側。
CRM_notify_node
状態が変更したノード。
CRM_notify_rsc
状態を変更したリソースの名前。
CRM_notify_task
状態が変更する原因となった操作。
CRM_notify_desc
状態が変更する原因となった操作 (該当の操作がある場合) のテキスト出力の関連エラーコード。
CRM_notify_rc
操作の戻りコード。
CRM_target_rc
操作の予期される戻りコード。
CRM_notify_status
操作の状態の数値表現。
以下の例は、外部プログラム crm_logger.sh を実行する ClusterMon リソースを設定します。このプログラムは指定されたイベント通知をログに記録します。
以下の手順は、リソースが使用する crm_logger.sh プログラムを作成します。
  1. クラスターのノードの 1 つで、イベント通知をログに記録するプログラムを作成します。
    # cat <<-END >/usr/local/bin/crm_logger.sh
    #!/bin/sh
    logger -t "ClusterMon-External" "${CRM_notify_node} ${CRM_notify_rsc} \
    ${CRM_notify_task} ${CRM_notify_desc} ${CRM_notify_rc} \
    ${CRM_notify_target_rc} ${CRM_notify_status} ${CRM_notify_recipient}";
    exit;
    END
  2. プログラムの所有者とパーミッションを設定します。
    # chmod 700 /usr/local/bin/crm_logger.sh
    # chown root.root /usr/local/bin/crm_logger.sh
  3. scp コマンドを使用して crm_logger.sh プログラムをクラスターの他のノードにコピーし、これらのノードの同じ場所にプログラムを格納し、プログラムに同じ所有者とパーミッションを設定します。
以下の例は、/usr/local/bin/crm_logger.sh プログラムを実行する ClusterMon-External という名前の ClusterMon リソースを設定します。 ClusterMon リソースは html ファイル (この例の場合は /var/www/html/cluster_mon.html) にクラスターの状態を出力します。pidfileClusterMon がすでに実行されているかどうかを検出します (この例では /var/run/crm_mon-external.pid ファイル)。このリソースはクローンとして作成されるため、クラスターの各ノードで実行されます。watch-fencing を指定すると、開始/停止/監視、開始/監視、フェンスリソースの停止など、リソースイベントの他にフェンスイベントの監視が有効になります。
# pcs resource create ClusterMon-External ClusterMon user=root \
update=10 extra_options="-E /usr/local/bin/crm_logger.sh --watch-fencing" \
htmlfile=/var/www/html/cluster_mon.html \
pidfile=/var/run/crm_mon-external.pid clone

注記

以下は、このリソースが実行する crm_mon コマンド (手作業による実行も可能) になります。
# /usr/sbin/crm_mon -p /var/run/crm_mon-manual.pid -d -i 5 \
-h /var/www/html/crm_mon-manual.html -E "/usr/local/bin/crm_logger.sh" \
--watch-fencing
以下の例は、この例によって生成される監視通知の出力形式になります。
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP st_notify_fence Operation st_notify_fence requested by rh6node1pcmk.examplerh.com for peer rh6node2pcmk.examplerh.com: OK (ref=b206b618-e532-42a5-92eb-44d363ac848e) 0 0 0 #177
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:31:32 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com fence_xvms monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP monitor OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterMon-External start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com fence_xvms start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:33:59 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterMon-External monitor OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 8: monitor ClusterMon-External:1_monitor_0 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 16: start ClusterMon-External:1_start_0 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node1pcmk.examplerh.com ClusterIP stop OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk crmd[2887]:   notice: te_rsc_command: Initiating action 15: monitor ClusterMon-External_monitor_10000 on rh6node2pcmk.examplerh.com
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterMon-External start OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterMon-External monitor OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP start OK 0 0 0
Aug  7 11:34:00 rh6node1pcmk ClusterMon-External: rh6node2pcmk.examplerh.com ClusterIP monitor OK 0 0 0

第14章 Pacemaker を用いたマルチサイトクラスターの設定

クラスターが複数のサイトにまたがる場合、サイト間のネットワーク接続の問題が原因でスプリットブレインが発生する可能性があります。接続が切断されても、別のサイトのノードで障害が発生したのか、またはサイト間の接続に失敗した状態で別サイトのノードが機能しているかどうかをノードが判断する方法がありません。さらに、離れすぎているため同期を保つのが難しい 2 つのサイトで高可用性サービスを提供するのは問題になることがあります。
この問題に対応するため、Red Hat Enterprise Linux 7. 4 は Booth クラスターチケットマネージャーを使用して複数のサイトにまたがる高可用性クラスターを設定する機能に完全に対応しています。Booth チケットマネージャーは、特定サイトでクラスターノードに接続するネットワークとは異なる物理ネットワークで実行するための分散サービスです。これにより、Booth フォーメーション という別の非厳密なクラスターがサイトの通常クラスターの上に置かれます。この集約通信層は、個別の Booth チケットに対して合意ベースの決定プロセスを促進します。
Booth チケット は Booth フォーメーションのシングルトンで、時間依存の移動可能な承認の単位を表します。実行には特定のチケットが必要になるよう、リソースを設定することができます。これにより、チケットが付与された場合にリソースは 1 度に 1 サイトでのみ実行されるようになります。
Booth フォーメーションは、異なるサイトで実行されるクラスターで構成され元のクラスターがすべて独立しているオーバーレイクラスターとしてみなすことができます。チケット付与の有無についてクラスターと通信するのは Booth サービスで、Pacemaker が Pacemaker のチケット抑制を基にクラスターのリソースを実行するかどうかを判断します。チケットマネージャーを使用する場合、各クラスターは独自のリソースと共有リソースを実行できます。たとえば、リソース A、B、および C は 1 つのクラスターでのみ実行され、リソース D、E、および F は別のクラスターでのみ実行されるとします。リソース G および H は、チケットによって決定されたこれら 2 つのクラスターのいずれかで実行されます。また、別のチケットによってこれら 2 つのクラスターのいずれかで実行されることが決まるリソース J を追加することもできます。
以下の手順は、Booth チケットマネージャーを使用するマルチサイト構成の設定方法を示しています。
ここで使用するコマンド例は以下を前提とします。
  • Cluster 1 はノード cluster1-node1 および cluster1-node2 で構成されます。
  • Cluster 1 に割り当てられたフローティング IP アドレスは 192.168.11.100 です。
  • Cluster 2 は cluster2-node1 および cluster2-node2 で構成されます。
  • Cluster 2 に割り当てられたフローティング IP アドレスは 192.168.22.100 です。
  • arbitrator (調停役) ノードは arbitrator-node で、IP アドレスは 192.168.99.100 です。
  • この設定が使用する Booth チケットの名前は apacheticket です。
ここで使用するコマンド例は、Apache サービスのクラスターリソースが各クラスターの apachegroup リソースグループの一部として設定されていることを前提としています。各クラスターの Pacemaker インスタンスは独立しているため、リソースのチケット制約を設定するために各クラスターのリソースとリソースグループが同じである必要はありませんが、これがフェイルオーバーの一般的な事例になります。
クラスターで Apache サービスを設定するクラスター設定の完全な手順は、『High Availability Add-On の管理』 の例を参照してください。
設定手順の実行中に pcs booth config コマンドを実行すると現在のノードまたはクラスターの Booth 設定を表示できます。また、pcs booth status コマンドを実行するとローカルノードの現在の Booth 状態を表示できます。
  1. booth-site Booth チケットマネージャーパッケージを両方のクラスターのノードにインストールします。
    [root@cluster1-node1 ~]# yum install -y booth-site
    [root@cluster1-node2 ~]# yum install -y booth-site
    [root@cluster2-node1 ~]# yum install -y booth-site
    [root@cluster2-node2 ~]# yum install -y booth-site
  2. pcsbooth-corebooth-arbitrator パッケージを arbitrator (調停役) ノードにインストールします。
    [root@arbitrator-node ~]# yum install -y pcs booth-core booth-arbitrator
  3. ポート 9929/tcp と 9929/udp がすべてのクラスターノードと arbitrator ノードで解放されていることを確認します。これを行うには、以下の操作を実行します。
    • 両方のクラスターのすべてのノードで以下のコマンドを実行します。
    • また、arbitrator ノードで以下のコマンドを使用します。
    # firewall-cmd --add-port=9929/udp
    # firewall-cmd --add-port=9929/tcp
    # firewall-cmd --add-port=9929/udp --permanent
    # firewall-cmd --add-port=9929/tcp --permanent
  4. 1 つのクラスターの 1 つのノードで Booth 設定を作成します。各クラスターおよび arbitrator (調停役) に指定するアドレスは IP アドレスでなければなりません。各クラスターにはフローティング IP アドレスを指定します。
    [cluster1-node1 ~] # pcs booth setup sites 192.168.11.100 192.168.22.100 arbitrators 192.168.99.100
    このコマンドを実行すると、/etc/booth/booth.conf および /etc/booth/booth.key 設定ファイルがノード上に作成されます。
  5. Booth 設定のチケットを作成します。このチケットがクラスターに付与された場合のみリソースの実行を許可するリソース抑制を定義するためにこのチケットを使用します。
    このフェイルオーバー設定手順は基本的な手順で、1 つのチケットのみを使用します。各チケットが異なるリソースに関連付けられる、より複雑な事例では追加のチケットを作成します。
    [cluster1-node1 ~] # pcs booth ticket add apacheticket
  6. 現在のクラスターのすべてのノードに対して Booth 設定を同期します。
    [cluster1-node1 ~] # pcs booth sync
  7. arbitrator (調停役) ノードから、Booth 設定を arbitrator へプルします。この作業をこれまで行ったことがない場合は、最初に設定をプルするノードに pcs を認証する必要があります。
    [arbitrator-node ~] # pcs cluster auth cluster1-node1
    [arbitrator-node ~] # pcs booth pull cluster1-node1
  8. Booth 設定を別のクラスターにプルし、そのクラスターのすべてのノードを同期します。arbitrator ノードでこの作業を行ったことがない場合は、最初に設定をプルするノードに pcs を認証する必要があります。
    [cluster2-node1 ~] # pcs cluster auth cluster1-node1
    [cluster2-node1 ~] # pcs booth pull cluster1-node1
    [cluster2-node1 ~] # pcs booth sync
  9. arbitrator で Booth を開始および有効化します。

    注記

    Booth はクラスターで Pacemaker リソースとして実行されるため、クラスターのノードで Booth を手動で開始または有効化してはなりません。
    [arbitrator-node ~] # pcs booth start
    [arbitrator-node ~] # pcs booth enable
  10. Booth を設定し、両方のクラスターサイトでクラスターリソースとして実行されるようにします。booth-ip および booth-service をグループのメンバーとするリソースグループが作成されます。
    [cluster1-node1 ~] # pcs booth create ip 192.168.11.100
    [cluster2-node1 ~] # pcs booth create ip 192.168.22.100
  11. 各クラスターに定義したリソースグループにチケット制約を追加します。
    [cluster1-node1 ~] # pcs constraint ticket add apacheticket apachegroup
    [cluster2-node1 ~] # pcs constraint ticket add apacheticket apachegroup
    以下のコマンドを実行すると、現在設定されているチケット制約を表示できます。
    pcs constraint ticket [show]
  12. この設定用に作成したチケットを最初のクラスターに付与します。
    チケットを付与する前に定義されたチケット抑制を準備する必要はありません。最初にチケットをクラスターに付与した後、 pcs booth ticket revoke コマンドで手動でオーバーライドしない限り、Booth はチケットの管理を引き継ぎます。pcs booth 管理コマンドの詳細は、pcs booth コマンドの PCS ヘルプ画面を参照してください。
    [cluster1-node1 ~] # pcs booth ticket grant apacheticket
チケットはいつでも追加および削除でき、この手順の完了後でも追加と削除が可能です。チケットの追加または削除後、この手順の説明どおりに、他のノード、クラスター、および arbitrator に対して設定ファイルを同期し、チケットを付与する必要があります。
Booth 設定ファイル、チケット、およびリソースのクリーンアップや削除に使用できるその他の Booth 管理コマンドに関する情報は、pcs booth コマンドの PCS ヘルプ画面を参照してください。

付録A OCF 戻りコード

この付録では、OCF 戻りコードと、Pacemaker に解釈される仕組みを説明します。
エージェントがコードを返したときに、クラスターがまず行うことは、期待されている結果通りにコードを返しているかどうかを確認します。そして、結果が期待されている値に一致しない場合、その操作が失敗したものとみなされ、復元操作が開始されます。
起動するには、起動した操作の結果の呼び出し元を通知する、定義した戻りコードでリソースエージェントを終了する必要があります。
表A.1「クラスターが行う復旧タイプ」 で説明しているように、障害復旧には 3 つのタイプがあります。

表A.1 クラスターが行う復旧タイプ

タイプ説明クラスターが行った操作
軽度
一時的なエラーが発生しました。
リソースを再起動するか、新しい場所に移します。
重度
現在のノードに固有である可能性のある一時的ではないエラーが発生しました。
リソースを別の場所に移動し、現在のノードで再試行されないようにします。
致命的
すべてのクラスターノードに共有となる一時的でないエラーが発生しました (例: 指定された設定がよくありません)。
リソースを停止し、いかなるクラスターノードでも起動されないようにします。
表A.2「OCF 戻りコード」 では、OCF 戻りコードと、不具合のあるコードを受信したときにクラスターが開始する復旧タイプについて説明しています。0 (OCF エイリアス OCF_SUCCESS) を返すイベントアクションは、0 が、期待されている戻り値でない場合に、失敗とみなされます。

表A.2 OCF 戻りコード

戻りコードOCF ラベル説明
0
OCF_SUCCESS
操作が無事に完了しました。これは、起動、停止、昇格、降格コマンドに対して想定される戻りコードです。
予期しない場合のタイプ: ソフト
1
OCF_ERR_GENERIC
この操作は、一般的なエラーを返しました。
タイプ: ソフト
リソースマネージャーは、リソースの復元と、新しい場所への移動を試行します。
2
OCF_ERR_GENERIC
このマシンのリソースの設定が正しくありません。たとえば、ノードで見つからない場所を参照しています。
タイプ: 重度
リソースマネージャーがリソースを別の場所に移動し、現在のノードで再試行されないようにします。
3
OCF_ERR_UNIMPLEMENTED
要求された操作が実装されていません。
タイプ: 重度
4
OCF_ERR_PERM
このリソースエージェントには、このタスクを完了するのに十分な特権がありません。これは、エージェントが特定のファイルを開けない場合や、特定のソケットでリッスンできない場合、ディレクトへの書き込みを行えない場合が考えられます。
タイプ: 重度
特に設定されていない限り、リソースマネージャーは、別のノード (パーミッションが存在しない) でリソースを再起動することで、このエラーで失敗したリソースの復旧を試行します。
5
OCF_ERR_INSTALLED
操作が実行されたノードに、必要なコンポーネントが欠如しています。これは、必要なバイナリが実行不可であるか、重要な設定ファイルが読み込み不可になっていることが原因の場合があります。
タイプ: 重度
特に設定されていない限り、リソースマネージャーは、別のノード (必要なファイルまたはバイナリが存在しない) でリソースを再起動することで、このエラーで失敗したリソースの復旧を試行します。
6
OCF_ERR_CONFIGURED
ローカルノード上のリソースの設定が正しくありません。
タイプ: 致命的
このコードがかえされると、Pacemaker は、サービス設定がその他のノードで正しくても、クラスター内のノードでリソースが実行されないようにします。
7
OCF_NOT_RUNNING
このリソースは安全に停止します。これは、リソースが正常にシャットダウンされたか、起動されていないことを意味します。
予期しない場合のタイプ: ソフト
クラスターは、いかなる操作に対しても、これを返すリソースの停止を試行しません。
8
OCF_RUNNING_MASTER
リソースはマスターモードで実行されています。
予期しない場合のタイプ: ソフト
9
OCF_FAILED_MASTER
リソースはマスターモードで実行されていますが、不具合が発生しています。
タイプ: ソフト
リソースは降格されて停止し、再起動されています (再び昇格されている可能性もあります)。
その他
該当なし
カスタムエラーコード

付録B Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 でのクラスターの作成

Pacemaker を用いて Red Hat Enterprise Linux 7 で Red Hat High Availability Cluster を設定する場合、rgmanager を用いて Red Hat Enterprise Linux 6 のクラスターを設定する場合とは異なる設定ツールと管理インターフェースが必要になります。「クラスター作成 - rgmanager と Pacemaker」 ではクラスターコンポーネントごとに設定の違いを説明します。
Red Hat Enterprise Linux 6.5 以降のリリースは pcs 設定ツールを使用した Pacemaker によるクラスター設定に対応しています。「Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 での Pacemaker のインストール」 では、Red Hat Enterprise Linux 6 と Red Hat Enterprise Linux 7 における Pacemaker インストールの違いについてまとめています。

B.1. クラスター作成 - rgmanager と Pacemaker

表B.1「gmanager と Pacemaker を使用した場合のクラスター設定に関する比較」 では、Red Hat Enterprise Linux 6 で rgmanager を使用した場合と Red Hat Enterprise Linux 7 で Pacemaker を使用した場合のクラスターコンポーネントの設定方法を比較しています。

表B.1 gmanager と Pacemaker を使用した場合のクラスター設定に関する比較

設定コンポーネントrgmanagerPacemaker
クラスター設定ファイル
各ノード上のクラスター設定ファイルは、直接編集が可能な cluster.conf ファイルです。あるいは、luciccs インターフェースを使用して、クラスター設定を定義します。
クラスターおよび Pacemaker 設定ファイルは corosync.conf および cib.xml です。cib.xml ファイルは直接編集しないでください。代わりに pcs または pcsd インターフェースを使用して編集してください。
ネットワーク設定
クラスター設定前に IP アドレスおよび SSH を設定
クラスター設定前に IP アドレスおよび SSH を設定
クラスター設定ツール
luciccs コマンド、手作業で cluster.conf ファイルを編集
pcs または pcsd
インストール
rgmanager のインストール (ricciluci、リソース、フェンスエージェントなどすべての依存パッケージをインストール)、必要に応じて lvm2-cluster および gfs2-utils をインストール
pcs と必要なフェンスエージェントをインストールします。必要な場合は lvm2-cluster および gfs2-utils をインストールします。
クラスターサービスの起動
次の手順でクラスターサービスを起動、有効にする
  1. rgmanagercman、必要であれば clvmdgfs2 も起動する
  2. ricci を起動、luci インターフェースを使用している場合は luci を起動
  3. 必要なサービスに対して chkconfig on を実行し各ランタイムで起動するようにする
または、ccs --start を実行してクラスターサービスを開始および有効化します。
次の手順でクラスターサービスを起動、有効にする
  1. 各ノードで、systemctl start pcsd.service を実行した後に systemctl enable pcsd.service を実行し、起動時に開始するよう pcsd を有効にします。
  2. クラスターの 1 つのノードで、pcs cluster start --all を実行し、 corosync および pacemaker を起動します。
設定ツールへのアクセスの制御
luci の場合、luci にアクセスできるのは root ユーザーまたは luci パーミッションを持つユーザーになる、すべてのアクセスにノードの ricci パスワードが必要
pcsd GUI では、共通のシステムユーザーであるユーザー hacluster として認証される必要があります。root ユーザーは hacluster のパスワードを設定できます。
クラスター作成
クラスターの命名、クラスターに含ませるノードの定義などは luci または ccs で行うか cluster.conf ファイルを直接編集
pcs cluster setup コマンドまたは pcsd Web UI を使用して、クラスターに名前を付け、ノードを含めます。pcs cluster node add コマンドまたは pcsd Web UI を使用すると、ノードを既存のクラスターに追加できます。
クラスター設定を全ノードに伝える
クラスターを luci で設定する場合は設定は自動的に伝わる、ccs の場合は --sync オプションを使用する、cman_tool version -r コマンドの使用も可
クラスターおよび Pacemaker 設定ファイルである corosync.conf および cib.xml は、クラスターの設定時やノードまたはリソースの追加時に自動的に伝播されます。
グローバルのクラスタープロパティー
以下の機能は、Red Hat Enterprise Linux 6 の rgmanager によってサポートされます。
* クラスターネットワーク内での IP マルチキャスティングに使用するマルチキャストアドレスの選択をシステム側で行うよう設定することが可能
* IP マルチキャスティングが利用できない場合に UDP Unicast トランスポートメカニズムが使用可能
* RRP プロトコルを使用したクラスター設定が可能
Red Hat Enterprise Linux 7 の Pacemaker はクラスターに対して以下の機能をサポートします。
* クラスターに no-quorum-policy を設定しクラスターが定足数を持たない場合のシステムの動作を指定できる
* 設定可能な他のクラスタープロパティは 表12.1「クラスターのプロパティ」 を参照してください。
ログ機能
グローバルおよびデーモン固有のログ記録設定が可能
ログ記録を手作業で設定する方法については /etc/sysconfig/pacemaker ファイルを参照
クラスターの検証
luci および ccs ではクラスタースキーマを使った自動検証、クラスターは起動時に自動的に検証される
クラスターは起動時に自動的に検証される、または pcs cluster verify を使っての検証も可
2 ノードクラスターのクォーラム
2 ノードのクラスターの場合、システムによるクォーラムの決定方法を設定できます。
* クォーラムディスクの設定
* ccs を使用するか cluster.conf ファイルを編集して two_node=1 および expected_votes=1 を設定し、1 つのノードがクォーラムを維持できるようにします。
pcs は 2 ノードクラスターに必要なオプションを自動的に corosync へ追加します。
クラスターの状態
luci では、クラスターの現在の状態がインターフェースのさまざまなコンポーネントで表示されます。クラスターの状態はリフレッシュできます。ccs コマンドの --getconf オプションを使用すると、現在の設定ファイルを確認できます。clustat コマンドを使用するとクラスターの状態を表示できます。
pcs status コマンドを使用して、現在のクラスターの状態を表示できます。
リソース
定義したタイプのリソースの追加およびリソース固有のプロパティの設定は luci または ccs コマンドを使って行うか cluster.conf 設定ファイルを編集して行う
pcs resource create コマンドまたは pcsd Web UI を使用して、定義されたタイプのリソースを追加し、リソース固有のプロパティーを設定します。Pacemaker を使用したクラスターリソースの設定については 6章クラスターリソースの設定 を参照してください。
リソースの動作、グループ化、起動と停止の順序
リソースの通信方法の設定にクラスターの サービス を定義
Pacemaker では、同時に配置され、順番に開始および停止される必要があるリソースのセットを定義する簡単な方法としてリソースグループを使用します。さらに、以下の方法でリソースの動作および対話方法を定義できます。
* リソース動作の一部はリソースオプションとして設定
* 場所の制約を使ってリソースを実行させるノードを指定
* 順序の制約を使ってリソースの実行順序を指定
コロケーション制約を使って任意のリソースの場所が別のリソースの場所に依存することを指定
詳細は 6章クラスターリソースの設定 および 7章リソースの制約 を参照してください。
リソース管理: リソースの移動、起動、停止
luci でクラスター、クラスターの個別ノード、およびクラスターサービスの管理が可能、ccs ではクラスターの管理が可能、クラスターサービスの管理には clusvadm を使用
pcs cluster standby コマンドを使ってノードを一時的に無効にし、リソースをホストできないようにすることができます。これにより、リソースを移行することになります。pcs resource disable コマンドでリソースを停止できます。
クラスターの設定を完全に削除
luci でクラスター内の全ノード削除を選択しクラスター全体を削除、クラスター内の各ノードの cluster.conf を削除することも可能
pcs cluster destroy コマンドを使用するとクラスター設定を削除できます。
複数のノードで実行中のリソース、複数モードで複数のノード上で実行中のリソース
該当なし。
Pacemaker ではリソースのクローンを作成し複数のノードで実行させることが可能、作成したリソースのクローンをマスターリソースとスレーブリソースとして定義し複数のモードで実行させることが可能、リソースのクローンおよびマスターとスレーブリソースについては 9章高度な設定 を参照してください。
フェンス機能 -- 1 ノードにつき 1 フェンス
フェンスデバイスをグローバルまたはローカルに作成しノードに追加、クラスター全体に post-fail delaypost-join delay の値を定義することが可能
pcs stonith create または pcsd Web UI を使用して各ノードにフェンスデバイスを作成します。複数のノードをフェンスできるデバイスでは、各ノードで個別に定義せずに 1 度に定義する必要があります。また、1 つのコマンドですべてのノードにフェンスデバイスを設定するよう pcmk_host_map を定義することもできます。pcmk_host_map の詳細は 表5.1「フェンスデバイスの一般的なプロパティ」 を参照してください。クラスター全体の stonith-timeout の値を定義できます。
1 ノードごとに複数の (バックアップ) フェンスデバイス
バックアップデバイスの定義は luci または ccs コマンドを使用するか cluster.conf ファイルを直接編集
フェンスレベルを設定

B.2. Red Hat Enterprise Linux 6 および Red Hat Enterprise Linux 7 での Pacemaker のインストール

Red Hat Enterprise Linux 6.5 以降のリリースは pcs 設定ツールを使用した Pacemaker によるクラスター設定に対応しています。Pacemaker を使用する際、Red Hat Enterprise Linux 6 と Red Hat Enterprise Linux 7 におけるクラスターのインストールには、いくつか相違点があります。
以下のコマンドは、Pacemaker が必要とする Red Hat High Availability Add-On ソフトウェアパッケージを Red Hat Enterprise Linux 6 にインストールし、cman を使用して corosync が開始されるようにします。クラスターの各ノードでこれらのコマンドを実行する必要があります。
[root@rhel6]# yum install pacemaker cman pcs
[root@rhel6]# chkconfig corosync off
[root@rhel6]# chkconfig cman off
クラスターの各ノードでは、hacluster という名前の pcs 管理者アカウントのパスワードを設定し、pcsd サービスの起動と有効化を行います。
[root@rhel6]# passwd hacluster
[root@rhel6]# service pcsd start
[root@rhel6]# chkconfig pcsd on
クラスターの 1 つのノードでは、クラスターのノードの管理者アカウントの認証を行います。
[root@rhel6]# pcs cluster auth [node] [...] [-u username] [-p password]
Red Hat Enterprise Linux 7 では、クラスターの各ノードで以下のコマンドを実行して Pacemaker が必要な Red Hat High Availability Add-On ソフトウェアパッケージをインストールして、hacluster という名前の pcs 管理アカウントのパスワードを設定し、pcsd サービスの起動と有効化を行います。
[root@rhel7]# yum install pcs pacemaker fence-agents-all
[root@rhel7]# passwd hacluster
[root@rhel7]# systemctl start pcsd.service
[root@rhel7]# systemctl enable pcsd.service
Red Hat Enterprise Linux 7では、Red Hat Enterprise Linux 6 と同様に、クラスターのノードで以下のコマンドを実行して、クラスターのノードの管理者アカウントを認証します。
[root@rhel7]# pcs cluster auth [node] [...] [-u username] [-p password]
Red Hat Enterprise Linux 7 のインストールは、1章Red Hat High Availability Add-On の設定と管理のリファレンス概要4章クラスターの作成と管理 を参照してください。

付録C 改訂履歴

改訂履歴
改訂 6.1-1Thu Oct 4 2018Steven Levine
7.6 GA 公開用ドキュメントバージョン。
改訂 5.1-2Thu Mar 15 2018Steven Levine
7.5 GA 公開用ドキュメントバージョン
改訂 5.1-0Thu Dec 14 2017Steven Levine
7.5 ベータ版公開用ドキュメントバージョン
改訂 4.1-9Tue Oct 17 2017Steven Levine
7.4 のバージョンを更新
改訂 4.1-5Wed Jul 19 2017Steven Levine
7.4 GA 公開用ドキュメントバージョン
改訂 4.1-2Wed May 10 2017Steven Levine
7.4 ベータ公開用ドキュメントの準備
改訂 3.1-10Tue May 2 2017Steven Levine
7.3 GA 公開用バージョンの更新。
改訂 3.1-4Mon Oct 17 2016Steven Levine
7.3 GA 公開用バージョン
改訂 3.1-3Wed Aug 17 2016Steven Levine
7.3 ベータ公開用ドキュメントの準備
改訂 2.1-8Mon Nov 9 2015Steven Levine
7.2 GA 公開用ドキュメントの準備
改訂 2.1-5Mon Aug 24 2015Steven Levine
7.2 ベータ公開用ドキュメントの準備 。
改訂 1.1-9Mon Feb 23 2015Steven Levine
7.1 GA リリース向けのバージョン
改訂 1.1-7Thu Dec 11 2014Steven Levine
7.1 ベータリリース向けバージョン
改訂 0.1-41Mon Jun 2 2014Steven Levine
7.0 GA リリース向けバージョン
改訂 0.1-2Thu May 16 2013Steven Levine
初回ドラフトの初版

索引

シンボル

アクション
プロパティ
interval, リソースの動作
タイムアウト, リソースの動作
アクションプロパティ, リソースの動作
オプション
batch-limit, クラスタープロパティとオプションの要約
cluster-delay, クラスタープロパティとオプションの要約
cluster-infrastructure, クラスタープロパティとオプションの要約
cluster-recheck-interval, クラスタープロパティとオプションの要約
dampen, 接続状態変更によるリソースの移動
dc-version, クラスタープロパティとオプションの要約
enable-acl, クラスタープロパティとオプションの要約
failure-timeout, リソースのメタオプション
host_list, 接続状態変更によるリソースの移動
is-managed, リソースのメタオプション
last-lrm-refresh, クラスタープロパティとオプションの要約
maintenance-mode, クラスタープロパティとオプションの要約
migration-limit, クラスタープロパティとオプションの要約
migration-threshold, リソースのメタオプション
multiplier, 接続状態変更によるリソースの移動
no-quorum-policy, クラスタープロパティとオプションの要約
pe-error-series-max, クラスタープロパティとオプションの要約
pe-input-series-max, クラスタープロパティとオプションの要約
pe-warn-series-max, クラスタープロパティとオプションの要約
placement-strategy, クラスタープロパティとオプションの要約
priority, リソースのメタオプション
requires, リソースのメタオプション
shutdown-escalation, クラスタープロパティとオプションの要約
start-failure-is-fatal, クラスタープロパティとオプションの要約
stonith-action, クラスタープロパティとオプションの要約
stonith-enabled, クラスタープロパティとオプションの要約
stonith-timeout, クラスタープロパティとオプションの要約
stop-all-resources, クラスタープロパティとオプションの要約
stop-orphan-actions, クラスタープロパティとオプションの要約
stop-orphan-resources, クラスタープロパティとオプションの要約
symmetric-cluster, クラスタープロパティとオプションの要約
target-role, リソースのメタオプション
オプションのクエリー, クラスタープロパティ設定のクエリー
クエリー
クラスターのプロパティ, クラスタープロパティ設定のクエリー
クラスター
オプション
batch-limit, クラスタープロパティとオプションの要約
cluster-delay, クラスタープロパティとオプションの要約
cluster-infrastructure, クラスタープロパティとオプションの要約
cluster-recheck-interval, クラスタープロパティとオプションの要約
dc-version, クラスタープロパティとオプションの要約
enable-acl, クラスタープロパティとオプションの要約
last-lrm-refresh, クラスタープロパティとオプションの要約
maintenance-mode, クラスタープロパティとオプションの要約
migration-limit, クラスタープロパティとオプションの要約
no-quorum-policy, クラスタープロパティとオプションの要約
pe-error-series-max, クラスタープロパティとオプションの要約
pe-input-series-max, クラスタープロパティとオプションの要約
pe-warn-series-max, クラスタープロパティとオプションの要約
placement-strategy, クラスタープロパティとオプションの要約
shutdown-escalation, クラスタープロパティとオプションの要約
start-failure-is-fatal, クラスタープロパティとオプションの要約
stonith-action, クラスタープロパティとオプションの要約
stonith-enabled, クラスタープロパティとオプションの要約
stonith-timeout, クラスタープロパティとオプションの要約
stop-all-resources, クラスタープロパティとオプションの要約
stop-orphan-actions, クラスタープロパティとオプションの要約
stop-orphan-resources, クラスタープロパティとオプションの要約
symmetric-cluster, クラスタープロパティとオプションの要約
プロパティのクエリー, クラスタープロパティ設定のクエリー
プロパティの削除, クラスターのプロパティの設定と削除
プロパティの設定, クラスターのプロパティの設定と削除
クラスターのプロパティ, クラスターのプロパティの設定と削除, クラスタープロパティ設定のクエリー
クラスターの状態
表示, クラスターの状態表示
クラスターオプション, クラスタープロパティとオプションの要約
クラスター管理
ACPI の設定, 統合フェンスデバイスで使用する ACPI の設定
クローン, リソースのクローン
グループ, リソースグループ
グループリソース, リソースグループ
コロケーション, リソースのコロケーション
スコア, Pacemaker ルール
タイムアウト, リソースの動作
アクションプロパティ, リソースの動作
プロパティ
id, リソースのプロパティー, リソースの動作
interval, リソースの動作
name, リソースの動作
on-fail, リソースの動作
provider, リソースのプロパティー
standard, リソースのプロパティー
type, リソースのプロパティー
タイムアウト, リソースの動作
プロパティの削除, クラスターのプロパティの設定と削除
プロパティの設定, クラスターのプロパティの設定と削除
リソース, リソースのプロパティー, リソースを手作業で移動する
オプション
failure-timeout, リソースのメタオプション
is-managed, リソースのメタオプション
migration-threshold, リソースのメタオプション
multiple-active, リソースのメタオプション
priority, リソースのメタオプション
requires, リソースのメタオプション
resource-stickiness, リソースのメタオプション
target-role, リソースのメタオプション
グループ, リソースグループ
プロパティ
id, リソースのプロパティー
provider, リソースのプロパティー
standard, リソースのプロパティー
type, リソースのプロパティー
制約
ルール, Pacemaker ルール
属性の式, ノード属性の式
日付と時刻の式, 時刻と日付ベースの式
日付の詳細, 日付の詳細
期間, 期間
移動, リソースを手作業で移動する
リソースの
クリーンアップ, クラスターリソースのクリーンアップ
有効化, クラスターリソースの有効化と無効化
無効化, クラスターリソースの有効化と無効化
移動, リソースを手作業で移動する
リソースのクローン, リソースのクローン
リソースの場所の確定, ルールを使用したリソースの場所の確定
リソースオプション, リソースのメタオプション
ルール, Pacemaker ルール
boolean-op, Pacemaker ルール
role, Pacemaker ルール
score-attribute, Pacemaker ルール
スコア, Pacemaker ルール
ルールで確定, ルールを使用したリソースの場所の確定
他のリソースに相対的となる場所, リソースのコロケーション
使用率属性, 使用と配置ストラテジー
値, ノード属性の式
制約の式, ノード属性の式
制約
Date Specification日付の詳細
yeardays, 日付の詳細
ルール, Pacemaker ルール
boolean-op, Pacemaker ルール
role, Pacemaker ルール
score-attribute, Pacemaker ルール
スコア, Pacemaker ルール
属性の式, ノード属性の式
operation, ノード属性の式
type, ノード属性の式
値, ノード属性の式
属性, ノード属性の式
日付と時刻の式, 時刻と日付ベースの式
end, 時刻と日付ベースの式
operation, 時刻と日付ベースの式
start, 時刻と日付ベースの式
日付の詳細, 日付の詳細
hours, 日付の詳細
id, 日付の詳細
monthdays, 日付の詳細
months, 日付の詳細
moon, 日付の詳細
weekdays, 日付の詳細
weeks, 日付の詳細
weekyears, 日付の詳細
years, 日付の詳細
期間, 期間
制約のルール, Pacemaker ルール
制約の式, ノード属性の式, 時刻と日付ベースの式
制約の式n, 時刻と日付ベースの式
制約ルール, Pacemaker ルール
削除
クラスターのプロパティ, クラスターのプロパティの設定と削除
動作
プロパティ
id, リソースの動作
name, リソースの動作
on-fail, リソースの動作
動作プロパティ, リソースの動作
場所の制約, 基本的な場所の制約
多状態, 多状態のリソース: 複数モードのリソース
属性, ノード属性の式
制約の式, ノード属性の式
属性の式, ノード属性の式
operation, ノード属性の式
type, ノード属性の式
値, ノード属性の式
属性, ノード属性の式
新機能と変更点, 新機能と変更点
日付と時刻の式, 時刻と日付ベースの式
end, 時刻と日付ベースの式
operation, 時刻と日付ベースの式
start, 時刻と日付ベースの式
日付の詳細, 日付の詳細
hours, 日付の詳細
id, 日付の詳細
monthdays, 日付の詳細
months, 日付の詳細
moon, 日付の詳細
weekdays, 日付の詳細
weeks, 日付の詳細
weekyears, 日付の詳細
yeardays, 日付の詳細
years, 日付の詳細
時刻ベースの式, 時刻と日付ベースの式
期間, 期間
概要
新機能と変更点, 新機能と変更点
状態
表示, クラスターの状態表示
移動する, リソースを手作業で移動する
統合フェンスデバイス
ACPI の設定, 統合フェンスデバイスで使用する ACPI の設定
設定
クラスターのプロパティ, クラスターのプロパティの設定と削除
起動順序, 順序の制約
配置ストラテジー, 使用と配置ストラテジー
順序の制約, 順序の制約
順序付け, 順序の制約

K

kind, 順序の制約
Order Constraints, 順序の制約

M

maintenance-mode, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
master-max, 多状態のリソース: 複数モードのリソース
Multi-State Option, 多状態のリソース: 複数モードのリソース
master-node-max, 多状態のリソース: 複数モードのリソース
Multi-State Option, 多状態のリソース: 複数モードのリソース
migration-limit, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
migration-threshold, リソースのメタオプション
リソースオプション, リソースのメタオプション
monthdays, 日付の詳細
日付の詳細, 日付の詳細
months, 日付の詳細
日付の詳細, 日付の詳細
moon, 日付の詳細
日付の詳細, 日付の詳細
Multi-State
Option
master-max, 多状態のリソース: 複数モードのリソース
master-node-max, 多状態のリソース: 複数モードのリソース
Property
id, 多状態のリソース: 複数モードのリソース
Multi-State Option, 多状態のリソース: 複数モードのリソース
Multi-State Property, 多状態のリソース: 複数モードのリソース
multiple-active, リソースのメタオプション
リソースオプション, リソースのメタオプション
multiplier, 接続状態変更によるリソースの移動
Ping リソースオプション, 接続状態変更によるリソースの移動
Multistate, 多状態の粘着性 (Stickiness)

S

score, 基本的な場所の制約
Location Constraints, 基本的な場所の制約
制約ルール, Pacemaker ルール
score-attribute, Pacemaker ルール
制約ルール, Pacemaker ルール
shutdown-escalation, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
standard, リソースのプロパティー
リソース, リソースのプロパティー
start, 時刻と日付ベースの式
制約の式, 時刻と日付ベースの式
start-failure-is-fatal, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
stonith-action, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
stonith-enabled, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
stonith-timeout, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
stop-all-resources, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
stop-orphan-actions, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
stop-orphan-resources, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
symmetric-cluster, クラスタープロパティとオプションの要約
クラスターオプション, クラスタープロパティとオプションの要約
symmetrical, 順序の制約
Order Constraints, 順序の制約

W

weekdays, 日付の詳細
日付の詳細, 日付の詳細
weeks, 日付の詳細
日付の詳細, 日付の詳細
weekyears, 日付の詳細
日付の詳細, 日付の詳細

Y

yeardays, 日付の詳細
日付の詳細, 日付の詳細
years, 日付の詳細
日付の詳細, 日付の詳細

法律上の通知

Copyright © 2018 Red Hat, Inc.
This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.