すべてのプロダクト
Search
ドキュメントセンター

ApsaraMQ for RabbitMQ:オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ インスタンスに移行する

最終更新日:Jan 22, 2025

メッセージの蓄積やスプリットブレインの問題など、オープンソース RabbitMQ クラスタのペインポイントを解消し、高い同時実行性、分散ストレージ、柔軟なスケーリングを実現するために、オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ インスタンスに移行できます。このトピックでは、このタイプの移行の前提条件、手順、および使用上の注意について説明します。

使用上の注意

ApsaraMQ for RabbitMQ は、可用性の高い分散ストレージに基づいて開発された高度なメッセージサービスです。このサービスは AMQP 0-9-1 プロトコルに厳密に準拠していますが、単にオープンソース RabbitMQ のマネージドバージョンではありません。ApsaraMQ for RabbitMQ のアーキテクチャは、メッセージの蓄積によって引き起こされるメモリリークとブローカーの障害を防ぎ、分散システムのスプリットブレインの問題を解決します。ApsaraMQ for RabbitMQ は高いスケーラビリティを提供し、従量課金方式をサポートしています。これにより、サービスの弾力性が向上し、コストが削減されます。

オープンソース RabbitMQ と比較して、ApsaraMQ for RabbitMQ は特定の機能に対して異なる実装方法を使用しています。オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ インスタンスに移行する前に、技術的能力と費用対効果を評価して、ビジネス要件を満たすインスタンスタイプを選択する必要があります。

移行の評価

技術の評価

  • ApsaraMQ for RabbitMQ とオープンソース RabbitMQ は、機能、サービスとパフォーマンス、exchange、およびキューの点で異なります。オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ インスタンスに移行する前に、違いを確認し、ApsaraMQ for RabbitMQ が提供する機能が期待どおりか評価してください。ApsaraMQ for RabbitMQ とオープンソース RabbitMQ の違いについては、「ApsaraMQ for RabbitMQ とオープンソース RabbitMQ の比較」をご参照ください。

  • ApsaraMQ for RabbitMQ は、クラスタ、API 操作、および文字列文字に制限を課しています。ApsaraMQ for RabbitMQ を使用する場合、制限を超えることはできません。オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ インスタンスに移行する前に、制限がビジネス要件を満たしているかどうかを評価してください。詳細については、「インスタンスタイプ」をご参照ください。

コストの評価

ApsaraMQ for RabbitMQ は、さまざまなタイプのサブスクリプションインスタンスとサーバーレスインスタンスを提供しています。インスタンスタイプの違いについては、「インスタンスタイプ」をご参照ください。

サブスクリプション ApsaraMQ for RabbitMQ インスタンスと比較して、サーバーレス ApsaraMQ for RabbitMQ インスタンスは、スケーラビリティが高く、コストが低くなります。サーバーレスインスタンスの課金ルールについては、「サーバーレスインスタンスの課金」をご参照ください。

次の方法を使用して、オープンソース RabbitMQ クラスタのメッセージングリクエスト数、キュー数、およびメッセージ数を評価できます。

  • キュー数: オープンソース RabbitMQ コンソールの [概要] ページに移動し、[グローバルカウント] セクションでキューと exchange の数を確認します。image

  • メッセージングリクエスト数とメッセージ数

    • 方法 1: オープンソース RabbitMQ コンソールの [概要] ページに移動し、[メッセージレート] セクションの情報を確認して、発行、配信(手動 ack)、配信(自動 ack)、および再配信メトリックの合計値を計算します。image

    • 方法 2: Prometheus または Grafana ダッシュボードで、クラスタのクエリ/秒 (QPS) と送受信メッセージ数を確認します。

オープンソース RabbitMQ クラスタを ApsaraMQ for RabbitMQ インスタンスに移行する

メタデータの移行

メタデータの移行は、オープンソース RabbitMQ クラスタのメタデータをエクスポートしてから ApsaraMQ for RabbitMQ インスタンスにインポートするプロセスです。メタデータがインポートされると、ApsaraMQ for RabbitMQ は、インポートされたメタデータに基づいて、ApsaraMQ for RabbitMQ インスタンスに vhost、キュー、exchange、およびバインディングを作成します。その後、オープンソース RabbitMQ クラスタのメタデータが移行されます。詳細については、「オープンソース RabbitMQ クラスタのメタデータを ApsaraMQ for RabbitMQ インスタンスに移行する」をご参照ください。

ユーザー名とパスワードを作成し、権限を付与する

オープンソース RabbitMQ クライアントから ApsaraMQ for RabbitMQ ブローカーにアクセスする場合、認証用のユーザー名とパスワードを指定する必要があります。認証に合格した後でのみ、ApsaraMQ for RabbitMQ ブローカーにアクセスできます。オープンソース RabbitMQ のユーザー名とパスワードはユーザーが指定します。ApsaraMQ for RabbitMQ のユーザー名とパスワードは、Resource Access Management (RAM) が提供する AccessKey ペアを使用して生成できます。詳細については、「静的ユーザー名とパスワードを管理する」をご参照ください。

ネットワーク接続を確立する

ApsaraMQ for RabbitMQ は、Cloud Enterprise Network (CEN) を使用して Alibaba Cloud でネットワークを構築できる PrivateLink エンドポイントを提供します。詳細については、「PrivateLink エンドポイント」をご参照ください。

メッセージデータの移行

移行ソリューション

メッセージデータは、仮想ホストに基づいて Shovel プラグインを使用して移行されます。

メリット

  • データ損失なしにビジネスをスムーズに移行できます。

  • アプリケーション間呼び出しのメッシュトポロジを整理する必要はありません。

  • プロデューサーとコンシューマーの呼び出しチェーンを 1 つずつ移行する必要はありません。これは、循環呼び出しチェーンの移行に関連する問題を解決するのに役立ちます。

手順

  1. 仮想ホスト A のすべてのプロデューサーとコンシューマーを整理します。

  2. 仮想ホスト A のすべてのプロデューサーとコンシューマーを移行します。ApsaraMQ for RabbitMQ にアクセスするには、プロデューサーとコンシューマーの URL、ユーザー名、およびパスワードを変更する必要があります。

  3. オープンソース RabbitMQ クラスタの仮想ホスト A のすべてのキューのメッセージ蓄積を確認します。

  4. オープンソース RabbitMQ クラスタで Shovel プラグインを有効にします。蓄積されたメッセージを持つキューのための一時同期タスク Sync a を作成し、メッセージを ApsaraMQ for RabbitMQ インスタンスに転送します。一時同期タスクを構成するときは、オープンソース RabbitMQ クラスタのキューをソースとして指定し、ApsaraMQ for RabbitMQ インスタンスのキューを宛先として指定します。

  5. 同期タスク Sync b を使用して、オープンソース RabbitMQ クラスタの仮想ホスト B から仮想ホスト A にメッセージデータを移行する場合は、ApsaraMQ for RabbitMQ インスタンスのキューを Sync b の宛先として指定します。

  6. オープンソース RabbitMQ クラスタの仮想ホスト A のキューにメッセージが蓄積されているかどうかを確認します。すべての蓄積されたメッセージが ApsaraMQ for RabbitMQ インスタンスに移行された後、一時同期タスク Sync a を削除します。

  7. 上記の手順を実行すると、仮想ホスト A のメッセージデータが移行されます。同様の手順を実行して、他の仮想ホストのメッセージデータを移行できます。

参照

Shovel プラグインの詳細については、「Shovel Plugin」を参照してください。