4.10. ブローカー可用性チェックの設定
活性および準備プローブを使用して、実行中のブローカーコンテナーで定期的な可用性チェックを設定できます。活性プローブは、ブローカーの HTTP ポートに ping を実行して、ブローカーが実行されているかどうかを確認します。準備プローブは、ブローカー用に設定された各アクセプターポートへの接続を開くことにより、ブローカーがネットワークトラフィックを受け入れることができるかどうかを確認します。
基本的な liveness および readiness プローブを使用して HTTP およびアクセプターポートへの接続を開くことによってブローカーの可用性を検証する場合の制限は、これらのチェックでは、ブローカーのファイルシステムの問題など、根本的な問題を識別できないことです。ブローカーのコマンドラインユーティリティーである artemis
を liveness または readiness プローブ設定に組み込んで、ブローカーへのメッセージの送信を含む、より包括的な可用性チェックを作成できます。
4.10.1. liveness および readiness プローブの設定
次の例は、liveness および readiness プローブを使用して可用性チェックを実行するようにブローカーデプロイメントのメインカスタムリソース (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 インスタンスを設定できます。
liveness プローブを設定するには、CR の
deploymentPlan
セクションにlivenessProbe
セクションを追加します。以下に例を示します。spec: deploymentPlan: livenessProbe: initialDelaySeconds: 5 periodSeconds: 5
initialDelaySeconds
-
コンテナーの起動後にプローブが実行されるまでの遅延 (秒単位)。デフォルトは
5
です。 periodSeconds
プローブが実行される間隔 (秒単位)。デフォルトは
5
です。注記liveness プローブを設定していない場合、または設定されたプローブにハンドラーが欠落している場合、AMQ Operator は次の設定を持つデフォルトの TCP プローブを作成します。デフォルトの TCP プローブは、指定されたポートでブローカーコンテナーへのソケットを開こうとします。
spec: deploymentPlan: livenessProbe: tcpSocket: port: 8181 initialDelaySeconds: 30 timeoutSeconds: 5
readiness プローブを設定するには、CR の
deploymentPlan
セクションに、readinessProbe
セクションを追加します。以下に例を示します。spec: deploymentPlan: readinessProbe: initialDelaySeconds: 5 periodSeconds: 5
readiness プローブを設定しない場合、ビルトイン スクリプト は、すべてのアクセプターが接続を受け入れることができるかどうかをチェックします。
より包括的な可用性チェックを設定する場合は、
artemis check
コマンドラインユーティリティーを liveness または readiness プローブの設定に追加します。ブローカーへの完全なクライアント接続を作成する可用性チェックを設定する場合は、
livenessProbe
またはreadinessProbe
セクションにexec
セクションを追加します。exec
セクションに、command
セクションを追加します。command
セクションで、artemis check node
コマンド構文を追加します。以下に例を示します。spec: deploymentPlan: readinessProbe: exec: command: - bash - '-c' - /home/jboss/amq-broker/bin/artemis - check - node - '--silent' - '--acceptor' - <acceptor name> - '--user' - $AMQ_USER - '--password' - $AMQ_PASSWORD initialDelaySeconds: 30 timeoutSeconds: 5
デフォルトでは、
artemis check node
コマンドはartemis
と呼ばれるアクセプターの URI を使用します。ブローカーにartemis
というアクセプターがある場合は、コマンドから--acceptor <acceptor name>
オプションを除外できます。注記$AMQ_USER
および$AMQ_PASSWORD
は、AMQ Operator によって設定される環境変数です。メッセージを生成および消費する可用性チェックを設定し、ブローカーのファイルシステムの可用性も検証する場合は、
livenessProbe
またはreadinessProbe
セクションにexec
セクションを追加します。exec
セクションに、command
セクションを追加します。command
セクションで、artemis check queue
コマンド構文を追加します。以下に例を示します。spec: deploymentPlan: readinessProbe: exec: command: - bash - '-c' - /home/jboss/amq-broker/bin/artemis - check - queue - '--name' - livenessqueue - '--produce' - "1" - '--consume' - "1" - '--silent' - '--user' - $AMQ_USER - '--password' - $AMQ_PASSWORD initialDelaySeconds: 30 timeoutSeconds: 5
注記指定するキュー名は、ブローカーで設定され、
anycast
のroutingType
を持っている必要があります。以下に例を示します。apiVersion: broker.amq.io/v1beta1 kind: ActiveMQArtemisAddress metadata: name: livenessqueue namespace: activemq-artemis-operator spec: addressName: livenessqueue queueConfiguration: purgeOnNoConsumers: false maxConsumers: -1 durable: true enabled: true queueName: livenessqueue routingType: anycast
CR インスタンスをデプロイします。
OpenShift コマンドラインインターフェイスの使用:
- CR ファイルを保存します。
ブローカーデプロイメントを作成するプロジェクトに切り替えます。
$ oc project <project_name>
CR インスタンスを作成します。
$ oc create -f <path/to/custom_resource_instance>.yaml
OpenShift Web コンソールの使用
- CR の設定が完了したら、Create をクリックします。
関連情報
OpenShift Container Platform の liveness プローブと readiness プローブの詳細については、OpenShift Container Platform ドキュメントの ヘルスチェックを使用したアプリケーションの健全性の監視 を参照してください。