Red Hat AMQ 7 の概要

Red Hat AMQ 7.7

機能およびコンポーネントの概要

概要

本書では、Red Hat AMQ 7 の機能およびコンポーネントについて詳しく説明します。また、本リリースでサポートされる一般的なユースケースと設計パターンも示しています。

第1章 Red Hat AMQ 7 について

Red Hat AMQ は、インターネット向けアプリケーションに対して高速で軽量でセキュアなメッセージングを提供します。AMQ Broker は複数のプロトコルと高速メッセージの永続性をサポートします。AMQ Interconnect は AMQP プロトコルを活用して、ネットワーク全体でメッセージングリソースを配信およびスケーリングします。AMQ Clients は、複数の言語およびプラットフォームに対してメッセージング API のスイートを提供します。

AMQ コンポーネントをツールボックス内のツールと考えてください。メッセージングアプリケーションをビルドおよび維持するために、複数のコンポーネントを一緒に使用したり、個別に使用したりできます。AMQP はコンポーネントを一緒にバインドするツールボックス内の接着剤です。AMQ コンポーネントは共通の管理コンソールを共有するため、単一のインターフェイスから管理できます。

1.1. 主な特長

AMQ を使用すると、開発者は高速で信頼性があり、管理しやすいメッセージングアプリケーションをビルドできます。

インターネット規模でのメッセージング

AMQ には、高度なマルチデータセンターメッセージングネットワークを構築するためのツールが含まれています。クライアント、ブローカー、およびスタンドアロンのサービスをシームレスなメッセージングファブリックで接続できます。

最上のセキュリティーとパフォーマンス

AMQ は最新の SSL/TLS 暗号化、および拡張可能な SASL 認証を提供します。AMQ は、高速で高ボリュームのメッセージングとクラスをリードする JMS パフォーマンスを提供します。

幅広いプラットフォームおよび言語のサポート

AMQ は複数の言語やオペレーティングシステムに対応するため、多様なアプリケーションコンポーネントが通信できます。AMQ は、C++、Java、JavaScript、Python、Ruby、および .NET アプリケーション、Linux、Windows、および JVM ベースの環境をサポートします。

標準化に焦点

AMQ は Java JMS 1.1 および 2.0 API 仕様を実装します。そのコンポーネントは、ISO 規格の AMQP 1.0 および MQTT メッセージングプロトコル、ならびに STOMP および WebSocket をサポートします。

管理の一元化

AMQ では、単一の管理インターフェイスからすべての AMQ コンポーネントを管理できます。JMX または REST インターフェイスを使用して、プログラム的にサーバーを管理できます。

第2章 コンポーネントの概要

Red Hat AMQ は AMQ Broker、AMQ Interconnect、および AMQ Clients で設定されます。これらは連携して、分散アプリケーションでのネットワーク通信を有効にします。

2.1. AMQ Broker

AMQ Broker はフル機能のメッセージ指向ミドルウェアブローカーです。これにより、高度なアドレシングとキューイング、高速メッセージの永続性、および高可用性を提供します。AMQ Broker は複数のプロトコルとオペレーティング環境をサポートしているので、既存のアセットを使用できます。AMQ Broker は Red Hat JBoss Enterprise Application Platform とのインテグレーションをサポートします。

詳細は、AMQ Broker の使用 を参照してください。

2.2. AMQ Interconnect

AMQ Interconnect は、クライアント、ブローカー、スタンドアロンサービスなど、AMQP 対応のエンドポイント間のメッセージを柔軟にルーティングします。AMQ Interconnect ルーターのネットワークへの単一の接続を使用して、クライアントはネットワークに接続された他のエンドポイントとのメッセージを交換できます。

AMQ Interconnect では、高可用性のためにマスター/スレーブクラスターを使用しません。これは通常、冗長ネットワークパスを持つ複数ルーターのトポロジーにデプロイされ、これを使用して信頼できる接続を提供します。AMQ Interconnect は、メッセージングワークロードをネットワーク全体に分散し、低レイテンシーで新たなレベルのスケーリングを実現できます。

