検索

OpenShift での AMQ Broker のデプロイ

download PDF
Red Hat AMQ 7.7

AMQ Broker 7.7 向け

概要

OpenShift Container Platform に AMQ Broker をインストールし、デプロイする方法を説明します。

第1章 OpenShift Container Platform での AMQ Broker について

Red Hat AMQ Broker 7.7 は、OpenShift Container Platform (OCP) 3.11 以降で使用するコンテナー化イメージとして利用できます。

AMQ Broker は Apache ActiveMQ Artemis をベースにしています。JMS に準拠するメッセージブローカーを提供します。初期ブローカー Pod を設定した後に、OpenShift Container Platform 機能を使用して重複を迅速にデプロイできます。

OCP 上の AMQ Broker は、Red Hat AMQ Broker と同様の機能を提供しますが、機能によっては、OpenShift Container Platform で使用するために特別に設定する必要があります。

1.1. バージョンの互換性とサポート

OpenShift Container Platform イメージのバージョンの互換性についての詳細は、以下を参照してください。

1.2. サポートされない機能

  • マスタースレーブベースの高可用性

    マスターとスレーブのペアを設定して実現する高可用性 (HA) はサポートされません。その代わりに、Pod がスケールダウンされると、スケールダウンコントローラーを使用して HA が OpenShift で提供され、メッセージの移行が可能になります。

    OpenShift プロキシーまたはバインドポートを使用して、ブローカーのクラスターに接続する外部クライアントを HA に適切に設定しなければならない場合があります。クラスター化されたシナリオでは、ブローカーによって、ブローカーのホストとポート情報のすべてのアドレスについて特定のクライアントに通知します。これらは内部でのみアクセスできるため、一部のクライアント機能は機能しないか、または無効にする必要があります。

    クライアント設定

    Core JMS クライアント

    外部 Core Protocol JMS クライアントは HA またはいずれのフェイルオーバーもサポートしないため、接続ファクトリーは useTopologyForLoadBalancing=false で設定する必要があります。

    AMQP クライアント

    AMQP クライアントがフェイルオーバーリストをサポートしません。

  • クラスター内の永続サブスクリプション

    永続サブスクリプションが作成されると、これはクライアントが接続したブローカーの永続キューとして表されます。クラスターが OpenShift 内で実行されている場合、クライアントが永続サブスクリプションキューが作成されたブローカーを認識しません。サブスクリプションが永続的であり、クライアントが再接続する方法は現在、ロードバランサーが同じノードに再接続する方法はありません。このような場合には、クライアントが別のブローカーに接続し、重複したサブスクリプションキューを作成できます。このため、ブローカーのクラスターで永続サブスクリプションを使用することは推奨されていません。

第2章 OpenShift Container Platform での AMQ Broker のデプロイメントのプランニング

2.1. デプロイメント方法の比較

OpenShift Container Platform に AMQ Broker をデプロイする方法は 2 つあります。

本セクションでは、これらの各デプロイメント方法について説明します。

AMQ Broker Operator を使用したデプロイメント (推奨)

Operator は、OpenShift アプリケーションのパッケージ化、デプロイ、および管理を可能にするプログラムです。多くの場合、Operator は共通タスクまたは複雑なタスクを自動化します。通常、Operator は以下を提供することを目的としています。

  • 一貫性のある繰り返し可能なインストール
  • システムコンポーネントのヘルスチェック
  • OTA (Over-the-air) 更新
  • 管理アップグレード
アプリケーションテンプレートを使用したデプロイメント
テンプレートとは、OpenShift Container Platform で作成するためにパラメーター化され、処理されるオブジェクトを記述する 1 つの方法です。テンプレートを使用して、サービスまたはビルド設定などの、OpenShift プロジェクト内で作成するパーミッションを持つすべてのものを記述します。AMQ Broker には、さまざまなタイプのブローカーデプロイメントを DeploymentConfig または StatefulSet ベースのアプリケーションとして作成できるサンプルアプリケーションテンプレートがあります。アプリケーションテンプレートに含まれる環境変数の値を指定して、ブローカーデプロイメントを設定します。テンプレートの制限は、初期ブローカーデプロイメントの作成に有効である一方で、デプロイメントを更新するメカニズムを提供しないことです。

AMQ Broker Operator は、OpenShift Container Platform でブローカーデプロイメントを作成するにあたり推奨されている方法です。Operator は、デプロイメントの設定に使用したカスタムリソース (CR) インスタンスへの変更を常にリッスンしているため、ブローカーインスタンスの実行中に変更を加えることができます。CR に変更を加えると、Operator は既存のブローカーデプロイメントの変更を調整し、変更を反映するためにデプロイメントを更新します。さらに、Operator は、メッセージングデータの整合性を維持するメッセージ移行機能を提供します。デプロイメントの失敗または意図的に縮小してクラスターデプロイメントのブローカーがシャットダウンすると、この機能はメッセージを同じブローカークラスターで実行されているブローカー Pod に移行します。

関連情報

2.2. AMQ Broker Operator カスタムリソース定義の概要

通常、カスタムリソース定義 (CRD) は、Operator でデプロイされたカスタム OpenShift オブジェクトのスキーマです。付随するカスタムリソース (CR) ファイルを使用すると、CRD 内の設定アイテムの値を指定できます。Operator 開発者の場合、CRD を使用して公開する内容は基本的に、デプロイされたオブジェクトの設定および使用方法のために API になります。CRD は Kubernetes 経由で自動的に公開されるため、通常の HTTP curl コマンドを使用して CRD に直接アクセスできます。また、Operator は、HTTP リクエストを使用して、kubectl コマンドを介して Kubernetes と対話します。

AMQ Broker 7.7 のメインブローカー CRD は、Operator のインストール時にダウンロードして抽出するアーカイブの deploy/crds ディレクトリーにある broker_activemqartemis_crd ファイルです。この CRD を使用すると、特定の OpenShift プロジェクトでブローカーのデプロイメントを設定できます。deploy/crds ディレクトリー内のその他の CRD は、アドレス設定用で、この CRD は Operator がスケールダウンコントローラーをインスタンス化するときに使用するものです。

デプロイされると、各 CRD は個別のコントローラーとなり、Operator 内で独立して実行されます。

各 CRD の完全な設定リファレンスについては、以下を参照してください。

2.3. AMQ Broker Operator サンプルカスタムリソースの概要

インストール時にダウンロードして展開する AMQ Broker Operator アーカイブには、deploy/crs ディレクトリーにサンプルカスタムリソース (CR) ファイルが含まれます。以下のサンプル CR ファイルでは、以下が可能になります。

  • SSL またはクラスターリングなしで最小ブローカーをデプロイします。
  • アドレスを定義します。

ダウンロードするブローカー Operator アーカイブには、以下に一覧表示されているように deploy/examples ディレクトリーにデプロイメントの CR が含まれます。

artemis-basic-deployment.yaml
基本ブローカーデプロイメント。
artemis-persistence-deployment.yaml
永続ストレージのあるブローカーデプロイメント。
artemis-cluster-deployment.yaml
クラスター化したブローカーのデプロイメント。
artemis-persistence-cluster-deployment.yaml
永続ストレージのあるクラスターブローカーのデプロイメント。
artemis-ssl-deployment.yaml
SSL セキュリティーを使用したブローカーデプロイメント。
artemis-ssl-persistence-deployment.yaml
SSL セキュリティーおよび永続ストレージを使用したブローカーデプロイメント。
artemis-aio-journal.yaml
ブローカージャーナルで非同期 I/O (AIO) の使用。
address-queue-create.yaml
アドレスおよびキューの作成。

2.4. Operator デプロイメントノート

このセクションでは、Operator ベースのデプロイメントを計画する際の重要な考慮事項について説明します。

  • 複数のブローカーカスタムリソース (CR) インスタンスをデプロイして、指定の OpenShift プロジェクトに複数のブローカーデプロイメントを作成することはできません。ただし、プロジェクトにブローカーデプロイメントを作成した場合は、アドレスに複数の CR インスタンスをデプロイできます
  • AMQ Broker Operator に付随するカスタムリソース定義 (CRD) をデプロイするには、OpenShift クラスターのクラスター管理者権限が必要です。Operator がデプロイされると、管理者以外のユーザーは対応するカスタムリソース (CR) を使用してブローカーインスタンスを作成できます。通常ユーザーが CR をデプロイできるようにするには、クラスター管理者はまずロールおよびパーミッションを CRD に割り当てる必要があります。詳細は、OpenShift Container Platform ドキュメントの カスタムリソース定義のクラスターロールの作成 を参照してください。
  • 永続ストレージでブローカーをデプロイし、OpenShift クラスターに Container-native ストレージがない場合、永続ボリューム (PV) を手動でプロビジョニングし、それらが Operator で要求できるようにする必要があります。たとえば、永続ストレージ (CR に persistenceEnabled=true) を使用して 2 つのブローカーで設定されるクラスターを作成する場合は、永続ボリュームを 2 つ利用可能にしておく必要があります。デフォルトでは、各ブローカーインスタンスには 2 GiB のストレージが必要です。

    CR に persistenceEnabled=false を指定した場合、デプロイされたブローカーは 一時 ストレージを使用します。一時ストレージは、ブローカー Pod を再起動するたびに、既存のデータが失われることを意味します。

    OpenShift Container Platform での永続ストレージのプロビジョニングについての詳細は、以下を参照してください。

  • AMQ Broker 7.7 では、CR を初めてデプロイする 前に、次の項目の設定をメインブローカー CR インスタンスに追加する必要があります。

    リストされた項目のいずれかの設定を、すでに実行中のブローカーデプロイメントに追加することは できません

次のセクションの手順では、Operator をインストールし、カスタムリソース (CR) を使用して OpenShift Container Platform でブローカーデプロイメントを作成する方法を説明します。この手順を正常に完了したら、Operator が個別の Pod で実行されます。作成する各ブローカーインスタンスは、Operator と同じプロジェクトの StatefulSet の個別の Pod として実行されます。その後、専用のアドレス CR を使用してブローカーデプロイメントでアドレスを定義する方法を確認できます。

第3章 AMQ Broker Operator を使用した OpenShift Container Platform での AMQ Broker のデプロイ

3.1. CLI を使用した Operator のインストール

本セクションの手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して、指定の OpenShift プロジェクトで AMQ Broker 7.7 の Operator の最新バージョンをインストールし、デプロイする方法を説明します。後続の手順で、この Operator を使用して一部のブローカーインスタンスをデプロイします。

OperatorHub グラフィカルインターフェイスを使用する AMQ Broker Operator の代替方法については、「Operator Lifecycle Manager を使用した Operator のインストール」 を参照してください。

重要
  • AMQ Broker Operator に付随するカスタムリソース定義 (CRD) をデプロイするには、OpenShift クラスターのクラスター管理者権限が必要です。Operator がデプロイされると、管理者以外のユーザーは対応するカスタムリソース (CR) を使用してブローカーインスタンスを作成できます。通常ユーザーが CR をデプロイできるようにするには、クラスター管理者はまずロールおよびパーミッションを CRD に割り当てる必要があります。詳細は、OpenShift Container Platform ドキュメントの カスタムリソース定義のクラスターロールの作成 を参照してください。
  • 以前にデプロイしている場合:

    • Operator のバージョン 0.15 (つまり、AMQ Broker 7.7 で利用可能な最初のバージョン) では、新規インストールを実行するのではなく、Operator の最新バージョンを使用するようにプロジェクトを アップグレード できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.15-cli_broker-ocp を参照してください。
    • Operator のバージョン 0.13 (つまり、AMQ Broker 7.6 で利用可能なバージョン) では、プロジェクトを アップグレード して、新規インストールするのではなく、Operator の最新バージョンを使用できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.13-cli_broker-ocp を参照してください。
    • Operator のバージョン 0.9 (つまり、AMQ Broker 7.5 で利用可能なバージョン または AMQ Broker 7.4 で提供されている長期サポート (LTS) バージョン) では、プロジェクトを アップグレード して、新規インストールするのではなく、Operator の最新バージョンを使用できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.9-cli_broker-ocp を参照してください。
  • 最新の Operator バージョンの CRD を使用してクラスターを更新する場合、今回の更新はクラスターのすべてのプロジェクトに影響を与えます。以前のバージョンの Operator からデプロイされたブローカー Pod は、それらのステータスを更新できなくなる可能性があります。OpenShift Container Platform Web コンソールで実行中のブローカー Pod の Logs タブをクリックすると、UpdatePodStatus が失敗したことを示すメッセージが表示されます。ただし、そのプロジェクトのブローカー Pod および Operator は予想通りに機能し続けます。影響を受けるプロジェクトに対してこの問題を解決するには、Operator の最新バージョンを使用するようプロジェクトをアップグレードする必要もあります。

3.1.1. Operator コードの取得

この手順では、最新バージョンの AMQ Broker 7.7 用 Operator をインストールするのに必要なコードにアクセスし、準備する方法を説明します。

手順

  1. Web ブラウザーで、AMQ Broker 7.7.0 patchesSoftware Downloads ページに移動します。
  2. Version ドロップダウンリストの値が 7.7.0 に設定され、Patches タブが選択されていることを確認します。
  3. AMQ Broker 7.7.0 Operator Installation and Example Files の横にある Download をクリックします。

    amq-broker-operator-7.7.0-ocp-install-examples.zip 圧縮アーカイブのダウンロードが自動的に開始します。

  4. ダウンロードが完了したら、アーカイブを選択したインストールディレクトリーに移動します。以下の例では、アーカイブを ~/broker/operator という名前のディレクトリーに移動します。

    mkdir ~/broker/operator
    mv amq-broker-operator-7.7.0-ocp-install-examples.zip ~/broker/operator
  5. 選択したインストールディレクトリーで、アーカイブの内容を展開します。以下に例を示します。

    cd ~/broker/operator
    unzip amq-broker-operator-7.7.0-ocp-install-examples.zip
  6. クラスター管理者として OpenShift Container Platform にログインします。以下に例を示します。

    $ oc login -u system:admin
  7. Operator をインストールするプロジェクトを指定します。新規プロジェクトを作成するか、または既存プロジェクトに切り替えることができます。

    1. 新しいプロジェクトを作成します。

      $ oc new-project <project_name>
    2. または、既存のプロジェクトに切り替えます。

      $ oc project <project_name>
  8. Operator で使用するサービスアカウントを指定します。

    1. 展開した Operator アーカイブの deploy ディレクトリーで、service_account.yaml ファイルを開きます。
    2. kind 要素が ServiceAccount に設定されていることを確認します。
    3. metadata セクションで、カスタム名をサービスアカウントに割り当てるか、デフォルト名を使用します。デフォルトの名前は amq-broker-operator です。
    4. プロジェクトにサービスアカウントを作成します。

      $ oc create -f deploy/service_account.yaml
  9. Operator のロール名を指定します。

    1. role.yaml ファイルを開きます。このファイルは、Operator が使用できるリソースを指定し、変更します。
    2. kind 要素が Role に設定されていることを確認します。
    3. metadata セクションで、カスタム名をロールに割り当てるか、デフォルト名を使用します。デフォルトの名前は amq-broker-operator です。
    4. プロジェクトにロールを作成します。

      $ oc create -f deploy/role.yaml
  10. Operator のロールバインディングを指定します。ロールバインディングは、指定した名前に基づいて、事前に作成されたサービスアカウントを Operator ロールにバインドします。

    1. role_binding.yaml ファイルを開きます。ServiceAccountRolename の値が service_account.yaml および role.yaml ファイルで指定された値と一致していることを確認します。以下に例を示します。

      metadata:
          name: amq-broker-operator
      subjects:
          kind: ServiceAccount
          name: amq-broker-operator
      roleRef:
          kind: Role
          name: amq-broker-operator
    2. プロジェクトでロールバインディングを作成します。

      $ oc create -f deploy/role_binding.yaml

3.1.2. CLI を使用した Operator のデプロイ

本セクションの手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して、OpenShift プロジェクトに最新バージョンの AMQ Broker 7.7 の Operator をデプロイする方法を説明します。

重要

以前にデプロイしている場合:

  • Operator のバージョン 0.15 (つまり、AMQ Broker 7.7 で利用可能な最初のバージョン) では、新規インストールを実行するのではなく、Operator の最新バージョンを使用するようにプロジェクトを アップグレード できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.15-cli_broker-ocp を参照してください。
  • Operator のバージョン 0.13 (つまり、AMQ Broker 7.6 で利用可能なバージョン) では、プロジェクトを アップグレード して、新規インストールするのではなく、Operator の最新バージョンを使用できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.13-cli_broker-ocp を参照してください。
  • Operator のバージョン 0.9 (つまり、AMQ Broker 7.5 で利用可能なバージョン または AMQ Broker 7.4 で提供されている長期サポート (LTS) バージョン) では、プロジェクトを アップグレード して、新規インストールするのではなく、Operator の最新バージョンを使用できます。アップグレードする場合、OpenShift クラスター内の既存の CRD を削除する必要はありません。ただし、アップグレードの一環として、メインブローカーのカスタムリソース (CR) インスタンスをプロジェクトから削除する必要があります。その後、Operator をアップグレードしたら、新しい CR をデプロイしてブローカーデプロイメントを再作成する必要があります。詳細は、proc_br-upgrading-operator-version-0.9-cli_broker-ocp を参照してください。
  • Operator のバージョン 0.6 (つまり、AMQ Broker 7.4.0 の Technical Preview バージョン) では、この Operator をそれ以降のバージョン (AMQ Broker 7.7 で利用可能な最新バージョンを含む) に直接アップグレード できません。バージョン 0.6 で使用されるカスタムリソース定義 (CRD) は、それ以降のバージョンの Operator と互換性がありません。代わりに、Operator を新規インストールする必要があります。これには、OpenShift クラスターにインストールされている既存のカスタムリソース定義 (CRD) を削除することが含まれます。これらの手順については、以下のセクションの手順で説明します。

前提条件

  • Operator デプロイメントのために OpenShift プロジェクトを準備している。「Operator コードの取得」 を参照してください。
  • AMQ Broker 7.3 以降では、新しいバージョンの Red Hat Container Registry を使用してコンテナーイメージにアクセスします。この新しいバージョンのレジストリーでは、イメージにアクセスする前に認証されたユーザーである必要がある。本セクションの手順を実行する前に、Red Hat Container Registry Authentication で説明されている手順を完了する必要がある。
  • 永続ストレージでブローカーをデプロイし、OpenShift クラスターに Container-native ストレージがない場合、永続ボリューム (PV) を手動でプロビジョニングし、これらが Operator で要求できるようにする必要がある。たとえば、永続ストレージ (Custom Resource に persistenceEnabled=true を設定して) とともに 2 つのブローカーで設定されるクラスターを作成する場合は、2 つの PV が利用可能である必要がある。デフォルトでは、各ブローカーインスタンスには 2 GiB のストレージが必要です。

    カスタムリソースで persistenceEnabled=false を指定した場合、デプロイされたブローカーは一時ストレージを使用する。一時ストレージは、ブローカー Pod を再起動するたびに、既存のデータが失われることを意味します。

    永続ストレージのプロビジョニングの詳細は、以下を参照すること。

  • デプロイメント内の各ブローカーが永続的なメッセージストレージに必要な Persistent Volume Claim (PVC) のサイズを指定する方法については、「ブローカーのストレージサイズの設定」 を参照してください。

手順

  1. OpenShift Container Platform Web コンソールで、ブローカーをデプロイするプロジェクトを開きます。

    新しいプロジェクトを作成した場合、現在は空です。Deployment、StatefulSet、Pod、Service、または Route がないことを確認します。

  2. プロジェクトに以前のバージョンの AMQ Broker Operator をデプロイした場合は、ブローカーのデプロイ作成に使用したメインブローカーのカスタムリソース (CR) を削除します。メイン CR を削除すると、プロジェクト内の既存のブローカーデプロイメントが削除されます。以下に例を示します。

    oc delete -f deploy/crs/broker_v1alpha1_activemqartemis_cr.yaml.
  3. プロジェクトに以前のバージョンの AMQ Broker Operator をデプロイした場合は、この Operator インスタンスを削除します。以下に例を示します。

    $ oc delete -f deploy/operator.yaml
  4. 以前のバージョンの AMQ Broker Operator 用に OpenShift クラスターにカスタムリソース定義 (CRD) をデプロイした場合は、これらの CRD をクラスターから削除します。以下に例を示します。

    oc delete -f deploy/crds/broker_v1alpha1_activemqartemis_crd.yaml
    oc delete -f deploy/crds/broker_v1alpha1_activemqartemisaddress_crd.yaml
    oc delete -f deploy/crds/broker_v1alpha1_activemqartemisscaledown_crd.yaml
  5. ダウンロードして展開した Operator アーカイブの deploy/crds ディレクトリーに含まれる CRD をデプロイします。Operator をデプロイし、起動する前に最新の CRD を OpenShift クラスターにインストールする必要があります。

    1. メインブローカー CRD をデプロイします。

      $ oc create -f deploy/crds/broker_activemqartemis_crd.yaml
    2. アドレス CRD をデプロイします。

      $ oc create -f deploy/crds/broker_activemqartemisaddress_crd.yaml
    3. スケールダウンコントローラー CRD をデプロイします。

      $ oc create -f deploy/crds/broker_activemqartemisscaledown_crd.yaml
  6. Red Hat Container Registry での認証に使用されるアカウントに関連付けられたプルシークレットを、OpenShift プロジェクトの defaultdeployer、および builder サービスアカウントにリンクします。

    $ oc secrets link --for=pull default <secret-name>
    $ oc secrets link --for=pull deployer <secret-name>
    $ oc secrets link --for=pull builder <secret-name>
    注記

    OpenShift Container Platform 4.1 以降では、Web コンソールを使用して、プルシークレットを AMQ Broker Operator などのコンテナーイメージをデプロイするプロジェクトに関連付けることもできます。そのためには、AdministrationService Accounts をクリックします。Red Hat コンテナーレジストリーでの認証に使用するアカウントに関連付けられたプルシークレットを指定します。

  7. ダウンロードした Operator アーカイブの deploy ディレクトリーで、operator.yaml ファイルを開きます。以下に示すように、spec.containers.image プロパティーの値が AMQ Broker 7.7 の最新の Operator イメージに設定されていることを確認します。

    spec:
        template:
            spec:
                containers:
                    image: registry.redhat.io/amq7/amq-broker-rhel7-operator:0.17
  8. Operator をデプロイします。

    $ oc create -f deploy/operator.yaml

    OpenShift プロジェクトでは、デプロイした amq-broker-operator イメージが新しい Pod で起動します。

    新しい Pod の Events タブの情報は、OpenShift が指定した Operator イメージをデプロイし、OpenShift クラスター内のノードに新しいコンテナーを割り当て、新しいコンテナーを開始したことを確認します。

    さらに、Pod 内の Logs タブをクリックしても、出力には、以下のような行が含まれるはずです。

    ...
    {"level":"info","ts":1553619035.8302743,"logger":"kubebuilder.controller","msg":"Starting Controller","controller":"activemqartemisaddress-controller"}
    {"level":"info","ts":1553619035.830541,"logger":"kubebuilder.controller","msg":"Starting Controller","controller":"activemqartemis-controller"}
    {"level":"info","ts":1553619035.9306898,"logger":"kubebuilder.controller","msg":"Starting workers","controller":"activemqartemisaddress-controller","worker count":1}
    {"level":"info","ts":1553619035.9311671,"logger":"kubebuilder.controller","msg":"Starting workers","controller":"activemqartemis-controller","worker count":1}

    上記の出力では、新たにデプロイされた Operator が Kubernetes と通信していること、ブローカーおよびアドレス指定のコントローラーが実行されていることと、これらのコントローラーが一部のワーカーを起動していることを確認します。

注記

所定の OpenShift プロジェクトに AMQ Interconnect Operator の 単一のインスタンス のみをデプロイすることが推奨されます。具体的には、Operator デプロイメントの replicas 要素を 1 より大きい値に設定したり、同じプロジェクトで Operator を 複数回デプロイしたりすることは推奨されません。

関連情報

3.2. Operator Lifecycle Manager を使用した Operator のインストール

3.2.1. Operator Lifecycle Manager の概要

OpenShift Container Platform 4.1 移行では、Operator Lifecycle Manager (OLM) は、ユーザーがクラスター全体で実行されるすべての Operator やそれらの関連サービスをインストール、更新、およびそのライフサイクルを全般的に管理するのに役立ちます。これは、Kubernetes のネイティブアプリケーション (Operator) を効率的に自動化された拡張可能な方法で管理するために設計されたオープンソースツールキットの Operator Framework の一部です。

OLM は OpenShift Container Platform 4.1 以降 でデフォルトで実行されます。これは、クラスター管理者がクラスターで実行されている Operator をインストールし、アップグレードし、そのアクセス権限を付与するのに役立ちます。OpenShift Container Platform Web コンソールでは、クラスター管理者が Operator をインストールし、特定のプロジェクトアクセスを付与して、クラスターで利用可能な Operator のカタログを使用するための管理画面を利用できます。

OperatorHub は、OpenShift クラスター管理者が Operator を検出、インストール、およびアップグレードするために使用するグラフィカルインターフェイスです。1 回のクリックで、これらの Operator を OperatorHub からプルし、クラスターにインストールし、OLM で管理して、エンジニアリングチームが開発環境、テスト環境、および本番環境でソフトウェアをセルフサービスで管理できるようにします。

Operator をデプロイしている場合、カスタムリソース (CR) インスタンスを使用してスタンドアロンおよびクラスターブローカーブローカーデプロイメントを作成できます。

3.2.2. OperatorHub への Operator のインストール

OperatorHub では、AMQ Broker 7.7 の Operator の名前は Red Hat Integration - AMQ Broker です。OperatorHub で Operator が自動的に使用可能にならない場合は、この手順に従って、Operator を OperatorHub に手動でインストールします。

手順

  1. Web ブラウザーで、AMQ Broker Software Downloads ページ に移動します。
  2. Version ドロップダウンボックスで、値が最新の AMQ Broker バージョン 7.7.0 に設定されていることを確認します。
  3. Patches タブをクリックします。
  4. AMQ Broker 7.7.0 Operator Installation and Example Files の横にある Download をクリックします。

    amq-broker-operator-7.7.0-ocp-install-examples.zip 圧縮アーカイブのダウンロードが自動的に開始します。

  5. ダウンロードが完了したら、アーカイブを選択したインストールディレクトリーに移動します。以下の例では、アーカイブを ~/broker/operator という名前のディレクトリーに移動します。

    mkdir ~/broker/operator
    mv amq-broker-operator-7.7.0-ocp-install-examples.zip ~/broker/operator
  6. 選択したインストールディレクトリーで、アーカイブの内容を展開します。以下に例を示します。

    cd ~/broker/operator
    unzip amq-broker-operator-7.7.0-ocp-install-examples.zip
  7. 展開した Operator アーカイブのディレクトリーに移動します。以下に例を示します。

    cd amq-broker-operator-7.7.0-ocp-install-examples
  8. クラスター管理者として OpenShift Container Platform にログインします。以下に例を示します。

    $ oc login -u system:admin
  9. OperatorHub に Operator をインストールします。

    $ oc create -f deploy/catalog_resources/activemq-artemis-operatorsource.yaml

    数分後に、AMQ Broker 7.7 の Operator は OpenShift Container Platform Web コンソールの OperatorHub セクションで利用可能になります。Operator の名前は Red Hat Integration - AMQ Broker です。

3.2.3. OperatorHub からの Operator のデプロイ

この手順では、OperatorHub を使用して、AMQ Broker の Operator の最新バージョンを指定された OpenShift プロジェクトにデプロイする方法について説明します。

重要

OperatorHub を使用して Operator for AMQ Broker をデプロイするには、クラスター管理者権限が必要です。

前提条件

  • Red Hat Integration - AMQ Broker Operator は OperatorHub で利用できる必要があります。Operator が自動的に利用可能でない場合は、OperatorHub への Operator の手動インストール手順については、「OperatorHub への Operator のインストール」 を参照してください。

手順

  1. クラスター管理者として OpenShift Container Platform Web コンソールにログインします。
  2. 左側のナビゲーションメニューで、OperatorsOperatorHub をクリックします。
  3. OperatorHub* ページ上部の Project ドロップダウンメニューで、Operator をデプロイするプロジェクトを選択します。
  4. OperatorHub ページで、Filter by keyword…​ ボックスを使用して Red Hat Integration - AMQ Broker Operator を見つけます。

    注記

    OperatorHub では、名前に AMQ Broker が含まれているよりも多くの Operator を見つける可能性があります。Red Hat Integration - AMQ Broker Operator をクリックします。この Operator をクリックしたら、開いている情報ペインを確認します。AMQ Broker 7.7 の場合、この Operator の最新バージョンタグは 0.17 です。

  5. Red Hat Integration - AMQ Broker Operator をクリックします。表示されるダイアログボックスで、Install をクリックします。
  6. Install Operator ページで以下を行います。

    1. Update Channel の下で、current というタイトルのラジオボタンが選択されていることを確認します。このオプションは、Operator の更新を追跡および受信するために使用されるチャネルを指定します。current の値は、AMQ Broker 7.7 チャネルが使用されることを指定します。
    2. Installation Mode で、A specific namespace on the cluster のラジオボタンが選択されていることを確認します。
    3. Installed Namespace ドロップダウンメニューから、Operator をインストールするプロジェクトを選択します。
    4. Approval Strategy で、Automatic のラジオボタンが選択されていることを確認します。このオプションは、インストールを実行するために Operator への更新を手動で承認する必要がないように指定します。
    5. Install をクリックします。

