3.4. Operator ベースのブローカーデプロイメントの作成


3.4.1. 基本的なブローカーインスタンスのデプロイ

以下の手順では、カスタムリソース (CR) インスタンスを使用して基本的なブローカーデプロイメントを作成する方法を説明します。

注記

前提条件

  • AMQ Broker Operator がすでにインストールされている必要があります。

  • Operator がブローカーデプロイメントに使用するブローカーコンテナーイメージを選択する方法を理解している必要があります。詳細は、「Operator によるコンテナーイメージの選択方法」 を参照してください。
  • AMQ Broker 7.3 以降では、新しいバージョンの Red Hat Ecosystem Catalog を使用してコンテナーイメージにアクセスする。この新しいバージョンのレジストリーでは、イメージにアクセスする前に認証されたユーザーである必要がある。本セクションの手順を実行する前に、Red Hat Container Registry Authentication で説明されている手順を完了する必要がある。

手順

Operator が正常にインストールされると、Operator は実行され、CR に関連する変更をリッスンします。以下の手順では、CR インスタンスを使用して基本的なブローカーをプロジェクトにデプロイする方法を説明します。

  1. ブローカーデプロイメントのカスタムリソース (CR) インスタンスの設定を開始します。

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

      1. デプロイメントを作成するプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。

        oc login -u <user> -p <password> --server=<host:port>
      2. ダウンロードした Operator インストールアーカイブの deploy/crs ディレクトリーに含まれる broker_activemqartemis_cr.yaml というサンプル CR ファイルを開きます。
    2. OpenShift Container Platform Web コンソールの使用

      1. デプロイメントを作成するプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
      2. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、Administration Custom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemis をクリックします。

        コンソールで、YAML エディターが開き、CR インスタンスを設定できます。

    基本的なブローカーデプロイメントの場合、設定が以下のように表示される可能性があります。

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 1
        image: placeholder
        requireLogin: false
        persistenceEnabled: true
        journalType: nio
        messageMigration: true

    broker_activemqartemis_cr.yaml サンプル CR ファイルで、image プロパティーが placeholder のデフォルト値に設定されていることを確認します。この値はデフォルトで、image プロパティーによってデプロイメントに使用するブローカーコンテナーイメージが指定されていないことを示します。Operator が使用する適切なブローカーコンテナーイメージを判別する方法については、「Operator によるコンテナーイメージの選択方法」 を参照してください。

    注記

    broker_activemqartemis_cr.yaml サンプル CR は、ex-aao の命名規則を使用します。この命名規則は、CR が AMQ Broker Operator のリソースのになります。AMQ Broker は ActiveMQ Artemis プロジェクトをベースにしています。このサンプル CR をデプロイする場合、生成される StatefulSet は ex-aao-ss の名前を使用します。さらに、デプロイメントのブローカー Pod は StatefulSet 名に基づいて直接使用されます (例: ex-aao-ss-0ex-aao-ss-1 など)。CR のアプリケーション名が StatefulSet のラベルとしてデプロイメントに表示されます。このラベルは Pod セレクターで使用できます。

  2. size プロパティーはデプロイするブローカーの数を指定します。2 以上の値は、クラスターブローカーデプロイメントを指定します。ただし、単一のブローカーインスタンスをデプロイするには、値が 1 に設定されていることを確認します。
  3. CR インスタンスをデプロイします。

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

      1. CR ファイルを保存します。
      2. ブローカーデプロイメントを作成するプロジェクトに切り替えます。

        $ oc project <project_name>
      3. CR インスタンスを作成します。

        $ oc create -f <path/to/custom_resource_instance>.yaml
    2. OpenShift Web コンソールの使用

      1. CR の設定が完了したら、Create をクリックします。
  4. Open Shift Container Platform Web コンソールで、 Workloads StatefulSets をクリックします。ex-aao-ss という新しい StatefulSet が表示されます。

    1. ex-aao-ss StatefulSet をクリックします。CR で定義される単一ブローカーに対応する Pod が 1 つあることが分かります。
    2. StatefulSet 内で Pods タブをクリックします。ex-aao-ss Pod をクリックします。実行中の Pod の Events タブで、ブローカーコンテナーが起動したことを確認できます。Logs タブには、ブローカー自体が実行中であることを示します。
  5. ブローカーは通常実行されていることをテストするには、ブローカー Pod のシェルにアクセスしてテストメッセージを送信します。

    1. OpenShift Container Platform Web コンソールの使用

      1. Workloads Pods をクリックします。
      2. ex-aao-ss Pod をクリックします。
      3. Terminal タブをクリックします。
    2. OpenShift コマンドラインインターフェイスの使用:

      1. プロジェクトの Pod 名および内部 IP アドレスを取得します。

        $ oc get pods -o wide
        
        NAME                          STATUS   IP
        amq-broker-operator-54d996c   Running  10.129.2.14
        ex-aao-ss-0                   Running  10.129.2.15
      2. ブローカー Pod のシェルにアクセスします。

        $ oc rsh ex-aao-ss-0
  6. シェルから artemis コマンドを使用して、一部のテストメッセージを送信します。URL にブローカー Pod の内部 IP アドレスを指定します。以下に例を示します。

    sh-4.2$ ./amq-broker/bin/artemis producer --url tcp://10.129.2.15:61616 --destination queue://demoQueue

    上記のコマンドは、ブローカーに demoQueue というキューを自動的に作成し、デフォルトの数量 1000 のメッセージをキューに送信します。

    以下のような出力が表示されるはずです。

    Connection brokerURL = tcp://10.129.2.15:61616
    Producer ActiveMQQueue[demoQueue], thread=0 Started to calculate elapsed time ...
    
    Producer ActiveMQQueue[demoQueue], thread=0 Produced: 1000 messages
    Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in second : 3 s
    Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in milli second : 3492 milli seconds

