2.8. スケールダウン時のメッセージの移行
ブローカーデプロイメントの縮小時にメッセージを移行するには、メインのブローカーカスタムリソース定義(CRD)を使用してメッセージの移行を有効にします。AMQ Broker Operator は、クラスター化されたブローカーデプロイメントをスケールダウンする際に、専用のスケールダウンコントローラーを実行し、メッセージの移行を実行します。
メッセージ移行を有効にすると、Operator 内のスケールダウンコントローラーがブローカー Pod のシャットダウンを検出し、ドレイン Pod を開始し、メッセージ移行を実行します。ドレイナー Pod はクラスター内の他のライブブローカー Pod のいずれかに接続し、メッセージをそのライブブローカー Pod に移行します。移行が完了すると、スケールダウンコントローラーがシャットダウンします。
縮小コントローラーは、単一の OpenShift プロジェクト内でのみ機能します。コントローラーは、別のプロジェクトのブローカー間でメッセージを移行できません。
ブローカーデプロイメントを 0 (ゼロ) にスケールダウンする場合、メッセージングデータを移行できる稼働中のブローカー Pod がないため、メッセージ移行は行われません。ただし、デプロイメントをゼロブローカーにスケールダウンし、元のデプロイメントに含まれていた一部のブローカーのみに戻っても、シャットダウンされたブローカーのドレイン Pod が起動します。
以下の手順の例は、スケールダウンコントローラーの動作を示しています。
前提条件
- 基本的なブローカーデプロイメントがすでにある。「 基本的なブローカーのデプロイ 」を参照してください。
- メッセージの移行の仕組みを理解している。詳細は、「メッセージの 移行」を参照 してください。
手順
-
最初にダウンロードして展開した Operator リポジトリーの
deploy/crsディレクトリーで、メインブローカー CRbroker_v2alpha1_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 adminPod
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_v2alpha1_activemqartemis_cr.yamlを開きます。 -
CR で、
deploymentPlan.sizeを1に設定します。 コマンドラインで変更を適用します。
$ oc apply -f deploy/crs/broker_v2alpha1_activemqartemis_cr.yamlPod
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 個のメッセージを正常に移行しました。