[IBM MQ Advanced][Linux]

RDQM 高可用性

RDQM (複製データ・キュー・マネージャー) は、 Red Hat® Enterprise Linux® for x86-64 プラットフォームで使用可能な高可用性ソリューションです。

RDQM 構成は、高可用性 (HA) グループとして構成されている 3 つのサーバーから成り、その個々にキュー・マネージャーのインスタンスがあります。 インスタンスの 1 つは実行中のキュー・マネージャーで、データを他の 2 つのインスタンスに同期的に複製します。 このキュー・マネージャーを実行しているサーバーに障害が発生すると、別のキュー・マネージャーのインスタンスが開始され、このインスタンスには操作に使用する現行データがあります。 キュー・マネージャーのインスタンスは 3 つとも浮動 IP アドレスをオプションで共有できるので、クライアントの構成時に使用する必要がある IP アドレスは 1 つだけです。 ネットワークの問題のために HA グループがパーティション化されていても、同時に実行できるキュー・マネージャーのインスタンスは 1 つだけです。 キュー・マネージャーを実行しているサーバーは「1 次」と呼ばれ、その他の 2 つのサーバーはどちらも「2 次」と呼ばれます。

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

RDQM では、スプリット・ブレーン状態を回避するために、クォーラムを設定した 3 ノード・システムを使用します。 1 つのノードが他の 1 つ以上のノードと通信できる場合は、その通信可能なノード同士がクォーラムを形成します。 キュー・マネージャーは、クォーラムを形成するノードでしか実行できません。 他の 1 つ以上のノードと接続していないノードではキュー・マネージャーを実行できないので、接続の切れた 2 つのノードでキュー・マネージャーが同時に実行されることは絶対にありません。
  • 1 つのノードで障害が発生しても、他の 2 つのノードのいずれかでキュー・マネージャーを実行できます。 2 つのノードで障害が発生すると、残りの 1 つのノードではキュー・マネージャーを実行できません。そのノードはクォーラムを形成していないからです (残りのノードは、他の 2 つのノードで障害が失敗したのか、それとも他の 2 つのノードは実行中だけれども接続が失われたのかを判別できません)。
  • 1 つのノードが接続を失うと、そのノードではキュー・マネージャーを実行できません。そのノードはクォーラムを形成していないからです。 残りの 2 つのノードのいずれかではキュー・マネージャーを実行できます。その 2 つがクォーラムを形成しているからです。 すべてのノードが接続を失うと、どのノードでもキュー・マネージャーを実行できません。どのノードもクォーラムを形成していないからです。
注: IBM® MQ Console は、複製データ・キュー・マネージャーをサポートしていません。 複製データ・キュー・マネージャーで IBM MQ Explorer を使用することはできますが、RDQM 機能に固有の情報は表示されません。

3 つのノードのグループ構成は、Pacemaker が実施します。 3 つのノード間の複製は、DRBD が実施します。 (DRBD については、「 https://clusterlabs.org/pacemaker/ 」の Pacemaker および「 https://docs.linbit.com/docs/users-guide-9.0/ 」を参照してください。)

キュー・マネージャー・データのバックアップで説明されているプロセスを使用して、複製データ・キュー・マネージャーをバックアップできます。 このキュー・マネージャーを停止してバックアップしても、 RDQM 構成で実行されているノード・モニターには影響を与えません。

以下の図に、HA グループ内の 3 つの各ノード上で 1 つずつ RDQM が実行されている標準的なデプロイメントを示します。

図1: 3 つの RDQM がある HA グループの例
3 つのノードを表示し、それぞれが 1 つの RDQM を実行

以下の図では、Node3 で障害が発生し、Pacemaker リンクが失われ、キュー・マネージャー QM3 が Node2 で実行されています。

図2: Node3 で障害が発生した後の例
Node3 に障害が発生した後のシステム例を示します。
注: キュー・マネージャーが別のノードにフェイルオーバーすると、フェイルオーバー時の状態が保持されます。 実行中のキュー・マネージャーが開始され、停止されたキュー・マネージャーは停止したままです。