OpenShift での AMQ Online の使用
AMQ Online 1.5 で使用する場合
概要
第1章 はじめに リンクのコピーリンクがクリップボードにコピーされました!
1.1. AMQ Online の概要 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ Online は、マネージドサービスとしてメッセージングを配信するための OpenShift ベースのメカニズムです。Red Hat AMQ Online を使用すると、管理者は、クラウドまたはオンプレミスのいずれかで、クラウドネイティブのマルチテナントメッセージングサービスを設定できます。開発者は、Red Hat AMQ コンソールを使用してメッセージングをプロビジョニングできます。複数の開発チームがコンソールからブローカーとキューをプロビジョニングできます。各チームがソフトウェアをインストール、設定、デプロイメント、保守、またはパッチを適用する必要はありません。
AMQ Online は、ユースケースに応じてさまざまな種類のメッセージングをプロビジョニングできます。ユーザーは、Address Space を作成することでメッセージングリソースをリクエストできます。AMQ Online は現在、標準とブローカーの 2 つのアドレス空間タイプをサポートしており、それぞれセマンティクスが異なります。次の図は、各アドレス空間タイプのアーキテクチャーの概要を示しています。
図1.1 標準アドレス空間
図1.2 ブローカーアドレス空間
1.2. サポートされる機能 リンクのコピーリンクがクリップボードにコピーされました!
次の表は、AMQ Online 1.5 でサポートされている機能を示しています。
| 機能 | ブローカーアドレス空間 | 標準アドレス空間 | |
|---|---|---|---|
| アドレスの種類 | Queue | はい | はい |
| トピック | はい | はい | |
| マルチキャスト | いいえ | はい | |
| anycast | いいえ | はい | |
| Subscription | いいえ | はい | |
| メッセージングプロトコル | AMQP | はい | はい |
| MQTT | はい | テクノロジープレビューとしてのみ提供 | |
| CORE | はい | いいえ | |
| OpenWire | はい | いいえ | |
| STOMP | はい | いいえ | |
| トランスポート | TCP | はい | はい |
| WebSocket | はい | はい | |
| 永続サブスクリプション | JMS 永続サブスクリプション | はい | いいえ |
| 名前付き永続サブスクリプション | いいえ | はい | |
| JMS | トランザクションサポート | はい | いいえ |
| キューのセレクター | はい | いいえ | |
| メッセージ順序の保証 (優先順位付けを含む) | はい | いいえ | |
| スケーラビリティー | スケーラブルな分散キューとトピック | いいえ | はい |
1.3. AMQ Online ユーザーのロール リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online ユーザーは、サービス管理者とメッセージングテナントの 2 つのユーザーロールに関して広く定義できます。組織の規模に応じて、これらのロールは同じユーザーまたは異なるユーザーによって実行される場合があります。
メッセージングテナントは、クラウドネイティブの API とツールの両方を使用して、メッセージングリソースを要求できます。メッセージングテナントは、メッセージングシステム内の特定のアドレス空間のユーザーとアクセス許可を管理したり、アドレス管理とアドレスを作成したりすることもできます。OpenShift での AMQ Online の使用 では、これらのタスクを実行する方法を説明します。
サービス管理者のロールは、初期インストールとその後のアップグレードを実行します。サービス管理者は、ルーター、ブローカー、および管理コンポーネントの監視など、メッセージングインフラストラクチャーをデプロイメントおよび管理するだけでなく、アドレス空間計画やアドレス計画も作成します。AMQ Online のセットアップと管理、およびインフラストラクチャーとプランの設定方法は、IOpenShift deno AMQ Online のインストールおよび管理 を参照してください。
1.4. サポートされる構成 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online でサポートされる設定の詳細は、Red Hat AMQ 7 でのサポート対象設定 を参照してください。
1.5. 本書の表記慣例 リンクのコピーリンクがクリップボードにコピーされました!
1.5.1. 変数テキスト リンクのコピーリンクがクリップボードにコピーされました!
本書では、変数を含むコードブロックが紹介されていますが、これは、お客様のシステム環境に固有の値に置き換える必要があります。このドキュメントでは、そのようなテキストはイタリックモノスペースのスタイルで指定しています。
たとえば、次のコードブロックで、my-namespace はインストールで使用されている namespace に置き換えます。
sed -i 's/amq-online-infra/my-namespace/' install/bundles/enmasse-with-standard-authservice/*.yaml
sed -i 's/amq-online-infra/my-namespace/' install/bundles/enmasse-with-standard-authservice/*.yaml
第2章 アドレス空間の管理 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online は、OpenShift コマンドラインツールを使用したアドレス空間の管理をサポートするように設定されています。アドレス空間は、oc を使用して他の OpenShift リソースと同様に管理されます。
2.1. アドレス空間 リンクのコピーリンクがクリップボードにコピーされました!
アドレス空間は、1 つの接続 (プロトコルごと) を介してアクセスできるアドレスのグループです。アドレス空間のエンドポイントに接続されたクライアントは、そのアドレス空間内の承認されたアドレスとの間でメッセージを送受信できます。アドレス空間は、アドレス空間タイプで定義されているように、複数のプロトコルをサポートできます。
既存のアドレス空間のエンドポイントは、変更できません。
AMQ Online には、次の 2 種類のアドレス空間があります。
2.2. 標準アドレス空間 リンクのコピーリンクがクリップボードにコピーされました!
標準アドレス空間は、AMQ Online のデフォルトのアドレス空間です。これは、取り付け可能なストレージユニットと組み合わせた AMQP ルーターネットワークで設定されます。クライアントは、1 つ以上のメッセージブローカーとの間でメッセージを転送するメッセージルーターに接続します。このアドレス空間タイプは、接続とアドレスが多数ある場合に適しています。ただし、標準アドレス空間には次の制限があります。
- XA トランザクションのサポート
- メッセージ順なし
- キューにセレクターなし
- キューのブラウズなし
- メッセージグループなし
クライアントは、AMQP または MQTT プロトコルを使用して、このアドレス空間に接続し、メッセージを送受信します。MQTT は qos2 または保持メッセージをサポートしていないことに注意してください。
2.2.1. 標準アドレスタイプ リンクのコピーリンクがクリップボードにコピーされました!
標準アドレス空間は、次の異なるアドレスタイプを 5 つサポートしています。
- queue
- topic
- anycast
- multicast
- subscription
2.2.1.1. Queue リンクのコピーリンクがクリップボードにコピーされました!
キューアドレスタイプは、ストアアンドフォワードキューです。このアドレスタイプは、分散ワークキューの実装、トラフィックバーストの処理、およびプロデューサーとコンシューマーを切り離す場合などのユースケースに適しています。キューは、複数のストレージユニット全体でシャード化できます。標準アドレス空間のキューでは、メッセージの順序が失われる可能性があります。
2.2.1.2. トピック リンクのコピーリンクがクリップボードにコピーされました!
トピックアドレスタイプは、1..N のプロデューサーと 1..M のコンシューマーが存在するパブリッシュ/サブスクライブメッセージングパターンをサポートします。トピックアドレス対して発行された各メッセージは、そのアドレスの全サブスクライバーに転送されます。サブスクライバーは永続性がある場合があり、そのような場合には、メッセージはサブスクライバーが確認応答するまで保持されます。
トピックでサブスクリプションを作成する場合に、そのトピックへの送信者は トピック ケイパビリティーを指定する必要があります。
2.2.1.2.1. 階層トピックとワイルドカード リンクのコピーリンクがクリップボードにコピーされました!
トピックアドレスから受信するクライアントは、トピックアドレスをルートとしてワイルドカードアドレスを指定できます。ワイルドカードの動作は MQTT 構文に従います。
-
/はセパレーターです。 -
+はレベル 1 つと照合します。 -
#1 つ以上のレベルで照合します。
たとえば、次のようになります。
-
a/#/bではa/foo/b、a/bar/b、およびa/foo/bar/bがマッチします。 -
a/+/bは、a/foo/bとa/bar/bがマッチしますが、a/foo/barはマッチしません。
標準アドレス空間では、最初のレベルは常に定義済みのトピックアドレスでなければなりません。つまり、# と + は、サブスクライブしたアドレスの最初の文字には使用できません。
2.2.1.2.2. 階層トピックでサブスクライバーを作成する際の既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online で階層トピックにサブスクライバーを作成すると、ブローカーが代わりに競合するコンシューマーとしてサブスクライバーを作成するという既知の問題が存在します (トピックではなくキューのようにアドレスを処理します)。クライアントの特定の回避策の詳細は、アプリケーションの AMQ Online への接続 の該当するクライアントの例のセクションを参照してください。
2.2.1.3. anycast リンクのコピーリンクがクリップボードにコピーされました!
anycast アドレスタイプは、メッセージを 1 つのコンシューマーに送信するためのスケーラブルな直接アドレスです。anycast アドレスに送信されたメッセージは保存されず、代わりにコンシューマーに直接転送されます。この方法により、このアドレスの種類は、要求応答 (RPC) の使用や作業の分散に適しています。これは永続性を必要としないため、最もコストがかからないアドレスタイプです。
2.2.1.4. Multicast リンクのコピーリンクがクリップボードにコピーされました!
multicast アドレスタイプは、複数のコンシューマーにメッセージを送信するためのスケーラブルな直接アドレスです。multicast アドレスに送信されたメッセージは、そのアドレスでメッセージを受信するすべてのコンシューマーに転送されます。コンシューマーからのメッセージ受信確認はプロデューサーに伝播されないため、マルチキャストアドレスに送信できるのは事前に解決されたメッセージのみです。
2.2.1.5. Subscription リンクのコピーリンクがクリップボードにコピーされました!
サブスクリプションアドレスタイプを使用すると、サブスクライバーがアタッチされていない場合でも、トピックに公開されたメッセージを保持するトピックに対してサブスクリプションを作成できます。コンシューマーは、アドレス構文 <topic-address>::<subscription-address> を使用してサブスクリプションにアクセスします。たとえば、トピック mytopic のサブスクリプション mysub の場合には、コンシューマーはアドレス mytopic::mysub からサブスクリプションにアクセスします。デフォルト設定では、サブスクリプションごとにコンシューマー 1 つのみが使用できます。この設定は、サブスクリプションアドレスの maxConsumers フィールドを編集することで変更できます。
maxConsumers 設定は、既存のサブスクリプションでは変更できません。
2.3. ブローカーアドレス空間 リンクのコピーリンクがクリップボードにコピーされました!
ブローカーのアドレス空間は、ブローカー固有の機能をサポートするように設計されていますが、接続数とアドレス数の点でサイズの制限があります。このアドレス空間は、JMS トランザクション、メッセージグループ、およびキューとトピックのセレクターをサポートします。
クライアントは、次のプロトコルを使用して、このアドレス空間でメッセージを送受信するだけでなく、接続することもできます。
- AMQP
- CORE
- OpenWire
- MQTT
- STOMP
2.3.1. ブローカーアドレスの種類 リンクのコピーリンクがクリップボードにコピーされました!
ブローカーアドレス空間は、次の 2 つのアドレスタイプをサポートします。
- queue
- topic
2.3.1.1. Queue リンクのコピーリンクがクリップボードにコピーされました!
キューアドレスタイプは、ストアアンドフォワードキューです。このアドレスタイプは、分散ワークキューの実装、トラフィックバーストの処理、およびプロデューサーとコンシューマーを切り離す場合などのユースケースに適しています。ブローカーアドレス空間のキューは、セレクター、メッセージグループ、トランザクション、およびその他の JMS 機能をサポートします。メッセージの順序は、メッセージが解放されると失われる可能性があります。
2.3.1.2. トピック リンクのコピーリンクがクリップボードにコピーされました!
トピックアドレスタイプは、1..N のプロデューサーと 1..M のコンシューマーが存在するパブリッシュ/サブスクライブメッセージングパターンをサポートします。トピックアドレス対して発行された各メッセージは、そのアドレスの全サブスクライバーに転送されます。サブスクライバーは永続性がある場合があり、そのような場合には、メッセージはサブスクライバーが確認応答するまで保持されます。
2.3.1.2.1. 階層トピックとワイルドカード リンクのコピーリンクがクリップボードにコピーされました!
トピックアドレスから受信するクライアントは、トピックアドレスをルートとしてワイルドカードアドレスを指定できます。ワイルドカードの動作は MQTT 構文に従います。
-
/はセパレーターです。 -
+はレベル 1 つと照合します。 -
#1 つ以上のレベルで照合します。
たとえば、次のようになります。
-
a/#/bではa/foo/b、a/bar/b、およびa/foo/bar/bがマッチします。 -
a/+/bは、a/foo/bとa/bar/bがマッチしますが、a/foo/barはマッチしません。
2.3.1.2.2. 階層トピックでサブスクライバーを作成する際の既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online で階層トピックにサブスクライバーを作成すると、ブローカーが代わりに競合するコンシューマーとしてサブスクライバーを作成するという既知の問題が存在します (トピックではなくキューのようにアドレスを処理します)。クライアントの特定の回避策の詳細は、アプリケーションの AMQ Online への接続 の該当するクライアントの例のセクションを参照してください。
2.4. アドレス空間計画 リンクのコピーリンクがクリップボードにコピーされました!
アドレス空間は、アドレス空間で使用できるリソース量を記述するアドレス空間計画で設定されます。アドレス空間プランはサービス管理者によって設定され、AMQ Online のインストールごとに異なる場合があります。
アドレス空間に必要なリソースが増減する場合は、アドレス空間計画を変更できます。
2.5. コマンドラインでの利用可能なアドレス空間プランの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
アドレス空間タイプで利用可能なアドレス空間プランを一覧表示できます。
手順
メッセージングテナントとしてログインします。
oc login -u developer
oc login -u developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow 利用可能なアドレス空間プランを示すスキーマを取得します (ブローカーアドレス空間タイプは
standardからbrokeredに置き換えます)。oc get addressspaceschema standard -o jsonpath='{.spec.plans[*].name}'oc get addressspaceschema standard -o jsonpath='{.spec.plans[*].name}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. コマンドラインでの利用可能な認証サービスの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
アドレス空間タイプで利用可能な認証サービスを一覧表示できます。
手順
メッセージングテナントとしてログインします。
oc login -u developer
oc login -u developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow リストされた認証サービスを使用してスキーマを取得します (ブローカーアドレス空間タイプは
standardからbrokeredに置き換えます)。oc get addressspaceschema standard -o jsonpath='{.spec.authenticationServices}'oc get addressspaceschema standard -o jsonpath='{.spec.authenticationServices}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.7. アドレス空間の例 リンクのコピーリンクがクリップボードにコピーされました!
2.7.1. アドレス空間の例 リンクのコピーリンクがクリップボードにコピーされました!
このアドレス空間の例では、AddressSpace を作成するために必要なオプションのみを示しています。
2.7.2. 認証サービスを使用したアドレス空間の例 リンクのコピーリンクがクリップボードにコピーされました!
このアドレス空間の例は、AddressSpace の認証サービスを設定する方法を示しています。
- 1
- 認証サービス名は、AMQ Online 管理者が設定した、使用可能な認証サービスによって異なります。アドレス空間タイプで使用可能な認証サービスを表示するには、使用可能な認証サービスのリスト を参照してください。
2.7.3. オーバーライドを許可する外部認証サービスを使用したアドレス空間の例 リンクのコピーリンクがクリップボードにコピーされました!
このアドレス空間の例は、外部認証サービスのホスト名、ポート番号、およびレルムをオーバーライドする方法を示しています。オーバーライドを指定できるかどうかは、AMQ Online 管理者が外部認証サービスをどのように設定しているかによって異なります。
メッセージングテナントがホスト名、ポート番号、およびレルムを上書きできるように外部認証サービスを設定する方法は、オーバーライドを許可する外部認証サービスの例 を参照してください。
- 1
- 認証サービス名は、AMQ Online 管理者が設定した、使用可能な認証サービスによって異なります。アドレス空間タイプで使用可能な認証サービスを表示するには、使用可能な認証サービスのリスト を参照してください。
- 2
- オーバーライド値を指定します。
2.7.4. エンドポイントを外部に公開するアドレス空間の例 リンクのコピーリンクがクリップボードにコピーされました!
これらのアドレス空間の例は、AddressSpace の外部エンドポイントを設定して、OpenShift クラスター外のメッセージングエンドポイントにアクセスする方法を示しています。
2.7.4.1. OpenShift LoadBalancer サービスの例 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift LoadBalancer サービスを介して AddressSpace エンドポイントを公開するには、loadbalancer タイプが使用されます。
- 1
- (必須) エンドポイントの名前。指定した名前は、作成される OpenShift サービスの名前と、
AddressSpaceの status セクションのエンドポイントの名前に影響があります。 - 2
- (必須) エンドポイント用に設定されたサービス。
serviceの有効な値は、messagingとmqttです。ただし、mqttサービスは、standardのアドレス空間タイプでのみサポートされています。 - 3
- (必須) 公開されるエンドポイントのタイプ。
loadbalancerタイプは、OpenShiftLoadBalancerサービスを作成します。有効な値はrouteとloadbalancerです。 - 4
- (必須)
LoadBalancerサービスで公開されるポートのリスト。メッセージングサービスの場合には、有効な値はamqpとamqpsです。 - 5
- (オプション)
LoadBalancerServiceオブジェクトに追加される一連のキーと値のアノテーションペア。 - 6
- (省略可能) ロードバランサーによって受け入れられる許可されたソース範囲。
2.7.4.2. OpenShift ルートの例 リンクのコピーリンクがクリップボードにコピーされました!
AddressSpace エンドポイントを OpenShift ルートとして公開するには、次の route タイプが使用されます。
- 1
- (必須) エンドポイントの名前。指定した名前は、作成される OpenShift サービスの名前と、
AddressSpaceの status セクションのエンドポイントの名前に影響があります。 - 2
- (必須) エンドポイント用に設定されたサービス。
serviceの有効な値は、messagingまたはmqttです。ただし、mqttサービスは、standardのアドレス空間タイプでのみサポートされています。 - 3
- (必須) 公開するポートの名前。
routeタイプでは、TLS が有効なポートを 1 つだけ指定できます。messagingサービスの場合には、有効な値はamqpsまたはhttpsです。 - 4
- (必須) OpenShift ルートに使用される TLS 終了ポリシー。
messagingサービスの場合、amqpsポートではpassthroughを指定する必要がありますが、https(websockets) ではreencryptも使用できます。 - 5
- (オプション) 作成されたルートに使用するホスト名。
2.7.5. アドレス空間証明書プロバイダーの設定例 リンクのコピーリンクがクリップボードにコピーされました!
次のアドレス空間の例は、さまざまな証明書プロバイダーを使用して AddressSpace のエンドポイントを設定する方法を示しています。証明書プロバイダーは、AddressSpace のエンドポイントに対して証明書を発行する方法を決定します。
2.7.5.1. openshift プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
openshift 証明書プロバイダーを使用して、OpenShift クラスター認証局 (CA) によって署名された証明書でエンドポイントを設定できます。
- 1
- (必須) 証明書プロバイダーのタイプ。有効な値は、
openshift(OpenShift のみ)、certBundle、およびselfsigned(デフォルト値) です。
2.7.5.2. selfsigned プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
selfsigned 証明書プロバイダーを使用して、自己署名証明書でエンドポイントを設定できます。これらの証明書の CA は、AddressSpace リソースの status.caCert フィールドにあります。
実稼働環境で自己署名証明書を使用することはお勧めしません。
- 1
- (必須) 証明書プロバイダーのタイプ。有効な値は、
openshift(OpenShift のみ)、certBundle、およびselfsigned(デフォルト値) です。
2.7.5.3. certBundle プロバイダー リンクのコピーリンクがクリップボードにコピーされました!
certBundle 証明書プロバイダーを使用して、独自の CA によって署名されたユーザー提供の証明書でエンドポイントを設定できます。証明書のローテーションは、更新された証明書で tlsKey フィールドと tlsCert フィールドを更新してから、AddressSpace リソースを更新して実行できます。
2.7.6. アドレス空間の例のエクスポート リンクのコピーリンクがクリップボードにコピーされました!
次の 3 つのエクスポートタイプを使用して、アドレス空間情報をエクスポートできます。
-
ConfigMap -
Secret -
Service
2.7.6.1. ConfigMap および Secret タイプのエクスポートの例 リンクのコピーリンクがクリップボードにコピーされました!
この例は、ConfigMap エクスポートタイプで使用される形式を示しています。Secret エクスポートタイプの形式は、ConfigMap エクスポートタイプと同じキーを使用しますが、値は Base64 でエンコードされます。
service.host: messaging.svc service.port.amqp: 5672 external.host: external.example.com external.port: 5671 ca.crt: // PEM formatted CA
service.host: messaging.svc
service.port.amqp: 5672
external.host: external.example.com
external.port: 5671
ca.crt: // PEM formatted CA
2.7.6.2. Service タイプのエクスポートの例 リンクのコピーリンクがクリップボードにコピーされました!
この例は、Service エクスポートタイプで使用される形式を示しています。
2.8. アドレス空間ステータス出力の例 リンクのコピーリンクがクリップボードにコピーされました!
AddressSpace リソースには、その状態とエンドポイントに関する情報を取得するために使用できる status フィールドが含まれています。次の出力は、oc get addressspace myspace -o yaml を実行して得られる出力の例です。
- 1
status.isReadyフィールドは、trueまたはfalseのいずれかです。- 2
status.endpointStatusesフィールドは、このアドレス空間で利用可能なエンドポイントに関する情報を提供します。- 3
certフィールドには、特定のエンドポイントの base64 でエンコードされた証明書が含まれています。- 4
serviceHostフィールドには、特定のエンドポイントのクラスター内部ホスト名が含まれています。- 5
servicePortsフィールドには、クラスター内部ホストで使用可能なポートが含まれています。- 6
externalHostフィールドには、特定のエンドポイントの外部ホスト名が含まれています。- 7
externalPortsフィールドには、外部ホストで使用可能なポートが含まれています。
2.9. アドレス空間情報をアプリケーション名前空間にエクスポートする例 リンクのコピーリンクがクリップボードにコピーされました!
このアドレス空間の例は、AddressSpace リソースのエンドポイント情報を、メッセージングアプリケーションと同じ名前空間の ConfigMap、Secret、または Service にエクスポートする方法を示しています。
- 1
- (必須) エクスポートのタイプ:
ConfigMap、Secret、またはService。結果として得られるConfigMapには、exports format の例 に示されている形式の値が含まれます。Secretの場合、同じキーが使用されますが、値は base64 でエンコードされます。Serviceの場合、タイプExternalNameの OpenShift サービスが作成されます。これにより、OpenShift で実行されているアプリケーションに、エンドポイント情報を注入したり、アプリケーションと同じ namespace でプロキシーサービスを提供したりできるようになります。詳細は エクスポート形式の例 を参照してください。 - 2
- (必須) 作成および更新するリソースの名前。
エンドポイント情報をエクスポートする場合、system:serviceaccounts:_amq-online-infra_ グループには、エクスポートリストで指定された configmap を作成、更新、および削除する権限が付与されている必要があります。これには、次のような RBAC ロールとロールバインディングを作成します。
2.10. アドレス空間コネクターの例 リンクのコピーリンクがクリップボードにコピーされました!
standard アドレス空間タイプを別の AMQP サーバーと連携できます。リモートアドレス接続 と メッセージストアアンドフォワード の 2 つの操作方法がサポートされています。
リモートアドレス接続では、リモート AMQP エンドポイントのアドレスをアドレス空間にマッピングします。たとえば、AMQ Online エンドポイントを使用して接続し、アクセスするホスト messaging.example.com で AMQP サーバーが実行されているとします。リモートアドレス接続を有効にするには、アドレス空間コネクターを作成する必要があります。
メッセージのストアアンドフォワードには、アドレス転送の有効化が含まれます。まず、アドレス空間コネクターを作成する必要があります。次に、アドレスごとにアドレスフォワーダーを作成する必要があります。アドレス転送の詳細は、アドレス転送の例 を参照してください。
次の例は、アドレス空間コネクターを設定する方法を示しています。
2.10.1. SASL PLAIN を使用したアドレス空間コネクター リンクのコピーリンクがクリップボードにコピーされました!
認証に相互 TLS を使用しない場合は、SASL PLAIN を使用できます。ユーザー名とパスワードがプレーンテキストとして送信されるため、TLS を有効にしないことはお勧めしません。
- 1
- (必須) コネクターの名前を指定します。すべてのリモートアドレスには、コネクター名とスラッシュ (
/) が接頭辞として付けられます。 - 2
- (必須) このコネクターのエンドポイントのリストを指定します。このリストには少なくとも 1 つのエントリーが含まれている必要があり、追加のエントリーはフェイルオーバーに使用されます。特に指定されていない場合、
portフィールドの値は、AMQP (または TLS が有効な場合は AMQPS) の登録済み IANA ポートに設定されます。 - 3
- (オプション) AMQP 接続のアイドルタイムアウト (秒)。0 はアイドルタイムアウトを無効にします。
- 4
- (オプション) AMQP 接続の最大フレームサイズ。
- 5
- (オプション) TLS を有効にします。コネクターは、デフォルトでグローバルルート CA を信頼します。カスタム CA を使用するには、
caCertフィールドの値を指定します。 - 6
- (省略可能) このコネクターに使用するユーザー名とパスワードの認証情報を指定します。値は、インラインで指定するか、シークレット内の場所を指定するオプションのキーと共にシークレットを参照して指定できます。シークレットは、
system:serviceaccounts:_amq-online-infra_グループで読み取りできる必要があります。 - 7
- (オプション) コネクターのロール。有効な値は、"normal"、"edge"、および "route-container" (デフォルト値) です。
- 8
- (必須) リモートエンドポイントで公開されるアドレスに一致するパターンのリストを指定します。パターンは、スラッシュ
/で区切られた 1 つ以上のトークンで設定されます。トークンは、* 文字、# 文字、または /、*、# を含まない一連の文字のいずれかです。* トークンは、任意の 1 つのトークンに一致します。# トークンは、0 個以上のトークンに一致します。* は # よりも優先順位が高く、完全一致が最も優先順位が高くなります。
2.10.2. 相互 TLS を使用するアドレス空間コネクター リンクのコピーリンクがクリップボードにコピーされました!
クライアント TLS 証明書を設定すると、SASL EXTERNAL を認証に使用できるようになります。証明書は、インラインで指定するか、秘密の参照を使用して指定できます。
- 1
- (必須) コネクターの名前を指定します。すべてのリモートアドレスには、コネクター名とスラッシュ (
/) が接頭辞として付けられます。 - 2
- (必須) このコネクターのエンドポイントのリストを指定します。このリストには少なくとも 1 つのエントリーが含まれている必要があり、追加のエントリーはフェイルオーバーに使用されます。特に指定されていない場合、
portフィールドの値は、AMQP (または TLS が有効な場合は AMQPS) の登録済み IANA ポートに設定されます。 - 3
- (オプション) リモート接続で信頼する CA 証明書を指定します。参照されるシークレットは、
system:serviceaccounts:_amq-online-infra_グループで読み取りできる必要があります。 - 4
- (オプション) 相互 TLS 認証に使用するクライアント証明書を指定します。参照されるシークレットは、
system:serviceaccounts:_amq-online-infra_グループで読み取りできる必要があります。 - 5
- (オプション) 相互 TLS 認証に使用するクライアント秘密鍵を指定します。参照されるシークレットは、
system:serviceaccounts:_amq-online-infra_グループで読み取りできる必要があります。
2.11. コマンド行を使用したアドレス空間の作成 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online では、標準のコマンドラインツールを使用してアドレス空間を作成します。
手順
メッセージングテナントとしてログインします。
oc login -u developer
oc login -u developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow メッセージングアプリケーションのプロジェクトを作成します。
oc new-project myapp
oc new-project myappCopy to Clipboard Copied! Toggle word wrap Toggle overflow アドレス空間定義を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アドレス空間を作成します。
oc create -f standard-address-space.yaml
oc create -f standard-address-space.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow アドレス空間のステータスを確認します。
oc get addressspace myspace -o jsonpath={.status.isReady}oc get addressspace myspace -o jsonpath={.status.isReady}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前のコマンドが
trueを出力すると、アドレス空間を使用する準備が整います。
2.12. Red Hat AMQ コンソールを使用したアドレス空間の作成 リンクのコピーリンクがクリップボードにコピーされました!
さまざまな証明書プロバイダーを使用してアドレス空間のエンドポイントを設定したり、エンドポイントを作成してメッセージングアプリケーションが使用できるようにアドレス空間を作成したりなど、Red Hat AMQ コンソールを使用して新しいアドレス空間を作成できます。
アドレス空間のエンドポイントを設定しないことを選択した場合、システムは、AMQPS および AMQP-WSS の OpenShift ルートとしてエンドポイントのデフォルトセットを作成し、システム生成 (自己署名) 証明書およびクラスターサービスで保護します。
手順
Red Hat AMQ コンソールにログインします。
Red Hat AMQ コンソールへのアクセス方法の詳細は、Red Hat AMQ Console へのアクセス を参照してください。
- アドレス空間の作成 をクリックします。インスタンスの作成ウィザードが開きます。
- 必須フィールドに入力し、完了したら、Finish をクリックして新しいアドレス空間を作成します。
アドレス空間が正常に作成されたら、アドレス空間名をクリックして、新しく作成されたアドレス空間に関する情報 (メッセージングとアプリケーションの統計、エンドポイント情報など) を表示できます。
2.13. Red Hat AMQ コンソールを使用したアドレス空間に関連付けられたアドレス空間プランの変更 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ コンソールを使用して、アドレス空間に関連付けられているアドレス空間プランを変更できます。
前提条件
- アドレス空間をすでに作成してある。詳細は Red Hat AMQ コンソールを使用したアドレス空間の作成 を参照してください。
手順
- Red Hat AMQ コンソールにログインします。詳細は Red Hat AMQ コンソールへのアクセス を参照してください。
- アドレス空間計画を変更するアドレス空間を見つけます。
- 右端の列で、縦の省略記号アイコンをクリックし、編集 を選択します。編集ウィンドウが開きます。
- アドレス空間プラン フィールドで、リストから別のプランを選択し、確認 をクリックします。そのアドレス空間のアドレス空間プランが変更されます。
2.14. Red Hat AMQ コンソールを使用したアドレス空間に関連付けられた認証サービスの変更 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ コンソールを使用して、アドレス空間に関連付けられている認証サービスを変更できます。
前提条件
- アドレス空間をすでに作成してある。詳細は Red Hat AMQ コンソールを使用したアドレス空間の作成 を参照してください。
手順
- Red Hat AMQ コンソールにログインします。詳細は Red Hat AMQ コンソールへのアクセス を参照してください。
- 認証サービスを変更するアドレス空間を見つけます。
- 右端の列で、縦の省略記号アイコンをクリックし、編集 を選択します。編集ウィンドウが開きます。
- Authentication Service フィールドで、リストから別の認証サービスを選択し、Confirm をクリックします。そのアドレス空間の認証サービスが変更されます。
2.15. Red Hat AMQ コンソールを使用したアドレス空間の削除 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ コンソールを使用して、既存のアドレス空間を削除できます。
手順
Red Hat AMQ コンソールにログインします。
Red Hat AMQ コンソールへのアクセス方法の詳細は、Red Hat AMQ Console へのアクセス を参照してください。
- 削除するアドレス空間を見つけます。
- 右端の列で、縦の省略記号アイコンをクリックし、削除 を選択します。削除確認ウィンドウが開きます。
- 削除 をクリックして、選択内容を確認します。アドレス空間が削除されます。
2.16. アドレス空間情報を取得するためのコマンド例 リンクのコピーリンクがクリップボードにコピーされました!
次の表に、アドレス空間情報を取得するためのコマンドを示します。
| 取得方法 | 実行コマンド |
|---|---|
| アドレス空間のステータス |
|
| メッセージングエンドポイントの base64 でエンコードされた PEM 証明書 |
|
| メッセージングエンドポイントのホスト名 |
|
2.17. コマンドラインを使用したアドレス空間の置換 リンクのコピーリンクがクリップボードにコピーされました!
プラン、エンドポイント、またはネットワークポリシーを変更するために、または certBundle 証明書プロバイダーを使用している場合は証明書を置き換えるために、アドレス空間を置き換えることができます。現在のアドレスのセットが新しいクォータ内に収まる場合に、プランを変更すると、AMQ Online は新しいプランを適用しようとします。そうでない場合は、AddressSpace リソースでエラーが発生します。
手順
メッセージングテナントとしてログインします。
oc login -u developer
oc login -u developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow メッセージングアプリケーションのプロジェクトを選択します。
oc project myapp
oc project myappCopy to Clipboard Copied! Toggle word wrap Toggle overflow アドレス空間定義を更新します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アドレス空間を置き換えます。
oc replace -f standard-address-space-replace.yaml
oc replace -f standard-address-space-replace.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow アドレス空間のステータスを確認します。
oc get addressspace myspace -o jsonpath={.status.isReady}oc get addressspace myspace -o jsonpath={.status.isReady}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 上記のコマンドが
trueを出力すると、アドレス空間が使用可能になります。
第3章 アドレスの管理 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online は、OpenShift コマンドラインツールと Red Hat AMQ コンソールを使用したアドレスの管理をサポートするように設定されています。アドレス リソースは、oc を使用して他の OpenShift API リソースと同様に管理できます。
3.1. アドレス リンクのコピーリンクがクリップボードにコピーされました!
アドレスは、アドレス空間の一部であり、メッセージを送受信するための宛先を表します。アドレスには、そのアドレスとの間でメッセージを送受信するセマンティクスを定義するタイプがあります。
AMQ Online で使用できるアドレスの種類は、アドレス空間の種類によって異なります。
3.2. アドレスプラン リンクのコピーリンクがクリップボードにコピーされました!
アドレスは、そのアドレスのリソース使用法を記述するアドレスプランで設定されます。アドレスプランはサービス管理者が設定しており、AMQ Online のインストール設定により異なる場合があります。作成できるアドレスの数と利用可能なプランは、アドレス空間プランによって適用されるクォータによって異なります。
一部のアドレスタイプでは、plan フィールドの変更もサポートされています。standard アドレス空間の queue、anycast、および multicast アドレスタイプは、新しいプランが許可されたクォータを超えない限り、プランの変更をサポートします。キューの場合、アドレスはブローカー間で動的に移行されるため、メッセージの並べ替えが発生する可能性があります。
3.2.1. アドレスの例 リンクのコピーリンクがクリップボードにコピーされました!
- 1
- アドレス名には、アドレス空間名とドットを接頭辞として付ける必要があります。アドレス名には、英数字のみを含めることができます。
- 2
- アドレスは、このアドレスリソースが表すメッセージングアドレスです。
- 3
- アドレスタイプは、このアドレスのセマンティクスを決定します。
- 4
- アドレスプランは、アドレスのリソース使用量を記述します。利用可能なプランを表示する方法の詳細は、利用可能なアドレスプランの一覧表示 を参照してください。
3.2.2. トピックとサブスクリプションアドレスの例 リンクのコピーリンクがクリップボードにコピーされました!
トピックとサブスクリプションを使用する場合、次の例に示すように、サブスクリプションは topic: フィールドを使用して所属するトピックを参照します。
- 1
- このサブスクリプションが参照するトピックのアドレス。
3.2.3. アドレス TTL 制限の例 リンクのコピーリンクがクリップボードにコピーされました!
- 1
- (オプション) メッセージの存続可能時間 (TTL) を制限します。アドレスタイプの
queueとtopicにのみ適用されます。
messageTtl フィールドは、キューまたはトピックに書き込まれたメッセージの有効な absolute-expiry-time を制限するために使用されます。maximum と minimum の値はミリ秒単位で定義されます。システムは、次の値に基づいて特定のアドレスへの着信メッセージの TTL 値を調整します。
-
TTL 値が
maximumの値より大きいアドレスにメッセージが到着すると、システムはメッセージの TTL を最大値に変更します。 -
TTL 値が
minimumの値より小さいアドレスにメッセージが到着すると、システムはメッセージの TTL を最小値に変更します。
TTL が定義されていない状態で到着したメッセージは、TTL 値が無限大であると見なされます。
期限切れのメッセージは、queue、subscription、または一時トピックサブスクリプションから定期的に自動削除されます。これらのメッセージは失われます。これは 30 秒ごとに発生します。
TTL 制限は、アドレスプランによって課される場合もあります。プランとアドレスの両方に TTL 制限が課されている場合には、アドレス TTL 制限は TTL 制限をさらに絞りこむ以外手段はありません。アドレス status セクションには、有効な TTL 値が表示されます。
3.2.4. アドレス転送の例 リンクのコピーリンクがクリップボードにコピーされました!
フォワーダーを使用すると、以下が可能です。
- ローカルアドレスから AMQ Online の外部のリモート AMQP サーバーにメッセージを自動的に転送する、または
- リモート AMQP サーバーからローカルアドレスにメッセージを転送する。
アドレスフォワーダーを使用するには、最初にアドレス空間のリモート AMQP サーバーへのコネクターを設定する必要があります。アドレス空間コネクターの詳細は、アドレス空間コネクターの例 を参照してください。
アドレス転送は、standard アドレス空間タイプでのみサポートされており、queue および subscritpion アドレスタイプでのみサポートされています。queue アドレスタイプを使用すると、メッセージをリモート AMQP サーバーに転送したり、リモート AMQP サーバーからローカルキューに転送したりできます。subscription アドレスタイプでは、リモート AMQP アドレスへのフォワーダーを作成できますが、メッセージをサブスクリプションにコピーするフォワーダーを作成することはできません。つまり、subscription アドレスタイプは、例に示すように、out 方向の転送のみをサポートします。
次の例では、コネクター remote1 がアドレス空間用に設定されていることを前提としています。
3.2.4.1. ローカルキューからリモート AMQP サーバーへのメッセージの転送 リンクのコピーリンクがクリップボードにコピーされました!
この例では、myqueue 内のメッセージは、アドレスが clients/me/1 のリモート AMQP サーバーに転送されます。
3.2.4.2. リモート AMQP サーバーからローカルキューへのメッセージの転送 リンクのコピーリンクがクリップボードにコピーされました!
この例では、リモート AMQP サーバー上のアドレス prices/milk からメッセージを受信します。その後、メッセージはローカルキュー myqueue に移動されます。
3.3. コマンドラインを使用した利用可能なアドレスプランの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
queue などのアドレスタイプで使用可能なアドレスプランを一覧表示できます。
手順
メッセージングテナントとしてログインします。
oc login -u developer
oc login -u developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow リストされたアドレスプランを使用してスキーマを取得します (ブローカーアドレス空間タイプは
standardからbrokeredに置き換えます)。oc get addressspaceschema standard -o 'jsonpath={.spec.addressTypes[?(@.name=="queue")].plans[*].name}'oc get addressspaceschema standard -o 'jsonpath={.spec.addressTypes[?(@.name=="queue")].plans[*].name}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. コマンドラインを使用したアドレスの作成 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用してアドレスを作成できます。
手順
アドレス定義を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記異なるアドレス空間からのアドレスが競合しないようにするには、名前の前にアドレス空間名を付ける必要があります。
アドレスを作成します。
oc create -f standard-small-queue.yaml
oc create -f standard-small-queue.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow アドレスを一覧表示します。
oc get addresses -o yaml
oc get addresses -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. Red Hat AMQ コンソールを使用したアドレスの作成 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ コンソールを使用して新しいアドレスを作成できます。作成できるアドレスのタイプは、アドレス空間のタイプによって決まります。
前提条件
- アドレス空間を作成しておく。詳しくは アドレス空間の作成 を参照してください。
手順
- Red Hat AMQ コンソールにログインします。詳細は Red Hat AMQ コンソールへのアクセス を参照してください。
- 新しいアドレスを作成するアドレス空間のアドレス空間リンクをクリックします。
- Create をクリックします。Create new address ウィンドウが開きます。
- 名前を入力し、アドレスの種類を選択します。subscription を選択した場合は、topic リストから、サブスクリプションを作成するトピック名を選択します。
- Next をクリックします。
- プランを選択し、Next をクリックします。
- Create をクリックします。アドレスは Red Hat AMQ コンソールに表示されます。
3.6. コマンドラインを使用したアドレスの置換 リンクのコピーリンクがクリップボードにコピーされました!
手順
アドレス定義を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アドレスを次のように置き換えます。
oc replace -f standard-xlarge-queue.yaml
oc replace -f standard-xlarge-queue.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow アドレスを一覧表示します。
oc get addresses -o yaml
oc get addresses -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第4章 Red Hat AMQ コンソールの使用 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ コンソールを使用して、アドレス空間の 作成 と アドレス空間の削除、アドレスの作成、メッセージと接続統計の表示 などのタスクを実行できます。
4.1. Red Hat AMQ コンソールのユーザー権限 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ コンソールは、OpenShift RBAC パーミッションモデル を使用します。
Red Hat AMQ コンソールを使用するには、OpenShift ユーザーがアドレス空間と アドレス リソースへのアクセスを許可するロールが必要です。たとえば、編集アクセスの場合は、関連付けられたロールオブジェクトに create、update、および delete パーミッションを付与する必要があり、表示のみのアクセスの場合は、list パーミッションを付与する必要があります。
AMQ Online のサンプルロールの詳細は、AMQ Online のサンプルロール を参照してください。
4.2. Red Hat AMQ コンソールへのアクセス リンクのコピーリンクがクリップボードにコピーされました!
前提条件
OpenShift Container Platform 3.x では以下のコマンドを実行して Red Hat AMQ コンソールのホスト名を取得しておく。
oc get routes console -o jsonpath={.spec.host}oc get routes console -o jsonpath={.spec.host}Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Container Platform 4.x では以下のコマンドを実行して Red Hat AMQ コンソールのホスト名を取得しておく。
oc get consolelink -l app=enmasse -o jsonpath={.spec.href}oc get consolelink -l app=enmasse -o jsonpath={.spec.href}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順
-
Web ブラウザーで
https://console-host-nameに移動します。console-host-nameは Red Hat AMQ コンソールのホスト名に置き換えます。 - OpenShift ユーザー認証情報でログインします。Red Hat AMQ コンソールが開き、管理できるすべてのアドレス空間が一覧表示されます。アドレス空間の作成については Red Hat AMQ コンソールを使用したアドレス空間の作成 を参照してください。
4.3. Red Hat AMQ コンソールを使用したメッセージおよびアプリケーション接続統計の表示 リンクのコピーリンクがクリップボードにコピーされました!
前提条件
- Red Hat AMQ コンソールにログインしておく。
| 表示方法 | アドレスページでの操作 |
|---|---|
| アドレスの種類 | 2 列目の タイプ/プラン の最初のアイコンを参照してください。 |
| アドレスプラン | 2 列目の タイプ/プラン のアイコンに続く文字列を参照してください。 |
| アドレスのステータス | 3 列目の ステータス を参照してください。 |
| 1 秒あたりの受信メッセージ数 (過去 5 分間で計算) | 受信メッセージ数/秒 を参照してください。 |
| 1 秒あたりの送信メッセージ数 (過去 5 分間で計算) | 送信メッセージ数/秒 を参照してください |
| キューとトピックのアドレスタイプのみ: ブローカまたは複数のブローカに保存されているメッセージの数 | 保存されたメッセージ |
| 接続されている送信者の数 | 送信者 を参照してください。 |
| 割り当てられているレシーバーの数 | レシーバー を参照してください。 |
| 標準アドレス空間のみ: 1 秒あたりのメッセージ配信数 | 目的のアドレスをクリックすると、そのアドレスのリンクページが表示されます。Delivery Rate 欄を参照してください。 |
| 表示方法 | 接続ページでの操作 |
|---|---|
| 1 秒あたりの受信メッセージ数 (過去 5 分間で計算) | 受信メッセージ数/秒 を参照してください。 |
| 標準アドレス空間のみ: 1 秒あたりの送信メッセージ数 (過去 5 分間で計算) | 送信メッセージ数/秒 を参照してください |
| 配信メッセージの総数 | 目的のホスト名をクリックして、送信者と受信者のリストを表示します。Deliveries 欄を参照してください。 |
ブローカーアドレス空間の場合のみ、Connections ページの送信者数は 0 または 1 です。1 つまたは複数の送信者が存在するとすぐに、実際の送信者数を反映するのではなく、1 が表示されます。
4.4. Red Hat AMQ コンソールを使用したエンドポイント情報の表示 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ コンソールを使用して、特定のアドレス空間に設定されたエンドポイントに関する情報を表示できます。この情報は、メッセージングアプリケーションを AMQ Online に接続するために必要です。
前提条件
- Red Hat AMQ コンソールにログインしておく。詳細は Red Hat AMQ コンソールへのアクセス を参照してください。
| 列 | 説明 |
|---|---|
| Name | エンドポイントの名前を表示します。 |
| Type | エンドポイントのタイプを表示します。有効な値は次のとおりです。
詳細は、次の OpenShift ドキュメントを参照してください。 |
| ホスト | エンドポイントのホスト名を表示します。 |
| Ports | エンドポイントのポートプロトコル名とポート番号を表示します。有効なポート名は次のとおりです。
|
4.5. キューとサブスクリプションのパージ リンクのコピーリンクがクリップボードにコピーされました!
Red Hat AMQ コンソールを使用して、格納されているメッセージの queue または subscription アドレスタイプからすべてのメッセージを消去できます。
前提条件
- 保存されたメッセージを含むキューまたはサブスクリプションが必要です。
手順
- Red Hat AMQ コンソールにログインします。詳細は Red Hat AMQ コンソールへのアクセス を参照してください。
- Addresses ページに移動します。
- パージするキューまたはサブスクリプションの横にあるチェックボックスをオンにします。
-
ページの上部にある縦の省略記号アイコンを右クリックし、Purge を選択します。キューまたはサブスクリプションが消去され、選択したキューまたはサブスクリプションの
保存メッセージ数がゼロになります。
4.6. Red Hat AMQ コンソールを使用した接続の切断 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションが予期せずメッセージの処理を停止した場合に、Red Hat AMQ コンソールを使用してアプリケーションのメッセージング接続を強制的に切断できます。これは、アプリケーションをサービスに戻す便利な方法です。
接続を切断すると、アプリケーションの AMQ Online への接続が切断されることに注意してください。アプリケーションが切断するように設定されている場合には、アプリケーションは自動的に再接続する必要があります。
手順
- Red Hat AMQ コンソールにログインします。詳細は Red Hat AMQ コンソールへのアクセス を参照してください。
- Connections ページに移動します。
単一の接続を閉じるには以下を実行します。
- 切断する接続を見つけます。
- 右端の列で、縦の省略記号アイコンをクリックし、Close を選択します。
- プロンプトが表示されたら、Confirm をクリックして、接続が切断されたことを確認します。接続は閉じられます。
1 回の操作で複数の接続を切断するには以下を実行します。
- 切断する接続の横にあるチェックボックスをオンにします。
- ページの上部にある縦の省略記号アイコンを右クリックし、Close Selected を選択します。
- プロンプトが表示されたら、Confirm をクリックして、接続が切断されたことを確認します。接続が切断されました。
第5章 ユーザーモデル リンクのコピーリンクがクリップボードにコピーされました!
メッセージングクライアントは MessagingUser を使用して接続します。MessagingUser は、使用できるアドレスとそれらのアドレスで実行できる操作を制御する許可ポリシーを指定します。
ユーザーは MessagingUser リソースとして設定されます。ユーザーは、作成、削除、読み取り、更新、および一覧表示できます。
次の例は、user-example1.yaml ファイルを示しています。
次のフィールドは必須です。
-
metadata.name -
metadata.namespace -
spec.authentication -
spec.authorization
spec.authentication オブジェクトはユーザーの認証方法を定義し、spec.authorization はそのユーザーの承認ポリシーを定義します。
5.1. 認証 リンクのコピーリンクがクリップボードにコピーされました!
認証タイプでサポートされている値は password と serviceaccount です。password 認証タイプを使用する場合は、接続時にメッセージングクライアントが使用するユーザー名とパスワードを指定します。serviceaccount 認証タイプでは、特別な文字列 @@serviceaccount@@ をユーザー名として使用し、OpenShift サービスアカウントトークンをパスワードとして使用します。
5.1.1. パスワード認証の種類 リンクのコピーリンクがクリップボードにコピーされました!
password タイプの場合には、追加フィールドの パスワード を、そのユーザーのパスワードの base64 エンコード値に設定する必要があります。リソースの読み取り時にパスワードは出力されません。
パスワードは、コマンドラインで base64 エンコードできます。たとえば、my-password をエンコードするには以下を実行します。
echo -n my-password | base64 bXktcGFzc3dvcmQ=
$ echo -n my-password | base64
bXktcGFzc3dvcmQ=
5.1.2. サービスアカウント認証タイプ リンクのコピーリンクがクリップボードにコピーされました!
serviceaccount タイプの場合、username フィールドには、認証に使用される OpenShift サービスアカウント名が含まれている必要があります。メッセージングクライアントに接続するときは、文字列 @@serviceaccount@@ をユーザー名として使用し、サービスアカウントトークンをパスワードとして使用します。アプリケーションで使用される AMQP クライアントは、SASL メカニズムタイプ PLAIN を使用するように設定する必要があります。
5.2. 承認 リンクのコピーリンクがクリップボードにコピーされました!
さらに、操作とアドレスを使用して承認ポリシーを定義できます。有効な操作は、send、recv、view、および manage です。
manage および view 操作は、アドレス空間内のすべてのアドレスに適用されます。
standard アドレス空間では、アドレスの末尾にアスタリスクワイルドカードを使用できます。アドレス top* は、アドレス topic および topic/sub と一致します。
brokered アドレス空間では、プラス記号とアスタリスクのワイルドカードをアドレスの末尾に使用して、スラッシュ区切り文字の後の 1 文字 (プラス記号) またはすべて文字 (アスタリスク) を検索できます。したがって、アドレス topic/+ は topic/sub に一致しますが、topic/s/sub には一致しません。アドレス topic/* は、topic/sub および topic/s/sub と一致します。
5.3. ユーザーの管理 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online ユーザー管理は、standard の認証サービスを使用する場合にのみサポートされます。OpenShift では、OpenShift コマンドラインツールを使用してユーザーを管理できます。
前提条件
- アドレス空間 を作成しておく。
5.3.1. コマンドラインでのユーザーの作成 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online では、標準のコマンドラインツールを使用してユーザーを作成できます。
前提条件
- アドレス空間 を作成しておく。
手順
ユーザー定義ファイルのパスワードを正しく base64 エンコードするには、次のコマンドを実行します。
echo -n password | base64 #cGFzc3dvcmQ=
echo -n password | base64 #cGFzc3dvcmQ=Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記このコマンドを実行するときは、必ず
-nパラメーターを使用してください。このパラメーターを指定しないと、パスワードが正しくコード化されず、ログインの問題が発生します。ユーザー定義をファイルに保存します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーと関連するユーザー権限を作成します。
oc create -f user-example1.yaml
oc create -f user-example1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ユーザーが作成されたことを確認します。
oc get messagingusers
oc get messagingusersCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.2. コマンドラインを使用したユーザーの削除 リンクのコピーリンクがクリップボードにコピーされました!
ユーザーは、標準のコマンドラインツールを使用して削除できます。
前提条件
- アドレス空間を作成しておく。
- ユーザーを作成しておく。
手順
現在のユーザーを一覧表示します。
oc get messagingusers
oc get messagingusersCopy to Clipboard Copied! Toggle word wrap Toggle overflow 目的のユーザーを削除します。
oc delete messaginguser myspace.user1
oc delete messaginguser myspace.user1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3.3. コマンドラインを使用したユーザー権限の管理 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して、既存のユーザーの権限を編集できます。
前提条件
- ユーザーを作成しておく。詳細は コマンドラインを使用したユーザーの作成 を参照してください。
手順
権限を編集するユーザーを取得します。
oc get messaginguser myspace.user1 -o yaml > user-example1.yaml
oc get messaginguser myspace.user1 -o yaml > user-example1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要なアクセス許可を変更し、ファイルを保存します。
コマンドラインから次のコマンドを実行して、変更を適用します。
oc apply -f user-example1.yaml
oc apply -f user-example1.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいユーザー権限が適用されます。
第6章 アプリケーションの AMQ Online への接続 リンクのコピーリンクがクリップボードにコピーされました!
次のクライアント例のいずれかを使用して、アプリケーションを AMQ Online に接続できます。
OpenShift クラスターの外部からメッセージングサービスに接続するには、SNI を設定して TLS を使用し、アドレス空間の完全修飾ホスト名を指定する必要があります。使用するポートは 443 です。
サポートされるメッセージングプロトコルは、使用されるアドレス空間のタイプによって異なります。アドレス空間の種類の詳細は、アドレス空間 を参照してください。
6.1. 自己署名 CA 証明書の取得 リンクのコピーリンクがクリップボードにコピーされました!
AddressSpace エンドポイント設定で selfsigned 証明書プロバイダータイプを選択した場合に、メッセージングクライアントアプリケーションに接続するときに、AddressSpace サーバー証明書に署名した生成 CA が必要です。次の手順を使用して、AddressSpace から証明書を取得できます。
実稼働環境で自己署名証明書を使用することはお勧めしません。
手順
メッセージングテナントとしてログインします。
oc login -u developer
oc login -u developerCopy to Clipboard Copied! Toggle word wrap Toggle overflow AddressSpaceから CA 証明書を取得します。これにより、CA 証明書を含むファイルが PEM 形式で提供されます。
oc get addressspace myspace -n namespace -o jsonpath='{.status.caCert}{"\n"}' | base64 --decode > ca.crtoc get addressspace myspace -n namespace -o jsonpath='{.status.caCert}{"\n"}' | base64 --decode > ca.crtCopy to Clipboard Copied! Toggle word wrap Toggle overflow PKCS12 または JKS 形式のトラストストアが必要な場合は、次のコマンドを使用して生成します。
PKS の場合:
keytool -import -trustcacerts -alias root -file ca.crt -storetype pkcs12 -keystore ca.pkcs12 -storepass password -noprompt
keytool -import -trustcacerts -alias root -file ca.crt -storetype pkcs12 -keystore ca.pkcs12 -storepass password -nopromptCopy to Clipboard Copied! Toggle word wrap Toggle overflow JKS の場合:
keytool -import -trustcacerts -alias root -file ca.crt -storetype jks -keystore ca.jsk -storepass password -noprompt
keytool -import -trustcacerts -alias root -file ca.crt -storetype jks -keystore ca.jsk -storepass password -nopromptCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. クライアントの例 リンクのコピーリンクがクリップボードにコピーされました!
6.2.1. AMQ Online Python の例 リンクのコピーリンクがクリップボードにコピーされました!
次の AMQ Online Python の例を使用して、アプリケーションを AMQ Online に接続できます。この例では、myqueue という名前の queue タイプのアドレスを作成したと想定しています。
6.2.1.1. 階層トピックでサブスクライバーを作成する際の既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online で階層トピックにサブスクライバーを作成すると、ブローカーが代わりに競合するコンシューマーとしてサブスクライバーを作成するという既知の問題が存在します (トピックではなくキューのようにアドレスを処理します)。
この問題の回避策として、ソースで トピック ケイパビリティーを設定します。
手順
-
simple_recv.pyファイルで、from proton.reactor import Containerを変更してReceiverOptionを追加します。
class CapabilityOptions(ReceiverOption):
def apply(self, receiver):
receiver.source.capabilities.put_object(symbol("topic"))
class CapabilityOptions(ReceiverOption):
def apply(self, receiver):
receiver.source.capabilities.put_object(symbol("topic"))
-
次の行を変更して、
options=CapabilityOptions ()を追加します。
def on_start(self, event):
event.container.create_receiver(conn, self.address, options=CapabilityOptions())
def on_start(self, event):
event.container.create_receiver(conn, self.address, options=CapabilityOptions())
6.2.2. AMQ Online JMS の例 リンクのコピーリンクがクリップボードにコピーされました!
次の AMQ Online JMS の例を使用して、アプリケーションを AMQ Online に接続できます。この例では、myqueue という名前の queue タイプのアドレスを作成したと想定しています。
jndi.properties を使用:
connectionfactory.myFactoryLookup = amqps://messaging-route-hostname:443?transport.trustAll=true&transport.verifyHost=false queue.myQueueLookup = myqueue
connectionfactory.myFactoryLookup = amqps://messaging-route-hostname:443?transport.trustAll=true&transport.verifyHost=false
queue.myQueueLookup = myqueue
6.2.3. AMQ Online JavaScript の例 リンクのコピーリンクがクリップボードにコピーされました!
次の AMQ Online JavaScript の例を使用して、アプリケーションを AMQ Online に接続できます。この例では、myqueue という名前の queue タイプのアドレスを作成したと想定しています。
6.2.3.1. WebSocket を使用した AMQ Online JavaScript の例 リンクのコピーリンクがクリップボードにコピーされました!
6.2.4. AMQ Online C++ の例 リンクのコピーリンクがクリップボードにコピーされました!
C++ クライアントには、Python と同じオプションを持つ同等の simple_recv と simple_send の例があります。ただし、C++ ライブラリーは URL に対して同じレベルの処理を実行しません。特に、TLS の使用を意味する amqps:// は使用できないので、例を次のように変更する必要があります。
6.2.4.1. 階層トピックでサブスクライバーを作成する際の既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online で階層トピックにサブスクライバーを作成すると、ブローカーが代わりに競合するコンシューマーとしてサブスクライバーを作成するという既知の問題が存在します (トピックではなくキューのようにアドレスを処理します)。
回避策として、ソースで トピック ケイパビリティーを設定する必要があります。
手順
-
topic_receive.cppファイルで、次の例のようにコードを編集します。
6.2.5. AMQ Online .NET の例 リンクのコピーリンクがクリップボードにコピーされました!
次の AMQ Online .NET の例を使用して、アプリケーションを AMQ Online に接続できます。この例では、myqueue という名前の queue タイプのアドレスを作成したと想定しています。
付録A サブスクリプションの使用 リンクのコピーリンクがクリップボードにコピーされました!
AMQ Online は、ソフトウェアサブスクリプションを通じて提供されます。サブスクリプションを管理するには、Red Hat カスタマーポータルでアカウントにアクセスします。
アカウントへのアクセス
- access.redhat.com に移動します。
- アカウントがない場合は、作成します。
- アカウントにログインします。
サブスクリプションのアクティベート
- access.redhat.com に移動します。
- サブスクリプション に移動します。
- Activate a subscription に移動し、16 桁のアクティベーション番号を入力します。
zip および tar ファイルのダウンロード
zip または tar ファイルにアクセスするには、Red Hat カスタマーポータルを使用して、ダウンロードする関連ファイルを検索します。RPM パッケージを使用している場合は、この手順は必要ありません。
- ブラウザーを開き、access.redhat.com/downloads で Red Hat カスタマーポータルの Product Downloads ページにログインします。
- JBOSS INTEGRATION AND AUTOMATION カテゴリーの Red Hat AMQ Online エントリーを見つけます。
- 目的の AMQ Online 製品を選択します。Software Downloads ページが開きます。
- コンポーネントの ダウンロード リンクをクリックします。
パッケージ用のシステムの登録
RPM パッケージを Red Hat Enterprise Linux にインストールするには、システムが登録されている必要があります。zip または tar ファイルを使用している場合、この手順は必要ありません。
- access.redhat.com に移動します。
- Registration Assistant に移動します。
- ご使用の OS バージョンを選択し、次のページに進みます。
- システムターミナルで listed コマンドを使用して、登録を完了します。
詳細は、How to Register and Subscribe a System to the Red Hat Customer Portal を参照してください。
付録B メッセージングテナント向けの AMQ Online リソース リンクのコピーリンクがクリップボードにコピーされました!
次の表では、メッセージングテナントロールに関連する AMQ Online リソースについて説明します。
| リソース | 説明 |
|---|---|
|
| アドレスを指定します。 |
|
| アドレス空間を指定します。 |
|
| 使用できるアドレスと、それらのアドレスに対して実行できる操作を制御する承認ポリシーを指定します。 |
改訂日時:2023-01-28 12:19:11 +1000