Dubbo アプリケーションがすでに Alibaba Cloud にデプロイされている場合は、Serverless App Engine (SAE) に移行できます。このトピックでは、アプリケーションを SAE にスムーズに移行する方法について説明します。
ステップ 1:最初のアプリケーションを移行する
このトピックでは、デモアプリケーションを SAE にスムーズに移行する方法の例を示します。デモアプリケーションのダウンロード URL については、「デモ」をご参照ください。
アプリケーション移行の優先順位を決定します。
移行要件の高いアプリケーションを選択します。下位層の Provider から始めることをお勧めします。呼び出しチェーンが複雑すぎて分析できない場合は、任意のアプリケーションを移行対象として選択できます。
アプリケーションに依存関係を追加し、構成を変更します。
説明このトピックで説明する移行ソリューションは、二重登録および二重サブスクリプションソリューションです。
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.propertiesSAE レジストリの 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 アドレスとポートを使用してください。reference-registry
サービスがサブスクライブするレジストリのアドレス。複数の登録、または移行前のレジストリへの登録がサポートされています。
config-address
動的プッシュのアドレス。
その他の変更。
Spring Boot 以外の Spring アプリケーションの場合は、
com.alibaba.edas.dubbo.migration.controller.EdasDubboRegistryRestをスキャンパスに追加する必要があります。
ローカル検証。
このセクションでは、動的構成を例として使用します。
検証の準備。検証の前に、次の操作が完了していることを確認してください。
サービスが正常に登録されているかどうかを確認します。
軽量構成センターにログオンして、サービスプロバイダーリストでサービスを表示します。
ZooKeeper にログオンして、サービスの登録と消費に関する情報を表示します。
オプション: Nacos にログオンして、サービス登録情報を構成します。
説明動的構成が必要ない場合は、この手順をスキップできます。
パラメーター
説明
DataId
dubbo.registry.config に設定します。
グループ
対応する Dubbo アプリケーションの名前に設定します(例: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

アプリケーションを SAE にデプロイします。
実際の要件に基づいて、アプリケーションを SAE にデプロイします。詳細については、「アプリケーションのデプロイ」をご参照ください。
結果の検証。
ビジネスが正常に実行されているかどうかを確認します。
サービスサブスクリプションのモニタリングを表示します。
アプリケーションで Spring Boot Actuator が有効になっている場合は、Actuator にアクセスして、アプリケーションがサブスクライブしている各サービスの RibbonServerList 情報を表示できます。次の URL を使用して Actuator にアクセスできます。
Spring Boot 1.x: http://ip:port/dubboRegistry
Spring Boot 2.x: http://ip:port/actuator/dubboRegistry

次の表にパラメーターを示します。
dubbo.orig.**:アプリケーションで構成されているレジストリ情報。dubbo.orig.**:有効なレジストリ情報。
ステップ 2:他のアプリケーションを移行する
すべてのアプリケーションを 1 つずつ SAE に移行します。詳細については、「ステップ 1:最初のアプリケーションを移行する」をご参照ください。
ステップ 3:移行構成を削除する
移行が完了したら、元のレジストリ構成と移行固有の依存関係 edas-dubbo-migration-bom を削除します。
対応するレジストリアドレスを変更し(ZooKeeper 構成を削除する)、Consumer と Provider が SAE からのみサブスクライブするようにします。次の方法を使用できます。
方法 1:動的構成を使用する。詳細については、「ローカル検証」をご参照ください。
方法 2:構成を手動で変更する。
すべてのアプリケーションが変更されたら、アプリケーションのレジストリアドレスを変更し、サブスクリプションアドレスを SAE ConfigServer に変更します。
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