Operator のインストールが完了すると、Installed Operators ページが開きます。Red Hat Integration - AMQ Broker Operator が指定したプロジェクト namespace にインストールされていることが確認できるはずです。

関連情報

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

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

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

注記

前提条件

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

  • AMQ Broker 7.3 以降では、新しいバージョンの Red Hat Container Registry を使用してコンテナーイメージにアクセスします。この新しいバージョンのレジストリーでは、イメージにアクセスする前に認証されたユーザーである必要がある。本セクションの手順を実行する前に、Red Hat Container Registry Authentication で説明されている手順を完了する必要がある。

手順

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

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

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

      1. デプロイメントを作成するプロジェクトの管理者権限で 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. 配置を作成しているプロジェクトの管理者権限でコンソールにログインします。
      2. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、AdministrationCustom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemis をクリックします。

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

    基本的なブローカーデプロイメントの場合、設定が以下のように表示される可能性があります。この設定は、broker_activemqartemis_cr.yaml サンプル CR ファイルのデフォルトコンテンツです。

    apiVersion: broker.amq.io/v2alpha3
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
        version: 7.7.0
        deploymentPlan:
            size: 2
            image: registry.redhat.io/amq7/amq-broker:7.7
            ...
    注記

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

  2. size の値は、デプロイするブローカーの数を指定します。デフォルト値の 2 は、2 つのブローカーを使用してクラスター化されたブローカーのデプロイメントを指定します。ただし、単一のブローカーインスタンスをデプロイするには、値を 1 に変更します。
  3. image 値は、ブローカーの起動に使用するコンテナーイメージを指定します。以下に示すように、この値が Red Hat Container Registry 内の AMQ Broker 7.7 ブローカーコンテナーイメージの最新バージョンを指定していることを確認してください。

    image: registry.redhat.io/amq7/amq-broker:7.7
    注記

    前のステップで、イメージ 属性は、完全なイメージタグ (例: 7.7-2) ではなく、Floating イメージタグ (つまり、7.7) を指定します。このフローティングタグを指定すると、デプロイメントでは 7.7 イメージストリームで利用可能な最新のイメージが使用されます。さらに、このようなフローティングタグを指定すると、Stateful Set の imagePullPolicy 属性が Always に設定されている場合に、Red Hat Container Registry で利用可能になったときに、デプロイメントは自動的に新しい micro イメージバージョンをプルして使用します (例: 7.7-37-7-4 など)。

  4. CR インスタンスをデプロイします。

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

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

        $ oc project <project-name>
      3. CR を作成します。

        $ oc create -f <path/to/custom-resource-instance>.yaml
    2. OpenShift Container Platform Web コンソールの使用

      1. CR の設定が完了したら、Create をクリックします。
  5. OpenShift Container Platform Web コンソールで、WorkloadsStatefulSets (OpenShift Container Platform 4.1 以降) または ApplicationsStatefulSets (OpenShift Container Platform 3.11) をクリックします。ex-aao-ss という新しい StatefulSet が表示されます。

    ex-aao-ss Stateful Set セクションをデプロイメントします。CR で定義される単一ブローカーに対応する Pod が 1 つあることが分かります。

    実行中の Pod の Events タブで、ブローカーコンテナーが起動したことを確認できます。Logs タブには、ブローカー自体が実行中であることを示します。

関連情報

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

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

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

前提条件

手順

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

    apiVersion: broker.amq.io/v2alpha3
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
        version: 7.7.0
        deploymentPlan:
            size: 4
            image: registry.redhat.io/amq7/amq-broker:7.7
            ...
    注記

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

  3. 変更された CR ファイルを保存します。
  4. 以前に基本的なブローカーのデプロイメントを作成したプロジェクトの管理者権限で 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.3.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.7 では、以下の項目を設定する必要がある場合、最初に CR をデプロイする前に、メインの CR インスタンスに適切な設定を追加する必要があります。

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

第4章 Operator ベースのブローカーデプロイメントの設定

4.1. Operator ベースのブローカーデプロイメントのアドレスおよびキューの設定

Operator ベースのブローカーのデプロイメントの場合、2 つの異なるカスタムリソース (CR) インスタンスを使用してアドレスおよびキューと関連する設定を行います。

  • ブローカーでアドレスおよびキューを作成するには、アドレスカスタムリソース定義 (CRD) に基づいて CR インスタンスをデプロイします。

    • OpenShift コマンドラインインターフェイス (CLI) を使用して Operator をインストールした場合、アドレス CRD は、ダウンロードした Operator インストールアーカイブの deploy/crds に含まれている broker_activemqartemisaddress_crd.yaml ファイルです。
    • OperatorHub を使用して Operator をインストールした場合、アドレス CRD は OpenShift Container Platform Web コンソールのAdministrationCustom Resource Definitions に一覧表示されている ActiveMQAretmisAddress CRD になります。
  • 特定のアドレスに一致するアドレスおよびキュー設定を設定するには、ブローカーデプロイメントの作成に使用されるメインのカスタムリソース (CR) インスタンスに設定を含めます。

    • OpenShift CLI を使用して Operator をインストールした場合、メインのブローカー CRD は、ダウンロードした Operator インストールアーカイブの deploy/crds に含まれる broker_activemqartemis_crd.yaml ファイルです。
    • OperatorHub を使用して Operator をインストールした場合、メインブローカー CRD は OpenShift Container Platform Web コンソールのAdministrationCustom Resource Definitions に一覧表示されている ActiveMQAretmis CRD になります。
    重要
    • Operator ベースのデプロイメントのアドレス設定を設定するには、AMQ Broker 7.7 の Operator の最新バージョン (バージョン 0.17) を使用する必要があります。Operator を最新バージョンにアップグレードする方法については、5章Operator ベースのブローカーデプロイメントのアップグレード を参照してください。
    • AMQ Broker 7.7 では、CR を初めてデプロイする に、メインブローカーの CR インスタンスにアドレス設定を追加する必要があります。すでに実行中のブローカーデプロイメントに設定を追加できません

    通常、OpenShift Container Platform でのブローカーデプロイメントに設定できるアドレスおよびキュー設定は、Linux または Windows のスタンドアロンブローカーデプロイメントのいずれでも完全に同等です。ただし、これらの設定についての違いに注意してください。これらの違いは、以下のサブセクションで説明します。

4.1.1. OpenShift とスタンドアロンブローカーデプロイメント間のアドレスおよびキュー設定の相違点

  • OpenShift Container Platform のブローカーデプロイメントのアドレスおよびキュー設定を設定するには、ブローカーデプロイメントのメインカスタムリソース (CR) インスタンスの addressSettings セクションに設定を追加します。これは、Linux または Windows のスタンドアロンデプロイメントとは対照的で、broker.xml 設定ファイルの address-settings 要素に設定を追加します。
  • 設定項目の名前に使用される形式は、OpenShift Container Platform とスタンドアロンブローカーデプロイメントとは異なります。OpenShift Container Platform デプロイメントでは、設定アイテム名は camel ケースに置かれます (例: defaultQueueRoutingType)。一方、スタンドアロンデプロイメントの設定項目名は小文字にあり、dash (-) セパレーターを使用します (例: default-queue-routing-type)。

    以下の表は、この命名に関する他の例を紹介します。

    スタンドアロンブローカーデプロイメントの設定アイテムOpenShift ブローカーデプロイメントの設定アイテム

    address-full-policy

    addressFullPolicy

    auto-create-queues

    autoCreateQueues

    default-queue-routing-type

    defaultQueueRoutingType

    last-value-queue

    lastValueQueue

関連情報

4.1.2. Operator ベースのブローカーデプロイメントのアドレスおよびキューの作成

以下の手順では、カスタムリソース (CR) インスタンスを使用してアドレスおよび関連付けられたキューを Operator ベースのブローカーデプロイメントに追加する方法を説明します。

注記

ブローカーデプロイメントに複数のアドレスやキューを作成するには、個別の CR ファイルを作成してそれらを個別にデプロイし、それぞれのケースに新しいアドレスやキュー名を指定する必要があります。さらに、各 CR インスタンスの name 属性は一意である必要があります。

前提条件

手順

  1. カスタムリソース (CR) インスタンスの設定を開始し、ブローカーデプロイメントのアドレスおよびキューを定義します。

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

      1. ブローカーのデプロイメントを含むプロジェクトの管理者権限で OpenShift にログインします。

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

      1. ブローカーのデプロイメントを含むプロジェクトの管理者権限でコンソールにログインします。
      2. アドレス CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、AdministrationCustom Resource Definitions をクリックします。
      3. ActiveMQArtemisAddresss CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemisAddress をクリックします。

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

  2. CR の spec セクションで、行を追加してアドレス、キュー、およびルーティングタイプを定義します。以下に例を示します。

    apiVersion: broker.amq.io/v2alpha2
    kind: ActiveMQArtemisAddress
    metadata:
        name: myAddressDeployment0
        namespace: myProject
    spec:
        ...
        addressName: myAddress0
        queueName: myQueue0
        routingType: anycast
        ...

    上記の設定では、myQueue0 という名前のキューと anycast ルーティングタイプを持つ myAddress0 という名前のアドレスが定義されます。

    注記

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

  3. CR インスタンスをデプロイします。

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

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

        $ oc project <project-name>
      3. CR を作成します。

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

      1. CR の設定が完了したら、Create をクリックします。
  4. (オプション) CR インスタンスを使用して以前にデプロイメントに追加されたアドレスおよびキューを削除するには、以下のコマンドを使用します。

    $ oc delete -f <path/to/address-custom-resource-instance>.yaml

4.1.3. Operator ベースのブローカーデプロイメントで設定されたアドレスへのマッチングアドレス設定

クライアントにメッセージの配信に失敗した場合は、ブローカーがメッセージの配信を継続しようとしない場合があります。無限配信を試行するのを防ぐために、デッドレターアドレスと関連するデッドレターキューを定義できます。指定の数の配信試行後、ブローカーは元のキューから未配信メッセージを削除し、そのメッセージを設定済みのデッドレターアドレスに送信します。システム管理者は、デッド文字キューから未配信メッセージを後で消費してメッセージを検査できます。

以下の例は、Operator ベースのブローカーデプロイメントのデッドレターアドレスおよびキューを設定する方法を示しています。この例では、メインブローカーのカスタムリソース (CR) インスタンスの addressSetting セクションを使用してアドレス設定を指定し、それらの設定をブローカーデプロイのアドレスと同じものにする方法を示します。

重要

CR を初めてデプロイする 前に、ブローカデプロイのメイン CR インスタンスにアドレス設定を追加する必要があります。アドレス設定を、すでに実行中のブローカーデプロイメントに追加 できません

前提条件

手順

  1. CR インスタンスを設定して、デッドレターアドレスとキューを追加して、デプロイメント内の各ブローカーの配信されていないメッセージを受信します。

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

      1. ブローカーのデプロイメントを含むプロジェクトの管理者権限で OpenShift にログインします。

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

      1. ブローカーのデプロイメントを含むプロジェクトの管理者権限でコンソールにログインします。
      2. アドレス CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、AdministrationCustom Resource Definitions をクリックします。
      3. ActiveMQArtemisAddresss CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemisAddress をクリックします。

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

  2. CR の spec セクションで、未配信のメッセージを受信するデッドレターアドレスおよびキューを指定する行を追加します。以下に例を示します。

    apiVersion: broker.amq.io/v2alpha2
    kind: ActiveMQArtemisAddress
    metadata:
        name: ex-aaoaddress
    spec:
        ...
        addressName: myDeadLetterAddress
        queueName: myDeadLetterQueue
        routingType: anycast
        ...

    上記の設定では、myDeadLetterQueue という名前のデッドレターキューと anycast ルーティングタイプを持つ myDeadLetterAddress という名前のデッドレターアドレスを定義します。

    注記

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

  3. アドレス CR インスタンスをデプロイします。

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

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

        $ oc project <project-name>
      3. アドレス CR を作成します。

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

      1. CR の設定が完了したら、Create をクリックします。
  4. ブローカーデプロイメントのカスタムリソース (CR) インスタンスの設定を開始します。

    1. CR ファイルのサンプルの場合:

      1. ダウンロードした Operator インストールアーカイブの deploy/crs ディレクトリーに含まれる broker_activemqartemis_cr.yaml というサンプル CR ファイルを開きます。
    2. OpenShift Container Platform Web コンソールの使用

      1. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、AdministrationCustom Resource Definitions をクリックします。
      2. ActiveMQArtemis CRD をクリックします。
      3. Instances タブをクリックします。
      4. Create ActiveMQArtemis をクリックします。

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

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

    apiVersion: broker.amq.io/v2alpha3
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
    注記

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

  5. CR の deploymentPlan セクションで、以下に示すように単一の addressSetting セクションが含まれる新規 addressSettings セクションを追加します。

    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
            addressSettings:
                addressSetting:
  6. addressSetting ブロックに match プロパティーのインスタンスを 1 つ追加します。アドレス一致式を指定します。以下に例を示します。

    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
            addressSettings:
                addressSetting:
                 -  match: myAddress
    match
    ブローカーが以下の設定を適用するアドレスまたはアドレスのセットを指定します。この例では、match プロパティーの値は myAddress と呼ばれる単一のアドレスに対応します。
  7. 未配信メッセージに関連するプロパティーを追加し、値を指定します。以下に例を示します。

    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
            addressSettings:
                addressSetting:
                 -  match: myAddress
                    deadLetterAddress: myDeadLetterAddress
                    maxDeliveryAttempts: 5
    deadLetterAddress
    ブローカーが未達のメッセージを送信するアドレス。
    maxDeliveryAttempts

    メッセージを設定済みのデッドレターアドレスに移動する前にブローカーが行う最大配信試行数。

    上記の例では、ブローカーによって、myAddress で始まるアドレスにメッセージの配信が 5 回失敗する場合、ブローカーはメッセージを指定の dead letter address (myDeadLetterAddress) に移動します。

  8. (オプション) 別のアドレスまたはアドレスセットに同様の設定を適用します。以下に例を示します。

    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
            addressSettings:
                addressSetting:
                 -  match: myAddress
                    deadLetterAddress: myDeadLetterAddress
                    maxDeliveryAttempts: 5
                 -  match: 'myOtherAddresses*'
                    deadLetterAddress: myDeadLetterAddress
                    maxDeliveryAttempts: 3

    この例では、2 つ目の match プロパティーの値にはアスタリスクワイルドカード文字が含まれます。ワイルドカード文字では、上記の設定が文字列 myOtherAddresses で始まる任意のアドレスに適用されることを意味します。

    注記

    ワイルドカード式を match プロパティーの値として使用する場合には、値を単一引用符で囲む必要があります (例: 'myOtherAddresses*')。

  9. addressSettings セクションの最初に applyRule プロパティーを追加し、値を指定します。以下に例を示します。

    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
            addressSettings:
                applyRule: merge_all
                addressSetting:
                 -  match: myAddress
                    deadLetterAddress: myDeadLetterAddress
                    maxDeliveryAttempts: 5
                 -  match: 'myOtherAddresses*'
                    deadLetterAddress: myDeadLetterAddress
                    maxDeliveryAttempts: 3

    applyRule プロパティーは、Operator を一致するアドレスまたはアドレスのセットごとに CR に追加する設定を適用する方法を指定します。指定できる値は次のとおりです。

    merge_all
    • CR で指定されるアドレス設定、同じアドレスまたはアドレスのセットに一致するデフォルト設定の両方の場合:

      • デフォルト設定で指定されるプロパティー値を CR で指定されたプロパティー値に置き換えます。
      • CR またはデフォルト設定で一意で指定されるプロパティー値を保持します。これらはそれぞれ最終マージされた設定の組み込みます。
    • CR で指定されるアドレス設定または特定のアドレスセットに一意になるデフォルト設定の場合は、これらを最終でマージされた設定に含めます。
    merge_replace
    • CR に指定されたアドレス設定、同じアドレスまたはアドレスセットに一致するデフォルト設定について、最終的なマージされた設定の CR に指定された設定を含めます。それらのプロパティーが CR で指定されていない場合でも、デフォルト設定に指定されたプロパティーを含めないでください。
    • CR で指定されるアドレス設定または特定のアドレスセットに一意になるデフォルト設定の場合は、これらを最終でマージされた設定に含めます。
    replace_all
    デフォルト設定に指定されたすべてのアドレス設定を CR で指定されたアドレス設定に置き換えます。最後にマージされた設定は、CR で指定したものと完全に対応します。
    注記

    CR に applyRule プロパティーを明示的に含ない場合、Operator は merge_all のデフォルト値を使用します。

  10. ブローカー CR インスタンスをデプロイします。

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

      1. CR ファイルを保存します。
      2. CR を作成します。

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

      1. CR の設定が完了したら、Create をクリックします。
4.1.3.1. デフォルトのアドレス設定について

Operator ベースのブローカーのデプロイメントを作成する場合、各ブローカーの Pod は OpenShift プロジェクトの StatefulSet で実行されます。ブローカーのアプリケーションコンテナーは各 Pod 内で実行されます。

ブローカーデプロイメントのカスタムリソース (CR) インスタンスにアドレス設定が含まれている場合に、Operator は各 Pod を初期化するときに Init コンテナー と呼ばれるタイプのコンテナーも実行します。OpenShift Container Platform では、Init コンテナーはアプリケーションコンテナーの前に実行される特殊なコンテナーです。通常、Init コンテナーには、アプリケーションイメージに存在しないユーティリティーまたはセットアップスクリプトを含めることができます。

CR でアドレス設定を指定した場合、各ブローカー Pod の初期化は次の順番に行います。

  1. 初期化コンテナーを実行する。Init Container が、CR のアドレス設定を処理し、設定を XML に変換する。
  2. Init Container が完了すると、ブローカーアプリケーションコンテナーが開始される。ブローカーが開始されると、default のアドレス設定が作成され、生成された broker.xml 設定ファイルに追加される。デフォルトのアドレス設定は次のようになります。

    <address-settings>
        <!--
        if you define auto-create on certain queues, management has to be auto-create
        -->
        <address-setting match="activemq.management#">
            <dead-letter-address>DLQ</dead-letter-address>
            <expiry-address>ExpiryQueue</expiry-address>
            <redelivery-delay>0</redelivery-delay>
            <!--
            with -1 only the global-max-size is in use for limiting
            -->
            <max-size-bytes>-1</max-size-bytes>
            <message-counter-history-day-limit>10</message-counter-history-day-limit>
            <address-full-policy>PAGE</address-full-policy>
            <auto-create-queues>true</auto-create-queues>
            <auto-create-addresses>true</auto-create-addresses>
            <auto-create-jms-queues>true</auto-create-jms-queues>
            <auto-create-jms-topics>true</auto-create-jms-topics>
        </address-setting>
    
        <!-- default for catch all -->
        <address-setting match="#">
            <dead-letter-address>DLQ</dead-letter-address>
            <expiry-address>ExpiryQueue</expiry-address>
            <redelivery-delay>0</redelivery-delay>
            <!--
            with -1 only the global-max-size is in use for limiting
            -->
            <max-size-bytes>-1</max-size-bytes>
            <message-counter-history-day-limit>10</message-counter-history-day-limit>
            <address-full-policy>PAGE</address-full-policy>
            <auto-create-queues>true</auto-create-queues>
            <auto-create-addresses>true</auto-create-addresses>
            <auto-create-jms-queues>true</auto-create-jms-queues>
            <auto-create-jms-topics>true</auto-create-jms-topics>
        </address-setting>
    <address-settings>
  3. CR の applyRule プロパティーの値に基づき、Operator がマージするか、上記のデフォルトのアドレス設定を CR で指定した設定に置き換えます。

    ブローカー Pod が初期化されて実行されたら、broker.xml 設定ファイルで結果のアドレス設定を調べることができます。実行中のブローカー Pod の場合に、このファイルは /home/jboss/amq-broker/etc ディレクトリーにあります。

関連情報

  • CR でアドレス設定の applyRule プロパティーを設定する方法は、「Operator ベースのブローカーデプロイメントで設定されたアドレスへのマッチングアドレス設定」 を参照してください。
  • OpenShift Container Platform ブローカーデプロイメントのアドレス、キュー、およびアドレス設定のすべての設定オプションについては、「カスタムリソース設定リファレンス」 を参照してください。
  • OpenShift コマンドラインインターフェイス (CLI) を使用して AMQ Broker Operator をインストールしている場合、ダウンロードしたインストールアーカイブおよび抽出したインストールアーカイブには、アドレス設定に関する追加例が含まれています。インストールアーカイブの deploy/examples ディレクトリーで、以下を参照してください。

    • artemis-basic-address-settings-deployment.yaml
    • artemis-merge-replace-address-settings-deployment.yaml
    • artemis-replace-address-settings-deployment.yaml
  • スタンドアロン ブローカーデプロイメントのアドレス、キュー、および関連アドレス設定に関する包括的な情報は、AMQ Broker の設定アドレス、キューおよびトピック を参照してください。この情報を使用して、OpenShift Container Platform のブローカーデプロイメントの同等の設定を作成できます。
  • OpenShift Container Platform の Init コンテナーの詳細については、以下を参照してください。

4.2. ブローカーのストレージ要件の設定

Operator ベースのブローカーデプロイメントで永続ストレージを使用するには、デプロイメントの作成に使用されるカスタムリソース (CR) インスタンスで persistenceEnabledtrue に設定します。OpenShift クラスターに Container-native ストレージがない場合、永続ボリューム (PV) を手動でプロビジョニングし、それらは Persistent Volume Claim (永続ボリューム要求、PVC) を使用して Operator で要求できるようにする必要があります。たとえば、永続ストレージを持つ 2 つのブローカーで設定されるクラスターを作成する場合は、2 つの PV が利用可能である必要があります。デフォルトでは、デプロイメントの各ブローカーには 2 GiB のストレージが必要です。ただし、ブローカーデプロイメントの CR を、各ブローカーに必要な PVC のサイズを指定するように設定できます。

重要
  • Operator ベースのデプロイメントのブローカーで必要な PVC のサイズを設定するには、AMQ Broker 7.7 (バージョン 0.17) の Operator の最新バージョンを使用する必要があります。Operator を最新バージョンにアップグレードする方法については、5章Operator ベースのブローカーデプロイメントのアップグレード を参照してください。
  • 初めて CR をデプロイする前に、ブローカーストレージサイズの設定をブローカーデプロイメントのメイン CR に追加する必要があります。すでに実行中のブローカーデプロイメントに設定を追加できません

4.2.1. ブローカーのストレージサイズの設定

以下の手順では、ブローカーデプロイメントのカスタムリソース (CR) インスタンスを設定し、永続メッセージストレージ用に各ブローカーに必要な Persistent Volume Claim (永続ボリューム要求、PVC) のサイズを指定する方法を説明します。

重要

初めて CR をデプロイする前に、ブローカーストレージサイズの設定をブローカーデプロイメントのメイン CR に追加する必要があります。すでに実行中のブローカーデプロイメントに設定を追加できません

前提条件

  • AMQ Broker 7.7 の最新バージョンの Operator を使用する必要があります (バージョン 0.17)。Operator を最新バージョンにアップグレードする方法については、5章Operator ベースのブローカーデプロイメントのアップグレード を参照してください。
  • AMQ Broker に含まれるサンプル CR を使用して、基本的な Broker デプロイメントを作成する方法を理解しておく必要があります。「基本的なブローカーインスタンスのデプロイ」 を参照してください。
  • 永続ボリューム (PV) がすでにプロビジョニングされ、それらを Operator で要求できるように利用可能にする必要があります。たとえば、永続ストレージを持つ 2 つのブローカーのクラスターを作成する場合は、2 つの PV が利用可能である必要があります。

    永続ストレージのプロビジョニングの詳細は、以下を参照すること。

手順

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

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

      1. デプロイメントを作成するプロジェクトの管理者権限で 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. 配置を作成しているプロジェクトの管理者権限でコンソールにログインします。
      2. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、AdministrationCustom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemis をクリックします。

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

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

    apiVersion: broker.amq.io/v2alpha3
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
    注記

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

  2. ブローカーストレージ要件を指定するには、CR の deploymentPlan セクションで、Storage セクションを追加します。size プロパティーを追加し、値を指定します。以下に例を示します。

    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
            storage:
                size: 4Gi
    storage.size
    各ブローカー Pod が永続ストレージに必要な Persistent Volume Claim (永続ボリューム要求、PVC) のサイズ (バイト単位)。このプロパティーは、persistenceEnabledtrue に設定されている場合にのみ適用されます。指定する値には単位が含まれている必要があります。バイト表記 (K、M、G など)、または同等のバイナリー (Ki、Mi、Gi) をサポートします。
  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.3. Operator ベースのブローカーデプロイメントのリソース制限および要求の設定

Operator ベースのブローカーデプロイメントを作成する場合、デプロイメントのブローカー Pod は OpenShift クラスターのノードの StatefulSet で実行されます。デプロイメントのカスタムリソース (CR) インスタンスを設定し、各 Pod で実行されるブローカーコンテナーによって使用される host-node コンピュートリソースを指定できます。CPU およびメモリー (RAM) の制限および要求値を指定することで、ブローカー Pod のパフォーマンスを確保できます。

重要
  • Operator ベースのデプロイメントでブローカーのリソース制限および要求を設定するには、AMQ Broker 7.7 の最新バージョンの Operator を使用する必要があります (バージョン 0.17)。Operator を最新バージョンにアップグレードする方法については、5章Operator ベースのブローカーデプロイメントのアップグレード を参照してください。
  • ブローカーデプロイメントの CR を初めてデプロイする前に、制限および要求を CR インスタンスに追加する必要があります。すでに実行中のブローカーデプロイメントに設定を追加できません
  • これらの値は特定のメッセージングシステムのユースケースと実装したアーキテクチャーをベースとするため、Red Hat は制限およびリクエストの値を推奨できません。ただし、実稼働環境で設定する前に、これらの値をテストして開発環境で調整することが推奨されます
  • ブローカーデプロイメントのカスタムリソース (CR) インスタンスにアドレス設定が含まれている場合、Operator は各ブローカー Pod を初期化するときに (ブローカーコンテナーに加えて) Init コンテナー と呼ばれるタイプのコンテナーを実行します。この場合に、各ブローカーコンテナーについて設定するリソース制限および要求は、各 Init コンテナーにも適用されます。ブローカーデプロイメントで Init コンテナーを使用する方法についての詳細は、「デフォルトのアドレス設定について」 を参照してください。

以下の制限および要求値を指定できます。

CPU limit
Pod で実行されている各ブローカーコンテナーの場合、この値は、コンテナーが消費できるホストノード CPU の最大量になります。ブローカーコンテナーが指定の CPU 制限を超えると、OpenShift スロットルでコンテナーを調整します。これにより、ノードで実行中の Pod の数にかかわらず、コンテナーがパフォーマンスに一貫性を持たせることができます。
Memory limit
Pod で実行されている各ブローカーコンテナーの場合、この値は、コンテナーが消費できるホストノードメモリーの最大量です。ブローカーコンテナーが指定のメモリー制限を超過しようとすると、OpenShift はコンテナーを終了します。ブローカー Pod を再起動します。
CPU request

Pod で実行される各ブローカーコンテナーの場合、この値は、コンテナーが要求するホストノード CPU の量になります。OpenShift スケジューラーは、Pod の配置時に CPU 要求の値を考慮し、ブローカー Pod を十分なコンピュートリソースを持つノードにバインドします。

CPU request の値は、ブローカーコンテナーの実行に必要な CPU の最小量です。ただし、ノード上の CPU の競合がない場合、コンテナーは利用可能なすべての CPU を使用できます。CPU 制限を指定する場合には、コンテナーは CPU 使用量を超過することはできません。ノードに CPU の競合がある場合、CPU 要求の値により、OpenShift がすべてのコンテナーにおいて CPU 使用率を重み付けすることができます。

メモリー要求

Pod で実行されている各ブローカーコンテナーについて、この値は、コンテナーが要求するホストノードメモリーの量になります。OpenShift スケジューラーは、Pod の配置時にメモリー要求の値を考慮し、ブローカー Pod を十分なコンピュートリソースを持つノードにバインドします。

メモリー要求値は、ブローカーコンテナーの実行に必要なメモリーの最小量です。ただし、コンテナーは可能な限り多くのメモリーを使用できます。メモリー制限を指定した場合、ブローカーコンテナーはそのメモリー量を超えることができません。

CPU は millicore という単位で測定されます。OpenShift クラスターの各ノードは、オペレーティングシステムを検査して、ノード上の CPU コア数を判別します。次に、ノードはその値を 1000 で乗算して、合計容量を表します。たとえば、ノードに 2 つのコアがある場合に、ノードの CPU 容量は 2000m として表現されます。したがって、1 つのコアの連結を使用する場合は、100m の値を指定します。

メモリーはバイト単位で測定されます。バイト表記 (E、P、T、G、M、K) または同等のバイナリー (Ei、Pi、Ti、Gi、Mi、Ki) を使用して値を指定できます。指定する値には単位が含まれている必要があります。

