4.6.3. スケールダウン時のメッセージの移行

ブローカーデプロイメントの縮小時にメッセージを移行するには、メインブローカーカスタムリソース (CR) を使用してメッセージの移行を有効にします。AMQ Broker Operator は、クラスター化されたブローカーデプロイメントをスケールダウンする際に、専用のスケールダウンコントローラーを自動的に実行し、メッセージ移行を実行します。

メッセージ移行を有効にすると、Operator 内のスケールダウンコントローラーがブローカー Pod のシャットダウンを検出し、ドレイン Pod を開始し、メッセージ移行を実行します。ドレイン Pod は、クラスター内の他のライブブローカー Pod の 1 つに接続し、メッセージをそのライブブローカー Pod に移行します。移行が完了すると、スケールダウンコントローラーがシャットダウンします。

注記
  • 縮小コントローラーは、単一の OpenShift プロジェクト内でのみ機能します。コントローラーは、別のプロジェクトのブローカー間でメッセージを移行できません。
  • ブローカーデプロイメントを 0 (ゼロ) にスケールダウンする場合、メッセージングデータを移行できる稼働中のブローカー Pod がないため、メッセージ移行は行われません。ただし、デプロイメントをゼロブローカーにスケールダウンし、元のデプロイメントに含まれていた一部のブローカーのみに戻っても、シャットダウンされたブローカーのドレイン Pod が起動します。

以下の手順の例は、スケールダウンコントローラーの動作を示しています。

前提条件

手順

  1. 当初ダウンロードおよび抽出した Operator リポジトリーの deploy/crs ディレクトリーで、メインブローカー CR の broker_activemqartemis_cr.yaml を開きます。
  2. メインブローカー CR では、messageMigration および persistenceEnabledtrue に設定します。

    これらの設定は、クラスターブローカーデプロイメントのサイズを後でスケールダウンすると、Operator はスケールダウンコントローラーが自動的に起動し、メッセージを実行中のブローカー Pod に移行することができます。

  3. 既存のブローカーデプロイメントで、実行中の 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 が実行されていることを示しています。

  4. 各 Pod にログインし、各ブローカーにメッセージを送信します。

    1. 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
    2. 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 個のメッセージを追加します。

  5. クラスターを 2 つのブローカーにスケールダウンします。

    1. メインブローカー CR broker_activemqartemis_cr.yaml を開きます。
    2. CR で、deploymentPlan.size1 に設定します。
    3. コマンドラインで変更を適用します。

      $ oc apply -f deploy/crs/broker_activemqartemis_cr.yaml

      Pod ex-aao-ss-1 がシャットダウンを開始したことを確認します。縮小コントローラーは、同じ名前の新しいドレイン Pod を起動します。このドレイン Pod は、ブローカー Pod ex-aao-ss-1 からクラスター内の他のブローカー Pod にすべてのメッセージを移行した後にシャットダウンします (ex-aao-ss-0)。

  6. ドレイン Pod がシャットダウンされたら、ブローカー Pod ex-aao-ss-0TEST キューのメッセージ数を確認します。キューのメッセージ数が 2000 であることを確認できます。これは、ドレイン Pod がシャットダウンするブローカー Pod から 1000 個のメッセージを正常に移行しました。