4.9.3. スケールダウン時のメッセージの移行
ブローカーデプロイメントの縮小時にメッセージを移行するには、メインブローカーカスタムリソース (CR) を使用してメッセージの移行を有効にします。AMQ Broker Operator は、クラスター化されたブローカーデプロイメントをスケールダウンする際に、専用のスケールダウンコントローラーを自動的に実行し、メッセージ移行を実行します。
メッセージ移行を有効にすると、Operator 内のスケールダウンコントローラーがブローカー Pod のシャットダウンを検出し、ドレイン Pod を開始し、メッセージ移行を実行します。ドレイン Pod は、クラスター内の他のライブブローカー Pod の 1 つに接続し、メッセージをそのライブブローカー Pod に移行します。移行が完了すると、スケールダウンコントローラーがシャットダウンします。
- 縮小コントローラーは、単一の OpenShift プロジェクト内でのみ機能します。コントローラーは、別のプロジェクトのブローカー間でメッセージを移行できません。
- ブローカーデプロイメントを 0 (ゼロ) にスケールダウンする場合、メッセージングデータを移行できる稼働中のブローカー Pod がないため、メッセージ移行は行われません。ただし、デプロイメントをゼロブローカーにスケールダウンし、元のデプロイメントに含まれていた一部のブローカーのみに戻っても、シャットダウンされたブローカーのドレイン Pod が起動します。
以下の手順の例は、スケールダウンコントローラーの動作を示しています。
前提条件
- 基本的なブローカーデプロイメントがすでにある。「基本的なブローカーインスタンスのデプロイ」 を参照してください。
- メッセージの移行の仕組みを理解している。詳細は、「メッセージの移行」 を参照してください。
手順
-
当初ダウンロードおよび抽出した Operator リポジトリーの
deploy/crs
ディレクトリーで、メインブローカー CR のbroker_activemqartemis_cr.yaml
を開きます。 メインブローカー CR では、
messageMigration
およびpersistenceEnabled
をtrue
に設定します。これらの設定は、クラスターブローカーデプロイメントのサイズを後でスケールダウンすると、Operator はスケールダウンコントローラーが自動的に起動し、メッセージを実行中のブローカー Pod に移行することができます。
既存のブローカーデプロイメントで、実行中の Pod を確認します。
$ oc get pods
以下のような出力が表示されます。
activemq-artemis-operator-8566d9bf58-9g25l 1/1 Running 0 3m38s ex-aao-ss-0 1/1 Running 0 112s ex-aao-ss-1 1/1 Running 0 8s
上記の出力では、3 つの Pod が実行されていることが示されています。1 つはブローカー Operator 自体用で、デプロイメントの各ブローカーに個別の Pod が実行されていることを示しています。
各 Pod にログインし、各ブローカーにメッセージを送信します。
Pod
ex-aao-ss-0
にクラスター IP アドレスが172.17.0.6
である場合は、以下のコマンドを実行します。$ /opt/amq-broker/bin/artemis producer --url tcp://172.17.0.6:61616 --user admin --password admin
Pod
ex-aao-ss-1
にクラスター IP アドレスが172.17.0.7
である場合は、以下のコマンドを実行します。$ /opt/amq-broker/bin/artemis producer --url tcp://172.17.0.7:61616 --user admin --password admin
前述のコマンドは、各ブローカーに
TEST
というキューを作成し、各キューに 1000 個のメッセージを追加します。
クラスターを 2 つのブローカーにスケールダウンします。
-
メインブローカー CR
broker_activemqartemis_cr.yaml
を開きます。 -
CR で、
deploymentPlan.size
を1
に設定します。 コマンドラインで変更を適用します。
$ oc apply -f deploy/crs/broker_activemqartemis_cr.yaml
Pod
ex-aao-ss-1
がシャットダウンを開始したことを確認します。縮小コントローラーは、同じ名前の新しいドレイン Pod を起動します。このドレイン Pod は、ブローカー Podex-aao-ss-1
からクラスター内の他のブローカー Pod にすべてのメッセージを移行した後にシャットダウンします (ex-aao-ss-0
)。
-
メインブローカー CR
-
ドレイン Pod がシャットダウンされたら、ブローカー Pod
ex-aao-ss-0
のTEST
キューのメッセージ数を確認します。キューのメッセージ数が 2000 であることを確認できます。これは、ドレイン Pod がシャットダウンするブローカー Pod から 1000 個のメッセージを正常に移行しました。