詳細は、AMQ Interconnect の使用 を参照してください。

2.3. AMQ Online

AMQ Online は、マネージドサービスとしてメッセージングを配信するための OpenShift ベースのシステムです。AMQ Online を使用すると、管理者は、クラウドまたはオンプレミスのいずれかで、クラウドネイティブのマルチテナントメッセージングサービスを設定できます。開発者は、Red Hat AMQ コンソールを使用してメッセージングをプロビジョニングできます。複数の開発チームが AMQ Online コンソールからブローカーとキューをプロビジョニングできます。各チームがソフトウェアをインストール、設定、デプロイメント、保守、またはパッチを適用する必要はありません。

詳細は 、OpenShift での AMQ Online の使用 を参照してください。

2.4. AMQ Clients

AMQ Clients は AMQP 1.0 および JMS クライアント、アダプター、およびライブラリーのスイートです。これには、JMS 2.0 のサポートおよび既存のアプリケーションへのインテグレーションを可能にする新しいイベント駆動型 API が含まれます。

詳細は、AMQ Clients の概要 を参照してください。

AMQP クライアント

JMS クライアント

アダプターおよびライブラリー

2.5. コンポーネントの互換性

以下の表は、AMQ コンポーネントのサポートされている言語、プラットフォーム、およびプロトコルを示しています。同じプロトコルをサポートするコンポーネントは、言語やプラットフォームが異なる場合でも相互運用できることに注意してください。たとえば、AMQ Python は AMQ JMS と通信できます。

表2.1 AMQ コンポーネントの互換性

コンポーネント言語プラットフォームプロトコル

AMQ Broker

-

JVM

AMQP 1.0、MQTT、OpenWire、STOMP、Core Protocol

AMQ Interconnect

-

Linux

AMQP 1.0

AMQ Online

-

OpenShift

AMQP 1.0

AMQ C++

C++

Linux、Windows

AMQP 1.0

AMQ JavaScript

JavaScript

Node.js、ブラウザー

AMQP 1.0

AMQ JMS

Java

JVM

AMQP 1.0

AMQ .NET

C#

.NET

AMQP 1.0

AMQ Python

Python

Linux

AMQP 1.0

AMQ Ruby

Ruby

Linux

AMQP 1.0

AMQ Spring Boot Starter

Java

JVM

AMQP 1.0

AMQ Core Protocol JMS

Java

JVM

Core Protocol

AMQ OpenWire JMS

Java

JVM

OpenWire

AMQ JMS Pool

Java

JVM

-

詳細は、Red Hat AMQ 7 Supported Configurations を参照してください。

第3章 一般的なデプロイメントパターン

Red Hat AMQ 7 は、さまざまなトポロジーで設定できます。以下は、AMQ コンポーネントを使用して実装できる一般的なデプロイメントパターンの一部です。

3.1. 中央ブローカー

中央ブローカーパターンは、比較的簡単に設定でき、維持することができます。また、これは比較的堅牢です。ルートは通常ローカルです。これは、追加されたノード数に関係なく、ブローカーとそのクライアントは常に互いに 1 ネットワークホップ内にあるためです。このパターンは ハブとスポーク とも呼ばれ、中央ブローカーがハブに、クライアントがスポークに、それぞれ相当します。

図3.1 中央ブローカーパターン

中央ブローカーパターン

重要な要素は中央のブローカーノードだけです。メンテナーンスの作業のフォーカスとして、このブローカーをクライアントで利用可能にすることになります。

3.2. ルーティング対応メッセージング

メッセージをリモートの宛先にルーティングする場合、ブローカーはそれらをローカルキューに保存してから宛先に転送します。ただし、アプリケーションがリクエストおよび応答メッセージをリアルタイムで送信することを要求し、ブローカーストアと転送メッセージを持つことで大きなコストがかかる場合があります。AMQ では、ブローカーの代わりにルーターを使用して、このようなコストを回避することができます。ブローカーとは異なり、ルーターはメッセージを宛先に転送する前に保存しません。その代わりに、ライトウェイトなパイプとして動作し、2 つのエンドポイントを直接接続します。

