3.4. Operator ベースのブローカーデプロイメントの作成
3.4.1. 基本的なブローカーインスタンスのデプロイ
以下の手順では、カスタムリソース (CR) インスタンスを使用して基本的なブローカーデプロイメントを作成する方法を説明します。
複数のカスタムリソース (CR) インスタンスをデプロイして、特定の OpenShift プロジェクトに複数のブローカーデプロイメントを作成できますが、通常、プロジェクトに単一のブローカーデプロイメントを作成してから、アドレスに複数の CR インスタンスをデプロイします。
Red Hat は、個別のプロジェクトで デプロイメントを作成することを推奨します。
AMQ Broker 7.10 では、以下の項目を設定する必要がある場合、最初に CR をデプロイする前に、メインのブローカー CR インスタンスに適切な設定を追加する必要があります。
前提条件
AMQ Broker Operator がすでにインストールされている必要があります。
- OpenShift コマンドラインインターフェイス (CLI) を使用して AMQ Broker Operator をインストールするには、「CLI を使用した Operator のインストール」 を参照してください。
- OperatorHub グラフィカルインターフェイスを使用して AMQ Broker Operator をインストールするには、「OperatorHub を使用した Operator のインストール」 を参照してください。
- Operator がブローカーデプロイメントに使用するブローカーコンテナーイメージを選択する方法を理解している必要があります。詳細は、「Operator によるコンテナーイメージの選択方法」 を参照してください。
- AMQ Broker 7.3 以降では、新しいバージョンの Red Hat Ecosystem Catalog を使用してコンテナーイメージにアクセスする。この新しいバージョンのレジストリーでは、イメージにアクセスする前に認証されたユーザーである必要がある。本セクションの手順を実行する前に、Red Hat Container Registry Authentication で説明されている手順を完了する必要がある。
手順
Operator が正常にインストールされると、Operator は実行され、CR に関連する変更をリッスンします。以下の手順では、CR インスタンスを使用して基本的なブローカーをプロジェクトにデプロイする方法を説明します。
ブローカーデプロイメントのカスタムリソース (CR) インスタンスの設定を開始します。
OpenShift コマンドラインインターフェイスの使用:
デプロイメントを作成するプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。
oc login -u <user> -p <password> --server=<host:port>
-
ダウンロードした Operator インストールアーカイブの
deploy/crs
ディレクトリーに含まれるbroker_activemqartemis_cr.yaml
というサンプル CR ファイルを開きます。
OpenShift Container Platform Web コンソールの使用
- デプロイメントを作成するプロジェクトに CR をデプロイする権限を持つユーザーとしてコンソールにログインします。
-
メインブローカー CRD に基づいて新規 CR インスタンスを起動します。左側のペインで、
をクリックします。 - ActiveMQArtemis CRD をクリックします。
- Instances タブをクリックします。
Create ActiveMQArtemis をクリックします。
コンソールで、YAML エディターが開き、CR インスタンスを設定できます。
基本的なブローカーデプロイメントの場合、設定が以下のように表示される可能性があります。
apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: deploymentPlan: size: 1 image: placeholder requireLogin: false persistenceEnabled: true journalType: nio messageMigration: true
broker_activemqartemis_cr.yaml
サンプル CR ファイルで、image
プロパティーがplaceholder
のデフォルト値に設定されていることを確認します。この値はデフォルトで、image
プロパティーによってデプロイメントに使用するブローカーコンテナーイメージが指定されていないことを示します。Operator が使用する適切なブローカーコンテナーイメージを判別する方法については、「Operator によるコンテナーイメージの選択方法」 を参照してください。注記broker_activemqartemis_cr.yaml
サンプル CR は、ex-aao
の命名規則を使用します。この命名規則は、CR が AMQ Broker Operator のリソースの例になります。AMQ Broker は ActiveMQ Artemis プロジェクトをベースにしています。このサンプル CR をデプロイする場合、生成される StatefulSet はex-aao-ss
の名前を使用します。さらに、デプロイメントのブローカー Pod は StatefulSet 名に基づいて直接使用されます (例:ex-aao-ss-0
、ex-aao-ss-1
など)。CR のアプリケーション名が StatefulSet のラベルとしてデプロイメントに表示されます。このラベルは Pod セレクターで使用できます。-
size
プロパティーはデプロイするブローカーの数を指定します。2
以上の値は、クラスターブローカーデプロイメントを指定します。ただし、単一のブローカーインスタンスをデプロイするには、値が1
に設定されていることを確認します。 CR インスタンスをデプロイします。
OpenShift コマンドラインインターフェイスの使用:
- CR ファイルを保存します。
ブローカーデプロイメントを作成するプロジェクトに切り替えます。
$ oc project <project_name>
CR インスタンスを作成します。
$ oc create -f <path/to/custom_resource_instance>.yaml
OpenShift Web コンソールの使用
- CR の設定が完了したら、Create をクリックします。
Open Shift Container Platform Web コンソールで、
をクリックします。 ex-aao-ss
という新しい StatefulSet が表示されます。- ex-aao-ss StatefulSet をクリックします。CR で定義される単一ブローカーに対応する Pod が 1 つあることが分かります。
- StatefulSet 内で Pods タブをクリックします。ex-aao-ss Pod をクリックします。実行中の Pod の Events タブで、ブローカーコンテナーが起動したことを確認できます。Logs タブには、ブローカー自体が実行中であることを示します。
ブローカーは通常実行されていることをテストするには、ブローカー Pod のシェルにアクセスしてテストメッセージを送信します。
OpenShift Container Platform Web コンソールの使用
-
をクリックします。 - ex-aao-ss Pod をクリックします。
- Terminal タブをクリックします。
-
OpenShift コマンドラインインターフェイスの使用:
プロジェクトの Pod 名および内部 IP アドレスを取得します。
$ oc get pods -o wide NAME STATUS IP amq-broker-operator-54d996c Running 10.129.2.14 ex-aao-ss-0 Running 10.129.2.15
ブローカー Pod のシェルにアクセスします。
$ oc rsh ex-aao-ss-0
シェルから
artemis
コマンドを使用して、一部のテストメッセージを送信します。URL にブローカー Pod の内部 IP アドレスを指定します。以下に例を示します。sh-4.2$ ./amq-broker/bin/artemis producer --url tcp://10.129.2.15:61616 --destination queue://demoQueue
上記のコマンドは、ブローカーに
demoQueue
というキューを自動的に作成し、デフォルトの数量 1000 のメッセージをキューに送信します。以下のような出力が表示されるはずです。
Connection brokerURL = tcp://10.129.2.15:61616 Producer ActiveMQQueue[demoQueue], thread=0 Started to calculate elapsed time ... Producer ActiveMQQueue[demoQueue], thread=0 Produced: 1000 messages Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in second : 3 s Producer ActiveMQQueue[demoQueue], thread=0 Elapsed time in milli second : 3492 milli seconds
関連情報
- メインのブローカーカスタムリソース (CR) の完全な設定リファレンスは、「カスタムリソース設定リファレンス」 を参照してください。
- 稼働中のブローカーを AMQ 管理コンソールに接続する方法は、5章Operator ベースのブローカーデプロイメント用の AMQ 管理コンソール への接続 を参照してください。
3.4.2. クラスター化されたブローカーのデプロイ
2 つ以上のブローカー Pod がプロジェクトで実行されている場合、Pod はブローカークラスターを自動的に形成します。クラスター化の設定により、ブローカーは相互に接続でき、必要に応じてメッセージを再配布できます。
以下の手順では、クラスター化されたブローカーをデプロイする方法を説明します。デフォルトでは、このデプロイメントのブローカーはオンデマンド負荷分散を使用します。つまり、ブローカーは一致するコンシューマーを持つ他のブローカーにのみメッセージを転送します。
前提条件
- 基本的なブローカーインスタンスはすでにデプロイされています。「基本的なブローカーインスタンスのデプロイ」 を参照してください。
手順
- 基本的なブローカーデプロイメントに使用した CR ファイルを開きます。
クラスター化したデプロイメントの場合は、
deploymentPlan.size
の値が2
以上であることを確認します。以下に例を示します。apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemis metadata: name: ex-aao application: ex-aao-app spec: deploymentPlan: size: 4 image: placeholder ...
注記metadata
セクションで、namespace
プロパティーを追加し、OpenShift Container Platform Web コンソールを使用して CR インスタンスを作成する場合にのみ値を指定する必要があります。指定する値は、ブローカーデプロイメントの OpenShift プロジェクトの名前です。- 変更された CR ファイルを保存します。
基本的なブローカーデプロイメントを作成したプロジェクトに CR をデプロイする権限を持つユーザーとして OpenShift にログインします。
$ oc login -u <user> -p <password> --server=<host:port>
基本的なブローカーデプロイメントを先に作成したプロジェクトに切り替えます。
$ oc project <project_name>
コマンドラインで変更を適用します。
$ oc apply -f <path/to/custom_resource_instance>.yaml
OpenShift Container Platform Web コンソールで、追加のブローカー Pod は CR で指定される数に基づいてプロジェクトで起動します。デフォルトで、プロジェクトで実行されているブローカーはクラスター化されます。
各 Pod の Logs タブを開きます。ログには、OpenShift が各ブローカーでクラスター接続ブリッジが確立されていることが示されています。具体的には、ログ出力には以下のような行が含まれます。
targetConnector=ServerLocatorImpl (identity=(Cluster-connection-bridge::ClusterConnectionBridge@6f13fb88
3.4.3. ブローカーデプロイメントの実行へのカスタムリソース変更の適用
以下は、ブローカーデプロイメントの実行にカスタムリソース (CR) 変更の適用について留意すべき重要な事項です。
-
CR の
persistenceEnabled
属性を動的に更新することはできません。この属性を変更するには、クラスターをゼロにスケールダウンします。既存の CR を削除します。次に、変更で CR を再作成し、再デプロイします。また、デプロイメントサイズも指定します。 -
CR の
deploymentPlan.size
属性の値は、oc scale
コマンドによるブローカーデプロイメントのサイズの変更を上書きします。たとえば、oc scale
を使用してデプロイメントのサイズを3
つのブローカーから 2 つ変更する場合、CR のdeploymentPlan.size
の値は 3 つになります。この場合、OpenShift はまずデプロイメントを 2 つのブローカーにスケールダウンします。ただし、縮小操作が完了すると、Operator は CR で指定される 3 つのブローカーにデプロイメントを復元します。 -
「CLI を使用した Operator のデプロイ」 で説明されているように、永続ストレージ (CR に
persistenceEnabled=true
) でブローカーデプロイメントを作成する場合、ブローカー Pod について AMQ Broker Operator が要求する永続ボリューム (PV) をプロビジョニングする必要がある場合があります。ブローカーデプロイメントのサイズを縮小する場合、Operator はシャットダウンされるブローカー Pod で以前に要求された PV を解放します。ただし、CR を削除してブローカーデプロイメントを削除する場合、AMQ Broker Operator は削除時にデプロイメントにあるブローカー Pod の Persistent Volume Claim (永続ボリューム要求、PVC) を解放しません。また、これらのリリースされていない PV はいずれの新規デプロイメントでも利用できません。この場合は、ボリュームを手動で解放する必要があります。詳細は、OpenShift ドキュメントの 永続ボリュームの解放 を参照してください。 AMQ Broker 7.10 では、以下の項目を設定する必要がある場合、最初に CR をデプロイする前に、メインの CR インスタンスに適切な設定を追加する必要があります。
- アクティブなスケーリングイベント時に、さらに適用する変更は Operator によってキューに入れられ、スケーリングが完了した場合にのみ実行されます。たとえば、デプロイメントのサイズを 4 つのブローカーから 1 つにスケールダウンするとします。次に、縮小が行われる間、ブローカー管理者のユーザー名およびパスワードの値も変更します。この場合、Operator は 1 つのアクティブなブローカーでデプロイメントが実行されるまで、ユーザー名とパスワードの変更をキューに入れます。
-
すべての CR の変更: デプロイメントのサイズを変更したり、アクセプター、コネクター、またはコンソールの
expose
属性の値を変更することとは別に、既存のブローカーが再起動されます。デプロイメントに複数のブローカーがある場合は、1 度に 1 つのブローカーのみを再起動します。