自己管理型の Apache RocketMQ クラスターを実行する場合、すべてのブローカーノードのパッチ適用、スケーリング、モニタリング、およびセキュリティ保護はお客様の責任となります。ApsaraMQ for RocketMQ は、フルマネージドのメッセージングサービスを提供することで、このオーバーヘッドを解消します。組み込みの移行ツールは、メタデータを同期し、トピックごとの段階的なスイッチオーバーを通じてトラフィックをルーティングし、すべてのステージでバッチ操作とロールバックをサポートすることで、中断を最小限に抑えながらクラスターを ApsaraMQ for RocketMQ インスタンスに移行します。
前提条件
開始する前に、以下が準備されていることを確認してください。
ApsaraMQ for RocketMQ 5.0 インスタンス。「インスタンスの作成」をご参照ください。
次の表で説明する、移行用のサービスリンクロール。「サービスリンクロール」をご参照ください。
項目 値 ロール名 AliyunServiceRoleForRMQMigration ポリシー AliyunServiceRolePolicyForRMQMigration 目的 移行中に ApsaraMQ for RocketMQ が Virtual Private Cloud (VPC) にアクセスすることを許可します
現在のクラスターの評価
開始する前に、移行元クラスターに互換性があることを確認し、移行範囲を計画してください。
移行元クラスターの要件
移行元の Apache RocketMQ クラスターは、以下の要件を満たす必要があります。満たさない場合は、してください。
| 要件 | 詳細 |
|---|---|
| ブローカーバージョン | Apache RocketMQ 4.x または 5.x |
| ネットワーク | VPC にデプロイされていること。オンプレミスにデプロイされている場合、クラスターは VPC からアクセス可能である必要があります。 |
| リージョン | 中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深セン)、中国 (張家口)、米国 (シリコンバレー)、またはシンガポール |
宛先インスタンスの制限
| パラメーター | 制限 |
|---|---|
| メッセージサイズ | 最大 4 MB |
| メッセージ保持期間 | 最小 24 時間から最大 720 時間 |
| スケジュールされたメッセージの遅延 | サブスクリプションおよび従量課金の Standard Edition、サーバーレスの Standard および Professional Edition:7 日間。サブスクリプションおよび従量課金の Professional Edition および Enterprise Platinum Edition:40 日間。 |
完全なリストについては、「クォータと制限」をご参照ください。
SDK の互換性
| SDK | 言語 | バージョン | アップグレードは必要か? |
|---|---|---|---|
| Apache RocketMQ Remoting SDK | Java | 5.x | いいえ。ApsaraMQ for RocketMQ と互換性あり。 |
| Apache RocketMQ Remoting SDK | Java、C++ | 4.x | はい、PullConsumer、DefaultLitePullConsumer、または DefaultPullConsumer が使用されている場合。5.x にアップグレードしてください。「SDK の概要」をご参照ください。 |
Remoting SDK は、以下の Maven 依存関係とエンドポイント形式を使用します。
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>{version}</version>
</dependency>producer.setNamesrvAddr("xxx:9876");
consumer.setNamesrvAddr("xxx:9876");RocketMQ Flink コネクタを介してメッセージを送受信する場合は、最新の SDK バージョン (コンパイルが必要) を使用してください。「rocketmq-flink」をご参照ください。
スケジュールされたメッセージとリトライメッセージ
移行元クラスターにスケジュールされたメッセージまたはリトライ待ちのメッセージが含まれているかどうかを確認してください。移行後、すべてのプロデューサーとコンシューマーの接続は ApsaraMQ for RocketMQ インスタンスに切り替わります。移行元クラスターに残っているスケジュールされたメッセージやリトライメッセージは消費されない可能性があります。移行元クラスターを廃止する前に、いくつかのコンシューマープロセスを実行し続けてこれらのメッセージを処理してください。
移行バッチの計画
移行ツールは、バッチ操作、カナリアリリース、およびロールバックを伴うトピックごとの移行をサポートしており、各変更の影響範囲を縮小します。
トピックの選択とバッチの計画:移行するトピックを特定し、バッチにグループ化します。重要度の低いビジネストピックから始めます。
上流および下流チームとの調整:選択したトピックを使用するすべてのプロデューサーおよびコンシューマーアプリケーションに通知します。すべてのアプリケーションはエンドポイントを更新する必要があります。
すべての上流および下流アプリケーションがエンドポイントを更新していることを確認してください。切り替えを行わないアプリケーションは、メッセージ消費の遅延を引き起こす可能性があります。
仕組み
移行は 5 つのステップに従って行われ、各ステップには組み込みの検証チェックとロールバックサポートが含まれています。