図3.2 ブローカーレスルーティング対応メッセージングパターン

ブローカーレスルーティング対応メッセージングパターン

3.3. 高可用性ブローカー

クライアントがブローカーを使用できるようにするには、高可用性 (HA) のマスター/スレーブペアをデプロイして、バックアップグループを作成します。たとえば、2 つのノードに 2 つのマスター/スレーブグループをデプロイできます。このようなデプロイメントは、以下の図のように、アクティブな各ブローカーのバックアップを提供します。

図3.3 マスター/スレーブペア

マスター/スレーブペア

通常の運用条件では 1 つのマスターブローカーが各ノード (物理サーバーまたは仮想マシンのいずれか) でアクティブになります。1 つのノードに障害が発生すると、他のノード上のスレーブが引き継ぎます。結果として、同じ正常なノードに 2 つのアクティブなブローカーが存在します。

マスター/スレーブペアをデプロイすることで、このようなバックアップグループのネットワーク全体をスケールアウトすることができます。このタイプの大規模なデプロイメントは、メッセージ処理の負荷を多くのブローカーに分散する場合に便利です。以下の図のブローカーネットワークは、8 つのノードに分散される 8 つのマスター/スレーブグループで設定されます。

図3.4 マスター/スレーブネットワーク

マスター/スレーブネットワーク

3.4. ロードバランサーの背後のルーターペア

ロードバランサーの背後に 2 つのルーターをデプロイすると、単一データセンターのデプロイメントの可用性、回復性、およびスケーラビリティーが向上します。エンドポイントは、ロードバランサーによってサポートされる既知の URL への接続を作成します。次に、ロードバランサーはルーター間で受信接続を分散し、接続とメッセージングの負荷が分散されるようにします。ルーターの 1 つが失敗すると、そのルーターに接続されているエンドポイントは残りのアクティブなルーターに再接続します。

図3.5 ロードバランサーの背後のルーターペア

ロードバランサーの背後にある 2 つのルーター

スケーラビリティーをさらに向上させるために、多くのルーター (たとえば 3 つまたは 4 つ) を使用することができます。各ルーターは、他のすべてのルーターに直接接続します。

3.5. DMZ のルーターペア

このデプロイメントアーキテクチャーでは、ルーターネットワークは、外部のクライアントとエンタープライズアプリケーションをホストするブローカーとの間の保護と分離のレイヤーを提供します。

図3.6 DMZ のルーターペア

DMZ 内の 2 つのルーター

DMZ トポロジーに関する重要事項

  • デプロイメント内の接続のセキュリティーは、外部クライアントに使用されるセキュリティーとは異なります。たとえば、お使いのデプロイメントでは、内部のセキュリティー用にプライベート認証局 (CA) を使用して認証用に各ルーターおよびブローカーに x.509 証明書を発行する一方、外部のユーザーは別のパブリック CA を使用する可能性があります。
  • エンタープライズと DMZ との間のルーター間接続は常に、セキュリティーを確保するためエンタープライズから DMZ に確立されます。したがって、外部からエンタープライズへの接続は許可されません。ただし、AMQP プロトコルは、接続を確立した後に双方向通信を有効にします。

3.6. 異なるデータセンターのルーターペア

AMQ コンポーネントのデプロイメントで、複数のロケーションにまたがるより複雑なトポロジーを使用できます。たとえば、負荷分散されたルーターのペアを、4 つのロケーションのそれぞれにデプロイすることが可能です。センターに 2 つのバックボーンのルーターを追加して、全ロケーション間の冗長な接続を提供する場合があります。以下の図は、複数のロケーションにまたがるデプロイメントの例です。

図3.7 複数の相互接続されたルーター

相互接続されたルーター

改訂日時:2023-01-28 11:51:30 +1000