第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 ノードは、IP アドレスが 192.168.99.100 の
arbitrator-node
です。 - この設定が使用する Booth チケットの名前は
apacheticket
です。
上記のコマンド例は、Apache サービスのクラスターリソースが、各クラスターの
apachegroup
リソースグループの一部として設定されていることを前提としています。各クラスターの Pacemaker インスタンスは独立しているため、このリソースのチケット制約を設定するために、各クラスターでリソースとリソースグループが同じである必要はありませんが、これはフェイルオーバーの一般的な事例になります。
クラスターで Apache サービスを設定するクラスター設定の完全な手順は、『High Availability Add-On の管理』 の例を参照してください。
設定手順のどの時点でも、pcs booth config コマンドを実行すると、現在のノードまたはクラスターの Booth 設定を表示できます。また、pcs booth status コマンドを実行すると、ローカルノードの現在の Booth ステータスを表示できます。
- 両方のクラスター
の各ノードに booth サイト
の 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
pcs
パッケージ、booth-core
パッケージ、およびbooth-arbitrator
パッケージを arbitrator ノードにインストールします。[root@arbitrator-node ~]#
yum install -y pcs booth-core booth-arbitrator
- 9929/tcp ポートと 9929/udp ポートがすべてのクラスターノードと仲裁ノードで解放されていることを確認します。たとえば、両方のクラスターのすべてのノードと仲裁ノードで次のコマンドを実行すると、そのノードの 9929/tcp ポートおよび 9929/udp ポートにアクセスできます。
#
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
この手順自体により、任意のマシンがノード上の 9929 ポートにアクセスできることに注意してください。お使いのサイトで、ノードが必要なノードに対してのみ開いていることを確認する必要があります。 - 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
設定ファイルがノードに作成されます。 - Booth 設定のチケットを作成します。このチケットは、このチケットがクラスターに付与された場合のみリソースの実行を許可するリソース抑制を定義するのに使用します。このフェイルオーバー設定手順は基本的な手順で、チケットを 1 つだけ使用します。各チケットが別の 1 つ以上のリソースに関連付けられる、より複雑な事例では追加のチケットを作成します。
[cluster1-node1 ~] #
pcs booth ticket add apacheticket
- 現在のクラスターのすべてのノードに対して Booth 設定を同期します。
[cluster1-node1 ~] #
pcs booth sync
- 仲裁ノードから、Booth 設定を仲裁者へプルします。これをまだ行っていない場合は、まず設定をプルするノードに
pcs
を認証する必要があります。[arbitrator-node ~] #
pcs cluster auth cluster1-node1
[arbitrator-node ~] #pcs booth pull cluster1-node1
- Booth 設定を別のクラスターにプルし、そのクラスターのすべてのノードを同期します。arbitrator ノードの場合と同様に、以前に行っていない場合は、最初に設定をプルするノードに
pcs
を認証する必要があります。[cluster2-node1 ~] #
pcs cluster auth cluster1-node1
[cluster2-node1 ~] #pcs booth pull cluster1-node1
[cluster2-node1 ~] #pcs booth sync
- 仲裁ノードで Booth を開始して有効にします。注記Booth はクラスターで Pacemaker リソースとして実行するため、クラスターのノードで Booth を手動で開始したり有効にしたりしないでください。
[arbitrator-node ~] #
pcs booth start
[arbitrator-node ~] #pcs booth enable
- 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
- 各クラスターに定義したリソースグループにチケット制約を追加します。
[cluster1-node1 ~] #
pcs constraint ticket add apacheticket apachegroup
[cluster2-node1 ~] #pcs constraint ticket add apacheticket apachegroup
次のコマンドを実行すると、現在設定されているチケット制約を表示できます。pcs constraint ticket [show]
- この設定用に作成したチケットを最初のクラスターに付与します。チケットを付与する前にチケット抑制を定義する必要はありません。最初にクラスターにチケットを許可した後、pcs booth ticket revoke コマンドを使用して手動で上書きしない限り、Booth はチケット管理を引き継ぎます。pcs booth 管理コマンドの詳細は、pcs booth コマンドの PCS ヘルプ画面 を参照してください。
[cluster1-node1 ~] #
pcs booth ticket grant apacheticket
チケットは、いつでも (この手順の完了後でも) 追加および削除できます。ただし、チケットを追加または削除した後、この手順の説明どおりに、他のノード、クラスター、および仲裁ノードに対して設定ファイルを同期し、チケットを付与する必要があります。
Booth 設定ファイル、チケット、およびリソースのクリーンアップおよび削除に使用できる Booth 管理コマンドは、pcs booth コマンドの PCS ヘルプ画面を参照してください。