第10章 高可用性とフェイルオーバー
クラスター構成の作成後に、ブローカーインスタンス同士をリンクさせて高可用性 (HA) ペアを形成できます。HA ペアは、クライアントリクエストに対応するマスターブローカーと、マスターがクライアントと通信できなくなった場合にマスターを置き換える 1 つ以上のスレーブブローカーで構成されます。
AMQ Broker 7 では、HA にクラスター構成が必要になります。ブローカークラスターは、非 HA ブローカーのセットまたは HA ペアのいずれかで構成されます。
AMQ Broker 7 は以下の HA ポリシーを提供します。
- レプリケーション
- レプリケーションでは、ネットワークを通じてマスターとスレーブブローカー間でデータを同期します。レプリケーションにより、障害発生後にマスターブローカーがオンラインに戻ると、制御をマスターに戻すフェイルバックが可能で、クライアントはマスターにフェイルバックすることができます。複数のマスターブローカーが 1 つ以上のスレーブブローカーを共有し、マスターブローカーと同じ JVM にスレーブブローカーが共存する HA グループを作成することもできます。
7.5 以降では、以前はレプリケーション HA ポリシーで利用できたネットワークの ping 送信は非推奨機能となりました。ネットワークの ping 送信は、復元不可能なメッセージ損失の原因となるネットワーク分離の問題からブローカークラスターを保護することができません。この機能は今後のリリースで削除されます。Red Hat は、ネットワークの ping 送信を使用する既存の AMQ Broker デプロイメントを引き続きサポートします。ただし、Red Hat では、新規デプロイメントでのネットワーク ping 送信の使用を推奨しません。高可用性のためのブローカークラスターの設定およびネットワーク分離の問題の回避についてのガイドラインは、「Implementing high availability」を参照してください。
- 共有ストア
共有ストアは、マスターとスレーブブローカーがメッセージングデータを共有する場所を提供します。レプリケーションに比べて以下の利点を提供するため、共有ストアを使用することは一般的に推奨されます。
- パフォーマンス (共有ストアはより高速です)
- スプリットブレインの問題なし
クォーラムを維持するために必要なブローカー数が少ない (レプリケーショでは少なくとも 3 つが必要です)
レプリケーションと同様に、障害発生後に制御をマスターブローカーに戻すフェイルバックが可能で、クライアントはマスターにフェイルバックすることができます。マスターブローカーに複数のスレーブブローカーを設定し、スレーブブローカーを共存させることができます。
HA およびフェイルオーバーに関する詳細は、『Configuring AMQ Broker』の「Implementing high availability」を参照してください。
10.1. 高可用性およびフェイルオーバーの変更
マスターの決定方法とブローカー接続がアクティブになるタイミングに関して、AMQ Broker 7 での高可用性は AMQ 6 とは異なります。
AMQ Broker 7 では、マスターロールおよびスレーブロールは固定です。マスターであるブローカーインスタンスを指定し、特定の条件下でのみスレーブがアクティブになります。AMQ 6 では、マスターロールおよびスレーブロールは固定ではありませんでした。代わりに、HA ペアのブローカーはロックについて競争し、勝者がマスターになりました。
AMQ Broker 7 では、HA のペアでは、スレーブブローカーが非アクティブであってもブローカーのアクセプターがアクティブになります。AMQ 6 では、スレーブブローカーがアクティブになるまでブローカーのトランスポートコネクターはアクティブになりませんでした。