4.13. クラスターのスケールダウンをサポートするためのメッセージ移行の有効化


クラスター内のブローカーの数をスケールダウンして、クラスター内の残りの Pod にメッセージを移行できるようにするには、メッセージ移行を有効にする必要があります。

メッセージ移行が有効になっているクラスターをスケールダウンすると、スケールダウンコントローラーがメッセージ移行プロセスを管理します。

4.13.1. メッセージ移行プロセスの手順

メッセージ移行プロセスは、次の手順を実行します。

  1. デプロイメントの意図的なスケールダウンにより、デプロイメント内のブローカー Pod がシャットダウンすると、Operator は自動的にスケールダウンカスタムリソースをデプロイして、メッセージ移行の準備をします。
  2. 孤立した永続ボリューム (PV) の有無を確認するには、縮小コントローラーはボリューム要求上の序数を探します。コントローラーは、ボリューム要求の序数を、プロジェクトの StatefulSet (ブローカークラスター) で実行されているブローカー Pod と比較します。

    ボリューム要求の序数がブローカー Pod の序数よりも高くなる場合、スケールダウンコントローラーは、その序数のブローカー Pod がシャットダウンされ、メッセージングデータが別のブローカー Pod に移行する必要があるかどうかを判断します。

  3. 縮小コントローラーはドレイン Pod を起動します。ドレイン Pod は、クラスター内の他のライブブローカー Pod の 1 つに接続し、メッセージをそのライブブローカー Pod に移行します。

以下の図は、スケールダウンコントローラー (ドレインコントローラーとしても知られる) がメッセージを稼働中のブローカー Pod に移行する方法を示しています。

メッセージを動作中のブローカー Pod に正常に移行した後、ドレイン Pod はシャットダウンし、スケールダウンコントローラーは孤立した PV の PVC を削除します。PV は Released の状態に戻ります。

注記

PV の回収ポリシーが retain に設定されている場合、PV を削除して再作成するまで、その PV を別の Pod で使用することはできません。たとえば、クラスターをスケールダウンした後にスケールアップした場合、PV を削除して再作成するまで、起動した Pod で PV を使用することはできません。

関連情報

4.13.2. メッセージ移行の有効化

ActiveMQArtemis カスタムリソース (CR) でメッセージ移行を有効にすることができます。

前提条件

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

手順

  1. ブローカーデプロイメントの CR インスタンスを編集します。

    1. OpenShift コマンドラインインターフェイスの使用:

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift Container Platform にログインします。
      2. デプロイメントの CR を編集します。

         oc edit ActiveMQArtemis <CR instance name> -n <namespace>
        Copy to Clipboard Toggle word wrap
    2. OpenShift Container Platform Web コンソールの使用

      1. ブローカーデプロイメントのプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift Container Platform にログインします。
      2. 左側のペインで、Administration Custom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. ブローカーデプロイメントのインスタンスをクリックします。
      6. YAML タブをクリックします。

        コンソールで、YAML エディターが開き、CR インスタンスを編集できるようになります。

  2. CR の deploymentPlan セクションで、messageMigration 属性を追加し、true に設定します。設定されていない場合は、persistenceEnabled 属性を追加し、true に設定します。以下に例を示します。

    spec:
      deploymentPlan:
        messageMigration: true
        persistenceEnabled: true
      ...
    Copy to Clipboard Toggle word wrap

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

  3. CR を保存します。
  4. (オプション) 以下の手順を実行してクラスターをスケールダウンし、メッセージ移行プロセスを表示します。

    1. 既存のブローカーデプロイメントで、実行中の Pod を確認します。

      $ oc get pods
      Copy to Clipboard Toggle word wrap

      以下のような出力が表示されます。

      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
      Copy to Clipboard Toggle word wrap

      上記の出力では、3 つの Pod が実行されていることが示されています。1 つはブローカー Operator 自体用で、デプロイメントの各ブローカーに個別の Pod が実行されていることを示しています。

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

      1. Pod ex-aao-ss-0 にクラスター IP アドレスが 172.17.0.6 である場合は、以下のコマンドを実行します。

        $ /opt/amq/bin/artemis producer --url tcp://172.17.0.6:61616 --user admin --password admin
        Copy to Clipboard Toggle word wrap
    3. Pod ex-aao-ss-1 にクラスター IP アドレスが 172.17.0.7 である場合は、以下のコマンドを実行します。

      $ /opt/amq/bin/artemis producer --url tcp://172.17.0.7:61616 --user admin --password admin
      Copy to Clipboard Toggle word wrap

      前述のコマンドは、各ブローカーに TEST というキューを作成し、各キューに 1000 個のメッセージを追加します。

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

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

        $ oc apply -f deploy/crs/broker_activemqartemis_cr.yaml
        Copy to Clipboard Toggle word wrap

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

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

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat