[MQ 9.2.3 Jul 2021][Continuous Delivery][IBM Cloud Pak for Integration]

ネイティブ HA

ネイティブ HA は、クラウド・ブロック・ストレージでの使用に適した、 IBM® MQ 用のネイティブ (組み込み) 高可用性ソリューションです。

ネイティブ HA 構成によって、高可用性キュー・マネージャーを実行できます。このキュー・マネージャーは、リカバリー可能な MQ データ (メッセージなど) のレプリケーションをストレージの複数セットにまたがって行うことにより、ストレージの障害によるデータの損失を防ぎます。 このキュー・マネージャーには実行中のインスタンスが複数あり、そのうちの 1 つがリーダーになります。他のキュー・マネージャーは、障害発生時にすぐにテークオーバーできるように準備を整えているので、キュー・マネージャーとメッセージへのアクセスが最大化されます。

ネイティブ HA 構成は、それぞれがキュー・マネージャーのインスタンスを持つ 3 つの Kubernetes ポッドで構成されます。 1 つのインスタンスがアクティブ・キュー・マネージャーとして機能し、メッセージはそこで処理されてリカバリー・ログに書き込まれます。 そのリカバリー・ログへの書き込みが行われると、アクティブ・キュー・マネージャーはレプリカと呼ばれる他の 2 つのインスタンスにデータを送信します。 各レプリカは、個別に所有するリカバリー・ログへの書き込みを行い、データを認知し、複製されたリカバリー・ログからキュー・データをそれぞれ更新します。 アクティブ・キュー・マネージャーを実行しているポッドに障害が発生すると、キュー・マネージャーのレプリカ・インスタンスの 1 つがアクティブの役割を引き継ぎ、このインスタンスにある最新データで運用が行われます。

ログ・タイプは「複製ログ」と呼ばれます。 複製されたログは基本的にリニア・ログであり、自動ログ管理と自動メディア・イメージが有効になっています。 ログのタイプを参照してください。 リニア・ログの管理に使用するものと同じ手法を使用して、複製されたログを管理します。

ネットワーク・トラフィックを扱う準備ができている唯一のポッドであると識別された現行アクティブ・インスタンスに TCP/IP クライアント接続をルーティングするために、Kubernetes サービスが使用されます。 この処理を行うために、クライアント・アプリケーションがさまざまなインスタンスを認識しておく必要はありません。

3 つのポッドを使用すると、スプリット・ブレーンという状態になる可能性が大幅に減少します。 2 ポッドの高可用性システムでは、2 つのポッド間の接続が切断されるとスプリット・ブレーンが発生する可能性があります。 接続のない状態だと、両方のポッドでキュー・マネージャーが同時に実行され、別々のデータが累積される可能性があります。 そうなると、接続が復元された時に 2 つの別々のバージョンのデータ (「スプリット・ブレーン」) が存在することになるので、保持するデータ・セットと破棄するデータ・セットを決定するために手操作による介入が必要になります。

ネイティブ HA では、スプリット・ブレーン状態を回避するために、クォーラムを設定した 3 ポッド・システムを使用します。 1 つのポッドが他の 1 つ以上のポッドと通信できる場合は、その通信可能なポッド同士がクォーラムを形成します。 キュー・マネージャーは、クォーラムを形成するポッド上にある場合にのみ、アクティブ・インスタンスになることができます。 キュー・マネージャーは、他の 1 つ以上のポッドと接続していないポッド上ではアクティブになることはできないので、2 つのアクティブ・インスタンスが同時に存在することは絶対にありません。
  • 1 つのポッドで障害が発生しても、他の 2 つのポッドのいずれかにあるキュー・マネージャーが引き継ぐことができます。 2 つのポッドで障害が発生すると、残りの 1 つのポッドにあるキュー・マネージャーはアクティブ・インスタンスになることができません。そのポッドはクォーラムを形成していないからです (その残りのポッドは、他の 2 つのポッドで障害が発生したのか、それとも自分の接続が失われていて他の 2 つのポッドはまだ実行されているのかの違いを判別できません)。
  • 1 つのポッドが接続を失うと、そのポッドにあるキュー・マネージャーはアクティブになることができません。そのポッドはクォーラムを形成していないからです。 残りの 2 つのポッドでは、いずれか 1 つのキュー・マネージャーが引き継ぎを実行できます。クォーラムを形成しているからです。 すべてのポッドが接続を失うと、どのポッドのキュー・マネージャーもアクティブになることができません。どのポッドもクォーラムを形成していないからです。

アクティブ・ポッドに障害が発生し、その後復旧すると、レプリカの役割でグループに再参加することができます。

以下の図に、1 つのキュー・マネージャーの 3 つのインスタンスが 3 つのコンテナー内にデプロイされている、標準的なデプロイメントを示します。

図1: ネイティブ HA 構成の例
それぞれがキュー・マネージャーを実行している 3 つのポッドを示しています。