オープンソースの Apache RocketMQ と比較して、Alibaba Cloud ApsaraMQ for RocketMQ は、高い安定性、セキュリティ、包括的な O&M (運用保守) システムを提供します。 より良いビジネス体験のために、オープンソースの RocketMQ クラスターを ApsaraMQ for RocketMQ に移行できます。 このトピックでは、ApsaraMQ for RocketMQ の移行ツールを使用して、セルフマネージドの Apache RocketMQ クラスターを ApsaraMQ for RocketMQ に移行する方法について説明します。
前提条件
ロール名: [AliyunServiceRoleForRMQMigration]
ポリシー: [AliyunServiceRolePolicyForRMQMigration]
説明: ApsaraMQ for RocketMQ による VPC へのアクセスを許可します。
注意事項
メッセージ移行段階において、[書き込み対象クラスターの冗長読み取り]の段階から [ターゲットクラスターの読み取りと書き込み]の段階に切り替える前に、ソースクラスター内のすべてのメッセージが消費され、保留中の遅延メッセージがないことを確認してください。 その後、はじめて[ターゲットクラスターの読み取りと書き込み]の段階に切り替えることができます。
移行タスクが完了するまで、セルフマネージドのオープンソース Apache RocketMQ クラスターを廃止しないでください。
移行プロセス
以下の図は、オープンソースの RocketMQ クラスターを ApsaraMQ for RocketMQ に移行するプロセスを示しています。
セルフマネージドのオープンソース RocketMQ クラスターのバージョンと機能の使用状況に基づいて、移行のリスクと互換性を評価します。 移行タスクの目標と範囲を確認します。
セルフマネージドクラスターのネットワークとノードの情報を入力します。 ApsaraMQ for RocketMQ は、トラフィック切り替え操作と検証チェックをサポートするために、必要最小限の権限でネットワーク接続を確立します。
ApsaraMQ for RocketMQ は、セルフマネージドクラスターからトピックとグループのメタデータを読み取り、移行先の ApsaraMQ for RocketMQ インスタンスに複製します。
移行範囲内のすべてのプロデューサーとコンシューマーを特定します。 プロデューサーとコンシューマーのコード内のエンドポイントを、ソースクラスターから移行先の ApsaraMQ for RocketMQ インスタンスに変更します。
トピックレベルで段階的にトラフィック切り替え操作を実行します。
移行タスクを完了し、セルフマネージドのオープンソース RocketMQ クラスターを廃止します。
手順1:移行評価
移行する前に、技術評価を実施し、ビジネス要件に基づいて移行範囲を定義します。 これにより、クラウド移行をバッチ単位で完了できます。
技術評価:セルフマネージド RocketMQ クラスターのクライアントと環境が移行要件を満たしているかどうかを判断し、移行前後の機能サポートを明確にするのに役立ちます。
移行範囲の確認:ビジネスの優先度とアプリケーションの結合度に基づいて、バッチ単位で移行することを推奨します。 バッチが安定した後、移行範囲を拡大し、徐々に移行タスク全体を完了できます。
技術評価
移行元の自己管理型 RocketMQ クラスターが次の要件を満たしていることを確認してください。いずれかの要件が満たされない場合は、チケットを起票して解決策を入手してください。
要件
説明
デプロイバージョン
Apache RocketMQ 5.x および 4.x サーバーバージョンがサポートされています。
ネットワーク要件
ソースクラスターは Alibaba Cloud VPC 環境にデプロイする必要があります。 オンプレミスのデータセンターにデプロイされている場合は、VPC プライベートアドレスからアクセスできる必要があります。
サポートされるリージョン
クラウド移行機能は、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (深圳)、中国 (張家口)、中国 (香港)、米国 (シリコンバレー)、シンガポール、日本 (東京) のリージョンでのみ利用可能です。
パラメーター制約
メッセージサイズ:
最大:4 MB。
メッセージ保持期間:
最小:24 時間
最大:720 時間
遅延メッセージの最大遅延時間:
サブスクリプションおよび従量課金 Standard Edition インスタンス、ならびに Serverless Standard および Professional Edition インスタンスは、最大 7 日の遅延をサポートします。
サブスクリプションおよび従量課金 Professional Edition および Platinum Edition インスタンスは、最大 40 日の遅延をサポートします。
その他のパラメーター制約については、「クォータと制限」をご参照ください。
SDK バージョンの要件:移行ソリューションは、変更を最小限に抑えるように設計されています。 ほとんどの場合、クライアント SDK のバージョンを直接アップグレードできます。 メジャーバージョンの変更には通常、新機能と安定性の最適化が含まれるため、移行中に SDK バージョンをアップグレードすることを推奨します。
SDK
言語
バージョン
アップグレードが必要か?
Apache RocketMQ Remoting SDK
次のコードは、Java SDK Maven の依存関係の例です。
<dependency> <groupId>org.apache.rocketmq</groupId> <artifactId>rocketmq-client</artifactId> <version>{version}</version> </dependency>エンドポイントは次の形式で設定されます。
producer.setNamesrvAddr("xxx:9876"); consumer.setNamesrvAddr("xxx:9876");
Java
5.x SDK
デフォルトで互換性があります。 アップグレードは不要です。
Java、C++
4.x SDK
ソースクラスターが
PullConsumer、DefaultLitePullConsumer、またはDefaultPullConsumerインターフェイスを使用している場合は、5.x シリーズの SDK にアップグレードする必要があります。 詳細については、「SDK リファレンスの概要」をご参照ください。説明RocketMQ 用の Flink コネクタを使用してメッセージを送受信する場合は、移行用に最新の SDK バージョンをコンパイルして使用することを推奨します。 詳細については、「rocketmq-flink」をご参照ください。
移行範囲
ApsaraMQ for RocketMQ は、トピックレベルの移行をサポートしており、ロールバック機能を備えた段階的なカナリアリリースが可能です。 このアプローチにより、大規模な変更のリスクを効果的に低減します。
移行を実行する前に、トピックのビジネス範囲を確認し、移行バッチを計画する必要があります。
トピックの選択:セルフマネージドクラスターレベルでトピックを選択し、ビジネスの優先度に基づいて移行バッチを計画します。 クリティカルでないサービスのトピックから始めることを推奨します。
上流および下流サービスとの調整:トピックを選択した後、これらのトピックを使用するすべての上流および下流アプリケーション (プロデューサーおよびコンシューマー) に、エンドポイントを切り替えるよう通知する必要があります。
重要トピック移行の影響を受けるすべての上流および下流アプリケーションに通知する必要があります。 アプリケーションのエンドポイントの切り替えに失敗すると、メッセージ消費の遅延などの問題が発生する可能性があります。
手順2:ネットワーク情報の設定
移行タスクを作成し、ソースのセルフマネージドクラスターのネットワーク情報を設定します。 ApsaraMQ for RocketMQ 移行ツールは、この情報を使用してソースクラスターからメタデータを読み取り、後続の移行タスクを管理します。
注意事項
最小権限の原則に基づき、ApsaraMQ for RocketMQ 移行ツールは、ソースのセルフマネージドクラスターから以下の情報にのみアクセスします。
トピックメタデータ設定
グループメタデータ設定
トピック動的ルート登録情報
コンシューマー接続情報とメッセージの蓄積状況
移行ツールは、ソースクラスターから他の情報にアクセスしたり、その設定に書き込み操作を行ったりすることはありません。 これにより、移行ツールがソースのセルフマネージドクラスターの運用に影響を与えることはありません。
ネットワーク情報を設定した後、次に進む前にその正確性を注意深く確認してください。 次に進むと、ネットワーク設定を変更することはできません。 変更を加えるには、新しいタスクを作成する必要があります。
操作手順
ApsaraMQ for RocketMQコンソールにログインします。
上部のナビゲーションバーで、ソースクラスターと移行先の ApsaraMQ for RocketMQ インスタンスが配置されているリージョンを選択します。左側のナビゲーションペインで、を選択します。
クラウドへの移行 ページで、タスクの作成 をクリックします。
移行タスクの作成 パネルでパラメーターを設定し、OK をクリックします。
パラメーターの詳細については、「ソースクラスターのネットワークパラメーター」をご参照ください。
クラウドへの移行 ウィザードの ネットワーク情報の設定 ページで、ソースのセルフマネージド RocketMQ クラスターのネットワーク情報を入力し、ネットワーク情報の設定 をクリックします。
パラメーターの詳細については、「ソースクラスターのネットワークパラメーター」をご参照ください。
設定が完了するのを待ちます。 ページに設定完了のメッセージが表示されたら、次へ をクリックします。
パラメーター
表 1. ソースクラスターのネットワークパラメーター
パラメーター | 説明 | 例 |
[ネットワークタイプ] | セルフマネージドのオープンソースクラスターがデプロイされているネットワーク環境です。
| [VPC クラスター] |
[クラスター名] | タスクを区別するために使用される、セルフマネージドのオープンソースクラスターのカスタム識別子です。 サービスリンクには影響しません。 | first |
[VPC] | セルフマネージドのオープンソースクラスターがデプロイされている VPC の ID です。 このパラメーターは、[ネットワークタイプ] が [VPC クラスター] に設定されている場合にのみ必要です。 | vpc-bp1mhd******24chrxn |
[vSwitch] | vSwitch の情報は、ApsaraMQ for RocketMQ 移行ツールがセルフマネージドのオープンソースクラスターにアクセスするためのネットワークチャネルを確立するためにのみ使用されます。 これは、クラスターがデプロイされている vSwitch を指定するものではありません。 以下のルールに従ってください。
このパラメーターは、[ネットワークタイプ] が [VPC クラスター] に設定されている場合にのみ必要です。 | vsw-bp1hejs******0los38rn |
[セキュリティグループ] | セルフマネージドクラスターの ECS インスタンスが属するセキュリティグループを選択することを推奨します。 異なるものを選択した場合は、選択したセキュリティグループのルールが移行先の ApsaraMQ for RocketMQ インスタンスノードへのアクセスを許可していることを確認してください。 このパラメーターは、[ネットワークタイプ] が [VPC クラスター] に設定されている場合にのみ必要です。 | sg-bp160q******vtcxvwl |
[NameServer アドレス] | セルフマネージドのオープンソースクラスターのネームサーバーアドレスです。 複数のアドレスはカンマ (,) またはセミコロン (;) で区切ります。 重要 移行するすべてのセルフマネージドクラスターのネームサーバー情報を設定する必要があります。 情報が欠落している場合、後続のステップで移行に必要なトピックを選択できません。 | 192.168.XX.XX:9876 |
[アクセス資格情報] |
| [ACL] |
[ユーザー名] | セルフマネージドのオープンソースクラスターの Admin アカウントです。 このパラメーターは、セルフマネージドのオープンソースクラスターで ACL が有効になっている場合にのみ必要です。 | admin |
[ユーザーパスワード] | セルフマネージドのオープンソースクラスターの Admin アカウントのパスワードです。 このパラメーターは、セルフマネージドのオープンソースクラスターで ACL が有効になっている場合にのみ必要です。 | ****** |
手順3:メタデータの移行
ネットワーク接続が確立された後、移行範囲に基づいて指定されたトピックとグループを選択し、メタデータの移行を完了します。
注意事項
ApsaraMQ for RocketMQ 移行ツールは、メタデータを移行する際、ソースのセルフマネージドクラスターからすべてのトピックとグループを動的に読み取って表示します。 現在の移行タスクに関連するトピックとグループのみを選択してください。
この手順は元に戻せません。 次のステップに進む前に、現在の移行範囲内のすべてのトピックとグループを移行したことを確認してください。 そうしないと、後で未移行のトピックを手動で追加する必要があります。
操作手順
移行ウィザードの メタデータの移行 ページで、トピックメタデータ タブをクリックします。
トピックリストで、移行したいトピックを選択し、メッセージのタイプ ドロップダウンリストから対応するトピックタイプを選択し、操作 列の 確認してインポート をクリックします。
複数のトピックを選択して 一括インポート をクリックすることもできます。
重要オープンソースの Apache RocketMQ 4.x にはメッセージタイプの概念がありません。 ApsaraMQ for RocketMQ は、トピックのメッセージタイプと実際のメッセージタイプの一貫性を検証します。 したがって、メタデータの移行中に、ビジネスシナリオに基づいてトピックのメッセージタイプを手動で入力する必要があります。
メッセージタイプを誤って選択した場合、移行後にメッセージの生成と消費に失敗します。トピックのメッセージタイプが不明な場合、またはトピックが混合メッセージタイプに使用されている場合は、チケットを起票してサポートを依頼してください。
グループメタデータ タブをクリックします。 グループリストで、移行したいグループを選択し、消費シーケンスのタイプ ドロップダウンリストからメッセージ消費の配信順序を選択し、操作 列の 確認してインポート をクリックします。
複数のグループを選択して 一括インポート をクリックすることもできます。
重要オープンソースの Apache RocketMQ 4.x シリーズ SDK では、メッセージの消費順序はクライアント側で設定されます。 ApsaraMQ for RocketMQ 5.x インスタンスでは、グループの消費順序はサーバー側で制御されます。 したがって、メタデータの移行中に、ビジネスシナリオに基づいてグループの消費順序タイプを手動で入力する必要があります。
誤った消費順序タイプを選択した場合、移行後にメッセージの消費順序が不正確になる可能性があります。グループの消費順序が不明な場合は、チケットを起票してサポートを依頼してください。
この移行タスクのすべてのトピックとグループがインポートされたことを確認した後、インポートが完了したら、次のステップに進みます をクリックします。
手順4:エンドポイントの変更
この段階では、本番サービスの移行準備をします。 関連するすべてのプロデューサーおよびコンシューマーアプリケーションのエンドポイントを、移行先の ApsaraMQ for RocketMQ 5.x インスタンスのエンドポイントに変更します。
注意事項
エンドポイントを変更した後、プロデューサーおよびコンシューマーアプリケーションを再起動します。 このステップでメッセージングアプリケーションを移行先の ApsaraMQ for RocketMQ インスタンスに接続しますが、移行ツールのバックエンドは依然としてトピックのトラフィックをソースのセルフマネージドクラスターにルーティングします。 したがって、この段階ではメッセージの送受信は影響を受けません。 メッセージングアプリケーションは任意の順序で切り替えることができます。
次のステップに進む前に、この移行に関与するすべてのプロデューサーおよびコンシューマーアプリケーションがエンドポイントを変更したことを確認してください。
エンドポイント変更の例
Apache RocketMQ Remoting プロトコル SDK の場合、SDK バージョンに基づいて以下の設定を実行します。
変更前:
producer.setNamesrvAddr("192.168.XX.XX:9876"); consumer.setNamesrvAddr("192.168.XX.XX:9876");変更後:
SDK バージョン >= 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
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);
操作手順
メッセージングアプリケーションのエンドポイント設定を変更し、アプリケーションを再起動した後、移行ウィザードの エンドポイントの交換 ページで 変更が完了したら、次のステップに進みます をクリックします。
手順5:メッセージングトラフィックの移行
メッセージングトラフィックを移行するには、各トピックのトラフィックを個別に切り替えて、読み取りおよび書き込みトラフィックを徐々に移行先インスタンスに移行する必要があります。
注意事項
トラフィック切り替え操作を実行する際は、各トピックの状態変更後にメッセージの生成と消費が正常に行われるかを監視してください。 例外が発生しない場合は、次の切り替え操作に進みます。 例外が発生した場合は、操作を直ちにロールバックできます。 例外の原因を特定して解決した後、トラフィック切り替え操作を再開できます。
移行タスクを完了する前に、移行タスクの範囲内のすべてのトピックのトラフィック切り替えが完了し、メッセージの送受信が例外なく安定していることを確認してください。 完了した移行タスクは変更できません。
トラフィック切り替えの段階
表 2. トラフィック切り替えの段階
段階 | 説明 | トラフィックトポロジー |
[読み取り / 書き込みソースクラスター] | メッセージ移行の初期段階です。
|
|
[書き込みソースクラスター冗長読み取り] |
|
|
[書き込み対象クラスターの冗長読み取り] |
この段階では、移行先インスタンスがメッセージの生成と消費の両方のトラフィックを処理します。 新しいメッセージングフローが正常であることを確認し、ソースクラスター内のメッセージが完全に消費されるのを待ちます。 重要 この段階では、[ターゲットクラスターの読み取りと書き込み]段階に切り替える前に、ソースクラスター内のすべてのメッセージが消費され、保留中の遅延メッセージがないことを確認してください。 |
|
[ターゲットクラスターの読み取りと書き込み] | 新しいメッセージングフローが期待どおりに動作し、ソースクラスターに蓄積されたすべてのメッセージが消費されたことを確認した後、トピックをこの状態に切り替えることができます。 この時点で、読み取りと書き込みの両方のトラフィックが移行先インスタンスにのみ送られ、移行は完了となります。
|
|
トラフィック切り替え
移行ウィザードの メッセージの移行 ページで、移行したいトピックを選択し、その検証ステータスを確認します。
ステータスが チェックに合格する の場合は、次のステップに進みます。
ステータスが チェックに合格する でない場合は、問題を解決してください。 操作 列の 再チェック をクリックして、チェックに合格してから次のステップに進みます。
各トラフィック切り替え段階で実行されるチェックについては、「検証チェック」をご参照ください。
ステータスが チェックに合格する でないが、チェック結果が移行の妨げにならないことを確認した場合は、指定されたトピックの 操作 列の チェックを無視する をクリックし、次のステップに進みます。
切り替えるトピックの 操作 列で、トラフィックの切り替えの確認 をクリックします。
表示されるダイアログボックスで、プロンプトを注意深く読み、確定 をクリックします。
トラフィック切り替えプロセスには 4 つの段階があります。 トピックの [トラフィック切り替えフェーズ] が [ターゲットクラスターの読み取りと書き込み] になるまで、各段階の切り替え操作を実行する必要があります。
各切り替え段階でのトピックの読み取りおよび書き込みトラフィックのステータスについては、「トラフィック切り替えの段階」をご参照ください。
この移行タスクのすべてのトピックのトラフィック切り替えが完了したことを確認した後、ページ下部の 移行が完了しました をクリックします。
関連操作
以下は、トラフィック切り替え中にメッセージ移行ページで利用可能なその他の操作です。
ロールバック
前の段階へのロールバック:移行中に意図しない結果が発生した場合、指定されたトピックのトラフィック切り替え段階を、最後に正常に動作していた段階にロールバックできます。 例外の原因をトラブルシューティングした後、後続の操作を決定できます。
初期段階へのロールバック:この方法は、トラフィック切り替え段階を強制的に初期状態、つまりトラフィック切り替えが始まる前のルーティング状態に戻します。 この方法は通常、緊急時の対応策として使用されます。
説明この方法には大幅な状態変更が伴います。 移行プロセス中に生成された未消費のメッセージが遅延したり、未処理のままになる可能性があります。
補足作成
メタデータ移行中にトピックを見逃した場合は、トラフィック切り替えタスク中にそれを追加できます。 そのためには、ApsaraMQ for RocketMQ 5.x インスタンスで、ソースクラスターのトピックと同じ名前のトピックを手動で作成する必要があります。
トラフィックの一括切り替え/一括ロールバック
トラフィック切り替えまたはロールバック操作を一括で実行します。
説明一括切り替えおよび一括ロールバックは、同じ [トラフィック切り替えフェーズ] にあるトピックにのみ適用されます。
切り替え段階の検証
表 3. 検証チェック
トラフィック切り替え段階 | 検証チェック |
[書き込みソースクラスター冗長読み取り]段階への切り替え |
|
[書き込み対象クラスターの冗長読み取り]段階への切り替え |
|
[ターゲットクラスターの読み取りと書き込み]段階への切り替え |
|
手順6:移行タスクの完了
注意事項
移行タスクを完了する前に、セルフマネージドのオープンソース RocketMQ クラスター内のすべての遅延メッセージが消費されたことを確認してください。
セルフマネージドのオープンソース RocketMQ クラスターは、移行タスクが完了した後にのみ廃止できます。
操作手順
クラウドへの移行 ページで、対象のタスクを選択し、操作 列の 詳細 をクリックします。
移行タスクの 詳細 ページで、移行が完了しました をクリックします。



