ご利用の Dubbo アプリケーションがすでに Alibaba Cloud 上にデプロイされている場合、それを Serverless App Engine (SAE) に移行できます。本トピックでは、アプリケーションを SAE にスムーズに移行する方法について説明します。
ステップ 1:最初のアプリケーションを移行
本トピックでは、デモアプリケーションを使用して移行手順を説明します。デモアプリケーションをダウンロードするには、「デモ」をご参照ください。
-
移行対象のアプリケーションを優先順位付けします。
呼び出しチェーン内で最も下位のプロバイダーから開始することを推奨します。呼び出しチェーンが複雑で分析が困難な場合は、任意のアプリケーションから開始してもかまいません。
-
アプリケーションに依存関係を追加し、設定を変更します。
説明本移行では、二重登録・二重サブスクリプション戦略を使用します。
-
pom.xml ファイルに
edas-dubbo-migration-bom依存関係を追加します。<dependency> <groupId>com.alibaba.edas</groupId> <artifactId>edas-dubbo-migration-bom</artifactId> <version>2.6.5.1</version> <type>pom</type> </dependency> -
application.properties ファイルに SAE サービスレジストリの IP アドレスを追加します。
dubbo.registry.address = edas-migration://192.168.XX.XX:9999?service-registry=edas://127.0.XX.XX:8080,zookeeper://192.168.XX.XX:2181&reference-registry=zookeeper://192.168.XX.XX:2181&config-address=127.0.XX.XX:8848重要Spring Boot 以外のアプリケーションの場合は、この設定を dubbo.properties ファイルまたは該当する Spring 設定ファイルで行ってください。
パラメーター
説明
edas-migration://192.168.XX.XX:9999
複数のサービスレジストリを使用する場合でも、ヘッダー部分は変更不要です。起動時に Dubbo が IP アドレスとポートを検証します。ログレベルが WARN 以下に設定されている場合、WARN ログメッセージが表示されることがありますが、これは無視してかまいません。
service-registry
サービス登録用のサービスレジストリアドレスです。複数のサービスレジストリアドレスをカンマ (
,) で区切って指定できます。各アドレスは標準的な Dubbo レジストリフォーマットに従う必要があります。例では、192.168.XX.XXが ZooKeeper アドレスです。実際の ZooKeeper の IP アドレスとポートに置き換えてください。reference-registry
サービスサブスクリプション用のサービスレジストリアドレスです。このパラメーターは複数のレジストリをサポートしており、移行前の元のサービスレジストリへのサブスクリプションも可能です。
config-address
動的構成をプッシュするためのアドレスです。
-
その他の変更を行います。
Spring Boot を使用しない Spring アプリケーションの場合は、スキャンパスに
com.alibaba.edas.dubbo.migration.controller.EdasDubboRegistryRestを追加してください。
-
-
ローカルでの検証を行います。
本セクションでは、動的構成を使用した例を示します。
-
検証を開始する前に、以下の手順を完了してください。
-
サービスが登録されていることを確認します。
-
軽量構成およびレジストリセンターにログインし、[Provider List] にサービスが存在するか確認します。
-
ZooKeeper にログインし、サービス登録および消費情報を確認します。
-
-
オプション: Nacos にログインし、サービス登録情報を構成します。
説明動的構成が不要な場合は、このステップをスキップできます。
パラメーター
説明
DataId
このパラメーターを dubbo.registry.config に設定します。
Group
このパラメーターを Dubbo アプリケーション名(applicationName で指定)に設定します。例:dubbo-migration-demo-server。構成はアプリケーションレベルで行われるため、アプリケーション名は一意である必要があります。
構成内容
-
アプリケーションレベル
dubbo.reference.registry=edas://127.0.XX.XX:8080 # サービスサブスクリプション用のサービスレジストリアドレス。 dubbo.service.registry=edas://127.0.XX.XX:8080,zookeeper:127.0.XX.XX:2181 # サービス登録用のサービスレジストリアドレス。 -
インスタンス IP アドレスレベル
192.168.XX.XX.dubbo.reference.registry=edas://127.0.XX.XX:8080,zookeeper:127.0.XX.XX:2181 192.168.XX.XX.dubbo.service.registry=edas://127.0.XX.XX:8080
クラスターを検証する場合は、まずインスタンス IP アドレスレベルで検証し、その後アプリケーションレベルで検証することを推奨します。
-
-
移行後のアプリケーション呼び出しが正常に機能することを確認し、サービスレジストリ内の登録およびサブスクリプション状態をチェックします。
-
Spring Boot 1.x: http://ip:port/dubboRegistry
-
Spring Boot 2.x: http://ip:port/actuator/dubboRegistry
上記エンドポイントのいずれかにアクセスした際に返されるサービスレジストリ構成情報の例は次のとおりです。
{ "dubbo.effective.reference.registry": [ "edas://127.0.xxx:8080" ], "dubbo.orig.reference.registry": [ "zookeeper://127.0.xxx:2181" ], "dubbo.orig.service.registry": [ "edas://127.0.xxx:8080", "zookeeper://127.0.xxx:2181" ], "dubbo.effective.service.registry": [ "edas://127.0.xxx:8080", "zookeeper://127.0.xxx:2181" ] } -
-
-
アプリケーションを SAE にデプロイします。
必要に応じてアプリケーションを SAE にデプロイします。詳細については、「アプリケーションデプロイ」をご参照ください。
-
結果を検証します。
-
ビジネスサービスが正常に機能することを確認します。
-
サービスサブスクリプションのモニタリングを確認します。
ご利用のアプリケーションで Spring Boot Actuator モニタリングが有効になっている場合、サブスクライブされたサービスの RibbonServerList 情報を表示するために Actuator エンドポイントにアクセスします。
-
Spring Boot 1.x: http://ip:port/dubboRegistry
-
Spring Boot 2.x: http://ip:port/actuator/dubboRegistry
{ "dubbo.effective.reference.registry": [ "edas://127.0.xxx:8080" ], "dubbo.orig.reference.registry": [ "zookeeper://127.0.xxx:2181" ], "dubbo.orig.service.registry": [ "edas://127.0.xxx:8080", "zookeeper://127.0.xxx:2181" ], "dubbo.effective.service.registry": [ "edas://127.0.xxx:8080", "zookeeper://127.0.xxx:2181" ] }パラメーターの説明:
-
dubbo.orig.**:アプリケーションで構成されたサービスレジストリ情報。 -
dubbo.effective.**:有効なサービスレジストリ情報。
-
-
ステップ 2:残りのすべてのアプリケーションを移行
残りのすべてのアプリケーションを順次 SAE に移行します。詳細については、「ステップ 1:最初のアプリケーションを移行」をご参照ください。
ステップ 3:移行構成のクリーンアップ
移行が完了したら、元のサービスレジストリ構成および移行専用の依存関係 edas-dubbo-migration-bom を削除します。
サービスレジストリアドレスを更新し、コンシューマーおよびプロバイダーが SAE のみからサブスクライブするようにします。これには ZooKeeper 構成の削除が含まれます。以下のいずれかの方法で行えます。
-
方法 1:動的構成を使用します。詳細については、「ローカルでの検証」セクションをご参照ください。
-
方法 2:手動で構成を変更します。
すべてのアプリケーションを更新した後、サービスレジストリアドレスを変更し、サブスクリプションアドレスを SAE Config Server に設定します。
dubbo.registry.address = edas-migration://192.168.XX.XX:9999?service-registry=edas://127.0.XX.XX:8080,zookeeper://192.168.XX.XX:2181&reference-registry=edas://127.0.XX.XX:8080&config-address=127.0.XX.XX:8848reference-registryの値をzookeeper://192.168.XX.XX:2181からedas://127.0.XX.XX:8080に変更し、アプリケーションをデプロイします。説明移行が完了後、
ZooKeeperを使用しない場合は、サービスレジストリ構成からzookeeper://192.168.XX.XX:2181を削除してください。古い ZooKeeper を引き続き使用してもビジネスの安定性には影響しませんが、Dubbo のサービスレジストリとのやり取りが複雑になり、エラーレートが増加する可能性があります。移行完了後は速やかに古い ZooKeeper 構成を削除し、オフピーク時間帯にバッチでアプリケーションを再起動することを推奨します。最終的なアドレス例は次のとおりです。
dubbo.registry.address = edas://127.0.XX.XX:8080