16.2. ブローカーミラーリングの設定
ブローカー接続を使用して、ブローカーのペア間でメッセージをミラーリングできます。一度にアクティブにできるブローカーは 1 つだけです。
前提条件
- 2 つの稼働中のブローカーがある。
手順
最初のブローカーの
broker.xml
ファイルにbroker-connections
要素を作成します。以下に例を示します。<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC1"> <mirror/> </amqp-connection> </broker-connections>
<hostname>
- 他のブローカーインスタンスのホスト名。
<port>
- 他のホストでブローカーによって使用されるポート。
最初のブローカー上のすべてのメッセージは 2 番目のブローカーにミラーリングされますが、ミラーが作成される前に存在していたメッセージはミラーリングされません。
最初のブローカーでメッセージを同期的にミラーリングして、ミラーリングされたブローカーがディザスターリカバリー用に最新であることを確認する場合は、次の例に示すように、ブローカーの
amqp-connection
要素にsync=true
属性を設定します。同期ミラーリングでは、ブローカーからミラーリングされたブローカーに送信されるメッセージが両方のブローカーのボリュームに同時に書き込まれる必要があります。両方のブローカーで書き込み操作が完了すると、ソースブローカーは書き込みリクエストが完了したことを認識し、制御がクライアントに返されます。
<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror sync="true"/> </amqp-connection> </broker-connections>
注記ミラーリングされたブローカーで書き込みリクエストを完了できない場合、たとえばブローカーが使用できない場合、最新の書き込みリクエストを完了するためにミラーが使用可能になるまで、クライアント接続はブロックされます。
注記この例のブローカー接続名である
DC1
は、$ACTIVEMQ_ARTEMIS_MIRROR_mirror
という名前のキューを作成するために使用されます。キューがそのブローカーで表示されない場合でも、対応するブローカーがこれらのメッセージを受け入れるように設定されていることを確認します。2 番目のブローカーの
broker.xml
ファイルにbroker-connections
要素を作成します。以下に例を示します。<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror/> </amqp-connection> </broker-connections>
2 番目のブローカーでメッセージを同期的にミラーリングする場合は、ブローカーの
amqp-connection
要素にsync=true
属性を設定します。以下に例を示します。<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror sync="true"/> </amqp-connection> </broker-connections>
(オプション) 必要に応じて、ミラーの次のパラメーターを設定します。
queue-removal
-
キューまたはアドレスのどちらかの削除イベントを送信するかどうかを指定します。デフォルト値は
true
です。 message-acknowledgments
-
メッセージ確認応答を送信するかどうかを指定します。デフォルト値は
true
です。 queue-creation
-
キューまたはアドレスのどちらかの作成イベントを送信するかどうかを指定します。デフォルト値は
true
です。
以下に例を示します。
<broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror sync="true" queue-removal="false" message-acknowledgments ="false" queue-creation="false"/> </amqp-connection> </broker-connections>
(オプション) ターゲットミラー上のメッセージを確認するブローカーの再試行をカスタマイズします。
場合によっては、キューメモリーにないメッセージの確認応答がターゲットミラーに届くことがあります。ブローカーがターゲットミラー上のメッセージの確認を再試行するのに十分な時間を確保するために、環境に合わせて次のパラメーターをカスタマイズできます。
- mirrorAckManagerQueueAttempts
-
ブローカーがメモリー内でメッセージを検索しようとする試行の回数。デフォルト値は
5
です。指定回数試行してもメモリー内でメッセージが見つからなかった場合、ブローカーはページファイル内でメッセージを検索します。 - mirrorAckManagerPageAttempts
-
メッセージがメモリー内に見つからなかった場合に、ブローカーがページファイル内でメッセージを検索しようとする試行の回数。デフォルト値は
2
です。 - mirrorAckManagerRetryDelay
- ブローカーがメモリー内で、続いてページファイル内で、確認するメッセージを検索しようとする試行の間隔 (ミリ秒単位)。
これらのパラメーターは、
broker-connections
要素の外部で指定します。以下に例を示します。<mirrorAckManagerQueueAttempts>8</mirrorAckManagerQueueAttempts> <broker-connections> <amqp-connection uri="tcp://<hostname>:<port>" name="DC2"> <mirror/> </amqp-connection> </broker-connections>
(オプション) メッセージがターゲットミラー上でページングされる場合に、ブローカーが重複検出情報の書き込みとページファイルへのメッセージの書き込みを調整するようにするには、
mirrorPageTransaction
をtrue
に設定します。mirrorPageTransaction
属性がfalse
(デフォルト) に設定されている場合に、ブローカー間で通信障害が発生すると、まれに重複したメッセージがターゲットミラーに書き込まれることがあります。このパラメーターを
true
に設定すると、ブローカーのメモリー使用量が増加します。- 「マルチサイトの耐障害性のあるメッセージングシステムでのクライアントの設定」 に記載されている説明を使用してクライアントを設定します。これはブローカー接続でなく、共有ストレージはありません。
Red Hat は、ミラー設定で両方のブローカーからのメッセージを消費するクライアントアプリケーションをサポートしていません。クライアントが両方のブローカーでメッセージを消費しないようにするには、いずれかのブローカーでクライアントアクセプターを無効にします。