| ステップ | 発生内容 |
|---|---|
| 1. 移行の評価 | 移行元クラスターと宛先インスタンス間のバージョンと機能の互換性を検証します。各バッチで移行するトピックを定義します。 |
| 2. ネットワークの構成 | 移行元クラスターのネットワークとノードの詳細を提供します。移行ツールはこれらを使用して、最小権限での接続を介してクラスターのメタデータを読み取ります。 |
| 3. メタデータの移行 | 移行元クラスターからトピックとコンシューマーグループを選択し、そのメタデータを宛先インスタンスにインポートします。 |
| 4. エンドポイントの変更 | すべてのプロデューサーおよびコンシューマーアプリケーションのエンドポイントを、移行元クラスターのアドレスから宛先インスタンスのアドレスに更新します。 |
| 5. トラフィックの切り替え | トピックごとに段階的なトラフィック切り替えを実行し、読み取りおよび書き込みトラフィックを移行元クラスターから宛先インスタンスに移動します。 |
ネットワークの構成
移行タスクを作成し、移行元の Apache RocketMQ クラスターのネットワーク詳細を提供します。移行ツールはこれらの詳細を使用して、クラスターのメタデータを読み取り、トラフィックの切り替えを管理します。
移行ツールがアクセスするもの
移行ツールは、移行元クラスターから以下の情報にのみアクセスします (最小権限):
トピックメタデータ
コンシューマーグループメタデータ
トピックの動的ルーティング登録
コンシューマー接続とメッセージ蓄積状況
このツールは、他のクラスターデータにアクセスしたり、移行元クラスターに設定を書き込んだりすることはありません。
次に進む前にネットワーク構成を検証してください。次のステップに進むと、ネットワーク設定を修正するために戻ることはできません。ネットワーク構成を変更するには、新しい移行タスクを作成する必要があります。
操作手順
ApsaraMQ for RocketMQ コンソールにログインします。
上部のナビゲーションバーで、移行元クラスターと宛先インスタンスの両方が配置されているリージョンを選択します。左側のナビゲーションウィンドウで、RocketMQ Copilot > クラウドへの移行 を選択します。
クラウドへの移行 ページで、タスクの作成 をクリックします。
移行タスクの作成 パネルで、次の表で説明するパラメーターを設定し、OK をクリックします。
移行ウィザードの ネットワーク設定 ステップで、移行元の Apache RocketMQ クラスターのネットワーク詳細を入力し、ネットワークの構成 をクリックします。
ネットワーク構成が完了するのを待ってから、次へ をクリックします。
パラメーターリファレンス
| パラメーター | 説明 | 例 |
|---|---|---|
| クラスタータイプ | 移行元クラスターのネットワーク環境。インターネット接続クラスター:インターネット経由でデプロイされています。VPC 接続クラスター:Alibaba Cloud VPC にデプロイされています。 | VPC 接続クラスター |
| クラスター名 | 移行元クラスターを識別するためのカスタム名。表示目的でのみ使用されます。 | first |
| VPC | 移行元クラスターがデプロイされている VPC ID。VPC 接続クラスター の場合にのみ必須です。 | vpc-bp1mhd\*\*\*\*\*\*24chrxn |
| vSwitch | 移行ツールが移行元クラスターネットワークにアクセスできるようにする vSwitch。移行タスクリージョンでサポートされているゾーンの vSwitch を選択します。「リージョンとゾーン」をご参照ください。利用可能な vSwitch がない場合は、サポートされているゾーンに作成します。「vSwitch の作成と管理」をご参照ください。VPC 接続クラスター の場合にのみ必須です。 | vsw-bp1hejs\*\*\*\*\*\*0los38rn |
| セキュリティグループ | ネットワークアクセス用のセキュリティグループ。移行元クラスターを実行している Elastic Compute Service (ECS) インスタンスと同じセキュリティグループを使用します。異なるセキュリティグループを使用する場合は、そのルールが宛先インスタンスへのアクセスを許可していることを確認してください。VPC 接続クラスター の場合にのみ必須です。 | sg-bp160q\*\*\*\*\*\*vtcxvwl |
| ネームサーバーアドレス | 移行元クラスター内のすべてのネームサーバーの IP アドレス。複数のアドレスはカンマ (,) またはセミコロン (;) で区切ります。 | 192.168.XX.XX:9876 |
| アクセス認証情報 | N/A:アクセス制御リスト (ACL) が有効になっていません。ACL:ACL が有効になっています。管理者認証情報を提供してください。 | ACL |
| ユーザー名 | 管理者アカウント名。ACL が有効な場合にのみ必須です。 | admin |
| パスワード | 管理者アカウントのパスワード。ACL が有効な場合にのみ必須です。 | \*\*\*\*\*\* |
すべてのネームサーバーの IP アドレスを指定してください。アドレスが欠落していると、移行中にトピックが表示されない可能性があります。
メタデータの移行
移行計画に基づいて、移行するトピックとコンシューマーグループを選択します。移行ツールは、移行元クラスターからすべてのトピックとグループを読み取り、選択用に表示します。
このステップは、次に進むと戻ることができません。[次へ] をクリックする前に、現在の移行バッチのすべてのトピックとグループがインポートされていることを確認してください。欠落しているトピックは、後で手動で作成する必要があります。
操作手順
メタデータ移行 ステップで、トピックメタデータ タブをクリックします。
リストからトピックを選択し、ドロップダウンリストから正しい メッセージタイプ を選択して、確認してインポート をクリックします。一度に複数のトピックをインポートするには、それらを選択して バッチインポート をクリックします。
重要Apache RocketMQ 4.x では、トピックレベルでメッセージタイプが定義されていません。ApsaraMQ for RocketMQ は、割り当てたメッセージタイプがトピック内の実際のメッセージと一致することを検証します。アプリケーションロジックに基づいてタイプを選択してください。誤ったタイプを選択すると、移行後にメッセージの送受信に失敗します。メッセージタイプが不明な場合は、してください。
グループメタデータ タブをクリックします。コンシューマーグループを選択し、ドロップダウンリストから正しい 消費順序 を選択して、確認してインポート をクリックします。一度に複数のグループをインポートするには、それらを選択して バッチインポート をクリックします。
重要Apache RocketMQ 4.x SDK では、メッセージの消費順序はクライアント側で指定されます。ApsaraMQ for RocketMQ 5.x では、ブローカーがグループレベルで消費順序を制御します。アプリケーションの要件に基づいて順序を選択してください。順序が正しくないと、消費例外が発生します。不明な場合は、してください。
この移行バッチのすべてのトピックとグループがインポートされていることを確認してから、次へ をクリックします。
エンドポイントの変更
すべてのプロデューサーおよびコンシューマーアプリケーションのエンドポイントを、移行元クラスターのアドレスから移行先の ApsaraMQ for RocketMQ 5.x インスタンスのアドレスに更新します。このステップの間、移行ツールは移行元クラスターへのトラフィックのルーティングを継続するため、アプリケーションがエンドポイントを更新する順序に関係なく、メッセージングは正常に機能します。
次に進む前に
エンドポイントを変更した後、各アプリケーションを再起動して宛先インスタンスに接続します。
すべてのプロデューサーおよびコンシューマーアプリケーションがエンドポイントを更新していることを確認してください:
切り替えないプロデューサー:一部のメッセージの送信に失敗します。
切り替えないコンシューマー:メッセージが蓄積され、消費できなくなります。
エンドポイント変更の例
Apache RocketMQ Remoting SDK
変更前 (移行元クラスター):
producer.setNamesrvAddr("192.168.XX.XX:9876");
consumer.setNamesrvAddr("192.168.XX.XX:9876");SDK バージョン >= 4.5.1
変更後 (宛先インスタンス) -- バージョン 4.5.1 以降:
producer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080");
// vipChannelEnabled のデフォルトは false です。true に設定されている場合は、この行をコメントアウトしてください。
// producer.setVipChannelEnabled(false);
consumer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080");
// vipChannelEnabled のデフォルトは false です。true に設定されている場合は、この行をコメントアウトしてください。
// consumer.setVipChannelEnabled(false);SDK バージョン < 4.5.1
After(宛先インスタンス)-- 4.5.1 より前のバージョン:
producer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080");
// vipChannelEnabled のデフォルトは true です。false に設定してください。
producer.setVipChannelEnabled(false);
consumer.setNamesrvAddr("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080");
// vipChannelEnabled のデフォルトは true です。false に設定してください。
consumer.setVipChannelEnabled(false);Apache RocketMQ gRPC SDK
変更前:
ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
.setEndpoints("192.168.XX.XX:9876")
.setCredentialProvider(sessionCredentialsProvider)
.build();変更後:
ClientConfiguration clientConfiguration = ClientConfiguration.newBuilder()
.setEndpoints("rmq-cn-pe334******-vpc.cn-hangzhou.rmq.aliyuncs.com:8080")
.setCredentialProvider(sessionCredentialsProvider)
.build();操作手順
すべてのアプリケーションがエンドポイントを更新して再起動した後、エンドポイントの変更 ステップで 次へ をクリックします。
トラフィックの切り替え
トピックごとに読み取りおよび書き込みトラフィックを移行元クラスターから宛先インスタンスに切り替えます。トラフィックの切り替えは、トピックごとに 4 つの連続したステージを経て進行します。
次に進む前に
各ステージで、次に進む前にメッセージが正常に送受信されていることを確認してください。問題が発生した場合は、前のステージにロールバックしてトラブルシューティングを行ってください。
移行タスクを完了する前に、移行されたすべてのトピックのトラフィックを切り替え、正常な動作を確認してください。タスクが完了としてマークされた後、トラフィック切り替え設定は変更できません。
トラフィック切り替えステージ
各トピックは、以下の 4 つのステージを進行します。
| ステージ | 読み取りトラフィック | 書き込みトラフィック | 検証内容 |
|---|---|---|---|
| 移行元クラスターでの読み取りと書き込み (初期) | ソースクラスター | 移行元クラスター | 開始状態。操作は不要です。 |
| 移行元クラスターでの書き込み、両クラスターでの読み取り | 移行元および宛先クラスター | ソースクラスター | コンシューマーは両方のクラスターからメッセージを受信します。宛先での消費が正常に機能することを確認します。 |
| 宛先クラスターでの書き込み、両クラスターでの読み取り | 移行元および宛先クラスター | 宛先クラスター | プロデューサーは宛先に送信します。メッセージが正常に送受信されることを確認します。移行元クラスターに蓄積されたメッセージが完全に消費されるのを待ちます。 |
| 宛先クラスターでの読み取りと書き込み (最終) | 宛先クラスター | 宛先クラスター | このトピックの移行は完了です。すべてのトラフィックは宛先インスタンスを通過します。 |
各ステージのトラフィックトポロジー:
| ステージ | トポロジー |
|---|---|
| 移行元クラスターでの読み取りと書き込み | ![]() |
| 移行元クラスターでの書き込み、両クラスターでの読み取り | ![]() |
| 宛先クラスターでの書き込み、両クラスターでの読み取り | ![]() |
| 宛先クラスターでの読み取りと書き込み | ![]() |
各ステージでの検証チェック
| ステージ | 実行されるチェック |
|---|---|
| 移行元での書き込み、両方での読み取り | トピックが両方のクラスターに存在すること。権限が正しく付与されていること。クライアントが宛先クラスターに接続されていること。すべてのクライアントが宛先クラスターに接続されていること。 |
| 宛先での書き込み、両方での読み取り | 前のステージと同じチェック。 |
| 宛先での読み取りと書き込み | 以前のすべてのチェックに加えて、移行元クラスターでメッセージが生成されていないこと、および移行元クラスターにメッセージの蓄積がないこと。 |
操作手順
メッセージ移行 ステップで、移行するトピックを選択し、その検証ステータスを確認します。
チェック合格:次のステップに進みます。
不合格:チェック結果に基づいてトラブルシューティングを行い、再検証 をクリックしてチェックが合格するまで繰り返します。
不合格だが、ブロッキングではないことを確認済み:チェックを無視 をクリックして進みます。
操作 列で、トラフィックの切り替え をクリックします。
確認ダイアログで、OK をクリックします。
トラフィック切り替えステージ が 宛先クラスターでの読み取りと書き込み を表示するまで、各ステージでステップ 1 から 3 を繰り返します。
すべてのトピックが完全に切り替えられたら、ページ下部の 移行済み をクリックします。
追加操作
メッセージ移行 ページでは、以下の操作が利用できます。
ロールバック
前のステージにロールバック:トピックを移行が正常に機能していた最後のステージに戻します。再度進む前にトラブルシューティングを行ってください。
初期ステージにロールバック:元のルーティング状態に戻します。これは緊急のトラブルシューティングにのみ使用してください。
説明初期ステージにロールバックすると、以前のステージで生成された未消費のメッセージが遅延したり、処理できなくなったりする可能性があります。
トピックの作成:メタデータ移行中にトピックが選択されなかった場合、宛先の ApsaraMQ for RocketMQ 5.x インスタンスで直接作成します。
バッチトラフィック切り替え / バッチロールバック:一度に複数のトピックのトラフィックを切り替えたり、ロールバックしたりします。両方の操作は、同じトラフィック切り替えステージにあるトピックにのみ適用されます。