関連情報

3.4.2. クラスター化されたブローカーのデプロイ

2 つ以上のブローカー Pod がプロジェクトで実行されている場合、Pod はブローカークラスターを自動的に形成します。クラスター化の設定により、ブローカーは相互に接続でき、必要に応じてメッセージを再配布できます。

以下の手順では、クラスター化されたブローカーをデプロイする方法を説明します。デフォルトでは、このデプロイメントのブローカーはオンデマンド負荷分散を使用します。つまり、ブローカーは一致するコンシューマーを持つ他のブローカーにのみメッセージを転送します。

前提条件

手順

  1. 基本的なブローカーデプロイメントに使用した CR ファイルを開きます。
  2. クラスター化したデプロイメントの場合は、deploymentPlan.size の値が 2 以上であることを確認します。以下に例を示します。

    apiVersion: broker.amq.io/v1beta1
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
      deploymentPlan:
        size: 4
        image: placeholder
        ...
    注記

    metadata セクションで、namespace プロパティーを追加し、OpenShift Container Platform Web コンソールを使用して CR インスタンスを作成する場合にのみ値を指定する必要があります。指定する値は、ブローカーデプロイメントの OpenShift プロジェクトの名前です。

  3. 変更された CR ファイルを保存します。
  4. 基本的なブローカーデプロイメントを作成したプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。

    $ oc login -u <user> -p <password> --server=<host:port>
  5. 基本的なブローカーデプロイメントを先に作成したプロジェクトに切り替えます。

    $ oc project <project_name>
  6. コマンドラインで変更を適用します。

    $ oc apply -f <path/to/custom_resource_instance>.yaml

    OpenShift Container Platform Web コンソールで、追加のブローカー Pod は CR で指定される数に基づいてプロジェクトで起動します。デフォルトで、プロジェクトで実行されているブローカーはクラスター化されます。

  7. 各 Pod の Logs タブを開きます。ログには、OpenShift が各ブローカーでクラスター接続ブリッジが確立されていることが示されています。具体的には、ログ出力には以下のような行が含まれます。

    targetConnector=ServerLocatorImpl (identity=(Cluster-connection-bridge::ClusterConnectionBridge@6f13fb88

3.4.3. ブローカーデプロイメントの実行へのカスタムリソース変更の適用

以下は、ブローカーデプロイメントの実行にカスタムリソース (CR) 変更の適用について留意すべき重要な事項です。

  • CR の persistenceEnabled 属性を動的に更新することはできません。この属性を変更するには、クラスターをゼロにスケールダウンします。既存の CR を削除します。次に、変更で CR を再作成し、再デプロイします。また、デプロイメントサイズも指定します。
  • CR の deploymentPlan.size 属性の値は、oc scale コマンドによるブローカーデプロイメントのサイズの変更を上書きします。たとえば、oc scale を使用してデプロイメントのサイズを 3 つのブローカーから 2 つ変更する場合、CR の deploymentPlan.size の値は 3 つになります。この場合、OpenShift はまずデプロイメントを 2 つのブローカーにスケールダウンします。ただし、縮小操作が完了すると、Operator は CR で指定される 3 つのブローカーにデプロイメントを復元します。
  • 「CLI を使用した Operator のデプロイ」 で説明されているように、永続ストレージ (CR に persistenceEnabled=true) でブローカーデプロイメントを作成する場合、ブローカー Pod について AMQ Broker Operator が要求する永続ボリューム (PV) をプロビジョニングする必要がある場合があります。ブローカーデプロイメントのサイズを縮小する場合、Operator はシャットダウンされるブローカー Pod で以前に要求された PV を解放します。ただし、CR を削除してブローカーデプロイメントを削除する場合、AMQ Broker Operator は削除時にデプロイメントにあるブローカー Pod の Persistent Volume Claim (永続ボリューム要求、PVC) を解放しません。また、これらのリリースされていない PV はいずれの新規デプロイメントでも利用できません。この場合は、ボリュームを手動で解放する必要があります。詳細は、OpenShift ドキュメントの 永続ボリュームの解放 を参照してください。
  • AMQ Broker 7.10 では、以下の項目を設定する必要がある場合、最初に CR をデプロイする前に、メインの CR インスタンスに適切な設定を追加する必要があります。

  • アクティブなスケーリングイベント時に、さらに適用する変更は Operator によってキューに入れられ、スケーリングが完了した場合にのみ実行されます。たとえば、デプロイメントのサイズを 4 つのブローカーから 1 つにスケールダウンするとします。次に、縮小が行われる間、ブローカー管理者のユーザー名およびパスワードの値も変更します。この場合、Operator は 1 つのアクティブなブローカーでデプロイメントが実行されるまで、ユーザー名とパスワードの変更をキューに入れます。
  • すべての CR の変更: デプロイメントのサイズを変更したり、アクセプター、コネクター、またはコンソールの expose 属性の値を変更することとは別に、既存のブローカーが再起動されます。デプロイメントに複数のブローカーがある場合は、1 度に 1 つのブローカーのみを再起動します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.