4.3.1. ブローカーリソース制限および要求の設定

以下の例は、デプロイメントデプロイメントの主なカスタムリソース (CR) インスタンスを設定し、デプロイメントの Pod で実行される各ブローカーコンテナーの CPU およびメモリーの制限および要求を設定する方法を示しています。

重要
  • ブローカーデプロイメントの CR を初めてデプロイする前に、制限および要求を CR インスタンスに追加する必要があります。すでに実行中のブローカーデプロイメントに設定を追加できません
  • これらの値は特定のメッセージングシステムのユースケースと実装したアーキテクチャーをベースとするため、Red Hat は制限およびリクエストの値を推奨できません。ただし、実稼働環境で設定する前に、これらの値をテストして開発環境で調整することが推奨されます

前提条件

手順

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

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

      1. デプロイメントを作成するプロジェクトの管理者権限で 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. 配置を作成しているプロジェクトの管理者権限でコンソールにログインします。
      2. メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、AdministrationCustom Resource Definitions をクリックします。
      3. ActiveMQArtemis CRD をクリックします。
      4. Instances タブをクリックします。
      5. Create ActiveMQArtemis をクリックします。

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

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

    apiVersion: broker.amq.io/v2alpha3
    kind: ActiveMQArtemis
    metadata:
      name: ex-aao
      application: ex-aao-app
    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
    注記

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

  2. CR の deploymentPlan セクションで、resources セクションを追加します。limits および requests サブセクションを追加します。各サブセクションで cpu および memory プロパティーを追加し、値を指定します。以下に例を示します。

    spec:
        version: 7.7.0
        deploymentPlan:
            size: 3
            image: registry.redhat.io/amq7/amq-broker:7.7
            requireLogin: false
            persistenceEnabled: true
            journalType: nio
            messageMigration: true
            resources:
                limits:
                    cpu: "500m"
                    memory: "1024M"
                requests:
                    cpu: "250m"
                    memory: "512M"
    limits.cpu
    デプロイメントで Pod で実行される各ブローカーコンテナーは、このホストノードの CPU 使用率を超過することはできません。
    limits.memory
    デプロイメントで Pod で実行される各ブローカーコンテナーは、このホストノードのメモリー使用率を超過することはできません。
    requests.cpu
    デプロイメントで Pod で実行される各ブローカーコンテナーはこのホストノード CPU の量を要求します。この値は、ブローカーコンテナーの実行に必要な CPU の最小量です。
    requests.memory
    デプロイメントで Pod で実行される各ブローカーコンテナーはこのホストノードメモリーを要求します。この値は、ブローカーコンテナーの実行に必要なメモリーの最小量です。
  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.4. クライアント接続用の Operator ベースのブローカーデプロイメントの設定

4.4.1. アクセプターの設定

OpenShift デプロイメントでブローカー Pod へのクライアント接続を有効にするには、デプロイメントのアクセプターを定義します。アクセプターは、ブローカー Pod が接続を受け入れる方法を定義します。ブローカーのデプロイメントに使用されるメインのカスタムリソース (CR) でアクセプターを定義します。アクセプターを作成する場合は、アクセプターを有効にするメッセージングプロトコルや、これらのプロトコルに使用するブローカー Pod のポートなどの情報を指定します。

以下の手順は、ブローカーデプロイメントの CR で新規アクセプターを定義する方法を示しています。

前提条件

  • アクセプターを設定するには、ブローカーのデプロイメントは AMQ Broker Operator のバージョン 0.9 以上をベースとする必要があります。Operator の最新バージョンのインストールについての詳細は、「CLI を使用した Operator のインストール」 を参照してください。
  • このセクションの情報は、AMQ Broker Operator をベースとしたブローカーデプロイメントにのみ適用されます。アプリケーションテンプレートを使用してブローカーデプロイメントを作成する場合は、プロトコル固有のアクセプターは定義できません。クライアント接続でこの種のデプロイメントを設定する方法は、第 6 章外部クライアントのテンプレートベースのブローカーデプロイメントへの接続 を参照してください。

手順

  1. 初回インストール時にダウンロードして展開した Operator アーカイブの deploy/crs ディレクトリーで、broker_activemqartemis_cr.yaml カスタムリソース (CR) ファイルを開きます。
  2. acceptors 要素に名前付きアクセプターを追加します。protocols および port パラメーターを追加します。値を設定して、アクセプターおよび各ブローカー Pod のポートによってこれらのプロトコル用に公開されるメッセージングプロトコルを指定します。以下に例を示します。

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp
        port: 5672
    ...

    設定されたアクセプターはポート 5672 を AMQP クライアントに公開します。protocols パラメーターに指定できる値の完全なセットが表に表示されます。

    プロトコル

    Core Protocol

    コア

    AMQP

    amqp

    OpenWire

    openwire

    MQTT

    mqtt

    STOMP

    stomp

    すべてのサポート対象プロトコル

    all

    注記
    • デプロイメントの各ブローカー Pod に対して、Operator はポート 61616 を使用するデフォルトのアクセプターも作成します。このデフォルトのアクセプターはブローカークラスターリングに必要ですが、Core Protocol は有効になっています。
    • デフォルトでは、AMQ Broker 管理コンソールはブローカー Pod で 8161 ポートを使用します。デプロイメントの各ブローカー Pod には、コンソールへのアクセスを提供する専用のサービスがあります。詳細は、「ブローカー管理コンソールにアクセスできる。」 を参照してください。
  3. 同じアクセプターで別のプロトコルを使用するには、protocol パラメーターを変更します。プロトコルのコンマ区切りリストを指定します。以下に例を示します。

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp,openwire
        port: 5672
    ...

    設定されたアクセプターはポート 5672 を AMQP および OpenWire クライアントに公開するようになりました。

  4. アクセプターが許可する同時クライアント接続の数を指定するには、connectionAllowed パラメーターを追加して値を設定します。以下に例を示します。

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp,openwire
        port: 5672
        connectionsAllowed: 5
    ...
  5. デフォルトでは、アクセプターはブローカーデプロイメントと同じ OpenShift クラスターのクライアントにのみ公開されます。アクセプターを OpenShift 外部のクライアントに公開するには、expose パラメーターを追加し、値を true に設定します。

    さらに、OpenShift 外部のクライアントからアクセプターへのセキュアな接続を有効にするには、sslEnabled パラメーターを追加し、値を true に設定します。

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp,openwire
        port: 5672
        connectionsAllowed: 5
        expose: true
        sslEnabled: true
        ...
    ...

    アクセプター (またはコネクター) で SSL (Secure Sockets Layer) セキュリティーを有効にすると、以下のような関連する設定を追加できます。

    • OpenShift クラスターに認証情報を保存するために使用されるシークレット名。アクセプターで SSL を有効にする場合は、シークレットが必要です。このシークレットの生成に関する詳細は、「ブローカークライアント接続のセキュリティー保護」 を参照してください。
    • セキュアなネットワーク通信に使用する TLS (Transport Layer Security) プロトコル。TLS は、よりセキュアな SSL バージョンで更新されています。enabledProtocols パラメーターで TLS プロトコルを指定します。
    • ブローカーとクライアント間で、アクセプターが相互認証とも呼ばれる双方向 TLS を使用するかどうか。これは、needClientAuth パラメーターの値を true に設定して指定します。

関連情報

4.4.2. ブローカークライアント接続のセキュリティー保護

アクセプターまたはコネクター (sslEnabledtrue に設定) でセキュリティーを有効にしている場合、ブローカーとクライアント間での証明書ベースの認証を許可するように Transport Layer Security (TLS) を設定する必要があります。TLS は、よりセキュアな SSL バージョンで更新されています。2 つの主要な TLS 設定があります。

一方向 TLS
ブローカーのみが証明書を表示します。証明書はクライアントによってブローカーを認証するために使用されます。これが最も一般的な設定です。
双方向 TLS
ブローカーとクライアントの両方が証明書を提示します。これは相互認証と呼ばれることもあります。

これ以降のセクションで以下を説明します。

一方向と双方向 TLS の両方の場合、ブローカーとクライアント間の正常な TLS ハンドシェイクに必要な認証情報を保存するシークレットを生成して、設定を完了します。これは、セキュアなアクセプターまたはコネクターの sslSecret パラメーターに指定する必要のあるシークレット名です。シークレットには、Base64 でエンコードされたブローカーキーストア (一方向と双方向 TLS の両方)、Base64 でエンコードされたブローカートラストストア (two-way TLS のみ)、およびこれらのファイルに対応するパスワード (Base64 エンコード) が含まれる必要があります。一方向および双方向 TLS の設定手順では、このシークレットの生成方法を説明します。

注記

セキュアなアクセプターまたはコネクターの sslSecret パラメーターにシークレット名を明示的に指定しないと、アクセプターまたはコネクターはデフォルトのシークレット名を想定します。デフォルトのシークレット名の形式は <CustomResourceName>-<AcceptorName>-secret または <CustomResourceName>-<ConnectorName>-secret です。例: my-broker-deployment-my-acceptor-secret

アクセプターまたはコネクターがデフォルトのシークレット名を想定している場合でも、このシークレットを独自に生成する必要があります。これは自動的に作成されません。

4.4.2.1. ホスト名検証用のブローカー証明書の設定
注記

本セクションでは、一方向または双方向 TLS の設定時に生成する必要のあるブローカー証明書の要件をいくつか説明します。

クライアントがデプロイメントでブローカー Pod への接続を試行する場合、クライアント接続 URL の verifyHost オプションはクライアントによって、ブローカーの証明書の Common Name (CN) をホスト名に比較するかどうかを判別し、一致することを確認します。クライアントが、クライアント接続 URL に verifyHost=true や同様の場合、クライアントはこの検証を実行します。

たとえば、ブローカーが分離されたネットワークの OpenShift クラスターにデプロイされる場合など、接続のセキュリティーに懸念がない場合、この検証を省略する場合があります。セキュアな接続では、クライアントがこの検証を実行することが推奨されます。この場合、ブローカーキーストア証明書の正しい設定は、クライアント接続を成功させるために不可欠です。

通常、クライアントがホストの検証を使用している場合、ブローカー証明書の生成時に指定する CN はクライアントが接続しているブローカー Pod の Route の完全なホスト名と一致する必要があります。たとえば、単一のブローカー Pod を持つデプロイメントがある場合、CN は以下のようになります。

CN=my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain

CN が複数のブローカーを持つデプロイメントの任意のブローカー Pod に解決するようにするには、ブローカー Pod の ordinal の場所でワイルドカード (*) を指定できます。以下に例を示します。

CN=my-broker-deployment-*-svc-rte-my-openshift-project.my-openshift-domain

前述の例に記載されている CN は、my-broker-deployment デプロイメントのブローカー Pod に正常に解決します。

さらに、ブローカー証明書の生成時に指定する SAN (Subject Alternative Name) は、コンマ区切りのリストとして、デプロイメント内のすべてのブローカー Pod を個別に一覧表示する必要があります。以下に例を示します。

"SAN=DNS:my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain,DNS:my-broker-deployment-1-svc-rte-my-openshift-project.my-openshift-domain,..."
4.4.2.2. 一方向 TLS の設定

本セクションの手順では、broker-client 接続のセキュリティーを保護するために一方向トランスポート層セキュリティー (TLS) を設定する方法を説明します。

一方向 TLS では、証明書を表示するブローカーのみが表示されます。この証明書は、クライアントがブローカーを認証するために使用されます。

前提条件

手順

  1. ブローカーキーストアの自己署名証明書を生成します。

    $ keytool -genkey -alias broker -keyalg RSA -keystore ~/broker.ks
  2. ブローカーキーストアから証明書をエクスポートし、クライアントと共有できるようにします。Base64 エンコードの .pem 形式の証明書をエクスポートします。以下に例を示します。

    $ keytool -export -alias broker -keystore ~/broker.ks -file ~/broker_cert.pem
  3. クライアントで、ブローカー証明書をインポートするクライアントトラストストアを作成します。

    $ keytool -import -alias broker -keystore ~/client.ts -file ~/broker_cert.pem
  4. 管理者として OpenShift Container Platform にログインします。以下に例を示します。

    $ oc login -u system:admin
  5. ブローカーのデプロイメントが含まれるプロジェクトに切り替えます。以下に例を示します。

    $ oc project my-openshift-project
  6. TLS 認証情報を保存するためのシークレットを作成します。以下に例を示します。

    $ oc create secret generic my-tls-secret \
    --from-file=broker.ks=~/broker.ks \
    --from-file=client.ts=~/broker.ks \
    --from-literal=keyStorePassword=<password> \
    --from-literal=trustStorePassword=<password>
    注記

    シークレットを生成する際に、OpenShift ではキーストアとトラストストアの両方を指定する必要があります。トラストストアキーは、基本的に client.ts という名前です。ブローカーとクライアント間の一方向 TLS では、トラストストアは実際には必要ありません。ただし、シークレットを正常に生成するには、一部の有効なストアファイルを client.ts の値として指定する必要があります。前述の手順では、以前に生成されたブローカーキーストアファイルを再利用することで、client.ts の dummy 値を指定します。これは、一方向 TLS に必要なすべての認証情報でシークレットを生成するには十分です。

  7. シークレットを Operator のインストール時に作成したサービスアカウントにリンクします。以下に例を示します。

    $ oc secrets link sa/amq-broker-operator secret/my-tls-secret
  8. セキュアなアクセプターまたはコネクターの sslSecret パラメーターにシークレット名を指定します。以下に例を示します。

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp,openwire
        port: 5672
        sslEnabled: true
        sslSecret: my-tls-secret
        expose: true
        connectionsAllowed: 5
    ...
4.4.2.3. 双方向 TLS の設定

本セクションの手順では、broker-client 接続のセキュリティーを保護するために双方向トランスポート層セキュリティー (TLS) を設定する方法を説明します。

双方向 TLS では、ブローカーとクライアントの両方が証明書を表示します。ブローカーおよびクライアントはこれらの証明書を使用して相互認証と呼ばれることもあります。

前提条件

手順

  1. ブローカーキーストアの自己署名証明書を生成します。

    $ keytool -genkey -alias broker -keyalg RSA -keystore ~/broker.ks
  2. ブローカーキーストアから証明書をエクスポートし、クライアントと共有できるようにします。Base64 エンコードの .pem 形式の証明書をエクスポートします。以下に例を示します。

    $ keytool -export -alias broker -keystore ~/broker.ks -file ~/broker_cert.pem
  3. クライアントで、ブローカー証明書をインポートするクライアントトラストストアを作成します。

    $ keytool -import -alias broker -keystore ~/client.ts -file ~/broker_cert.pem
  4. クライアントで、クライアントキーストアの自己署名証明書を生成します。

    $ keytool -genkey -alias broker -keyalg RSA -keystore ~/client.ks
  5. クライアントで、クライアントキーストアから証明書をエクスポートし、ブローカーと共有できるようにします。Base64 エンコードの .pem 形式の証明書をエクスポートします。以下に例を示します。

    $ keytool -export -alias broker -keystore ~/client.ks -file ~/client_cert.pem
  6. クライアント証明書をインポートするブローカートラストストアを作成します。

    $ keytool -import -alias broker -keystore ~/broker.ts -file ~/client_cert.pem
  7. 管理者として OpenShift Container Platform にログインします。以下に例を示します。

    $ oc login -u system:admin
  8. ブローカーのデプロイメントが含まれるプロジェクトに切り替えます。以下に例を示します。

    $ oc project my-openshift-project
  9. TLS 認証情報を保存するためのシークレットを作成します。以下に例を示します。

    $ oc create secret generic my-tls-secret \
    --from-file=broker.ks=~/broker.ks \
    --from-file=client.ts=~/broker.ts \
    --from-literal=keyStorePassword=<password> \
    --from-literal=trustStorePassword=<password>
    注記

    シークレットを生成する際に、OpenShift ではキーストアとトラストストアの両方を指定する必要があります。トラストストアキーは、基本的に client.ts という名前です。ブローカーとクライアント間の双方向 TLS の場合は、クライアント証明書を保持するため、ブローカートラストストアを含むシークレットを生成する必要があります。そのため、前の手順では、client.ts キーに指定した値は実際に ブローカー のトラストストアファイルになります。

  10. シークレットを Operator のインストール時に作成したサービスアカウントにリンクします。以下に例を示します。

    $ oc secrets link sa/amq-broker-operator secret/my-tls-secret
  11. セキュアなアクセプターまたはコネクターの sslSecret パラメーターにシークレット名を指定します。以下に例を示します。

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp,openwire
        port: 5672
        sslEnabled: true
        sslSecret: my-tls-secret
        expose: true
        connectionsAllowed: 5
    ...

4.4.3. ブローカーデプロイメントのネットワークサービス

