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

クラスターが複数のサイトにまたがる場合は、サイト間のネットワーク接続の問題が原因でスプリットブレインが発生する可能性があります。接続が切断されたときに、別のサイトのノードで障害が発生したのか、またはサイト間の接続に失敗した状態で別サイトのノードが機能しているかどうかをノードが判断する方法がありません。さらに、同時を維持するには離れすぎている 2 つのサイト間で高可用性サービスを提供することが問題になることがあります。

この問題に対応するため、Pacemaker は、Booth クラスターチケットマネージャーを使用して、複数のサイトにまたがる高可用性クラスターを構成する機能を完全にサポートしています。

27.1. Booth クラスターチケットマネージャーの概要

Booth チケットマネージャー は、特定サイトのクラスターノードを接続するネットワークとは異なる物理ネットワークで実行することを目的とした分散サービスです。それは、サイトの通常のクラスターにある別のゆるいクラスターである Booth フォーメーション を生成します。この集約通信層は、個別の Booth チケットに対して合意ベースの決定プロセスを促進します。

Booth チケット は、Booth フォーメーションのシングルトンで、時間に依存する移動可能な承認の単位を表します。実行には特定のチケットを要求するようにリソースを設定できます。これにより、1 つまたは複数のチケットが付与されているサイトで、リソースは一度に 1 つのサイトでのみ実行されるようになります。

Booth フォーメーションは、複数のサイトで実行しているクラスターで構成され、元のクラスターがすべて独立しているオーバーレイクラスターと考えることができます。チケット付与の有無についてクラスターと通信するのは Booth サービスで、Pacemaker のチケット制約に基づいてクラスターでリソースを実行するかどうかを判断するのは Pacemaker です。これは、チケットマネージャーを使用する場合に、各クラスターが独自のリソースと共有リソースを実行できることを示しています。たとえば、リソース A、B、および C は 1 つのクラスターでのみ実行され、リソース D、E、および F は別のクラスターでのみ実行されるとします。リソース G および H は、チケットによって決定されたこの 2 つのクラスターのいずれかで実行されます。また、別のチケットにより、この 2 つのクラスターのいずれかで実行できるリソース J を追加することもできます。

27.2. Pacemaker を用いたマルチサイトクラスターの設定

以下の手順は、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-node で、IP アドレスは 192.168.99.100 です。
  • この設定が使用する Booth チケットの名前は apacheticket です。

ここで使用するコマンド例は、Apache サービスのクラスターリソースが、各クラスターの apachegroup リソースグループの一部として設定されていることを前提としています。各クラスターの Pacemaker インスタンスは独立しているため、このリソースのチケット制約を設定するために、各クラスターでリソースとリソースグループが同じである必要はありませんが、これはフェールオーバーの一般的な事例になります。

設定手順のどの時点でも、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. pcs パッケージ、booth-core パッケージ、および booth-arbitrator パッケージを仲裁ノードにインストールします。

    [root@arbitrator-node ~]# yum install -y pcs booth-core booth-arbitrator
  3. firewalld デーモンを実行している場合は、両方のクラスターのすべてのノードと arbitrator ノードで次のコマンドを実行し、Red Hat High Availability Add-On で必要なポートを有効にします。

    # firewall-cmd --permanent --add-service=high-availability`
    # firewall-cmd --add-service=high-availability`

    ローカルの状況に合わせて開くポートを変更することが必要になる場合があります。Red Hat High-Availability Add-On で必要なポートの詳細は、「High Availability Add-On のポートの有効化」を参照してください。

  4. 1 つのクラスターの 1 つのノードで Booth 設定を作成します。各クラスターおよび仲裁ノードに指定するアドレスは 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 つだけ使用します。各チケットが別の 1 つ以上のリソースに関連付けられる、より複雑な事例では追加のチケットを作成します。

    [cluster1-node1 ~] # pcs booth ticket add apacheticket
  6. 現在のクラスターのすべてのノードに対して Booth 設定を同期します。

    [cluster1-node1 ~] # pcs booth sync
  7. 仲裁ノードから、Booth 設定を仲裁者へプルします。この作業をこれまで行ったことがない場合は、最初に、設定をプルするノードに pcs を認証する必要があります。

    [arbitrator-node ~] # pcs host auth cluster1-node1
    [arbitrator-node ~] # pcs booth pull cluster1-node1
  8. Booth 設定を別のクラスターにプルし、そのクラスターのすべてのノードを同期します。仲裁ノードでこの作業を行ったことがない場合は、最初に、設定をプルするノードに pcs を認証する必要があります。

    [cluster2-node1 ~] # pcs host auth cluster1-node1
    [cluster2-node1 ~] # pcs booth pull cluster1-node1
    [cluster2-node1 ~] # pcs booth sync
  9. 仲裁ノードで 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

チケットは、いつでも (この手順の完了後でも) 追加および削除できます。ただし、チケットを追加または削除した後、この手順の説明どおりに、他のノード、クラスター、および仲裁ノードに対して構成ファイルを同期し、チケットを付与する必要があります。

Booth 設定ファイル、チケット、およびリソースのクリーンアップや削除に使用できるその他の Booth 管理コマンドに関する情報は、pcs booth コマンドの PCS ヘルプ画面を参照してください。


このページには機械翻訳が使用されている場合があります (詳細はこちら)。