ブローカーデプロイメントの OpenShift Container Platform Web コンソールの Networking ペインで、2 つの実行中のサービスがあり、ヘッドレス サービスと ping サービスが 2 つあります。ヘッドレスサービスのデフォルト名は、<Custom Resource name>-hdls-svc の形式を使用します (例: my-broker-deployment-hdls-svc)。ping サービスのデフォルト名は、<Custom Resource name>-ping-svc の形式を使用します (例: 'my-broker-deployment-ping-svc)。

ヘッドレスサービスは、各ブローカー Pod でポート 8161 および 61616 へのアクセスを提供します。ポート 8161 はブローカー管理コンソールに使用され、ポート 61616 はブローカーのクラスターリングに使用されます。ヘッドレスサービスを使用して、内部クライアントからブローカー Pod に接続することもできます (つまり、ブローカーデプロイメントと同じ OpenShift クラスター内のクライアント)。

ping サービスは検出のブローカーによって使用されます。また、ブローカーは OpenShift 環境内でクラスターを形成できるようにします。内部的には、このサービスはポート 8888 を公開します。

関連情報

4.4.4. 内部および外部クライアントからのブローカーへの接続

このセクションの例では、内部クライアント (つまりブローカーデプロイメントと同じ OpenShift クラスターのクライアント) および外部クライアント (OpenShift クラスター外のクライアント) からブローカーに接続する方法を示しています。

4.4.4.1. 内部クライアントからのブローカーへの接続

内部クライアントは、ブローカーデプロイメント用に実行されている ヘッドレス サービスを使用してブローカー Pod に接続できます。

ヘッドレスサービスを使用してブローカー Pod に接続するには、アドレスを <Protocol>://<PodName>.<HeadlessServiceName>.<ProjectName>.svc.cluster.local 形式で指定します。以下に例を示します。

$ tcp://my-broker-deployment-0.my-broker-deployment-hdls-svc.my-openshift-project.svc.cluster.local

OpenShift DNS は、Operator ベースのブローカーデプロイメントによって作成された StatefulSets は安定した Pod 名を提供するため、この形式でアドレスが正常に解決されました。

関連情報

4.4.4.2. 外部クライアントからのブローカーへの接続

外部クライアントにアクセプターを公開する場合 (つまり expose パラメーターの値を true に設定して)、デプロイメントの各ブローカー Pod に専用のサービスと Route が自動的に作成されます。指定のブローカー Pod で設定された Routes を表示するには、OpenShift Container Platform Web コンソールの Pod を選択し、Routes タブをクリックします。

外部クライアントはブローカー Pod 用に作成される Route の完全なホスト名を指定して、ブローカーに接続できます。基本的な curl コマンドを使用して、この完全なホスト名への外部アクセスをテストできます。以下に例を示します。

$ curl https://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain

Route の完全なホスト名は、OpenShift ルーターをホストするノードに解決する必要があります。OpenShift ルーターは、ホスト名を使用して、OpenShift 内部ネットワーク内のトラフィックを送信する場所を判別します。

デフォルトでは、OpenShift ルーターは、セキュアでないトラフィック (SSL 以外) トラフィックとポート 443 (SSL で暗号化した) トラフィックに対してポート 80 をリッスンします。HTTP 接続の場合、ルーターはセキュアな接続 URL (https) を指定する場合 (https) またはポート 80 を指定する場合は、トラフィックをポート 443 に自動的に転送します。

HTTP 以外の接続の場合:

  • クライアントは、接続 URL の一部としてポート番号 (ポート 443 など) を明示的に指定する必要があります。
  • 一方向 TLS では、クライアントは接続 URL の一部としてトラストストアと対応するパスワードへのパスを指定する必要があります。
  • 双方向 TLS の場合、クライアントは接続 URL の一部としてそのキーストアと対応するパスワードへのパス指定する必要があります。

以下は、サポートされるメッセージングプローブ用のクライアント接続 URL の例は次のとおりです。

一方向 TLS を使用する外部 Core クライアント

tcp://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443?useTopologyForLoadBalancing=false&sslEnabled=true \
&trustStorePath=~/client.ts&trustStorePassword=<password>

注記

外部コアクライアントはブローカーによって返されるトポロジー情報を使用できないため、useTopologyForLoadBalancing キーは接続 URL で false に明示的に設定されます。このキーが true に設定されているか、値を指定しないと、DEBUG ログメッセージが作成されます。

双方向 TLS を使用する外部 Core クライアント

tcp://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443?useTopologyForLoadBalancing=false&sslEnabled=true \
&keyStorePath=~/client.ks&keyStorePassword=<password> \
&trustStorePath=~/client.ts&trustStorePassword=<password>

一方向 TLS を使用する外部 OpenWire クライアント

ssl://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443"

# Also, specify the following JVM flags
-Djavax.net.ssl.trustStore=~/client.ts -Djavax.net.ssl.trustStorePassword=<password>

双方向 TLS を使用する外部 OpenWire クライアント

ssl://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443"

# Also, specify the following JVM flags
-Djavax.net.ssl.keyStore=~/client.ks -Djavax.net.ssl.keyStorePassword=<password> \
-Djavax.net.ssl.trustStore=~/client.ts -Djavax.net.ssl.trustStorePassword=<password>

一方向 TLS を使用する外部 AMQP クライアント

amqps://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443?transport.verifyHost=true \
&transport.trustStoreLocation=~/client.ts&transport.trustStorePassword=<password>

双方向 TLS を使用する外部 AMQP クライアント

amqps://my-broker-deployment-0-svc-rte-my-openshift-project.my-openshift-domain:443?transport.verifyHost=true \
&transport.keyStoreLocation=~/client.ks&transport.keyStorePassword=<password> \
&transport.trustStoreLocation=~/client.ts&transport.trustStorePassword=<password>

4.4.4.3. NodePort を使用したブローカーへの接続

ルートを使用する代わりに、OpenShift 管理者は NodePort を OpenShift 外部のクライアントからブローカー Pod に接続するように設定できます。NodePort は、ブローカーに設定されたアクセプターによって指定されるプロトコル固有のポートのいずれかにマップする必要があります。

デフォルトで、NodePort は 30000 から 32767 の範囲に置かれます。つまり、NodePort はブローカー Pod の意図されるポートとは一致しません。

NodePort 経由で OpenShift 外のクライアントからブローカーに接続するには、<Protocol>://<OCPNodeIP>:<NodePortNumber> の形式で URL を指定します。

関連情報

4.4.5. AMQ Broker 管理コンソールへの接続

ブローカーは、ポート 8161 で独自の管理コンソールをホストします。デプロイ内の各ブローカー Pod には、コンソールへのアクセスを提供するサービスとルートがあります。

次の手順は、実行中のブローカーインスタンスを AMQ Broker 管理コンソールに接続する方法を示しています。

前提条件

4.4.5.1. ブローカー管理コンソールにアクセスできる。

デプロイメントの各ブローカー Pod には、コンソールへのアクセスを提供するサービスがある。このサービスのデフォルト名は、<Custom Resource name>-wconsj-<broker Pod ordinal>-svc の形式を使用します。例: my-broker-deployment-wconsj-0-svc各 Service には、`<Custom Resource name>-wconsj-<broker Pod ordinal>-svc-rte という形式を使用する、対応の Route がある。例: my-broker-deployment-wconsj-0-svc-rte

この手順では、実行中のブローカーインスタンスの AMQ Broker 管理コンソールにアクセスする方法を示します。

手順

  1. OpenShift Container Platform web コンソールで、NetworkingRoutes (OpenShift Container Platform 4.1 以降) または ApplicationsRoutes (OpenShift Container Platform 3.11) をクリックします。

    Routes ペインに、wconsj サービスに対応するルートが表示されます。

  2. Hostname の下にある完全な URL をメモします。コンソールにアクセスするには、この URL を指定する必要があります。
  3. Web ブラウザーで、ホスト名の URL を入力します。

    1. コンソール設定で SSL を使用しない場合は、URL に http を指定してください。この場合、ホスト名の DNS が解決されて、トラフィックは OpenShift ルーターのポート 80 に転送されます。
    2. コンソール設定で SSL を使用する場合は、URL に https を指定します。この場合、ブラウザーはデフォルトで OpenShift ルーターのポート 443 になります。この設定により、OpenShift ルーターが SSL トラフィックにポート 443 も使用する場合には、コンソールに正常に接続できます (これは、ルーターのデフォルト設定)。
  4. 管理コンソールにログインするには、ブローカーのデプロイメントを作成するために使用されるカスタムリソース (CR) インスタンスの adminUser および adminPassword パラメーターで指定されたユーザー名とパスワードを入力します。

    CR で adminUseradminPassword に値が明示的に指定されていない場合は、管理コンソールのログイン認証情報へのアクセス の手順に従って、コンソールへのログインに必要な認証情報を取得します。

注記

adminUser および adminPassword の値は、CR の requireLogin パラメーターが true に設定されている場合にのみ管理コンソールにログインする必要があります。requireLoginfalse に設定されている場合、OpenShift プロジェクトの管理者権限を持つすべてのユーザーがコンソールにログインできます。

4.4.5.2. 管理コンソールのログインクレデンシャルへのアクセス

ブローカーデプロイメントに使用するカスタムリソース (CR) インスタンスに adminUser および adminPassword の値を指定しない場合、Operator はこれらの認証情報を自動的に生成し、それらをシークレットに保存します。デフォルトのシークレット名は <Custom Resource name>-credentials-secret の形式を取ります (例: my-broker-deployment-credentials-secret)。

注記

adminUser および adminPassword の値は、CR の requireLogin パラメーターが true に設定されている場合にのみ管理コンソールにログインする必要があります。requireLoginfalse に設定されている場合、OpenShift プロジェクトの管理者権限を持つすべてのユーザーがコンソールにログインできます。

以下の手順では、ログイン認証情報にアクセスする方法を説明します。

手順

  1. OpenShift プロジェクトのシークレットの詳細な一覧を参照してください。

    1. OpenShift Container Platform Web コンソールから、WorkloadSecrets (OpenShift Container Platform 4.1 以降) または ResourcesSecrets (OpenShift Container Platform 3.11) をクリックします。
    2. コマンドラインで以下を行います。

      $ oc get secrets
  2. 適切なシークレットを開き、Base64 でエンコードされたコンソールログイン認証情報を表示します。

    1. OpenShift Container Platform Web コンソールから、名前にブローカーカスタムリソースインスタンスが含まれるシークレットをクリックします。YAML タブ (OpenShift Container Platform 4.1 以降) または ActionsEdit YAML (OpenShift Container Platform 3.11) をクリックします。
    2. コマンドラインで以下を行います。

      $ oc edit secret <my-broker-deployment-credentials-secret>
  3. シークレットの値をデコードするには、以下のようなコマンドを実行します。

    $ echo 'dXNlcl9uYW1l' | base64 --decode
    console_admin

4.5. AMQP メッセージに対する大きなメッセージ処理の設定

クライアントは、ブローカーの内部バッファーのサイズを超える大きな AMQP メッセージを送信する可能性があり、予期せぬエラーが発生する可能性があります。この状態を回避するには、メッセージが指定の最小値よりも大きい場合にメッセージをファイルとして保存するようにブローカーを設定できます。このように大きなメッセージを処理すると、ブローカーはメモリー内にメッセージを保持しません。代わりに、ブローカーはメッセージを大きなメッセージファイルを保存するために使用される専用ディレクトリーに保存します。

OpenShift Container Platform でのブローカーデプロイメントでは、大きなメッセージディレクトリーは、メッセージストレージ用にブローカーが使用する永続ボリューム (PV) の /opt/<custom-resource-name>/data/large-messages です。ブローカーがメッセージを大きなメッセージとして保存すると、キューは大きなメッセージディレクトリーのファイルへの参照を保持します。

重要
  • AMQP メッセージに大きなメッセージ処理を設定するには、AMQ Broker 7.7 の Operator の最新バージョンを使用する必要があります (バージョン 0.17)。Operator を最新バージョンにアップグレードする方法については、5章Operator ベースのブローカーデプロイメントのアップグレード を参照してください。
  • AMQ Broker 7.7 の Operator ベースのブローカーデプロイメントでは、AMQP プロトコルでのみ大きなメッセージ処理を利用することができます。

4.5.1. 大規模なメッセージ処理のための AMQP アクセプターの設定

以下の手順は、指定したサイズよりも大きい AMQP メッセージを処理するようにアクセプターを設定する方法を説明します。

前提条件

手順

  1. AMQP アクセプターを定義したカスタムリソース (CR) インスタンスを開きます。

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

      $ oc edit -f <path/to/custom-resource-instance>.yaml
    2. OpenShift Container Platform Web コンソールの使用

      1. 左側のナビゲーションメニューで、AdministrationCustom Resource Definitions をクリックします。
      2. ActiveMQArtemis CRD をクリックします。
      3. Instances タブをクリックします。
      4. プロジェクトの namespace に対応する CR インスタンスを見つけます。

    以前に設定された AMQP アクセプターは、以下のようになります。

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp
        port: 5672
        connectionsAllowed: 5
        expose: true
        sslEnabled: true
    ...
  2. ブローカーが大きいメッセージとして処理する AMQP メッセージの最小サイズをバイト単位で指定します。以下に例を示します。

    spec:
    ...
      acceptors:
      - name: my-acceptor
        protocols: amqp
        port: 5672
        connectionsAllowed: 5
        expose: true
        sslEnabled: true
        amqpMinLargeMessageSize: 204800
        ...
    ...

    上記の例では、ブローカーはポート 5672 で AMQP メッセージを受け入れるように設定されます。amqpMinLargeMessageSize の値に基づいて、アクセプターが 204800 バイトよりも大きい AMQP メッセージ (200 キロバイト以上) を受信する場合、ブローカーはメッセージを大きなメッセージとして格納します。

    ブローカーはメッセージを、メッセージストレージ用にブローカーが使用する永続ボリューム (PV) の永続ボリューム (デフォルトでは /opt/<custom-resource-name>/data/large-messages) にメッセージを保存します。

    amqpMinLargeMessageSize プロパティーの値を明示的に指定しないと、ブローカーは 102400 (つまり 100 キロバイト) のデフォルト値を使用します。

    amqpMinLargeMessageSize-1 に設定すると、AMQP メッセージに対する大きなメッセージ処理が無効になります。

4.6. 高可用性およびメッセージの移行

4.6.1. 高可用性

高可用性という用語は、そのシステムの一部に障害が発生したりシャットダウンしている場合でも、稼働を継続できるシステムを指します。AMQ Broker on OpenShift Container Platform の場合、ブローカー Pod が失敗した場合にメッセージングデータの整合性と可用性を確保したり、デプロイメントを意図的にスケールダウンしてシャットダウンします。

OpenShift Container Platform の AMQ Broker の高可用性を確保するには、ブローカークラスターで複数のブローカー Pod を実行します。各ブローカー Pod は、永続ボリューム要求 (PVC) で使用するために要求する利用可能な永続ボリューム (PV) にメッセージデータを書き込みます。ブローカー Pod が失敗するか、またはシャットダウンされた場合、PV に保存されているメッセージデータはブローカークラスターの別の利用可能なブローカー Pod に移行されます。他のブローカー Pod はメッセージデータを独自の PV に保存します。

注記

メッセージの移行は、AMQ Broker Operator に基づくデプロイメントでのみ利用できます。アプリケーションテンプレートをベースとするデプロイメントは、メッセージの移行機能はありません

以下の図は、StatefulSet ベースのブローカーのデプロイメントを示しています。この場合、ブローカークラスターの 2 つのブローカー Pod は引き続き実行されます。

ahocp Pod のドレイン

ブローカー Pod がシャットダウンすると、AMQ Broker Operator は、ブローカークラスターで実行中の別のブローカー Pod へのメッセージ移行を実行するスケールダウンコントローラーを自動的に開始します。このメッセージの移行プロセスは、Pod のドレインとしても知られています。以降のセクションでは、メッセージの移行について説明します。

4.6.2. メッセージの移行

デプロイメントの失敗や意図的なスケールダウンによってクラスターデプロイメントのブローカーがシャットダウンする場合に、メッセージの移行はメッセージングデータの整合性を確保することです。このプロセスは、Pod のドレインとしても、シャットダウンしたブローカー Pod からのメッセージの削除および再分配を指します。

注記
  • メッセージの移行は、AMQ Broker Operator に基づくデプロイメントでのみ利用できます。アプリケーションテンプレートをベースとするデプロイメントは、メッセージの移行機能はありません
  • メッセージ移行を実行するスケールダウンコントローラーは、単一の OpenShift プロジェクト内でのみ動作します。コントローラーは、別のプロジェクトのブローカー間でメッセージを移行できません。
  • メッセージの移行を使用するには、デプロイメントに 2 つ以上のブローカーが必要です。デフォルトでは 2 つ以上のブローカーを持つブローカーはクラスター化されます。

Operator ベースのブローカーのデプロイメントでは、デプロイメントのメインブローカーカスタムリソースで messageMigrationtrue に設定して、メッセージの移行を有効にします。

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

  1. デプロイメントのブローカー Pod がデプロイメントの失敗または意図的にスケールダウンによってシャットダウンすると、Operator はスケールダウンコントローラーを自動的に起動してメッセージ移行の準備を行います。縮小コントローラーは、ブローカークラスターと同じ OpenShift プロジェクト名で実行されます。
  2. 縮小コントローラーは、それ自体を登録し、プロジェクトの Persistent Volume Claim (永続ボリューム要求、PVC) に関連する Kubernetes イベントをリッスンします。
  3. 孤立した永続ボリューム (PV) の有無を確認するには、縮小コントローラーはボリューム要求上の序数を探します。コントローラーは、ボリューム要求の序数を、プロジェクトの StatefulSet (ブローカークラスター) で実行されているブローカー Pod と比較します。

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

  4. 縮小コントローラーはドレイン Pod を起動します。ドレイン Pod はブローカーを実行し、メッセージ移行を実行します。次に、ドレイン Pod は孤立したメッセージを移行する代替ブローカー Pod を識別します。

    注記

    メッセージの移行を可能にするには、少なくとも 1 つ以上のブローカー Pod がデプロイメントで実行されている必要があります。

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

ahocp Pod ドレイン 3

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

注記

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

関連情報

  • ブローカーのデプロイメントをスケールダウンする際のメッセージ移行の例については、縮小後のメッセージの移行 を参照してください。

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 個のメッセージを正常に移行しました。

第5章 Operator ベースのブローカーデプロイメントのアップグレード

本セクションの手順では、アップグレードする方法を説明します。

  • OpenShift コマンドラインインターフェイス (CLI) と OperatorHub の両方を使用した AMQ Broker Operator バージョン
  • Operator ベースのブローカーデプロイメント用のブローカーコンテナーイメージ
注記
  • OpenShift Container Platform 3.11 で既存の AMQ Broker デプロイメントを OpenShift Container Platform 4.1 以降で実行するには、既存のデプロイメントに一致する AMQ Broker をクリーンインストールする前に、まず OpenShift Container Platform インストールをアップグレードする必要があります。AMQ Broker をクリーンインストールするには、以下のいずれかの方法を使用します。

  • 以下の手順では、マイナー バージョン間でイメージ仕様を手動でアップグレードする方法を説明します (例: 7.x から 7.y)。イメージ仕様で 7.y などの Floating タグを使用する場合、StatefulSet または DeploymentConfig の imagePullPolicy 属性が Always に設定されていると、デプロイメントは、新しい micro イメージバージョン (7.y-z) が利用できるように 自動的 にプルし、使用します。

    たとえば、デプロイメントの image 属性が 7.7 の Floating タグを指定するとします。デプロイメントで現在マイナーバージョン 7.7-2 を使用し、新しいマイナーバージョン 7.7-3 がレジストリーで利用可能な場合に、デプロイメントは新しいマイナーバージョンを自動的にプルし、これを使用します。新しいイメージを使用するには、デプロイメントの各ブローカー Pod が再起動します。デプロイメントに複数のブローカーがある場合、ブローカー Pod は一度に 1 つずつ再起動されます。

5.1. テクニカルプレビューベースのデプロイメントのアップグレードについて

AMQ Broker 7.4.0 で最初に利用可能になった AMQ Broker Operator のバージョン 0.6 は、テクニカルプレビュー機能のみでした。このバージョンの Operator に基づいてブローカーデプロイメントのブローカーコンテナーイメージまたは Operator バージョンをアップグレードする場合は、以下のリストにいくつかの重要な考慮事項が記載されています。

  • Operator のバージョン 0.6 は、AMQ Broker 7.7 の最新バージョンを含む新しいバージョンに直接アップグレード できません。バージョン 0.6 で使用されるカスタムリソース定義 (CRD) は、それ以降のバージョンの Operator と互換性がありません。Operator をバージョン 0.6 からアップグレードするには、Operator の新規インストールを実行する前に、以前にデプロイされた CRD を削除する必要があります。Operator の新しいバージョンをインストールしたら、ブローカーデプロイメントを再作成する必要があります。Operator の最新バージョンをインストールする方法については、「CLI を使用した Operator のインストール」 を参照してください。
  • 最新の Operator バージョンの CRD を使用してクラスターを更新する場合、今回の更新はクラスターのすべてのプロジェクトに影響を与えます。バージョン 0.6 の Operator から過去にデプロイされたブローカー Pod は、ステータスを更新できなくなります。OpenShift Container Platform Web コンソールで実行中のブローカー Pod の Logs タブをクリックすると、UpdatePodStatus が失敗したことを示すメッセージが表示されます。ただし、そのプロジェクトのブローカー Pod および Operator は予想通りに機能し続けます。影響を受けるプロジェクトに対してこの問題を解決するには、Operator の最新バージョンを使用するようプロジェクトをアップグレードする必要もあります。
  • 「ブローカーコンテナーイメージのアップグレード」 は、Operator ベースのデプロイメントの ブローカーコンテナーイメージ をアップグレードする方法を示しています。この手順は、Operator のバージョン 0.13 を使用して以前のデプロイメントを作成していることを前提としています。同様の手順を使用して、Operator のバージョン 0.6 に基づくデプロイメントのブローカーコンテナーイメージをアップグレードできます。バージョン 0.6 に含まれるメインブローカーのカスタムリソース (CR) インスタンスは、broker_v1alpha1_activemqartemis_cr.yaml でした。

5.2. CLI を使用した Operator のアップグレード

本セクションの手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して、異なるバージョンの Operator を AMQ Broker 7.7 で利用可能な最新バージョンに更新する方法を説明します。

注記
  • OperatorHub グラフィカルインターフェイスを使用する AMQ Broker Operator の別のアップグレード方法については、「OperatorHub を使用した Operator のアップグレード」 を参照してください。
  • OpenShift CLI または OperatorHub を使用して AMQ Broker Operator デプロイメントをアップグレードするには、OpenShift クラスターのクラスター管理者権限が必要です。

5.2.1. Operator のバージョン 0.15 のアップグレード

この手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して Operator のバージョン 0.15 (AMQ Broker 7.7 で利用できるバージョン) を AMQ Broker 7.7 の最新バージョンにアップグレードする方法を説明します。

手順

  1. Web ブラウザーで、AMQ Broker 7.7.0 patchesSoftware Downloads ページに移動します。
  2. Version ドロップダウンリストの値が 7.7.0 に設定され、Patches タブが選択されていることを確認します。
  3. AMQ Broker 7.7.0 Operator Installation and Example Files の横にある Download をクリックします。

    amq-broker-operator-7.7.0-ocp-install-examples.zip 圧縮アーカイブのダウンロードが自動的に開始します。

  4. ダウンロードが完了したら、アーカイブを選択したインストールディレクトリーに移動します。以下の例では、アーカイブを ~/broker/operator という名前のディレクトリーに移動します。

    mkdir ~/broker/operator
    mv amq-broker-operator-7.7.0-ocp-install-examples.zip ~/broker/operator
  5. 選択したインストールディレクトリーで、アーカイブの内容を展開します。以下に例を示します。

    cd ~/broker/operator
    unzip amq-broker-operator-7.7.0-ocp-install-examples.zip
  6. クラスター管理者として OpenShift Container Platform にログインします。以下に例を示します。

    $ oc login -u system:admin
  7. Operator バージョンをアップグレードする OpenShift プロジェクトに切り替えます。

    $ oc project <project-name>
  8. プロジェクトに既存のブローカーデプロイメントのメインカスタムリソース (CR) を削除します。以下に例を示します。

    $ oc delete -f deploy/crs/broker_activemqartemis_cr.yaml
  9. OpenShift クラスターのメインブローカーカスタムリソース定義 (CRD) を最新バージョンに更新します。

    $ oc apply -f deploy/crds/broker_activemqartemis_crd.yaml
    注記

    アドレス指定またはスケールダウンコントローラーのために、CRD の最新バージョンでクラスターを更新する必要はありません。これらの CRD は、以前の Operator バージョンと完全に互換性があります。

  10. 以前のインストール中にダウンロードして展開した Operator アーカイブの deploy ディレクトリーで、operator.yaml ファイルを開きます。
  11. 以下に示すように、spec.containers.image プロパティーを更新して、AMQ Broker 7.7 の最新の Operator イメージへの完全パスを指定します。

    spec:
        template:
            spec:
                containers:
                    image: registry.redhat.io/amq7/amq-broker-rhel7-operator:0.17
  12. spec.containers.image を更新したら、変更を適用します。

    $ oc apply -f deploy/operator.yaml

    OpenShift は、最新の Operator バージョンを使用するようにプロジェクトを更新します。

  13. 以前のブローカーデプロイメントを再作成するには、メインブローカー CR の新しいインスタンスをプロジェクトにデプロイします。詳細は、「基本的なブローカーインスタンスのデプロイ」 を参照してください。

5.2.2. Operator のバージョン 0.13 のアップグレード

この手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して Operator のバージョン 0.13 (AMQ Broker 7.6 で利用できるバージョン) を AMQ Broker 7.7 の最新バージョンにアップグレードする方法を説明します。

手順

  1. Web ブラウザーで、AMQ Broker 7.7.0 patchesSoftware Downloads ページに移動します。
  2. Version ドロップダウンリストの値が 7.7.0 に設定され、Patches タブが選択されていることを確認します。
  3. AMQ Broker 7.7.0 Operator Installation and Example Files の横にある Download をクリックします。

    amq-broker-operator-7.7.0-ocp-install-examples.zip 圧縮アーカイブのダウンロードが自動的に開始します。

  4. ダウンロードが完了したら、アーカイブを選択したインストールディレクトリーに移動します。以下の例では、アーカイブを ~/broker/operator という名前のディレクトリーに移動します。

    mkdir ~/broker/operator
    mv amq-broker-operator-7.7.0-ocp-install-examples.zip ~/broker/operator
  5. 選択したインストールディレクトリーで、アーカイブの内容を展開します。以下に例を示します。

    cd ~/broker/operator
    unzip amq-broker-operator-7.7.0-ocp-install-examples.zip
  6. クラスター管理者として OpenShift Container Platform にログインします。以下に例を示します。

    $ oc login -u system:admin
  7. Operator バージョンをアップグレードする OpenShift プロジェクトに切り替えます。

    $ oc project <project-name>
  8. プロジェクトに既存のブローカーデプロイメントのメインカスタムリソース (CR) を削除します。以下に例を示します。

    $ oc delete -f deploy/crs/broker_activemqartemis_cr.yaml
  9. OpenShift クラスターのメインブローカーカスタムリソース定義 (CRD) を最新バージョンに更新します。

    $ oc apply -f deploy/crds/broker_activemqartemis_crd.yaml
  10. OpenShift クラスターの アドレス CRD を、AMQ Broker 7.7 に含まれる最新バージョンに更新します。

    $ oc apply -f deploy/crds/broker_activemqartemisaddress_crd.yaml
    注記

    スケールダウンコントローラーのために、CRD の最新バージョンでクラスターを更新する必要はありません。AMQ Broker 7.7 では、この CRD は AMQ Broker 7.6 の Operator に含まれるものと完全に互換性があります。

  11. 以前のインストール中にダウンロードして展開した Operator アーカイブの deploy ディレクトリーで、operator.yaml ファイルを開きます。
  12. 以下に示すように、spec.containers.image プロパティーを更新して、AMQ Broker 7.7 の最新の Operator イメージへの完全パスを指定します。

    spec:
        template:
            spec:
                containers:
                    image: registry.redhat.io/amq7/amq-broker-rhel7-operator:0.17
  13. spec.containers.image を更新したら、変更を適用します。

    $ oc apply -f deploy/operator.yaml

    OpenShift は、最新の Operator バージョンを使用するようにプロジェクトを更新します。

5.2.3. Operator のバージョン 0.9 のアップグレード

以下の手順では、OpenShift コマンドラインインターフェイス (CLI) を使用して Operator のバージョン 0.9 (AMQ Broker 7.5 で利用可能なバージョン、または AMQ Broker 7.4 で利用可能な長期サポートバージョン) を AMQ Broker 7.7 の最新バージョンにアップグレードする方法を説明します。

重要

この Operator アップグレードの一環として、プロジェクト内の既存のブローカーデプロイメントを削除してから再作成する必要があります。これらの手順については、次の手順で説明します。

手順

  1. Web ブラウザーで、AMQ Broker 7.7.0 patchesSoftware Downloads ページに移動します。
  2. Version ドロップダウンリストの値が 7.7.0 に設定され、Patches タブが選択されていることを確認します。
  3. AMQ Broker 7.7.0 Operator Installation and Example Files の横にある Download をクリックします。

    amq-broker-operator-7.7.0-ocp-install-examples.zip 圧縮アーカイブのダウンロードが自動的に開始します。

  4. ダウンロードが完了したら、アーカイブを選択したインストールディレクトリーに移動します。以下の例では、アーカイブを ~/broker/operator という名前のディレクトリーに移動します。

    mkdir ~/broker/operator
    mv amq-broker-operator-7.7.0-ocp-install-examples.zip ~/broker/operator
  5. 選択したインストールディレクトリーで、アーカイブの内容を展開します。以下に例を示します。

    cd ~/broker/operator
    unzip amq-broker-operator-7.7.0-ocp-install-examples.zip
  6. クラスター管理者として OpenShift Container Platform にログインします。以下に例を示します。

    $ oc login -u system:admin
  7. Operator バージョンをアップグレードする OpenShift プロジェクトに切り替えます。

    $ oc project <project_name>
  8. プロジェクトに既存のブローカーデプロイメントのメインカスタムリソース (CR) を削除します。以下に例を示します。

    $ oc delete -f deploy/crs/broker_v2alpha1_activemqartemis_cr.yaml
  9. OpenShift クラスターのメインブローカーカスタムリソース定義 (CRD) を AMQ Broker 7.7 に含まれる最新バージョンに更新します。

    $ oc apply -f deploy/crds/broker_activemqartemis_crd.yaml
  10. OpenShift クラスターのアドレス CRD を、AMQ Broker 7.7 に含まれる最新バージョンに更新します。

    $ oc apply -f deploy/crds/broker_activemqartemisaddress_crd.yaml
    注記

    スケールダウンコントローラーのために、CRD の最新バージョンでクラスターを更新する必要はありません。AMQ Broker 7.7 では、この CRD は直前の Operator バージョンに含まれるものと完全に互換性があります。

  11. 以前のインストール中にダウンロードして展開した Operator アーカイブの deploy ディレクトリーで、operator.yaml ファイルを開きます。
  12. 以下に示すように、spec.containers.image プロパティーを更新して、AMQ Broker 7.7 の最新の Operator イメージへの完全パスを指定します。

    spec:
        template:
            spec:
                containers:
                    image: registry.redhat.io/amq7/amq-broker-rhel7-operator:0.17
  13. spec.containers.image を更新したら、変更を適用します。

    $ oc apply -f deploy/operator.yaml

    OpenShift は、最新の Operator バージョンを使用するようにプロジェクトを更新します。

  14. 以前のブローカーデプロイメントを再作成するには、メインブローカー CR の新しいインスタンスをプロジェクトにデプロイします。詳細は、「基本的なブローカーインスタンスのデプロイ」 を参照してください。

5.3. OperatorHub を使用した Operator のアップグレード

この手順では、OperatorHub を使用して AMQ Broker Operator のインスタンスをアップグレードする方法を説明します。

重要
  • OperatorHub を使用して AMQ Broker Operator をアップグレードするには、OpenShift クラスターのクラスター管理者権限が必要です。
  • OperatorHub を使用して、Operator を AMQ Broker 7.7 の最新バージョンに シームレスに アップグレードできません。代わりに、以下の手順で説明するように、既存の Operator をアンインストールしてから、OperatorHub から最新バージョンをインストールする必要があります。このアップグレードの一環として、プロジェクト内の既存のブローカーデプロイメントを削除してから再作成する必要もあります。
  • Operator のバージョン 0.6 (つまり、AMQ Broker 7.4 で利用可能だったテクニカルプレビューバージョン) をアップグレードする場合、以前にクラスターにデプロイされたカスタムリソース定義 (CRD) も削除してから、Operator の新規インストールを実行する必要があります。これらの手順については、次の手順で説明します。

手順

  1. クラスター管理者として OpenShift Container Platform Web コンソールにログインします。
  2. プロジェクトのブローカーデプロイメントのメインカスタムリソース (CR) インスタンスを削除します。このアクションにより、ブローカーデプロイメントが削除されます。

    1. 左側のナビゲーションメニューで、カスタムリソース定義 をクリックします。
    2. Custom Resource Definitions ページで、ActiveMQArtemis CRD をクリックします。
    3. Instances タブをクリックします。
    4. プロジェクトの namespace に対応する CR インスタンスを見つけます。
    5. CR インスタンスの場合は、右側の More Options アイコン (3 つの点) をクリックします。Delete ActiveMQArtemis を選択します。
  3. プロジェクトから既存の AMQ Broker Operator をアンインストールします。

    1. 左側のナビゲーションメニューで、OperatorsInstalled Operators をクリックします。
    2. ページ上部の Project ドロップダウンメニューから、Operator をアンインストールするプロジェクトを選択します。
    3. アンインストールする Red Hat Integration - AMQ Broker インスタンスを見つけます。
    4. Operator インスタンスの場合は、右側の More Options アイコン (3 つの点) をクリックします。Uninstall Operator を選択します。
    5. 確認ダイアログボックスで、Uninstall をクリックします。
  4. Operator のバージョン 0.6 (つまり、AMQ Broker 7.4 で利用可能だった Technical Preview バージョン) をアップグレードする場合:

    1. AMQ Broker 7.7 に含まれる最新の CRD にアクセスします。「Operator コードの取得」 を参照してください。
    2. クラスター内の既存の CRD を削除し、最新の CRD を手動でデプロイします。「CLI を使用した Operator のデプロイ」を参照してください。

      注記
      • Operator のバージョン 0.15 (つまり、AMQ Broker 7.7 で利用可能な最初のバージョン)、バージョン 0.13 (つまり、AMQ Broker 7.6 で利用可能なバージョン)、またはバージョン 0.9 (つまり、AMQ で利用可能なバージョン) をアップグレードする場合 Broker 7.5、または AMQ Broker 7.4 で利用可能な長期サポートバージョン) を使用している場合に、Operator Hub から最新の Operator バージョンをインストールすると、Operator Lifecycle Manager (OLM) は OpenShift クラスターの CRD を 自動的に 更新します。既存の CRD を削除する必要はありません。
      • 最新の Operator バージョンの CRD を使用してクラスターを更新する場合、今回の更新はクラスターのすべてのプロジェクトに影響を与えます。以前のバージョンの Operator からデプロイされたブローカー Pod は、OpenShift Container Platform Web コンソールでそれらのステータスを更新できなくなる可能性があります。稼働中のブローカー Pod の Logs タブをクリックしたら、UpdatePodStatus が失敗したことを示すメッセージが表示されます。ただし、そのプロジェクトのブローカー Pod および Operator は予想通りに機能し続けます。影響を受けるプロジェクトに対してこの問題を解決するには、Operator の最新バージョンを使用するようプロジェクトをアップグレードする必要もあります。
  5. OperatorHub を使用して、AMQ Broker 7.7 の Operator の最新バージョンをインストールします。詳細は、「OperatorHub からの Operator のデプロイ」 を参照してください。
  6. 以前のブローカーデプロイメントを再作成するには、メインブローカー CR の新しいインスタンスをプロジェクトにデプロイします。詳細は、「基本的なブローカーインスタンスのデプロイ」 を参照してください。

5.4. ブローカーコンテナーイメージのアップグレード

Operator ベースのブローカーのデプロイメントの場合、このセクションの手順では、以下の方法を説明します。

ブローカーコンテナーイメージをアップグレードするどちらのアプローチにも、デプロイの作成に使用されるカスタムリソース (CR) インスタンスの編集が含まれます。

AMQ Broker バージョンを指定してブローカーコンテナーイメージをアップグレードすると、CR で指定されたイメージタグが Red Hat Container Registry の有効なイメージに対応していることを確認する必要がないという点が利点です。代わりに、CR を更新して AMQ Broker のバージョン (たとえば、7.7.0) を指定すると、Operator は最初に既存のデプロイメントで AMQ Broker の指定されたバージョンへの直接アップグレードが可能であることを検証します。アップグレードが可能な場合、Operator は CR を更新して、指定されたバージョンの AMQ Broker (registry.redhat.io/amq7/amq-broker:7.7-2 など) のブローカーコンテナーイメージを指定します。Operator が指定するブローカーイメージは、Operator デプロイメントの環境変数でデフォルトで定義されます。環境変数名は、BROKER_IMAGE_770 など、AMQ Broker のバージョンと一致します。Operator が CR の変更を適用すると、デプロイメントで各ブローカー Pod が再起動し、各 Pod が指定されたイメージバージョンを使用するようにします。

AMQ Broker バージョンを指定してブローカーコンテナーイメージをアップグレードする場合に欠点として考えられるのは、ブローカーイメージが Operator デプロイメントで静的に定義される点です。Operator は、利用可能になった新しいイメージバージョンを Red Hat Container Registry で動的に検索できません。このため、Operator が最初のアップグレードを実行した後にイメージタグを手動で更新するオプションが必要になる場合があります。したがって、ブローカーのデプロイメントが最新バージョンのブローカーコンテナーイメージを引き続き使用することを保証する戦略では、両方のアップグレード方法が混在する可能性があります。

以下の手順は、両方のアプローチを示しています。

5.4.1. イメージタグを指定してブローカーコンテナーイメージをアップグレードする方法

以下の手順では、イメージタグを指定して、Operator ベースのデプロイメントのブローカーコンテナーイメージをアップグレードする方法を説明します。

前提条件

  • この手順では、Operator のバージョン 0.15 または 0.13 (つまり、AMQ Broker 7.7 で利用可能な 最初 のバージョンまたは AMQ Broker 7.6 で利用可能なバージョン) を使用して以前のブローカーデプロイメントを作成したことを前提としています。これらのバージョンの Operator に含まれるメインブローカーのカスタムリソース (CR) インスタンスの名前は、broker_activemqartemis_cr.yaml であること。

    同様の手順を使用して、Operator のバージョン 0.9 (つまり、AMQ Broker 7.5 で利用可能なバージョンまたは AMQ Broker 7.4 で利用可能な長期サポートバージョン) に基づくデプロイメントのブローカーコンテナーイメージをアップグレードできます。Operator のバージョン 0.9 に含まれるメインブローカー CR の名前は、broker_v2alpha1_activemqartemis_cr.yaml であること。

手順

  1. 以前のインストール時にダウンロードして抽出した Operator アーカイブの deploy/crs ディレクトリーで、メインブローカー CR である broker_activemqartemis_cr.yaml を開きます。
  2. 以下に示すように、image 要素を編集して、最新の AMQ Broker 7.7 コンテナーイメージを指定します。

    spec:
        ...
        deploymentPlan:
            ...
            image: registry.redhat.io/amq7/amq-broker:7.7
    注記

    前の手順では、完全なイメージタグ (例: 7.7-2) ではなく、floating イメージタグ (つまり、7.7) を指定します。このフローティングタグを指定して変更を適用すると、デプロイメントは 7.7 イメージストリームで利用可能な最新のイメージを 自動的に プルして使用します。さらに、フローティングタグを指定するときに、Stateful Set の imagePullPolicy 属性が Always に設定されている場合に、Red Hat Container Registry で利用可能になったときに、デプロイメントは新しい micro イメージバージョン (例: 7.7-37-7-4 など) を自動的にプルして使用します)。

  3. CR ファイルを保存します。
  4. CR 変更を適用します。

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

    CR の変更を適用すると、デプロイ内の各ブローカー Pod がシャットダウンされ、新しいブローカーコンテナーイメージを使用して再起動されます。デプロイメントに複数のブローカーがある場合、1 つのブローカー Pod のみがシャットダウンし、一度に再起動します。

5.4.2. AMQ Broker バージョンの指定によるブローカーコンテナーイメージのアップグレード

以下の手順では、AMQ Broker バージョンを指定して、Operator ベースのデプロイメントのブローカーコンテナーイメージをアップグレードする方法を説明します。

前提条件

  • カスタムリソース (CR) インスタンスを設定して、指定された AMQ Broker バージョンに基づいてブローカーコンテナーイメージをアップグレードする前に、Operator の バージョンとして、少なくとも 0.15 (つまり、AMQ Broker 7.7 で利用可能な最初のバージョン) を使用する必要があります。.Operator を AMQ Broker 7.7 の最新 バージョンにアップグレードする方法については、以下を参照してください。

手順

  1. 以前のインストール時にダウンロードして抽出した Operator アーカイブの deploy/crs ディレクトリーで、メインブローカー CR である broker_activemqartemis_cr.yaml を開きます。
  2. CR の upgrades セクションで、7.6.07.7.0 の間など、AMQ Broker のマイナーバージョン間でのブローカーコンテナーイメージのアップグレードを有効にします。

    spec:
        ...
        upgrades:
            enabled: true
            minor: true
    注記

    AMQ Broker のマイナーバージョン間のアップグレードを有効にするには、前述のオプションを 両方ともtrue に設定する必要があります。

  3. CR の バージョン プロパティーを更新して、アップグレードされたブローカーコンテナーイメージが対応する AMQ Broker のマイナーバージョンを指定します。以下に例を示します。

    spec:
        version: 7.7.0
        ...
        upgrades:
            enabled: true
            minor: true
  4. CR ファイルを保存します。
  5. CR 変更を適用します。

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

    CR の変更を適用すると、Operator はまず、既存のデプロイメントで AMQ Broker の指定されたバージョンへの直接アップグレードが可能であることを検証します。アップグレードする無効なバージョンの AMQ Broker を指定している場合 (たとえば、まだ利用できないバージョンなど)、Operator は警告メッセージをログに記録し、それ以上のアクションを取ることができません。

    ただし、指定されたバージョンへのアップグレードが可能な場合、Operator はデプロイメントの CR インスタンスを自動的に変更して、AMQ Broker の指定されたバージョン (registry.redhat.io/amq7/amq-broker:7.7-2 など) のブローカーコンテナーイメージを指定します。Operator が使用するデフォルトのブローカーイメージは、Operator デプロイメントの環境変数で定義されています。環境変数名は、BROKER_IMAGE_770 など、AMQ Broker のバージョンと一致します。Operator が CR の変更を適用すると、デプロイメントで各ブローカー Pod が再起動し、各 Pod が指定されたイメージバージョンを使用するようにします。デプロイメントに複数のブローカーがある場合、1 つのブローカー Pod のみがシャットダウンし、一度に再起動します。

    CR を再オープンまたはリロードすると、Operator が image 属性を更新したことがわかります。以下に例を示します。

    spec:
        ...
        deploymentPlan:
            ...
            image: registry.redhat.io/amq7/amq-broker:7.7-2

第6章 アプリケーションテンプレートを使用した AMQ Broker の OpenShift Container Platform へのデプロイ

本セクションの手順では、以下を説明します。

  • AMQ Broker イメージストリームおよびアプリケーションテンプレートのインストール方法
  • テンプレートベースのブローカーデプロイメントの準備方法
  • OpenShift Container Platform Web コンソールを使用して、アプリケーションテンプレートを使用して基本的なブローカーインスタンスをデプロイする例。テンプレートを使用した他のブローカー設定のデプロイ例は、テンプレートベースのブローカーデプロイメントの例 を参照してください。

6.1. イメージストリームおよびアプリケーションテンプレートのインストール

AMQ Broker on OpenShift Container Platform イメージストリームおよびアプリケーションテンプレートはデフォルトで OpenShift Container Platform では利用できません。このセクションの手順に従って手動でインストールする必要があります。手動インストールが完了したら、選択したブローカー設定を OpenShift クラスターにデプロイできるようにするテンプレートをインスタンス化できます。この方法でさまざまなブローカー設定を作成する例については、アプリケーションテンプレートを使用した AMQ Broker の OpenShift Container Platform へのデプロイテンプレートベースのブローカーデプロイ例 を参照してください。

手順

  1. コマンドラインで、クラスター管理者 (またはグローバル openshift プロジェクト namespace に対する namespace 固有の管理者アクセスを持つユーザー) として OpenShift にログインします。

    $ oc login -u system:admin
    $ oc project openshift

    openshift プロジェクトを使用すると、この手順の後半でインストールするイメージストリームおよびアプリケーションテンプレートは、OpenShift クラスターのすべてのプロジェクトでグローバルに利用できるようになります。イメージストリームとアプリケーションテンプレートが openshift プロジェクトにインポートされるように明示的に指定する場合は、オプションのパラメーターとして、この手順で後で使用する oc replace コマンドに -n openshift を追加することもできます。

    openshift プロジェクトを使用する代わりに (クラスター管理者が利用できない場合など)、以下のようにブローカーデプロイメントを作成する特定の OpenShift プロジェクトにログインします。

    $ oc login -u <USERNAME>
    $ oc project <PROJECT_NAME>

    特定のプロジェクトにログインすると、この手順の後半でインストールするイメージストリームとテンプレートが、そのプロジェクトの namespace でのみ利用可能になります。

    注記

    OpenShift Container Platform 上の AMQ Broker は、*-persistence*.yaml テンプレートすべてで StatefulSet リソースを使用します。*-persistence*.yaml ではないテンプレートでは、AMQ Broker は Deployment リソースを使用します。どちらのタイプのリソースは、テンプレートがインスタンス化される同じプロジェクト namespace からのみイメージストリームを使用できる Kubernetes ネイティブリソースです。

  2. コマンドラインで以下のコマンドを実行し、ブローカーイメージストリームをプロジェクト namespace にインポートします。--force オプションを oc replace コマンドに使用してリソースを更新するか、存在しない場合は作成します。

    $ oc replace --force  -f \
    https://raw.githubusercontent.com/jboss-container-images/jboss-amq-7-broker-openshift-image/77-7.7.0.GA/amq-broker-7-image-streams.yaml
  3. 以下のコマンドを実行して AMQ Broker アプリケーションテンプレートを更新します。

    $ for template in amq-broker-77-basic.yaml \
    amq-broker-77-ssl.yaml \
    amq-broker-77-custom.yaml \
    amq-broker-77-persistence.yaml \
    amq-broker-77-persistence-ssl.yaml \
    amq-broker-77-persistence-clustered.yaml \
    amq-broker-77-persistence-clustered-ssl.yaml;
     do
     oc replace --force -f \
    https://raw.githubusercontent.com/jboss-container-images/jboss-amq-7-broker-openshift-image/77-7.7.0.GA/templates/${template}
     done

6.2. テンプレートベースのブローカーデプロイメントの準備

前提条件

  • Broker インスタンスを OpenShift Container Platform にデプロイする前に、AMQ Broker イメージストリームおよびアプリケーションテンプレートをインストールする必要があります。詳細は、イメージストリームおよびアプリケーションテンプレートのインストール を参照してください。
  • 以下の手順は、インストールしたブローカーイメージストリームおよびアプリケーションテンプレートがグローバル openshift プロジェクトにあることを前提とします。イメージおよびアプリケーションテンプレートを特定のプロジェクトの namespace にインストールしている場合、amq-demo などの新規プロジェクトを作成するのではなく、このプロジェクトを引き続き使用します。

手順

  1. コマンドプロンプトを使用して新しいプロジェクトを作成します。

    $ oc new-project amq-demo
  2. AMQ Broker デプロイメントに使用するサービスアカウントを作成します。

    $ echo '{"kind": "ServiceAccount", "apiVersion": "v1", "metadata": {"name": "amq-service-account"}}' | oc create -f -
  3. view ロールをサービスアカウントに追加します。view ロールにより、サービスアカウントは amq-demo namespace のすべてのリソースを表示できます。これは、ブローカークラスターエンドポイントの検出に OpenShift dns-ping プロトコルを使用する場合に、クラスターを管理するために必要です。

    $ oc policy add-role-to-user view system:serviceaccount:amq-demo:amq-service-account
  4. AMQ Broker には、ブローカーキーストア、クライアントキーストア、およびブローカーキーストアが含まれるクライアントトラストストアが必要です。この例では、Java Development Kit に含まれるパッケージである Java Keytool を使用して、AMQ Broker インストールで使用するダミーの認証情報を生成します。

    1. ブローカーキーストアの自己署名証明書を生成します。

      $ keytool -genkey -alias broker -keyalg RSA -keystore broker.ks
    2. 証明書をクライアントと共有できるようにエクスポートします。

      $ keytool -export -alias broker -keystore broker.ks -file broker_cert
    3. クライアントキーストア用に自己署名証明書を生成します。

      $ keytool -genkey -alias client -keyalg RSA -keystore client.ks
    4. ブローカー証明書をインポートするクライアントトラストストアを作成します。

      $ keytool -import -alias broker -keystore client.ts -file broker_cert
    5. ブローカーのキーストアファイルを使用して、AMQ Broker シークレットを作成します。

      $ oc create secret generic amq-app-secret --from-file=broker.ks
    6. シークレットを先に作成したサービスアカウントにリンクします。

      $ oc secrets link sa/amq-service-account secret/amq-app-secret

6.3. 基本ブローカーのデプロイ

本セクションの手順では、一時である基本ブローカーをデプロイし、SSL をサポートしない基本的なブローカーをデプロイする方法を説明します。

注記

このブローカーは SSL に対応せず、外部クライアントにアクセスできません。OpenShift クラスターの内部で実行しているクライアントのみがブローカーに接続できます。SSL をサポートするブローカー設定の作成例は、テンプレートベースのブローカーデプロイメントの例 を参照してください。

前提条件

  • ブローカーデプロイメントがすでに準備済みである。テンプレートベースのブローカーデプロイメントの準備 を参照してください。
  • 以下の手順では、イメージストリームおよびアプリケーションテンプレートのインストール で作成したブローカーイメージストリームおよびアプリケーションテンプレートがグローバル openshift プロジェクトで利用可能であることを前提としています。イメージおよびアプリケーションテンプレートを特定のプロジェクトの namespace にインストールしている場合、amq-demo などの新規プロジェクトを作成するのではなく、このプロジェクトを引き続き使用します。
  • AMQ Broker 7.3 以降では、新しいバージョンの Red Hat Container Registry を使用してコンテナーイメージにアクセスします。この新しいバージョンのレジストリーでは、イメージにアクセスして OpenShift プロジェクトにプルする前に、認証されたユーザーである必要があります。このセクションの手順を実施する前に、Red Hat コンテナーレジストリーの認証 で説明されている手順を完了する必要があります。

6.3.1. ブローカーアプリケーションの作成

手順

  1. amq-demo プロジェクトスペースまたはブローカーをデプロイする既存のプロジェクトにログインします。

    $ oc login -u <USER_NAME>
    $ oc project <PROJECT_NAME>
  2. 基本的なブローカーのテンプレートに基づいて、新しいブローカーアプリケーションを作成します。このテンプレートによって作成されるブローカーは一時的なもので、SSL はサポートしません。

    $ oc new-app --template=amq-broker-77-basic \
       -p AMQ_PROTOCOL=openwire,amqp,stomp,mqtt,hornetq \
       -p AMQ_QUEUES=demoQueue \
       -p AMQ_ADDRESSES=demoTopic \
       -p AMQ_USER=amq-demo-user \
       -p AMQ_PASSWORD=password \

    基本的なブローカーアプリケーションテンプレートは、以下の表に記載されている環境変数を設定します。

    表6.1 基本ブローカーアプリケーションテンプレート
    環境変数表示名説明

    AMQ_PROTOCOL

    AMQ プロトコル

    openwire,amqp,stomp,mqtt,hornetq

    ブローカーによって使用されるプロトコル

    AMQ_QUEUES

    キュー

    demoQueue

    demoQueue という名前のキャストキューを作成します。

    AMQ_ADDRESSES

    アドレス

    demoTopic

    demoTopic という名前のアドレス (またはトピック) を作成します。デフォルトでは、このアドレスには割り当てられたルーティングタイプが割り当てられていません。

    AMQ_USER

    AMQ ユーザー名

    amq-demo-user

    クライアントがブローカーへの接続に使用するユーザー名

    AMQ_PASSWORD

    AMQ パスワード

    パスワード

    クライアントがユーザー名と使用してブローカーに接続するパスワード

6.3.2. 機密の認証情報について

AMQ Broker アプリケーションテンプレートでは、以下の環境変数の値はシークレットに保存されます。

  • AMQ_USER
  • AMQ_PASSWORD
  • AMQ_CLUSTER_USER (クラスター化されたブローカーデプロイメント)
  • AMQ_CLUSTER_PASSWORD (クラスター化されたブローカーデプロイメント)
  • AMQ_TRUSTSTORE_PASSWORD (SSL 対応ブローカーデプロイメント)
  • AMQ_KEYSTORE_PASSWORD (SSL 対応のブローカーデプロイメント)

これらの環境変数の値を取得して使用するには、AMQ Broker アプリケーションテンプレートは、AMQ_CREDENTIAL_SECRET 環境変数に指定されたシークレットにアクセスします。デフォルトでは、この環境変数で指定されるシークレット名は amq-credential-secret です。テンプレートのデプロイ時にこれらの変数のいずれかにカスタム値を指定した場合でも、OpenShift Container Platform は現時点で名前付きシークレットに保存されている値を使用します。さらに、アプリケーションテンプレートは、値を変更して値を変更しない限り、amq-credential-secret に保存されているデフォルト値を使用するか、新しい値で新しいシークレットを作成および指定します。以下の例のように、OpenShift コマンドラインインターフェイスを使用してシークレットを編集できます。

$ oc edit secrets amq-credential-secret

amq-credential-secret の値は base64 エンコーディングを使用します。シークレットの値をデコードするには、以下のようなコマンドを使用します。

$ echo 'dXNlcl9uYW1l' | base64 --decode
user_name

6.3.3. ブローカーアプリケーションのデプロイおよび起動

ブローカーアプリケーションの作成後に、これをデプロイする必要があります。アプリケーションのデプロイにより、ブローカーが実行される Pod が作成されます。

手順

  1. OpenShift Container Platform Web コンソールで Deployments をクリックします。
  2. broker-amq アプリケーションをクリックします。
  3. デプロイ をクリックします。

    注記

    アプリケーションがデプロイされない場合、Events タブをクリックして設定を確認できます。正しくない場合には、Actions ボタンをクリックしてデプロイメント設定を編集します。

  4. ブローカーアプリケーションのデプロイ後に、ブローカー Pod の現在の状態を確認します。

    1. デプロイメント設定 をクリックします。
    2. broker-amq Pod をクリックした後、Logs タブをクリックしてブローカーの状態を確認します。アプリケーションテンプレートで以前に作成されたキューが表示されるはずです。

      ログに以下が表示される場合:

      • ブローカーが稼働しているため、この手順のステップ 9 に進みます。
      • ブローカーログが読み込まれておらず、Pod のステータスは ErrImagePull または ImagePullBackOff を表示し、デプロイメント設定は Red Hat Container Registry から指定されたブローカーイメージを直接プルできませんでした。この手順では、ステップ 5 に進みます。
  5. ブローカーコンテナーイメージのインストール用に Pod を準備するには、実行されているブローカーの数を 0 にスケーリングします。

    1. Deployment Configsbroker-amq をクリックします。
    2. ActionsEdit Deployment Configs をクリックします。
    3. デプロイメントの .yaml ファイルで、replicas 属性の値を 0 に設定します。
    4. Save をクリックします。
    5. Pod は、稼働しているブローカーインスタンスがゼロで再起動します。
  6. 最新のブローカーコンテナーイメージをインストールします。

    1. Web ブラウザーで Red Hat Container Catalog に移動します。
    2. 検索ボックスに AMQ Broker と入力します。Search をクリックします。
    3. 以下の表の情報をもとにイメージリポジトリーを選択します。

      プラットフォームコンテナーイメージ名リポジトリー名

      OpenShift Container Platform

      AMQ Broker

      amq7/amq-broker

      OpenShift Container Platform on IBM Z

      Eclipse OpenJ9 11 上の AMQ Broker

      amq7/amq-broker-openj9-11-rhel8

      OpenShift Container Platform on IBM Power Systems

      Eclipse OpenJ9 11 上の AMQ Broker

      amq7/amq-broker-openj9-11-rhel8

      たとえば、OpenShift Container Platform ブローカーコンテナーイメージの場合は、AMQ Broker をクリックします。amq7/amq-broker リポジトリーが開き、最新のイメージバージョンが自動的に選択されます。以前のバージョンに変更するには、Tags タブをクリックして、別のバージョンタグを選択します。

    4. Get This Image タブをクリックします。
    5. レジストリートークンの認証 の下で、OpenShift シークレットの使用セクションのページの手順を確認してください。この手順では、Red Hat Container Registry の認証に使用されるアカウントに関連付けられたイメージプルシークレットおよび Pod デプロイメント設定ファイルへの参照を追加する方法について説明します。

      たとえば、amq-demo プロジェクト namespace の broker-amq デプロイメント設定でブローカーイメージおよびプルシークレットを参照するには、以下のような行を含めます。

      apiVersion: apps.openshift.io/v1
      kind: DeploymentConfig
      ..
      metadata:
        name: broker-amq
        namespace: amq-demo
      ..
        spec:
          containers:
              name: broker-amq
              image: 'registry.redhat.io/amq7/amq-broker:7.7'
          ..
          imagePullSecrets:
            - name: {PULL-SECRET-NAME}
注記

IBM Z 上の OpenShift Container Platform または IBM Power Systems 上の OpenShift Container Platform の最新バージョンのブローカーコンテナーイメージを使用するには、イメージ属性を次のように指定します。

  • registry.redhat.io/amq7/amq-broker-openj9-11-rhel8:7.7 (IBM Power Systems 上の OpenShift Container Platform)
  • registry.redhat.io/amq7/amq-broker-openj9-11-rhel8:7.7 (OpenShift Container Platform on IBM Z)
  1. Save をクリックします。

    1. 最新のブローカーイメージバージョンをプロジェクトの namespace にインポートします。以下に例を示します。

      $ oc import-image amq7/amq-broker:7.7 --from=registry.redhat.io/amq7/amq-broker --confirm
    2. 前述のように broker-amq デプロイメント設定を再度編集します。replicas 属性の値を元の値に設定します。

      ブローカー Pod は、新規ブローカーイメージを参照する実行中のブローカーすべてで再起動します。

    3. Terminal タブをクリックして、ブローカーを起動し、CLI を使用してメッセージの送受信をテストすることができるシェルにアクセスします。

      sh-4.2$ ./broker/bin/artemis run
      sh-4.2$ ./broker/bin/artemis producer --destination queue://demoQueue
      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 : 4 s
      Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in milli second : 4584 milli seconds
      sh-4.2$ ./broker/bin/artemis consumer --destination queue://demoQueue
      Consumer:: filter = null
      Consumer ActiveMQQueue[demoQueue], thread=0 wait until 1000 messages are consumed
      Received 1000
      Consumer ActiveMQQueue[demoQueue], thread=0 Consumed: 1000 messages
      Consumer ActiveMQQueue[demoQueue], thread=0 Consumer thread finished

      または、以下の例のように、OpenShift クライアントを使用して Pod 名を使用してシェルにアクセスします。

      // Get the Pod names and internal IP Addresses
      $ oc get pods -o wide
      
      // Access a broker Pod by name
      $ oc rsh <broker-pod-name>

6.4. 外部クライアントのテンプレートベースのブローカーデプロイメントへの接続

このセクションでは、OpenShift Container Platform の外部のクライアントからアプリケーションテンプレートを使用してデプロイされたブローカーへの接続を有効にするために SSL を設定する方法を説明します。

6.4.1. SSL の設定

最小の SSL 設定で OpenShift Container Platform 外の接続を許可するには、AMQ Broker にはブローカーキーストア、クライアントキーストア、およびブローカーキーストアが含まれるクライアントトラストストアが必要です。ブローカーキーストアは、サービスアカウントに追加される OpenShift Container Platform イメージにある AMQ Broker のシークレット作成にも使用されます。

以下のコマンド例では、Java Development Kit に含まれるパッケージ Java KeyTool を使用して、必要な証明書とストアを生成します。

SSL をサポートするブローカーインスタンスをデプロイする詳細な例は、SSL を使用した基本的なブローカーのデプロイ を参照してください。

手順

  1. ブローカーキーストアの自己署名証明書を生成します。

    $ keytool -genkey -alias broker -keyalg RSA -keystore broker.ks
  2. 証明書をクライアントと共有できるようにエクスポートします。

    $ keytool -export -alias broker -keystore broker.ks -file broker_cert
  3. クライアントキーストア用に自己署名証明書を生成します。

    $ keytool -genkey -alias client -keyalg RSA -keystore client.ks
  4. ブローカー証明書をインポートするクライアントトラストストアを作成します。

    $ keytool -import -alias broker -keystore client.ts -file broker_cert
  5. キーストアからクライアントの証明書をエクスポートします。

    $ keytool -export -alias client -keystore client.ks -file client_cert
  6. クライアントのエクスポートされた証明書をブローカーの SERVER トラストストアにインポートします。

    $ keytool -import -alias client -keystore broker.ts -file client_cert

6.4.2. AMQ Broker シークレットの生成

ブローカーキーストアを使用して namespace のシークレットを生成します。このシークレットは、アプリケーションの認証を可能にするためにサービスアカウントに追加されます。

手順

  • コマンドラインで、次のコマンドを実行します。

    $ oc create secret generic <secret-name> --from-file=<broker-keystore> --from-file=<broker-truststore>
    $ oc secrets link sa/<service-account-name> secret/<secret-name>

6.4.3. SSL ルートの作成

OpenShift クラスター外のクライアントアプリケーションがブローカーに送信できるようにするには、ブローカー Pod の SSL ルートを作成する必要があります。OpenShift ルーターには、トラフィックを正しいサービスに送信するために Server Name Indication(SNI) が必要なため、SSL 対応のルートのみを外部クライアントに公開できます。

アプリケーションテンプレートを使用して OpenShift Container Platform にブローカーをデプロイする場合に、AMQ_PROTOCOL テンプレートパラメーターを使用して、ブローカーが使用するメッセージングプロトコルをコンマ区切りの一覧で指定します。使用可能なオプションは、 amqpmqttopenwirestomp、および hornetq です。プロトコルを指定しない場合には、全プロトコルが利用できます。

ブローカーが使用するメッセージングプロトコルごとに、OpenShift はブローカー Pod の専用ポートを公開します。さらに、OpenShift は すべてのプロトコル の多重化ポートを自動的に作成します。OpenShift 外のクライアントアプリケーションは、使用するプロトコルでどのプロトコルがサポート対象であるかに拘らず、全プロトコル対応の多重化ポートを常に使用して、ブローカーに接続します。

すべてのプロトコルポートへの接続は、OpenShift が自動作成するサービスおよび作成する SSL ルートを介して行われます。ブローカー Pod 内のヘッドレスサービスは、クライアントが直接アクセスできる、独自のサービスやルートがない、他のプロトコル固有のポートにアクセスできるようにします。

各種 AMQ Broker トランスポートプロトコルに対して OpenShift が公開するポートを以下の表に示します。ブローカーは、OpenShift クラスター内のトラフィックに対する SSL 以外のポートをリッスンします。SSL ベース (*.-ssl.yaml) テンプレートを使用してデプロイメントを作成した場合に、ブローカーは、OpenShift 外部のクライアントからトラフィックを SSL 対応のポートでリッスンします。

表6.2 AMQ Broker トランスポートプロトコルのデフォルトポート
AMQ Broker トランスポートプロトコルデフォルトのポート

すべてのプロトコル (OpenWire、AMQP、STOMP、MQTT、および HornetQ)

61616

すべてのプロトコル - SSL(OpenWire AMQP、STOMP、MQTT、および HornetQ)

61617

AMQP

5672

AMQP (SSL)

5671

MQTT

1883

MQTT (SSL)

8883

STOMP

61613

STOMP (SSL)

61612

以下は、ブローカー Pod での SSL ルート作成時に注意する必要がある点です。

  • ルートの作成時に、TLS TerminationPassthrough に設定すると、OpenShift ルーターは復号および再送信を行わずに AMQ Broker に対する全通信をリレーします。

    注記

    OpenShift ルーターは HTTP プロキシーである HAProxy を使用するため、通常の HTTP トラフィックには TLS パススルールートは必要ありません。

  • 外部ブローカークライアントは、SSL 接続のブローカー URL 設定時に OpenShift ルーターポート (443) を指定する必要があります。クライアント接続が OpenShift ルーターポートを指定する場合、ルーターはクライアントトラフィックを転送する必要のあるブローカー Pod の適切なポートを決定します。

    注記

    デフォルトで、OpenShift ルーターは 443 ポートを使用します。ただし、ルーターは ROUTER_SERVICE_HTTPS_PORT 環境変数に指定された値に基づいて異なるポート番号を使用するように設定できます。詳細は OpenShift Container Platform Routes を参照してください。

  • ブローカー URL にフェイルオーバープロトコルを含めると、Pod が再起動またはアップグレードされた場合に備えてクライアント接続が維持されます。

    先ほどの両設定が以下の例のようになります。

    ...
    factory.setBrokerURL("failover://ssl://<broker-pod-route-name>:443");
    ...

関連情報

  • SSL をサポートするブローカーのデプロイと SSL ルートの作成をサポートして外部クライアントアクセスを有効にするブローカーの例の完全な詳細は、SSL を 使用した基本的なブローカーのデプロイ を参照してください。
  • クラスター化されたブローカーが AMQ Broker 管理コンソールの独自のインスタンスに接続するためのルートを作成する例は、AMQ Broker 管理コンソールのルートの作成 を参照してください。

第7章 テンプレートベースのブローカーデプロイメントの例

前提条件

  • これらの手順は、 OpenShift Container PlatformGetting Started で作成した OpenShift Container Platform インスタンスを想定しています。
  • AMQ Broker アプリケーションテンプレートでは、AMQ_USER、AMQ_PASSWORD、AMQ_CLUSTER_USER、AMQ_CLUSTER_PASSWORD、AMQ_TRUSTSTORE_PASSWORD、および AMQ_KEYSTORE_PASSWORD 環境変数の値はシークレットに保存されます。以下のチュートリアルのいずれかにテンプレートをデプロイする時にこれらの環境変数の使用および変更方法は、 機密性の高い認証情報についてを参照してください。

以下の手順では、アプリケーションテンプレートを使用してブローカーのさまざまなデプロイメントを作成する方法を説明します。

7.1. SSL を使用した基本的なブローカーのデプロイ

一時的で、かつ SSL をサポートする基本ブローカーをデプロイします。

7.1.1. イメージおよびテンプレートのデプロイ

前提条件

手順

  1. OpenShift Web コンソールに移動し、ログインします。
  2. amq-demo プロジェクトスペースを選択します。
  3. Add to Project をクリックした後に、Browse Catalog をクリックしてデフォルトのイメージストリームおよびテンプレートをすべて一覧表示します。
  4. Filter 検索バーを使用して、一覧を amq に一致するものに限定します。See all をクリックして、必要なアプリケーションテンプレートを表示する必要がある場合があります。
  5. Red Hat AMQ Broker 7.7 (Ephemeral, with SSL) というラベルが付いた amq-broker-77-ssl テンプレートを選択します。
  6. 設定で以下の値を設定し、Create をクリックします。

    表7.1 テンプレートの例
    環境変数表示名説明

    AMQ_PROTOCOL

    AMQ プロトコル

    openwire,amqp,stomp,mqtt,hornetq

    ブローカーによって使用されるプロトコル

    AMQ_QUEUES

    キュー

    demoQueue

    demoQueue という名前のキャストキューを作成します。

    AMQ_ADDRESSES

    アドレス

    demoTopic

    demoTopic という名前のアドレス (またはトピック) を作成します。デフォルトでは、このアドレスには割り当てられたルーティングタイプが割り当てられていません。

    AMQ_USER

    AMQ ユーザー名

    amq-demo-user

    クライアントが使用するユーザー名

    AMQ_PASSWORD

    AMQ パスワード

    パスワード

    クライアントがユーザー名で使用するパスワード

    AMQ_TRUSTSTORE

    トラストストアファイル名

    broker.ts

    SSL トラストストアファイル名

    AMQ_TRUSTSTORE_PASSWORD

    トラストストアのパスワード

    パスワード

    トラストストアの作成時に使用されるパスワード

    AMQ_KEYSTORE

    AMQ キーストアファイル名

    broker.ks

    SSL キーストアのファイル名

    AMQ_KEYSTORE_PASSWORD

    AMQ キーストアのパスワード

    パスワード

    キーストアの作成時に使用されるパスワード

7.1.2. アプリケーションのデプロイ

アプリケーションの作成後に、これをデプロイして Pod を作成し、ブローカーを起動します。

手順

  1. OpenShift Container Platform Web コンソールで Deployments をクリックします。
  2. broker-amq デプロイメントをクリックします。
  3. Deploy をクリックしてアプリケーションをデプロイします。
  4. ブローカーの Pod をクリックした後、Logs タブをクリックしてブローカーの状態を確認します。

    ブローカーログが読み込まれておらず、Pod のステータスは ErrImagePull または ImagePullBackOff を表示し、デプロイメント設定は Red Hat Container Registry から指定されたブローカーイメージを直接プルできませんでした。この場合、デプロイメント設定を編集して、正しいブローカーイメージ名と、Red Hat Container Registry の認証に使用するアカウントに関連付けられたイメージプルシークレット名を参照します。これで、ブローカーイメージをインポートし、ブローカーを起動できます。方法は、ブローカーアプリケーションのデプロイおよび起動 に記載の手順を実施します。

7.1.3. ルートの作成

OpenShift Container Platform の外部のクライアントが SSL を使用して接続できるようにブローカーのルートを作成します。デフォルトでは、セキュアなブローカープロトコルは 61617/TCP ポートを介して利用できます。さらに、ブローカーがサポートするメッセージングプロトコルごとに、ブローカー Pod に SSL ポートおよび非 SSL ポートが公開されます。ただし、外部クライアントはブローカーのこれらのポートに直接接続できません。代わりに、外部クライアントは Openshift ルーター経由で OpenShift に接続します。これは、トラフィックをブローカー Pod の適切なポートに転送する方法を決定します。

注記

デプロイメントを、クラスター内にある複数のブローカーにスケールアップする場合、各ブローカーのサービスとルートを手動で作成してから、各サービスおよびルートの組み合わせを使用して特定のクライアントを特定のブローカー、またはブローカーリストにダイレクトする必要があります。クラスター化されたブローカーを AMQ Broker 管理コンソール独自のインスタンスに接続するためのサービスおよびルートを複数設定する例は、Creating Routes for the AMQ Broker management consoleを参照してください。

前提条件

  • SSL ルートを作成する前に、外部クライアントがこの ルートを使用してブローカーに接続する方法を理解する必要があります。詳細は、Creating an SSL Routeを参照してください。

手順

  1. Servicesbroker-amq-tcp-ssl をクリックします。
  2. ActionsCreate a route をクリックします。
  3. TLS パラメーターを表示するには、Secure route チェックボックスを選択します。
  4. TLS Termination ドロップダウンメニューから、Passthrough を選択します。ここで選択する内容では、OpenShift ルーターが復号化および再送信せずに AMQ Broker との通信をすべてリレーします。
  5. ルートを表示するには、Routes をクリックします。以下に例を示します。

    https://broker-amq-tcp-amq-demo.router.default.svc.cluster.local

このホスト名は、SNI を使用する SSL でブローカーに接続するのに外部クライアントが使用します。

関連情報

  • SSL ルートの作成に関する詳細は、SSL ルートの作成を参照してください。
  • OpenShift Container Platform のルートの詳細は、ルートを参照してください。

7.2. 永続性および SSL を使用した基本的なブローカーのデプロイ

SSL をサポートする永続ブローカーをデプロイします。ブローカーの永続性が必要な場合、ブローカーは StatefulSet としてデプロイされ、Persistent Volume Claim(永続ボリューム要求、PVC) 経由でブローカー Pod に関連付けられた永続ボリュームにメッセージングデータを保存します。ブローカー Pod が作成されると、Pod をシャットダウンするか、または Pod が予期せずシャットダウンした場合に残されたストレージを使用します。この設定は、標準のデプロイメントであるため、メッセージが失われないことを意味します。

前提条件

7.2.1. イメージおよびテンプレートのデプロイ

手順

  1. OpenShift Web コンソールに移動し、ログインします。
  2. amq-demo プロジェクトスペースを選択します。
  3. Add to ProjectBrowse catalog をクリックしてデフォルトのイメージストリームおよびテンプレートを一覧表示します。
  4. Filter 検索バーを使用して、一覧を amq に一致するものに限定します。See all をクリックして、必要なアプリケーションテンプレートを表示する必要がある場合があります。
  5. Red Hat AMQ Broker 7.7 (Persistence) とラベル付けされた amq-broker-77-persistence-ssl テンプレートを選択します。
  6. 設定で以下の値を設定し、Create をクリックします。

    表7.2 テンプレートの例
    環境変数表示名説明

    AMQ_PROTOCOL

    AMQ プロトコル

    openwire,amqp,stomp,mqtt,hornetq

    ブローカーによって使用されるプロトコル

    AMQ_QUEUES

    キュー

    demoQueue

    demoQueue という名前のキャストキューを作成します。

    AMQ_ADDRESSES

    アドレス

    demoTopic

    demoTopic という名前のアドレス (またはトピック) を作成します。デフォルトでは、このアドレスには割り当てられたルーティングタイプが割り当てられていません。

    VOLUME_CAPACITY

    AMQ ボリュームのサイズ

    1Gi

    ジャーナル用に作成される永続ボリュームサイズ

    AMQ_USER

    AMQ ユーザー名

    amq-demo-user

    クライアントが使用するユーザー名

    AMQ_PASSWORD

    AMQ パスワード

    パスワード

    クライアントがユーザー名で使用するパスワード

    AMQ_TRUSTSTORE

    トラストストアファイル名

    broker.ts

    SSL トラストストアファイル名

    AMQ_TRUSTSTORE_PASSWORD

    トラストストアのパスワード

    パスワード

    トラストストアの作成時に使用されるパスワード

    AMQ_KEYSTORE

    AMQ キーストアファイル名

    broker.ks

    SSL キーストアのファイル名

    AMQ_KEYSTORE_PASSWORD

    AMQ キーストアのパスワード

    パスワード

    キーストアの作成時に使用されるパスワード

7.2.2. アプリケーションのデプロイ

アプリケーションを作成したら、デプロイする必要があります。アプリケーションのデプロイにより Pod が作成され、ブローカーが起動します。

手順

  1. OpenShift Container Platform Web コンソールで StatefulSets をクリックします。
  2. broker-amq デプロイメントをクリックします。
  3. Deploy をクリックしてアプリケーションをデプロイします。
  4. ブローカーの Pod をクリックした後、Logs タブをクリックしてブローカーの状態を確認します。テンプレートから作成されたキューが表示されます。

    ブローカーログが読み込まれておらず、Pod のステータスは ErrImagePull または ImagePullBackOff を表示し、設定は Red Hat Container Registry から指定されたブローカーイメージを直接プルできませんでした。この場合、デプロイメント設定を編集して、正しいブローカーイメージ名と、Red Hat Container Registry の認証に使用するアカウントに関連付けられたイメージプルシークレット名を参照します。これで、ブローカーイメージをインポートし、ブローカーを起動できます。方法は、ブローカーアプリケーションのデプロイおよび起動 に記載の手順を実施します。

  5. Terminal タブをクリックして、CLI で一部のメッセージを送信できるシェルにアクセスします。

    sh-4.2$ ./broker/bin/artemis producer --destination queue://demoQueue
    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 : 4 s
    Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in milli second : 4584 milli seconds
    
    sh-4.2$ ./broker/bin/artemis consumer  --destination queue://demoQueue
    Consumer:: filter = null
    Consumer ActiveMQQueue[demoQueue], thread=0 wait until 1000 messages are consumed
    Received 1000
    Consumer ActiveMQQueue[demoQueue], thread=0 Consumed: 1000 messages
    Consumer ActiveMQQueue[demoQueue], thread=0 Consumer thread finished

    または、以下の例のように、OpenShift クライアントを使用して Pod 名を使用してシェルにアクセスします。

    // Get the Pod names and internal IP Addresses
    oc get pods -o wide
    
    // Access a broker Pod by name
    oc rsh <broker-pod-name>
  6. oc コマンドを使用してブローカーをスケールダウンします。

    $ oc scale statefulset broker-amq --replicas=0
    statefulset "broker-amq" scaled

    コンソールを使用して、Pod 数が 0 であることを確認します。

  7. 次に、ブローカーを 1 に再びスケールアップします。

    $ oc scale statefulset broker-amq --replicas=1
    statefulset "broker-amq" scaled
  8. ターミナルを使用してメッセージを再度消費します。以下に例を示します。

    sh-4.2$ broker/bin/artemis consumer --destination queue://demoQueue
    Consumer:: filter = null
    Consumer ActiveMQQueue[demoQueue], thread=0 wait until 1000 messages are consumed
    Received 1000
    Consumer ActiveMQQueue[demoQueue], thread=0 Consumed: 1000 messages
    Consumer ActiveMQQueue[demoQueue], thread=0 Consumer thread finished

関連情報

  • ステートフルなアプリケーションの管理の詳細は、StatefulSets (external) を参照してください。

7.2.3. ルートの作成

OpenShift Container Platform の外部のクライアントが SSL を使用して接続できるようにブローカーのルートを作成します。デフォルトでは、ブローカープロトコルは 61617/TCP ポートから入手できます。

注記

デプロイメントを、クラスター内にある複数のブローカーにスケールアップする場合、各ブローカーのサービスとルートを手動で作成してから、各サービスおよびルートの組み合わせを使用して特定のクライアントを特定のブローカー、またはブローカーリストにダイレクトする必要があります。クラスター化されたブローカーを AMQ Broker 管理コンソール独自のインスタンスに接続するためのサービスおよびルートを複数設定する例は、Creating Routes for the AMQ Broker management consoleを参照してください。

前提条件

  • SSL ルートを作成する前に、外部クライアントがこの ルートを使用してブローカーに接続する方法を理解する必要があります。詳細は、Creating an SSL Routeを参照してください。

手順

  1. Servicesbroker-amq-tcp-ssl をクリックします。
  2. ActionsCreate a route をクリックします。
  3. TLS パラメーターを表示するには、Secure route チェックボックスを選択します。
  4. TLS Termination ドロップダウンメニューから、Passthrough を選択します。ここで選択する内容では、OpenShift ルーターが復号化および再送信せずに AMQ Broker との通信をすべてリレーします。
  5. ルートを表示するには、Routes をクリックします。以下に例を示します。

    https://broker-amq-tcp-amq-demo.router.default.svc.cluster.local

このホスト名は、SNI を使用する SSL でブローカーに接続するのに外部クライアントが使用します。

関連情報

  • OpenShift Container Platform のルートの詳細は、ルートを参照してください。

7.3. クラスター化されたブローカーのセットのデプロイ

ブローカーのクラスターセットをデプロイし、ここではブローカーごとに独自の Pod で実行されます。

7.3.1. メッセージの分散

メッセージ分散は ON_DEMAND を使用するように設定されます。つまり、メッセージがクラスター化されたブローカーに到達すると、コンシューマーがあるブローカーにラウンドロビン方式で配布されます。

このメッセージ分散ポリシーは、直接または Open Shift ルーターを介して接続されているコンシューマーが別のブローカーに接続されているときに、メッセージが特定のブローカーでスタックするのを防ぎます。

再分散の遅延は、デフォルトではゼロです。メッセージがコンシューマーのないキューにある場合は、別のブローカーに再分散されます。

注記

再分散を有効にすると、メッセージが順番に関係なく分散される可能性があります。

7.3.2. イメージおよびテンプレートのデプロイ

前提条件

手順

  1. OpenShift Web コンソールに移動し、ログインします。
  2. amq-demo プロジェクトスペースを選択します。
  3. Add to Project > Browse catalog の順にクリックしてデフォルトのイメージストリームおよびテンプレートを一覧表示します。
  4. Filter 検索バーを使用して、一覧を amq に一致するものに限定します。See all をクリックして、必要なアプリケーションテンプレートを表示します。
  5. Red Hat AMQ Broker 7.7 (no SSL, clustered) とラベル付けされた amq-broker-77-persistence-ssl テンプレートを選択します。
  6. 設定で以下の値を設定し、Create をクリックします。

    表7.3 テンプレートの例
    環境変数表示名説明

    AMQ_PROTOCOL

    AMQ プロトコル

    openwire,amqp,stomp,mqtt,hornetq

    ブローカーによって使用されるプロトコル

    AMQ_QUEUES

    キュー

    demoQueue

    demoQueue という名前のキャストキューを作成します。

    AMQ_ADDRESSES

    アドレス

    demoTopic

    demoTopic という名前のアドレス (またはトピック) を作成します。デフォルトでは、このアドレスには割り当てられたルーティングタイプが割り当てられていません。

    VOLUME_CAPACITY

    AMQ ボリュームのサイズ

    1Gi

    ジャーナル用に作成される永続ボリュームサイズ

    AMQ_CLUSTERED

    クラスター化

    true

    ブローカーがクラスター化されるようにするには、true に指定する必要があります。

    AMQ_CLUSTER_USER

    クラスターユーザー

    generated

    ブローカーが相互の接続に使用するユーザー名

    AMQ_CLUSTER_PASSWORD

    クラスターパスワード

    generated

    ブローカーが相互接続に使用するパスワード

    AMQ_USER

    AMQ ユーザー名

    amq-demo-user

    クライアントが使用するユーザー名

    AMQ_PASSWORD

    AMQ パスワード

    パスワード

    クライアントがユーザー名で使用するパスワード

7.3.3. アプリケーションのデプロイ

アプリケーションを作成したら、デプロイする必要があります。アプリケーションのデプロイにより Pod が作成され、ブローカーが起動します。

手順

  1. OpenShift Container Platform Web コンソールで StatefulSets をクリックします。
  2. broker-amq デプロイメントをクリックします。
  3. Deploy をクリックしてアプリケーションをデプロイします。

    注記

    クラスター化されたテンプレートのデフォルトのレプリカ数は 0 です。Pod は表示されないはずです。

  4. Pod を 3 つにスケールアップし、ブローカーのクラスターを作成します。

    $ oc scale statefulset broker-amq --replicas=3
    statefulset "broker-amq" scaled
  5. 3 つの Pod が実行されていることを確認します。

    $ oc get pods
    NAME           READY     STATUS    RESTARTS   AGE
    broker-amq-0   1/1       Running   0          33m
    broker-amq-1   1/1       Running   0          33m
    broker-amq-2   1/1       Running   0          29m
  6. 表示される Pod のステータスが ErrImagePull または ImagePullBackOff の場合には、デプロイメントは Red Hat Container Registry から指定されたブローカーイメージを直接プルできていません。この場合、StatefulSet を編集して、正しいブローカーイメージ名と、Red Hat Container Registry の認証に使用するアカウントに関連付けられたイメージプルシークレット名を参照します。次に、ブローカーイメージをインポートし、ブローカーを起動できます。方法は、ブローカーアプリケーションのデプロイおよび起動 に記載の手順を実施します。
  7. ログをチェックして、ブローカーが新しい Pod でクラスター化されていることを確認します。

    $ oc logs broker-amq-2

    これにより、新しいブローカーのログと、ブローカー間で作成されるクラスター化されたブリッジのエントリーが表示されます。

    2018-08-29 07:43:55,779 INFO  [org.apache.activemq.artemis.core.server] AMQ221027: Bridge ClusterConnectionBridge@1b0e9e9d [name=$.artemis.internal.sf.my-cluster.4333c830-ab5f-11e8-afb8-0a580a82006e, queue=QueueImpl[name=$.artemis.internal.sf.my-cluster.4333c830-ab5f-11e8-afb8-0a580a82006e, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=9cedb69d-ab5e-11e8-87a4-0a580a82006c], temp=false]@5e0c0398 targetConnector=ServerLocatorImpl (identity=(Cluster-connection-bridge::ClusterConnectionBridge@1b0e9e9d [name=$.artemis.internal.sf.my-cluster.4333c830-ab5f-11e8-afb8-0a580a82006e, queue=QueueImpl[name=$.artemis.internal.sf.my-cluster.4333c830-ab5f-11e8-afb8-0a580a82006e, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=9cedb69d-ab5e-11e8-87a4-0a580a82006c], temp=false]@5e0c0398 targetConnector=ServerLocatorImpl [initialConnectors=[TransportConfiguration(name=artemis, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory) ?port=61616&host=10-130-0-110], discoveryGroupConfiguration=null]]::ClusterConnectionImpl@806813022[nodeUUID=9cedb69d-ab5e-11e8-87a4-0a580a82006c, connector=TransportConfiguration(name=artemis, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory) ?port=61616&host=10-130-0-108, address=, server=ActiveMQServerImpl::serverUUID=9cedb69d-ab5e-11e8-87a4-0a580a82006c])) [initialConnectors=[TransportConfiguration(name=artemis, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory) ?port=61616&host=10-130-0-110], discoveryGroupConfiguration=null]] is connected

7.3.4. AMQ Broker 管理コンソールのルートの作成

クラスターリングテンプレートでは、デフォルトで AMQ Broker 管理コンソールは公開されません。これは、OpenShift プロキシーがクラスター内の各ブローカー間で負荷分散を実行し、特定のタイミングで接続されるブローカーコンソールを制御できないためです。

以下の手順は、独自の管理コンソールインスタンスに接続するようにクラスター内の各ブローカーを設定する方法を示しています。これを行うには、クラスター内の各ブローカー Pod に専用のサービスとルートの組み合わせを作成します。

前提条件

手順

  1. StatefulSet セレクターを使用して Pod 間を選択し、クラスターの各 Pod に通常のサービスを作成します。これを実行するには、以下のようなサービステンプレートを .yaml 形式でデプロイします。

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        description: 'Service for the management console of broker pod XXXX'
      labels:
        app: application2
        application: application2
        template: amq-broker-77-persistence-clustered
      name: amq2-amq-console-XXXX
      namespace: amq75-p-c-ssl-2
    spec:
      ports:
        - name: console-jolokia
          port: 8161
          protocol: TCP
          targetPort: 8161
      selector:
        deploymentConfig: application2-amq
        statefulset.kubernetes.io/pod-name: application2-amq-XXXX
      type: ClusterIP

    上記のテンプレートの XXXX は、サービスに関連付けるブローカー Pod の ordinal 値に置き換えます。たとえば、サービス をクラスターの最初の Pod に関連付けるには、XXXX0 に設定します。サービスと 2 つ目の Pod を関連付けるには、XXXX1 に設定するなどです。

    クラスターにある各ブローカー Pod のテンプレートのインスタンスを保存してデプロイします。

    注記

    上記のテンプレート例では、セレクターは Kubernetes 定義の Pod 名を使用します。

  2. AMQ Broker 管理コンソールが Pod に接続できるように、各ブローカー Pod のルートを作成します。

    RoutesCreate Route の順にクリックします。

    Edit Route ページが表示されます。

    1. Services ドロップダウンメニューで、以前に作成したブローカーサービスで、ルートの関連付け先を選択します (例: amq2-amq-console-0 )。
    2. Target Port8161 に設定し、AMQ Broker 管理コンソールへのアクセスを有効にします。
    3. TLS パラメーターを表示するには、Secure route チェックボックスを選択します。

      1. TLS Termination ドロップダウンメニューから、Passthrough を選択します。

        ここで選択する内容では、OpenShift ルーターが復号化および再送信せずに AMQ Broker との通信をすべてリレーします。

    4. Create をクリックします。

      ブローカー Pod の 1 つに関連付けられたルートを作成する場合には、生成される .yaml ファイルには以下のような行が含まれます。

      spec:
        host: amq2-amq-console-0-amq75-p-c-2.apps-ocp311.example.com
        port:
          targetPort: console-jolokia
        tls:
          termination: passthrough
        to:
          kind: Service
          name: amq2-amq-console-0
          weight: 100
        wildcardPolicy: None
  3. 特定のブローカーインスタンスの管理コンソールにアクセスするには、上記の ホスト URL を Web ブラウザーにコピーします。

関連情報

7.4. クラスター化された SSL ブローカーセットのデプロイ

ブローカーのクラスター化されたセットをデプロイします。各ブローカーは独自の Pod で実行され、ブローカーは SSL を使用した接続を受け入れるように設定されています。

7.4.1. メッセージの分散

メッセージ分散は ON_DEMAND を使用するように設定されます。つまり、メッセージがクラスター化されたブローカーに到達すると、コンシューマーがあるブローカーにラウンドロビン方式で配布されます。

このメッセージ分散ポリシーは、直接または Open Shift ルーターを介して接続されているコンシューマーが別のブローカーに接続されているときに、メッセージが特定のブローカーでスタックするのを防ぎます。

再分散の遅延は、デフォルトではゼロではありません。メッセージがコンシューマーのないキューにある場合は、別のブローカーに再分散されます。

注記

再分散を有効にすると、メッセージが順番に関係なく分散される可能性があります。

7.4.2. イメージおよびテンプレートのデプロイ

前提条件

手順

  1. OpenShift Web コンソールに移動し、ログインします。
  2. amq-demo プロジェクトスペースを選択します。
  3. Add to Project > Browse catalog の順にクリックしてデフォルトのイメージストリームおよびテンプレートを一覧表示します。
  4. Filter 検索バーを使用して、一覧を amq に一致するものに限定します。See all をクリックして、必要なアプリケーションテンプレートを表示します。
  5. Red Hat AMQ Broker 7.7(SSL, clustered) というラベルが付いた amq-broker-77-persistence-clustered-ssl テンプレートを選択します。
  6. 設定で以下の値を設定し、Create をクリックします。

    表7.4 テンプレートの例
    環境変数表示名説明

    AMQ_PROTOCOL

    AMQ プロトコル

    openwire,amqp,stomp,mqtt,hornetq

    ブローカーによって使用されるプロトコル

    AMQ_QUEUES

    キュー

    demoQueue

    demoQueue という名前のキャストキューを作成します。

    AMQ_ADDRESSES

    アドレス

    demoTopic

    demoTopic という名前のアドレス (またはトピック) を作成します。デフォルトでは、このアドレスには割り当てられたルーティングタイプが割り当てられていません。

    VOLUME_CAPACITY

    AMQ ボリュームのサイズ

    1Gi

    ジャーナル用に作成される永続ボリュームサイズ

    AMQ_CLUSTERED

    クラスター化

    true

    ブローカーがクラスター化されるようにするには、true に指定する必要があります。

    AMQ_CLUSTER_USER

    クラスターユーザー

    generated

    ブローカーが相互の接続に使用するユーザー名

    AMQ_CLUSTER_PASSWORD

    クラスターパスワード

    generated

    ブローカーが相互接続に使用するパスワード

    AMQ_USER

    AMQ ユーザー名

    amq-demo-user

    クライアントが使用するユーザー名

    AMQ_PASSWORD

    AMQ パスワード

    パスワード

    クライアントがユーザー名で使用するパスワード

    AMQ_TRUSTSTORE

    トラストストアファイル名

    broker.ts

    SSL トラストストアファイル名

    AMQ_TRUSTSTORE_PASSWORD

    トラストストアのパスワード

    パスワード

    トラストストアの作成時に使用されるパスワード

    AMQ_KEYSTORE

    AMQ キーストアファイル名

    broker.ks

    SSL キーストアのファイル名

    AMQ_KEYSTORE_PASSWORD

    AMQ キーストアのパスワード

    パスワード

    キーストアの作成時に使用されるパスワード

7.4.3. アプリケーションのデプロイ

アプリケーションの作成後にデプロイします。アプリケーションのデプロイにより Pod が作成され、ブローカーが起動します。

手順

  1. OpenShift Container Platform Web コンソールで StatefulSets をクリックします。
  2. broker-amq デプロイメントをクリックします。
  3. Deploy をクリックしてアプリケーションをデプロイします。

    注記

    クラスター化されたテンプレートのデフォルトのレプリカ数は 0 であるため、Pod は表示されません。

  4. Pod を 3 つにスケールアップし、ブローカーのクラスターを作成します。

    $ oc scale statefulset broker-amq --replicas=3
    statefulset "broker-amq" scaled
  5. 3 つの Pod が実行されていることを確認します。

    $ oc get pods
    NAME           READY     STATUS    RESTARTS   AGE
    broker-amq-0   1/1       Running   0          33m
    broker-amq-1   1/1       Running   0          33m
    broker-amq-2   1/1       Running   0          29m
  6. 表示される Pod のステータスが ErrImagePull または ImagePullBackOff の場合には、デプロイメントは Red Hat Container Registry から指定されたブローカーイメージを直接プルできていません。この場合、StatefulSet を編集して、正しいブローカーイメージ名と、Red Hat Container Registry の認証に使用するアカウントに関連付けられたイメージプルシークレット名を参照します。次に、ブローカーイメージをインポートし、ブローカーを起動できます。これを実行するには、ブローカーアプリケーションのデプロイおよび起動 にある手順と同様の手順を実行します。
  7. ログをチェックして、ブローカーが新しい Pod でクラスター化されたことを確認します。

    $ oc logs broker-amq-2

    これにより、以下のように、新しいブローカーのログと、ブローカー間で作成されたクラスター化されたブリッジのエントリーがすべて表示されます。

    2018-08-29 07:43:55,779 INFO  [org.apache.activemq.artemis.core.server] AMQ221027: Bridge ClusterConnectionBridge@1b0e9e9d [name=$.artemis.internal.sf.my-cluster.4333c830-ab5f-11e8-afb8-0a580a82006e, queue=QueueImpl[name=$.artemis.internal.sf.my-cluster.4333c830-ab5f-11e8-afb8-0a580a82006e, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=9cedb69d-ab5e-11e8-87a4-0a580a82006c], temp=false]@5e0c0398 targetConnector=ServerLocatorImpl (identity=(Cluster-connection-bridge::ClusterConnectionBridge@1b0e9e9d [name=$.artemis.internal.sf.my-cluster.4333c830-ab5f-11e8-afb8-0a580a82006e, queue=QueueImpl[name=$.artemis.internal.sf.my-cluster.4333c830-ab5f-11e8-afb8-0a580a82006e, postOffice=PostOfficeImpl [server=ActiveMQServerImpl::serverUUID=9cedb69d-ab5e-11e8-87a4-0a580a82006c], temp=false]@5e0c0398 targetConnector=ServerLocatorImpl [initialConnectors=[TransportConfiguration(name=artemis, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory) ?port=61616&host=10-130-0-110], discoveryGroupConfiguration=null]]::ClusterConnectionImpl@806813022[nodeUUID=9cedb69d-ab5e-11e8-87a4-0a580a82006c, connector=TransportConfiguration(name=artemis, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory) ?port=61616&host=10-130-0-108, address=, server=ActiveMQServerImpl::serverUUID=9cedb69d-ab5e-11e8-87a4-0a580a82006c])) [initialConnectors=[TransportConfiguration(name=artemis, factory=org-apache-activemq-artemis-core-remoting-impl-netty-NettyConnectorFactory) ?port=61616&host=10-130-0-110], discoveryGroupConfiguration=null]] is connected

関連情報

7.5. カスタム設定を使用したブローカーのデプロイ

カスタム設定でブローカーをデプロイします。テンプレートを使用すると機能を取得できますが、必要に応じてブローカー設定をカスタマイズできます。

前提条件

7.5.1. イメージおよびテンプレートのデプロイ

手順

  1. OpenShift Web コンソールに移動し、ログインします。
  2. amq-demo プロジェクトスペースを選択します。
  3. Add to Project > Browse catalog の順にクリックしてデフォルトのイメージストリームおよびテンプレートを一覧表示します。
  4. Filter 検索バーを使用して、amq に一致するものだけに結果を限定します。See all をクリックして、必要なアプリケーションテンプレートを表示します。
  5. Red Hat AMQ Broker 7.7(Ephemeral, no SSL) というラベルが付いた amq-broker-77-custom テンプレートを選択します。
  6. 設定で broker.xml を、使用するカスタム設定に更新します。Create をクリックします。

    注記

    テキストエディターを使用してブローカーの XML 設定を作成します。次に、変更詳細を broker.xml フィールドに切り取って貼り付けます。

    注記

    OpenShift Container Platform では、このプラットフォームにデプロイされる多くのアプリケーションに共通するので、ConfigMap オブジェクトを使用して broker.xml フィールドに指定するカスタム設定は保存されません。代わりに、ブローカーコンテナーの起動時に設定をスタンドアロンファイルに転送する前に、OpenShift は指定された設定を環境変数に一時的に保存します。

7.5.2. アプリケーションのデプロイ

アプリケーションを作成したら、デプロイする必要があります。アプリケーションのデプロイにより Pod が作成され、ブローカーが起動します。

手順

  1. OpenShift Container Platform Web コンソールで Deployments をクリックします。
  2. broker-amq デプロイメントをクリックします。
  3. Deploy をクリックしてアプリケーションをデプロイします。

7.6. 基本的な SSL クライアントの例

Qpid JMS クライアントを使用して、SSL を使用するように設定されたブローカーからメッセージを送受信するクライアントを実装します。

前提条件

7.6.1. クライアントの設定

SSL ブローカーに接続するために更新可能なサンプルクライアントを作成します。以下の手順では、AMQ JMS の例 を基にしています。

手順

  1. /etc/hosts ファイルにエントリーを追加して、ルート名を OpenShift クラスターの IP アドレスにマッピングします。

    10.0.0.1 broker-amq-tcp-amq-demo.router.default.svc.cluster.local
  2. 以下のように、jndi.properties 設定ファイルは、前のステップで作成したルート、トラストストア、およびキーストアを使用するように更新します。

    connectionfactory.myFactoryLookup = amqps://broker-amq-tcp-amq-demo.router.default.svc.cluster.local:8443?transport.keyStoreLocation=<keystore-path>client.ks&transport.keyStorePassword=password&transport.trustStoreLocation=<truststore-path>/client.ts&transport.trustStorePassword=password&transport.verifyHost=false
  3. jndi.properties 設定ファイルは、先に作成したキューを使用するように更新します。

    queue.myDestinationLookup = demoQueue
  4. 送信側のクライアントを実行してテキストメッセージを送信します。
  5. 受信側クライアントを実行して、テキストメッセージを受信します。以下が表示されるはずです。

    Received message: Message Text!

7.7. サブドメインを使用した外部クライアントの例

ノードポートを介してクラスター化されたブローカーセットを公開し、コア JMS クライアントを使用して接続します。これにより、クライアントは amq-broker-77-persistence-clustered-ssl テンプレートを使用して設定されるブローカーのセットに接続できます。

7.7.1. ブローカーの公開

ブローカーのクラスターが外部で利用可能になり、OpenShift ルーターをバイパスして直接接続できるようにブローカーを設定します。これは、各 Pod を独自のホスト名で公開するルートを作成して実行されます。

手順

  1. Add to Project ドロップダウンから import YAML/JSON を選択します。
  2. 以下を入力し、Create をクリックします。

    apiVersion: v1
    kind: Route
    metadata:
      labels:
        app: broker-amq
        application: broker-amq
      name: tcp-ssl
    spec:
      port:
        targetPort: ow-multi-ssl
      tls:
        termination: passthrough
      to:
        kind: Service
        name: broker-amq-headless
        weight: 100
      wildcardPolicy: Subdomain
      host: star.broker-ssl-amq-headless.amq-demo.svc
    注記

    ここで重要な設定は、Subdomain のワイルドカードポリシーです。これにより、各ブローカーは独自のホスト名からアクセスできます。

7.7.2. クライアントの接続

SSL ブローカーに接続するために更新可能なサンプルクライアントを作成します。この手順は、AMQ JMS の例 を基にしています。

手順

  1. /etc/hosts ファイルにエントリーを追加して、ルート名をブローカーの実際の IP アドレスにマッピングします。

    10.0.0.1 broker-amq-0.broker-ssl-amq-headless.amq-demo.svc broker-amq-1.broker-ssl-amq-headless.amq-demo.svc broker-amq-2.broker-ssl-amq-headless.amq-demo.svc
  2. 以下のように、jndi.properties 設定ファイルを、前のステップで作成したルート、トラストストア、およびキーストアを使用するように更新します。

    connectionfactory.myFactoryLookup = amqps://broker-amq-0.broker-ssl-amq-headless.amq-demo.svc:443?transport.keyStoreLocation=/home/ataylor/projects/jboss-amq-7-broker-openshift-image/client.ks&transport.keyStorePassword=password&transport.trustStoreLocation=/home/ataylor/projects/jboss-amq-7-broker-openshift-image/client.ts&transport.trustStorePassword=password&transport.verifyHost=false
  3. jndi.properties 設定ファイルは、先に作成したキューを使用するように更新します。

    queue.myDestinationLookup = demoQueue
  4. 送信側のクライアントコードを実行してテキストメッセージを送信します。
  5. 受信側クライアントコードを実行して、テキストメッセージを受信します。以下が表示されるはずです。

    Received message: Message Text!

関連情報

  • AMQ JMS クライアントの使用の詳細は、AMQ JMS Examplesを参照してください。

7.8. ポートバインディングを使用した外部クライアントの例

NodePort を介してブローカーのクラスターセットを公開し、コア JMS クライアントを使用して接続します。これにより、SNI または SSL をサポートしないクライアントが有効になります。これは、amq-broker-77-persistence-clustered テンプレートを使用して設定されたクラスターで使用されます。

7.8.1. ブローカーの公開

ブローカーのクラスターが外部で利用可能になり、OpenShift ルーターをバイパスして直接接続できるようにブローカーを設定します。これは、NodePort を使用してクラスター周辺の負荷分散を行うサービスを作成して行われます。

手順

  1. Add to Project ドロップダウンから import YAML/JSON を選択します。
  2. 以下を入力し、Create をクリックします。

    apiVersion: v1
    kind: Service
    metadata:
      annotations:
        description: The broker's OpenWire port.
        service.alpha.openshift.io/dependencies: >-
          [{"name": "broker-amq-amqp", "kind": "Service"},{"name":
          "broker-amq-mqtt", "kind": "Service"},{"name": "broker-amq-stomp", "kind":
          "Service"}]
      creationTimestamp: '2018-08-29T14:46:33Z'
      labels:
        application: broker
        template: amq-broker-77-statefulset-clustered
      name: broker-external-tcp
      namespace: amq-demo
      resourceVersion: '2450312'
      selfLink: /api/v1/namespaces/amq-demo/services/broker-amq-tcp
      uid: 52631fa0-ab9a-11e8-9380-c280f77be0d0
    spec:
      externalTrafficPolicy: Cluster
      ports:
       -  nodePort: 30001
          port: 61616
          protocol: TCP
          targetPort: 61616
      selector:
        deploymentConfig: broker-amq
      sessionAffinity: None
      type: NodePort
    status:
      loadBalancer: {}
    注記

    NodePort 設定は重要です。NodePort はクライアントがブローカーにアクセスするポートで、タイプは NodePort です。

7.8.2. クライアントの接続

AMQ Broker CLI を使用して、クラスターのブローカーにラウンドロビンされるコンシューマーを作成します。

手順

  1. 端末でコンシューマーを作成し、OpenShift が実行している IP アドレスにアタッチします。

    artemis consumer --url tcp://<IP_ADDRESS>:30001 --message-count 100 --destination queue://demoQueue
  2. ステップ 1 を 2 回繰り返して、2 つのコンシューマーを起動します。

    注記

    これで、3 つのブローカー全体で 3 つのコンシューマー負荷が分散されます。

  3. メッセージを送信するプロデューサーを作成します。

    artemis producer --url tcp://<IP_ADDRESS>:30001 --message-count 300 --destination queue://demoQueue
  4. 各コンシューマーがメッセージを受信することを確認します。

    Consumer:: filter = null
    Consumer ActiveMQQueue[demoQueue], thread=0 wait until 100 messages are consumed
    Consumer ActiveMQQueue[demoQueue], thread=0 Consumed: 100 messages
    Consumer ActiveMQQueue[demoQueue], thread=0 Consumer thread finished

第8章 テンプレートベースのブローカーデプロイメントのアップロード

以下の手順では、アプリケーションテンプレートをベースとするデプロイメントのブローカーコンテナーイメージをアップグレードする方法を説明します。

注記
  • OpenShift Container Platform 3.11 で既存の AMQ Broker デプロイメントを OpenShift Container Platform 4.1 以降で実行するには、既存のデプロイメントに一致する AMQ Broker をクリーンインストールする前に、まず OpenShift Container Platform インストールをアップグレードする必要があります。AMQ Broker をクリーンインストールするには、以下のいずれかの方法を使用します。

  • 以下の手順では、マイナー バージョン間でイメージ仕様を手動でアップグレードする方法を説明します (例: 7.x から 7.y)。イメージ仕様で 7.y などの Floating タグを使用する場合、StatefulSet または DeploymentConfig の imagePullPolicy 属性が Always に設定されていると、デプロイメントは、新しい micro イメージバージョン (7.y-z) が利用できるように 自動的 にプルし、使用します。

    たとえば、デプロイメントの image 属性が 7.7 の Floating タグを指定するとします。デプロイメントで現在マイナーバージョン 7.7-2 を使用し、新しいマイナーバージョン 7.7-3 がレジストリーで利用可能な場合に、デプロイメントは新しいマイナーバージョンを自動的にプルし、これを使用します。新しいイメージを使用するには、デプロイメントの各ブローカー Pod が再起動します。デプロイメントに複数のブローカーがある場合、ブローカー Pod は一度に 1 つずつ再起動されます。

8.1. 永続的でないブローカーデプロイメントのアップグレード

この手順では、永続的ではないブローカーデプロイメントをアップグレードする方法を説明します。OpenShift Container Platform サービスカタログの永続ではないブローカーテンプレートには、以下のようなラベルがあります。

  • Red Hat AMQ Broker 7.x(Ephemeral, no SSL)
  • Red Hat AMQ Broker 7.x(Ephemeral, with SSL)
  • Red Hat AMQ Broker 7.x(Custom Config、Ephemeral、no SSL)

前提条件

  • AMQ Broker 7.3 以降では、新しいバージョンの Red Hat Container Registry を使用してコンテナーイメージにアクセスします。この新しいバージョンのレジストリーでは、イメージにアクセスして OpenShift プロジェクトにプルする前に、認証されたユーザーである必要があります。このセクションの手順を実施する前に、Red Hat コンテナーレジストリーの認証 で説明されている手順を完了する必要があります。

手順

  1. OpenShift Container Platform Web コンソールに移動し、ログインします。
  2. 永続的ではないブローカーデプロイメントをアップグレードするプロジェクトをクリックします。
  3. ブローカーのデプロイメントに対応する DeploymentConfig (DC) を選択します。

    1. OpenShift Container Platform 4.1 以降では、WorkloadsDeploymentConfigs をクリックします。
    2. OpenShift Container Platform 3.11 で、ApplicationsDeployments をクリックします。ブローカーのデプロイメント内で、Configuration タブをクリックします。
  4. Actions メニューから Edit DeploymentConfig (OpenShift Container Platform 4.1 以降) または Edit YAML (OpenShift Container Platform 3.11) をクリックします。

    DeploymentConfig の YAML タブが開き、編集可能なモードの .yaml ファイルが表示されます。

  5. image 属性を編集して、最新の AMQ Broker 7.7 コンテナーイメージ registry.redhat.io/amq7/amq-broker:7.7 を指定します。
  6. imagePullSecrets 属性を追加し、Red Hat コンテナーレジストリーで認証に使用するアカウントに関連付けられたイメージプルシークレットを指定します。

    前述の 2 つの手順に基づく変更は、以下の例で示されています。

    ...
    spec:
        containers:
            image: 'registry.redhat.io/amq7/amq-broker:7.7'
    ..
    imagePullSecrets:
      - name: {PULL-SECRET-NAME}
    注記

    AMQ Broker では、Red Hat イメージレジストリーに追加されたコンテナーイメージの新しいバージョンごとにコンテナーイメージタグが 1 ずつ増えます (例: 7.7-1、7.7-2 など)。最後の数字なしでタグ名を指定した場合 (例:7.7)、このタグは Floating タグ と呼ばれています。Floating タグを指定する場合、OpenShift Container Platform は利用可能な最新のイメージ (最後の番号が最も大きいイメージタグ) を自動的に識別し、このイメージを使用してブローカーデプロイメントをアップグレードします。

  7. Save をクリックします。

    現在インストールされているものよりも新しいブローカーイメージが Red Hat Container Registry で利用可能な場合に、OpenShift Container Platform はブローカーのデプロイメントをアップグレードします。これを実行するには、OpenShift Container Platform は既存ブローカー Pod を停止し、新規イメージを使用する新規 Pod を起動します。

8.2. 永続的なブローカーデプロイメントのアップグレード

この手順では、永続的なブローカーデプロイメントをアップグレードする方法を説明します。OpenShift Container Platform サービスカタログの永続ブローカーテンプレートには、以下のようなラベルがあります。

  • Red Hat AMQ Broker 7.x (Persistence, clustered, no SSL)
  • Red Hat AMQ Broker 7.x (Persistence, clustered, with SSL)
  • Red Hat AMQ Broker 7.x (Persistence, with SSL)

前提条件

  • AMQ Broker 7.3 以降では、新しいバージョンの Red Hat Container Registry を使用してコンテナーイメージにアクセスします。この新しいバージョンのレジストリーでは、イメージにアクセスして OpenShift プロジェクトにプルする前に、認証されたユーザーである必要があります。このセクションの手順を実施する前に、Red Hat コンテナーレジストリーの認証 で説明されている手順を完了する必要があります。

手順

  1. OpenShift Container Platform Web コンソールに移動し、ログインします。
  2. 永続的なブローカーデプロイメントをアップグレードするプロジェクトをクリックします。
  3. ブローカーのデプロイメントに対応する StatefulSet(SS) を選択します。

    1. OpenShift Container Platform 4.1 以降では、WorkloadsStatefulSets をクリックします。
    2. OpenShift Container Platform 3.11 で、ApplicationsStatefulSets をクリックします。
  4. Actions メニューから Edit StatefulSet (OpenShift Container Platform 4.1 以降) または Edit YAML (OpenShift Container Platform 3.11) をクリックします。

    StatefulSet の YAML タブが開き、編集可能なモードの .yaml ファイルが表示されます。

  5. ブローカーのデプロイメントをアップグレードする準備をするには、デプロイメントをゼロのブローカーにスケールダウンします。

    1. replicas 属性が現在 1 以上に設定されている場合は、0 に設定します。
    2. Save をクリックします。
  6. すべてのブローカー Pod がシャットダウンしたら、StatefulSet .yaml ファイルを再度編集します。image 属性を編集して、最新の AMQ Broker 7.7 コンテナーイメージ registry.redhat.io/amq7/amq-broker:7.7 を指定します。
  7. imagePullSecrets 属性を追加し、Red Hat コンテナーレジストリーで認証に使用するアカウントに関連付けられたイメージプルシークレットを指定します。

    前述の 2 つの手順に基づく変更は、以下の例で示されています。

    ...
    spec:
        containers:
            image: 'registry.redhat.io/amq7/amq-broker:7.7'
    ..
    imagePullSecrets:
      - name: {PULL-SECRET-NAME}
  8. replicas 属性を元の値に設定します。
  9. Save をクリックします。

    現在インストールされているものよりも新しいブローカーイメージが Red Hat Container Registry で利用可能な場合に、OpenShift Container Platform はブローカーのデプロイメントをアップグレードします。これを実行するには、OpenShift Container Platform はブローカー Pod を再起動します。

第9章 ブローカーの監視

デプロイメント内のブローカーのランタイムデータを監視するには、次のいずれかの方法を使用します。

一般的にに、Prometheus を使用することが推奨されるアプローチです。ただし、監視する必要があるメトリックが Prometheus プラグインによってエクスポートされない場合は、Jolokia REST インターフェイスを JMX に使用することを選択できます。Prometheus プラグインがエクスポートするブローカーランタイムメトリックの詳細については 「ブローカーメトリックの概要」 を参照してください。

9.1. Prometheus を使用したブローカーのランタイムメトリックの監視

以下のセクションでは、OpenShift Container Platform で AMQ Broker の Prometheus メトリクスプラグインを設定する方法について説明します。プラグインを使用して、ブローカーのランタイムメトリックを監視および保存できます。Grafana などのグラフィカルツールを使用して、Prometheus プラグインが収集するデータをさらに詳細にわたり視覚化する設定や、ダッシュボードの設定も行うことができます。

注記

Prometheus メトリクスプラグインを使用すると、ブローカーメトリクスを Prometheus形式で収集およびエクスポートできます。ただし、Red Hat では、Prometheus 自体のインストールや設定、または Grafana などの視覚化ツールは、サポートしていません。Prometheus または Grafana のインストール、設定、または実行に関するサポートが必要な場合は、製品の Web サイトにアクセスして、コミュニティーのサポートやドキュメントなどのリソースを入手してください。

9.1.1. ブローカーメトリックの概要

AMQ Broker の Prometheus プラグインを使用し、ブローカーのランタイムメトリックを監視および保存して、ブローカーインスタンスの正常性とパフォーマンスを監視できます。AMQ Broker Prometheus プラグインは、ブローカーのランタイムメトリックを Prometheus 形式にエクスポートし、Prometheus 自体を使用してデータのクエリーを視覚化および実行できるようにします。

Grafana などのグラフィカルツールを使用して、Prometheus プラグインが収集するメトリクスをさらに詳細にわたり視覚化する設定や、ダッシュボードの設定も行うことができます。

プラグインが Prometheus 形式にエクスポートするメトリクスを以下に説明します。各メトリックの説明は、メトリック自体と合わせてエクスポートされます。

ブローカーメトリクス

  • address.memory.usage
  • connection.count
  • total.connection.count

アドレスメトリクス

  • routed.message.count
  • unrouted.message.count

キューメトリクス

  • consumer.count
  • delivering.durable.message.count
  • delivering.durable.persistent.size
  • delivering.message.count
  • delivering.persistent.size
  • durable.message.count
  • durable.persistent.size
  • messages.acknowledged
  • messages.added
  • message.count
  • messages.killed
  • messages.expired
  • persistent.size
  • scheduled.durable.message.count
  • scheduled.durable.persistent.size
  • scheduled.message.count
  • scheduled.persistent.size

上記にリストされていない上位レベルのブローカーメトリクスについては、下位レベルのメトリクスを集計することで算出できます。たとえば、メッセージの合計数を算出するには、ブローカーデプロイメントのすべてのキューから message.count メトリクスを集約できます。

Java 仮想マシン (JVM) メトリックも Prometheus 形式にエクスポートされます。

9.1.2. 実行中のブローカーデプロイメントの Prometheus プラグインの有効化

この手順では、指定のデプロイメントでブローカー Pod の Prometheus プラグインを有効にする方法を説明します。

前提条件

  • アプリケーションテンプレートまたは AMQ Broker Operator で作成されたブローカー Pod の Prometheus プラグインを有効にしてください。ただし、デプロイされたブローカーは、AMQ Broker 7.5 以降のブローカーコンテナーイメージを使用する必要があります。ブローカーのデプロイメントで最新のブローカーコンテナーイメージが使用されることを確認する方法は、8章テンプレートベースのブローカーデプロイメントのアップロード を参照してください。

手順

  1. ブローカーのデプロイメントなどのプロジェクトに対する管理者権限で、OpenShift Container Platform Web コンソールにログインします。
  2. Web コンソールで、HomeProjects (OpenShift Container Platform 4.1 以降) または左上隅 (OpenShift Container Platform 3.11) のドロップダウンリストをクリックします。ブローカーのデプロイメントが含まれるプロジェクトを選択します。
  3. プロジェクトで StatefulSets または DeploymentConfigs を表示するには、以下を実行します。

    1. WorkloadsStatefulSets または WorkloadsDeploymentConfigs (OpenShift Container Platform 4.1 以降)。
    2. ApplicationsStatefulSets または ApplicationsDeployments (OpenShift Container Platform 3.11).
  4. ブローカーのデプロイメントに対応する StatefulSet または DeploymentConfig をクリックします。
  5. ブローカーデプロイメントの環境変数にアクセスするには、環境 タブをクリックします。
  6. 新しい環境変数 AMQ_ENABLE_METRICS_PLUGIN を追加します。変数の値を true に設定します。

    AMQ_ENABLE_METRICS_PLUGIN 環境変数を設定すると、OpenShift は StatefulSet または DeploymentConfig で各ブローカー Pod を再起動します。デプロイメントに複数の Pod がある場合、OpenShift は各 Pod を順番に再起動します。各ブローカー Pod が再起動すると、そのブローカーの Prometheus プラグインがブローカーのランタイムメトリックの収集を開始します。

注記

AMQ_ENABLE_METRICS_PLUGIN 環境変数はデフォルトで AMQ Broker 7.5 以降のアプリケーションテンプレートに含まれています。新しい テンプレートベースのデプロイメントで各ブローカーのプラグインを有効にするには、アプリケーションテンプレートのデプロイ時に AMQ_ENABLE_METRICS_PLUGIN の値が true に設定されていることを確認します。

関連情報

9.1.3. 実行中のブローカー Pod の Prometheus メトリクスへのアクセス

以下の手順では、実行中のブローカー Pod の Prometheus メトリクスにアクセスする方法を説明します。

前提条件

手順

  1. メトリクスのアクセス先のブローカー Pod では、以前に Pod への接続用に作成したルートを特定して、AMQ Broker 管理コンソールに接続する必要があります。メトリクスへのアクセスに必要な URL の一部に、ルート名が含まれます。

    1. NetworkingRoutes (OpenShift Container Platform 4.1 以降) または ApplicationsRoutes (OpenShift Container Platform 3.11) をクリックします。
    2. 選択したブローカー Pod で、AMQ Broker 管理コンソールへの Pod の接続用に作成されたルートを特定します。ホスト名に表示される完全な URL をメモします。以下に例を示します。

      http://rte-console-access-pod1.openshiftdomain
  2. Prometheus メトリクスにアクセスするには、Web ブラウザーで、先程メモをしたルート名に / metrics が付けて入力します。以下に例を示します。

    http://rte-console-access-pod1.openshiftdomain/metrics
注記

コンソール設定で SSL を使用しない場合は、URL に http を指定してください。この場合、ホスト名の DNS が解決されて、トラフィックは OpenShift ルーターのポート 80 に転送されます。コンソール設定で SSL を使用する場合は、URL に https を指定します。この場合、ブラウザーはデフォルトで OpenShift ルーターのポート 443 になります。この設定により、OpenShift ルーターが SSL トラフィックにポート 443 も使用する場合には、コンソールに正常に接続できます (これは、ルーターのデフォルト設定)。

9.2. JMX を使用したブローカーランタイムデータの監視

この例では、JMX への Jolokia REST インターフェイスを使用してブローカーをモニターする方法を説明します。

前提条件

手順

  1. 実行中の Pod のリストを取得します。

    $ oc get pods
    
    NAME                 READY     STATUS    RESTARTS   AGE
    broker-amq-1-ftqmk   1/1       Running   0          14d
  2. oclogs コマンドを実行します。

    $ oc logs -f broker-amq-1-ftqmk
    
    Running /amq-broker-71-openshift image, version 1.3-5
    INFO: Loading '/opt/amq/bin/env'
    INFO: Using java '/usr/lib/jvm/java-1.8.0/bin/java'
    INFO: Starting in foreground, this is just for debugging purposes (stop process by pressing CTRL+C)
    ...
    INFO | Listening for connections at: tcp://broker-amq-1-ftqmk:61616?maximumConnections=1000&wireFormat.maxFrameSize=104857600
    INFO | Connector openwire started
    INFO | Starting OpenShift discovery agent for service broker-amq-tcp transport type tcp
    INFO | Network Connector DiscoveryNetworkConnector:NC:BrokerService[broker-amq-1-ftqmk] started
    INFO | Apache ActiveMQ 5.11.0.redhat-621084 (broker-amq-1-ftqmk, ID:broker-amq-1-ftqmk-41433-1491445582960-0:1) started
    INFO | For help or more information please see: http://activemq.apache.org
    WARN | Store limit is 102400 mb (current store usage is 0 mb). The data directory: /opt/amq/data/kahadb only has 9684 mb of usable space - resetting to maximum available disk space: 9684 mb
    WARN | Temporary Store limit is 51200 mb, whilst the temporary data directory: /opt/amq/data/broker-amq-1-ftqmk/tmp_storage only has 9684 mb of usable space - resetting to maximum available 9684 mb.
  3. クエリーを実行して、ブローカーの Max Consumers を監視します。

    $ curl -k -u admin:admin http://console-broker.amq-demo.apps.example.com/console/jolokia/read/org.apache.activemq.artemis:broker=%22broker%22,component=addresses,address=%22TESTQUEUE%22,subcomponent=queues,routing-type=%22anycast%22,queue=%22TESTQUEUE%22/MaxConsumers
    
    {"request":{"mbean":"org.apache.activemq.artemis:address=\"TESTQUEUE\",broker=\"broker\",component=addresses,queue=\"TESTQUEUE\",routing-type=\"anycast\",subcomponent=queues","attribute":"MaxConsumers","type":"read"},"value":-1,"timestamp":1528297825,"status":200}

第10章 リファレンス

10.1. カスタムリソース設定リファレンス

カスタムリソース定義 (CRD) は、オペレーターでデプロイされたカスタム OpenShift オブジェクトの設定項目のスキーマです。対応するカスタムリソース (CR) インスタンスをデプロイして、CRD に表示される設定アイテムの値を指定します。

次のサブセクションでは、メインブローカーおよびアドレス CRD に基づいてカスタムリソースインスタンスで設定できる設定項目について詳説します。

10.1.1. ブローカーカスタムリソース設定リファレンス

メインブローカー CRD に基づく CR インスタンスを使用すると、ブローカーを設定して OpenShift プロジェクトにデプロイできます。次の表に、CR インスタンスで設定できる項目を示します。

重要

アスタリスク ( *) でマークされた設定アイテムは、該当するカスタムリソース (CR) でデプロイに必要です。不要なアイテムの値を明示的に指定しない場合には、設定にデフォルト値が使用されます。

エントリーサブエントリー説明と使用法

adminUser*

 

ブローカーおよび管理コンソールの接続に必要な管理者ユーザー名。

値を指定しない場合、値は自動的に生成され、シークレットに保存されます。デフォルトのシークレット名の形式は、<Custom-Resource-name>-credentials-secret です。例: my-broker-deployment-credentials-secret

: String

: my-user

デフォルト値: 無作為に、自動生成された値

adminPassword*

 

ブローカーおよび管理コンソールへの接続に必要な管理者パスワード。

値を指定しない場合、値は自動的に生成され、シークレットに保存されます。デフォルトのシークレット名の形式は、<Custom-Resource-name>-credentials-secret です。例: my-broker-deployment-credentials-secret

: String

: my-password

デフォルト値: 無作為に、自動生成された値

deploymentPlan*

 

ブローカーのデプロイメント設定

 

image*

Red Hat Container Registry からプルされるブローカーコンテナーイメージの完全パス。デフォルトのコンテナーイメージタグは、AMQ Broker のバージョンと一致します。

: String

: registry.redhat.io/amq7/amq-broker:latest

デフォルト値: registry.redhat.io/amq7/amq-broker:7.7

 

size*

デプロイメントで作成するブローカー Pod の数。

2 以上の値を指定すると、ブローカーのデプロイメントはデフォルトでクラスター化されます。クラスターのユーザー名とパスワードは自動的に生成され、同じシークレットに保存されます (デフォルトで admin User および admin Password)。

: int

: 1

デフォルト値: 2

 

requireLogin

ブローカーへの接続にログイン資格情報が必要かどうかを指定します。

: Boolean

: false

デフォルト値: true

 

persistenceEnabled

デプロイメントでブローカー Pod ごとにジャーナルストレージを使用するかどうかを指定します。true に設定されている場合には、各ブローカー Pod には、Operator が永続ボリューム要求 (PVC) を使用して要求できる永続ボリューム (PV) に空きがなければなりません。

: Boolean

: false

デフォルト値: true

 

journalType

非同期 I/O (AIO) と非ブロッキング I/O(NIO) のどちらを使用するかを指定します。

: String

: aio

デフォルト値: nio

 

messageMigration

ブローカーデプロイメントの失敗や、意図的にスケールダウンしたことでブローカー Pod がシャットダウンした場合には、ブローカークラスターでまだ実行中の別のブローカー Pod にメッセージを移行するかどうかを指定します。

: Boolean

: false

デフォルト値: true

 

resources.limits.cpu

デプロイメントの Pod で実行されている各ブローカーコンテナーが消費できるホストノード CPU の最大量 (ミリコア単位)。

: String

Example: "500m"

デフォルト値: お使いのバージョンの OpenShift Container Platform と同じデフォルト値を使用します。クラスター管理者に相談してください。

 

resources.limits.memory

デプロイメント内の Pod で実行されている各ブローカーコンテナーが消費できるホストノードメモリーの最大量 (バイト単位)。バイト表記 (K、M、G など)、または同等のバイナリー (Ki、Mi、Gi) をサポートします。

: String

Example: "1024M"

デフォルト値: お使いのバージョンの OpenShift Container Platform と同じデフォルト値を使用します。クラスター管理者に相談してください。

 

resources.requests.cpu

デプロイメント内の Pod で実行されている各ブローカーコンテナーが明示的に要求するホストノードの CPU 量 (ミリコア単位)。

: String

Example: "250m"

デフォルト値: お使いのバージョンの OpenShift Container Platform と同じデフォルト値を使用します。クラスター管理者に相談してください。

 

resources.requests.memory

デプロイメント内の Pod で実行されている各ブローカーコンテナーが明示的に要求するホストノードメモリーの量 (バイト単位)。バイト表記 (K、M、G など)、または同等のバイナリー (Ki、Mi、Gi) をサポートします。

: String

Example: "512M"

デフォルト値: お使いのバージョンの OpenShift Container Platform と同じデフォルト値を使用します。クラスター管理者に相談してください。

 

storage.size

デプロイメントにある各ブローカーが永続ストレージに必要な Persistent Volume Claim (永続ボリューム要求、PVC) のサイズ (バイト単位)。このプロパティーは、persistenceEnabledtrue に設定されている場合にのみ適用されます。指定する値には単位が含まれている必要があります。バイト表記 (K、M、G など)、または同等のバイナリー (Ki、Mi、Gi) をサポートします。

: String

: 4Gi

デフォルト値: 2Gi

acceptors.acceptor

 

単一のアクセプターの設定インスタンス。

 

name*

アクセプターの名前。

: String

: my-acceptor

デフォルト値: 該当なし

 

ポート

アクセプターインスタンスに使用するポート番号。

: int

: 5672

デフォルト値: 61626 (定義する最初のアクセプター)。その後、デフォルト値は、定義する後続のアクセプターごとに 10 ずつ増えます。

 

protocols

アクセプターインスタンスで有効にするメッセージングプロトコル。

: String

: amqp、core

デフォルト値: all

 

sslEnabled

アクセプターポートで SSL を有効にするかどうかを指定します。true に設定されている場合は、 ssl Secret で指定されているシークレット名を調べて、TLS/SSL に必要な資格情報を探します。

: Boolean

: True

デフォルト値: false

 

sslSecret

ブローカーキーストア、トラストストア、および対応するパスワード (すべて Base64 でエンコードされたもの) が保存されるシークレット。

ssl Secret にカスタムシークレット名を指定しない場合には、アクセプターはデフォルトのシークレット名を想定します。デフォルトのシークレット名の形式は、<Custom-Resource-name>-<acceptor-name>-secret です。

アクセプターでデフォルト名が必要であっても、常にこのシークレットを自分で作成する必要があります。

: String

: my-broker-deployment-my-acceptor-secret

デフォルト値: <Custom-Resource-name>-<acceptor-name>-secret

 

enabledCipherSuites

TLS/SSL 通信に使用する暗号スイートのコンマ区切りリスト。

クライアントアプリケーションでサポートする最も安全な暗号スイートを指定します。コンマ区切りのリストを使用して、ブローカーとクライアントの両方に共通の暗号スイートのセットを指定する場合、または暗号スイートを指定しない場合には、ブローカーとクライアントは、使用する暗号スイートについて相互に交渉します。指定する暗号スイートがわからない場合は、最初にデバッグモードで実行されているクライアントとのブローカークライアント接続を確立して、ブローカーとクライアントの両方に共通の暗号スイートを確認することをお勧めします。次に、ブローカーで enabledCipherSuites を設定します。

: String

デフォルト値: 指定なし

 

enabledProtocols

TLS/SSL 通信に使用するプロトコルのコンマ区切りリスト。

: String

: TLSv1、TLSv1.1、TLSv1.2

デフォルト値: 指定なし

 

needClientAuth

ブローカーがアクセプターで双方向 TLS が必要であることをクライアントに通知するかどうかを指定します。このプロパティーは、wantClientAuth をオーバーライドします。

: Boolean

: True

デフォルト値: 指定なし

 

wantClientAuth

アクセプターで双方向 TLS が要求されていることを通知するかどうかを指定します。ただし、必須ではありません。このプロパティーは needClientAuth にオーバーライドされます。

: Boolean

: True

デフォルト値: 指定なし

 

verifyHost

クライアントの証明書のコモンネーム (CN) をホスト名と比較して一致することを確認するかどうかを指定します。このオプションは、双方向 TLS が使用されている場合にのみ適用されます。

: Boolean

: True

デフォルト値: 指定なし

 

sslProvider

SSL プロバイダーが JDK であるか OPENSSL であるかを指定します。

: String

: OPENSSL

デフォルト値: JDK

 

sniHost

受信接続の server_name の拡張子と照合するための正規表現。名前が一致しない場合には、アクセプターへの接続は拒否されます。

: String

: some_regular_expression

デフォルト値: 指定なし

 

expose

Open Shift Container Platform の外部のクライアントにアクセプターを公開するかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

anycastPrefix

anycast ルーティングタイプを使用することを指定するためにクライアントが使用する接頭辞。

: String

: jms.queue

デフォルト値: 指定なし

 

multicastPrefix

multicast ルーティングタイプを使用する必要があることを指定するためにクライアントが使用する接頭辞。

: String

: /topic /

デフォルト値: 指定なし

 

connectionsAllowed

アクセプターで許可されている接続の数。この制限に達すると、DEBUG メッセージがログに出力され、接続は拒否されました。使用中のクライアントのタイプによって、接続が拒否されたときに何が起こるかが決まります。

: integer

: 2

デフォルト値: 0 (無制限の接続)

 

amqpMinLargeMessageSize

ブローカーが AMQP メッセージを大きなメッセージとして処理するために必要な最小メッセージサイズ (バイト単位)。AMQ メッセージのサイズがこの値以上の場合は、ブローカーはメッセージを、メッセージストレージ用にブローカーが使用する永続ボリューム (PV) の永続ボリューム (デフォルトでは /opt/<custom-resource-name>/data/large-messages) にメッセージを保存します。値を -1 に設定すると、AMQP メッセージの大きなメッセージ処理が無効になります。

: integer

: 204800

デフォルト値: 102400(100 KB)

connectors.connector

 

単一のコネクター設定インスタンス。

 

name*

コネクターの名前。

: String

: my-connector

デフォルト値: 該当なし

 

type

作成するコネクターのタイプ。 tcp または vm

: String

: vm

デフォルト値: tcp

 

host*

接続するホスト名または IP アドレス。

: String

: 192.168.0.58

デフォルト値: 指定なし

 

port*

コネクターインスタンスに使用されるポート番号。

: int

: 22222

デフォルト値: 指定なし

 

sslEnabled

コネクターポートで SSL を有効にするかどうかを指定します。true に設定されている場合は、 ssl Secret で指定されているシークレット名を調べて、TLS/SSL に必要な資格情報を探します。

: Boolean

: True

デフォルト値: false

 

sslSecret

ブローカーキーストア、トラストストア、および対応するパスワード (すべて Base64 でエンコードされたもの) が保存されるシークレット。

ssl Secret にカスタムシークレット名を指定しない場合には、コネクターはデフォルトのシークレット名を想定します。デフォルトのシークレット名の形式は、<Custom-Resource-name>-<connector-name>-secret です。

コネクターでデフォルト名が必要であっても、このシークレットは常に自分で作成する必要があります。

: String

: my-broker-deployment-my-connector-secret

デフォルト値: <Custom-Resource-name>-<connector-name>-secret

 

enabledCipherSuites

TLS/SSL 通信に使用する暗号スイートのコンマ区切りリスト。

: String

: コネクターの場合、暗号スイートのリストを指定しないことをお勧めします。

デフォルト値: 指定なし

 

enabledProtocols

TLS/SSL 通信に使用するプロトコルのコンマ区切りリスト。

: String

: TLSv1、TLSv1.1、TLSv1.2

デフォルト値: 指定なし

 

needClientAuth

コネクターに双方向 TLS が必要であることをブローカがクライアントに通知するかどうかを指定します。このプロパティーは、wantClientAuth をオーバーライドします。

: Boolean

: True

デフォルト値: 指定なし

 

wantClientAuth

コネクターで双方向 TLS が要求されていることを通知するかどうかを指定します。ただし、必須ではありません。このプロパティーは needClientAuth にオーバーライドされます。

: Boolean

: True

デフォルト値: 指定なし

 

verifyHost

クライアントの証明書のコモンネーム (CN) をホスト名と比較して一致することを確認するかどうかを指定します。このオプションは、双方向 TLS が使用されている場合にのみ適用されます。

: Boolean

: True

デフォルト値: 指定なし

 

sslProvider

SSL プロバイダーが JDK であるか OPENSSL であるかを指定します。

: String

: OPENSSL

デフォルト値: JDK

 

sniHost

送信接続の server_name 拡張子と照合するための正規表現。名前が一致しない場合には、コネクター接続は拒否されます。

: String

: some_regular_expression

デフォルト値: 指定なし

 

expose

OpenShift Container Platform 外のクライアントにコネクターを公開するかどうかを指定します。

: Boolean

: True

デフォルト値: false

addressSettings.applyRule

 

Operator を一致するアドレスまたはアドレスのセットごとに CR に追加する設定を適用する方法を指定します。

指定できる値は次のとおりです。

merge_all

CR で指定されるアドレス設定、同じアドレスまたはアドレスのセットに一致するデフォルト設定の両方の場合:

  • デフォルト設定で指定されるプロパティー値を CR で指定されたプロパティー値に置き換えます。
  • CR またはデフォルト設定で一意で指定されるプロパティー値を保持します。これらはそれぞれ最終マージされた設定の組み込みます。

CR で指定されるアドレス設定または特定のアドレスセットに一意になるデフォルト設定の場合は、これらを最終でマージされた設定に含めます。

merge_replace

CR に指定されたアドレス設定、同じアドレスまたはアドレスセットに一致するデフォルト設定について、最終的なマージされた設定の CR に指定された設定を含めます。それらのプロパティーが CR で指定されていない場合でも、デフォルト設定に指定されたプロパティーを含めないでください。

CR で指定されるアドレス設定または特定のアドレスセットに一意になるデフォルト設定の場合は、これらを最終でマージされた設定に含めます。

replace_all
デフォルト設定に指定されたすべてのアドレス設定を CR で指定されたアドレス設定に置き換えます。最後にマージされた設定は、CR で指定したものと完全に対応します。

: String

: replace_all

デフォルト値: merge_all

addressSettings.addressSetting

 

一致するアドレスまたはアドレスの セット の設定。

 

addressFullPolicy

maxSizeBytes で設定されたアドレスがいっぱいになったときにどうなるかを指定します。利用可能なポリシーは以下のとおりです。

PAGE
完全アドレスに送信されたメッセージはディスクにページングされます。
DROP
完全アドレスに送信されたメッセージは通知なしに破棄されます。
FAIL
完全アドレスに送信されたメッセージはドロップされ、メッセージプロデューサーでは例外が発生します。
BLOCK

メッセージプロデューサーは、それ以上メッセージを送信しようとするとブロックします。

BLOCK ポリシーは、AMQP、OpenWire、および Core Protocol でのみ機能します。

: String

: DROP

デフォルト値: PAGE

 

autoCreateAddresses

クライアントが、存在しないアドレスにバインドされているキューにメッセージを送信するとき、またはキューからメッセージを消費しようとするときに、ブローカーが自動的にアドレスを作成するかどうかを指定します。

: Boolean

: false

デフォルト値: true

 

autoCreateDeadLetterResources

ブローカーがデッドレターアドレスおよびキューを自動的に作成し、未配信メッセージを受信するかどうかを指定します。

パラメーターが true に設定されている場合には、ブローカはデッドレターアドレスと関連するデッドレターキューを自動的に作成します。自動的に作成されたアドレスの名前は、 dead Letter Address に指定した値と一致します。

: Boolean

: True

デフォルト値: false

 

autoCreateExpiryResources

期限切れのメッセージを受信するため、ブローカーがアドレスとキューを自動的に作成するかどうかを指定します。

パラメーターが true に設定されている場合、ブローカーは自動的に有効期限アドレスと関連する有効期限キューを作成します。自動的に作成されたアドレスの名前は、 expiry Address に指定した値と一致します。

: Boolean

: True

デフォルト値: false

 

autoCreateJmsQueues

このプロパティーは非推奨にされています。代わりに autoCreateQueues を使用してください。

 

autoCreateJmsTopics

このプロパティーは非推奨にされています。代わりに autoCreateQueues を使用してください。

 

autoCreateQueues

クライアントがまだ存在していないキューにメッセージを送信するとき、またはキューからメッセージを消費しようとするときに、ブローカーが自動的にキューを作成するかどうかを指定します。

: Boolean

: false

デフォルト値: true

 

autoDeleteAddresses

ブローカーにキューがなくなったときに、ブローカーが自動的に作成されたアドレスを自動的に削除するかどうかを指定します。

: Boolean

: false

デフォルト値: true

 

autoDeleteAddressDelay

アドレスにキューがない場合に、ブローカーが自動作成されたアドレスを自動削除するまで待機する時間 (ミリ秒単位)。

: integer

: 100

デフォルト値: 0

 

autoDeleteJmsQueues

このプロパティーは非推奨にされています。代わりに autoDeleteQueues を使用してください。

 

autoDeleteJmsTopics

このプロパティーは非推奨にされています。代わりに autoDeleteQueues を使用してください。

 

autoDeleteQueues

キューにコンシューマーとメッセージがない場合に、ブローカーが自動作成されたキューを自動削除するかどうかを指定します。

: Boolean

: false

デフォルト値: true

 

autoDeleteCreatedQueues

キューにコンシューマーとメッセージがない場合に、ブローカーが手動で作成されたキューを自動削除するかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

autoDeleteQueuesDelay

キューにコンシューマーがない場合に、ブローカーが自動作成されたキューを自動削除するまで待機する時間 (ミリ秒単位)。

: integer

: 10

デフォルト値: 0

 

autoDeleteQueuesMessageCount

ブローカーがキューを自動的に削除できるかどうかを評価する前に、キューに入れることができるメッセージの最大数。

: integer

: 5

デフォルト値: 0

 

configDeleteAddresses

設定ファイルを再読み込みすると、このパラメーターで、設定ファイルから削除されたアドレス (とそのキュー) を処理する方法を指定します。以下の値を指定できます。

OFF
設定ファイルの再読み込み時には、ブローカーはアドレスを削除しません。
FORCE
ブローカは、設定ファイルの再読み込み時にアドレスとそのキューを削除します。キューにメッセージがある場合は、それらも削除されます。

: String

: FORCE

デフォルト値: OFF

 

configDeleteQueues

設定ファイルを再読み込みすると、この設定は、ブローカーが設定ファイルから削除されたキューを処理する方法を指定します。以下の値を指定できます。

OFF
設定ファイルの再読み込み時には、ブローカーはキューを削除しません。
FORCE
設定ファイルの再読み込み時には、ブローカーはキューを削除します。キューにメッセージがある場合は、それらも削除されます。

: String

: FORCE

デフォルト値: OFF

 

deadLetterAddress

ブローカーが未達の (未配信) メッセージを送信するアドレス。

: String

: DLA

デフォルト値: None

 

deadLetterQueuePrefix

ブローカーにより、自動作成された dead letter キューの名前に適用される接頭辞。

: String

: my DLQ。

デフォルト値: DLQ.

 

deadLetterQueueSuffix

ブローカーにより、自動作成された dead letter キューに適用される接尾辞。

: String

: .DLQ

デフォルト値: None

 

defaultAddressRoutingType

自動作成されたアドレスで使用されるルーティングタイプ。

: String

: ANYCAST

デフォルト値: MULTICAST

 

defaultConsumersBeforeDispatch

アドレスのキューに対してメッセージディスパッチを開始する前に必要なコンシューマーの数。

: integer

: 5

デフォルト値: 0

 

defaultConsumerWindowSize

コンシューマーのデフォルトのウィンドウサイズ (バイト単位)。

: integer

: 300000

デフォルト値: 1048576 (1024*1024)

 

defaultDelayBeforeDispatch

defaultConsumersBeforeDispatch に指定された値に達していない場合に、ブローカーがメッセージをディスパッチするまで待機するデフォルトの時間 (ミリ秒単位)。

: integer

: 5

デフォルト値: -1(遅延なし)

 

defaultExclusiveQueue

アドレス上のすべてのキューがデフォルトで独占キューであるかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

defaultGroupBuckets

メッセージのグループ化に使用するバケットの数。

: integer

: 0(メッセージのグループ化は無効)

デフォルト値: -1(制限なし)

 

defaultGroupFirstKey

グループ内のどのメッセージが最初であるかをコンシューマーに示すために使用されるキー。

: String

Example: firstMessageKey

デフォルト値: None

 

defaultGroupRebalance

新しいコンシューマーがブローカーに接続するときにグループのリバランスするかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

defaultGroupRebalancePauseDispatch

ブローカーがグループのリバランスをしている間、メッセージのディスパッチを一時停止するかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

defaultLastValueQueue

アドレス上のすべてのキューがデフォルトで最後の値のキューであるかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

defaultLastValueKey

最後の値のキューに使用するデフォルトのキー。

: String

: stock_ticker

デフォルト値: None

 

defaultMaxConsumers

任意のタイミングでキューで許可されるコンシューマーの最大数。

: integer

: 100

デフォルト値: -1(制限なし)

 

defaultNonDestructive

アドレス上のすべてのキューがデフォルトで non-destructive であるかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

defaultPurgeOnNoConsumers

コンシューマーがなくなったときにブローカーがキューの内容をパージするかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

defaultQueueRoutingType

自動作成されたキューで使用されるルーティングタイプ。デフォルト値は MULTICAST です。

: String

: ANYCAST

デフォルト値: MULTICAST

 

defaultRingSize

リングサイズが明示的に設定されていない、一致するキューのデフォルトのリングサイズ。

: integer

: 3

デフォルト値: -1(サイズ制限なし)

 

enableMetrics

Prometheus プラグインなどの設定されたメトリクスプラグインが一致するアドレスまたはアドレスのセットのメトリクスを収集するかどうかを指定します。

: Boolean

: false

デフォルト値: true

 

expiryAddress

期限切れのメッセージを受信するアドレス。

: String

Example: myExpiryAddress

デフォルト値: None

 

expiryDelay

デフォルトの有効期限を使用しているメッセージに適用される有効期限 (ミリ秒単位)。

: integer

: 100

デフォルト値: -1(有効期限は適用されません)

 

expiryQueuePrefix

ブローカーが自動作成された期限切れキューの名前に適用される接頭辞。

: String

Example: myExp.

デフォルト値: EXP.

 

expiryQueueSuffix

ブローカーが自動作成された期限切れキューの名前に適用される接尾辞。

: String

: .EXP

デフォルト値: None

 

lastValueQueue

キューが最後の値のみを使用するかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

managementBrowsePageSize

管理リソースが参照できるメッセージの数を指定します。

: integer

: 100

デフォルト値: 200

 

match*

アドレス設定と、ブローカーで設定されたアドレスとを照合する文字列。正確なアドレス名を指定するか、ワイルドカード式を使用してアドレス設定をアドレスのセットと照合できます。

ワイルドカード式を match プロパティーの値として使用する場合には、値を単一引用符で囲む必要があります (例: 'myOAddresses*')。

: String

Example: 'myAddresses*'

デフォルト値: None

 

maxDeliveryAttempts

設定されたデッドレターアドレスにメッセージを送信するまでに、ブローカがメッセージの配信を試行する回数を指定します。

: integer

: 20

デフォルト値: 10

 

maxExpiryDelay

この値より大きい有効期限を使用しているメッセージに適用される有効期限 (ミリ秒単位)。

: integer

: 20

デフォルト値: -1(最大有効期限は適用されません)

 

maxRedeliveryDelay

ブローカーによるメッセージの再配信試行間の最大値 (ミリ秒単位)。

: integer

: 100

デフォルト値: デフォルト値は、redelivery Delay の値の 10 倍です。デフォルト値は 0

 

maxSizeBytes

アドレスの最大メモリーサイズ (バイト単位)。address Full PolicyPAGINGBLOCK、または FAIL に設定されている場合に使用されます。K、Mb、GB などのバイト表記もサポートしています。

: String

: 10Mb

デフォルト値: -1(制限なし)

 

maxSizeBytesRejectThreshold

ブローカーがメッセージを拒否する前にアドレスが到達できる最大サイズ (バイト単位)。address-full-policyBLOCK に設定されている場合に使用されます。AMQP プロトコルの場合のみ maxSizeBytes と組み合わせて動作します。

: integer

: 500

デフォルト値: -1(最大サイズなし)

 

messageCounterHistoryDayLimit

ブローカーがアドレスのメッセージカウンター履歴を保持する日数。

: integer

: 5

デフォルト値: 0

 

minExpiryDelay

この値よりも短い有効期限を使用しているメッセージに適用される有効期限 (ミリ秒単位)。

: integer

: 20

デフォルト値: -1(最小有効期限は適用されません)

 

pageMaxCacheSize

ページングナビゲーション中に I/O を最適化するためにメモリー内に保持するページファイルの数。

: integer

: 10

デフォルト値: 5

 

pageSizeBytes

ページングサイズ (バイト単位)。KMbGB などのバイト表記もサポートします。

: String

: 20971520

デフォルト値: 10485760(約 10.5 MB)

 

redeliveryDelay

キャンセルされたメッセージを再配信する前にブローカーが待機する時間 (ミリ秒単位)。

: integer

: 100

デフォルト値: 0

 

redeliveryDelayMultiplier

redelivery Delay の値に適用する倍率。

: number

: 5

デフォルト値: 1

 

redeliveryCollisionAvoidanceFactor

競合を回避するために redelivery Delay の値に適用する倍率。

: number

: 1.1

デフォルト値: 0

 

redistributionDelay

キューの最後のコンシューマーが閉じられてから残りのメッセージを再分配するまでブローカーが待機する時間 (ミリ秒単位) を定義します。

: integer

: 100

デフォルト値: -1(未設定)

 

retroactiveMessageCount

アドレスに今後作成されるキューに対して保持するメッセージの数。

: integer

: 100

デフォルト値: 0

 

sendToDlaOnNoRoute

キューにルーティングされないメッセージは、設定済みのデッドレターアドレスアドレスに送信されます。

: Boolean

: True

デフォルト値: false

 

slowConsumerCheckPeriod

コンシューマーが遅いかどうかをブローカーがチェックする頻度 (秒単位)。

: integer

: 15

デフォルト値: 5

 

slowConsumerPolicy

低速なコンシューマーが特定されたときにどうするのかを指定します。有効なオプションは KILL または NOTIFY です。KILL はコンシューマーの接続を強制終了します。これは、同じ接続を使用するすべてのクライアントスレッドに影響を与えます。NOTIFYCONSUMER_SLOW 管理通知をクライアントに送信します。

: String

: KILL

デフォルト値: NOTIFY

 

slowConsumerThreshold

最小限許可されるメッセージ消費速度 (秒単位)。この値を下回るとコンシューマーは遅いと見なされます。

: integer

: 100

デフォルト値: -1(未設定)

console

 

ブローカー管理コンソールの設定。

 

expose

管理コンソールポートを公開するかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

sslEnabled

管理コンソールポートで SSL を使用するかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

sslSecret

ブローカーキーストア、トラストストア、および対応するパスワード (すべて Base64 でエンコードされたもの) が保存されるシークレット。ssl Secret の値を指定しない場合には、コンソールはデフォルトのシークレット名を使用します。デフォルトのシークレット名の形式は、<Custom-Resource-name>-console-secret です。

: String

: my-broker-deployment-console-secret

デフォルト値: 指定なし

 

useClientAuth

管理コンソールにクライアント認証が必要かどうかを指定します。

: Boolean

: True

デフォルト値: false

upgrades

  
 

enabled

version の値を更新して、AMQ Broker の新しいターゲットを指定する場合は、Operator が deployment Plan.image の値をそのバージョンの AMQ Broker に対応するブローカーコンテナーイメージに自動更新できるようにするかどうかを指定します。

: Boolean

: True

デフォルト値: false

 

minor

version の値を AMQ Broker のマイナー バージョンから別のバージョン (7.6.0 から 7.7.0 など) に更新するときに、Operator が deploymentPlan.image の値を自動更新できるようにするかどうかを指定します。

: Boolean

: True

デフォルト値: false

version

 

対応するブローカーコンテナーイメージを使用するように Operator が CR を自動更新する先の AMQ Broker のマイナーバージョンを指定します。たとえば、versionの値を 7.6.0 から 7.7.0 に変更した場合 (および upgrades.enabledupgrades.minorの両方が true に設定されている場合)、Operator は deploymentPlan.imageregistry.redhat.io/amq7/amq-broker:7.7-x の形式のブローカーイメージに更新します

: String

: 7.7.0

デフォルト値: AMQ Broker の現在のバージョン

10.1.2. アドレスのカスタムリソースの設定リファレンス

アドレス CRD に基づく CR インスタンスを使用して、デプロイメント内のブローカーのアドレスとキューを定義できます。次の表で、設定できる項目の詳細を示します。

重要

アスタリスク ( *) でマークされた設定アイテムは、該当するカスタムリソース (CR) でデプロイに必要です。不要なアイテムの値を明示的に指定しない場合には、設定にデフォルト値が使用されます。

エントリー説明と使用法

addressName*

ブローカーで作成されるアドレス名。

: String

: address0

デフォルト値: 指定なし

queueName*

ブローカーで作成されるキュー名。

: String

: queue0

デフォルト値: 指定なし

removeFromBrokerOnDelete*

デプロイメントのアドレス CR インスタンスを削除するときに、Operator がデプロイメント内のすべてのブローカーの既存のアドレスを削除するかどうかを指定します。デフォルト値は false です。これは、CR を削除するときに Operator が既存のアドレスを削除しないことを意味します。

: Boolean

: True

デフォルト値: false

routingType*

使用するルーティングタイプ。anycast または multicast

: String

: anycast

デフォルト値: 指定なし

10.2. アプリケーションテンプレートパラメーター

OpenShift Container Platform イメージでの AMQ Broker の設定は、アプリケーションテンプレートパラメーターの値を指定して実行されます。次のパラメーターを設定できます。

表10.1 アプリケーションテンプレートパラメーター
パラメーター説明

AMQ_ADDRESSES

起動時にブローカーでデフォルトで使用可能なアドレスを、コンマ区切りのリストで指定します。

AMQ_ANYCAST_PREFIX

多重化プロトコルポート 61616 および 61617 に適用される anycast 接頭辞を指定します。

AMQ_CLUSTERED

クラスターリングを有効にします。

AMQ_CLUSTER_PASSWORD

クラスターリングに使用するパスワードを指定します。AMQ Broker アプリケーションテンプレートは、AMQ_CREDENTIAL_SECRET で指定されたシークレットに格納されているこのパラメーターの値を使用します。

AMQ_CLUSTER_USER

クラスターリングに使用するクラスターユーザーを指定します。AMQ Broker アプリケーションテンプレートは、AMQ_CREDENTIAL_SECRET で指定されたシークレットに格納されているこのパラメーターの値を使用します。

AMQ_CREDENTIAL_SECRET

ブローカーのユーザー名/パスワード、クラスターのユーザー名/パスワード、トラストストアとキーストアのパスワードなどの機密性の高い資格情報が保存されるシークレットを指定します。

AMQ_DATA_DIR

データのディレクトリーを指定します。ステートフルセットで使用されます。

AMQ_DATA_DIR_LOGGING

データディレクトリーロギング用のディレクトリーを指定します。

AMQ_EXTRA_ARGS

artemiscreate に渡す追加の引数を指定します。

AMQ_GLOBAL_MAX_SIZE

メッセージデータが使用可能な最大メモリー量を指定します。値が指定されていない場合は、システムのメモリーの半分が割り当てられます。

AMQ_KEYSTORE

SSL キーストアファイル名を指定します。値が指定されていない場合に、パスワードが無作為に生成されますが、SSL は設定されません。

AMQ_KEYSTORE_PASSWORD

(オプション) SSL キーストアの復号化に使用するパスワードを指定します。AMQ Broker アプリケーションテンプレートは、AMQ_CREDENTIAL_SECRET で指定されたシークレットに格納されているこのパラメーターの値を使用します。

AMQ_KEYSTORE_TRUSTSTORE_DIR

シークレットがマウントされるディレクトリーを指定します。デフォルト値は /etc/amq-secret-volume です。

AMQ_MAX_CONNECTIONS

SSL の場合のみ、アクセプターが受け入れる接続の最大数を指定します。

AMQ_MULTICAST_PREFIX

多重化プロトコルポート 61616 および 61617 に適用される multicast 接頭辞を指定します。

AMQ_NAME

ブローカーインスタンスの名前を指定します。デフォルト値は amq-broker です。

AMQ_PASSWORD

ブローカーへの認証に使用するパスワードを指定します。AMQ Broker アプリケーションテンプレートは、AMQ_CREDENTIAL_SECRET で指定されたシークレットに格納されているこのパラメーターの値を使用します。

AMQ_PROTOCOL

ブローカーが使用するメッセージングプロトコルをコンマ区切りのリストで指定します。使用可能なオプションは、 amqpmqttopenwirestomp、および hornetq です。何も指定されていない場合は、全プロトコルを使用できます。イメージを Red Hat JBoss Enterprise Application Platform と統合するには、OpenWire プロトコルを指定する必要がありますが、他のプロトコルもオプションで指定できます。

AMQ_QUEUES

起動時にブローカーでデフォルトで使用可能なキューを、コンマ区切りのリストで指定します。

AMQ_REQUIRE_LOGIN

true に設定すると、ログインが必要になります。指定しない場合、または false に設定した場合、匿名アクセスを使用できます。デフォルトでは、このパラメーターの値は指定されていません。

AMQ_ROLE

作成されたロールの名前を指定します。デフォルト値は amq です。

AMQ_TRUSTSTORE

SSL トラストストアのファイル名を指定します。値が指定されていない場合に、パスワードが無作為に生成されますが、SSL は設定されません。

AMQ_TRUSTSTORE_PASSWORD

(オプション) SSL トラストストアの復号化に使用されるパスワードを指定します。AMQ Broker アプリケーションテンプレートは、AMQ_CREDENTIAL_SECRET で指定されたシークレットに格納されているこのパラメーターの値を使用します。

AMQ_USER

ブローカーへの認証に使用されるユーザー名を指定します。AMQ Broker アプリケーションテンプレートは、AMQ_CREDENTIAL_SECRET で指定されたシークレットに格納されているこのパラメーターの値を使用します。

APPLICATION_NAME

OpenShift 内で使用されるアプリケーションの名前を指定します。これは、アプリケーション内のサービス、Pod、およびその他のオブジェクトの名前で使用されます。

IMAGE

イメージを指定します。永続性persistent-ssl、および statefulset-clustered テンプレートで使用されます。

IMAGE_STREAM_NAMESPACE

イメージストリームの namespace を指定します。ssl および basic テンプレートで使用されます。

OPENSHIFT_DNS_PING_SERVICE_PORT

OpenShift DNSping サービスのポート番号を指定します。

PING_SVC_NAME

OpenShift DNSping サービスの名前を指定します。APPLICATION_NAME の値を指定した場合、デフォルト値は $APPLICATION_NAME-ping です。そうでない場合には、デフォルト値は ping です。PING_SVC_NAME にカスタム値を指定すると、この値がデフォルト値を上書きします。テンプレートを使用して同じ OpenShift プロジェクト namespace に複数のブローカークラスターをデプロイする場合は、 PING_SVC_NAME がデプロイメントごとに一意の値が指定されていることを確認する必要があります。

VOLUME_CAPACITY

データベースボリュームの永続ストレージのサイズを指定します。

注記

カスタム設定に broker.xml を使用する場合に、そのファイルで次のパラメーターに指定された値は、アプリケーションテンプレートで同じパラメーターに指定された値をオーバーライドします。

  • AMQ_NAME
  • AMQ_ROLE
  • AMQ_CLUSTER_USER
  • AMQ_CLUSTER_PASSWORD

10.3. ロギング

OpenShift ログの表示に加えて、コンテナーのコンソールに出力される AMQ ログを表示することにより、OpenShift Container Platform イメージで実行中の AMQ Broker のトラブルシューティングを行うことができます。

手順

  • コマンドラインで、次のコマンドを実行します。
$ oc logs -f <pass:quotes[<pod-name>]> <pass:quotes[<container-name>]>

改訂日時:2023-01-28 11:58:02 +1000

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.