全部產品
Search
文件中心

Enterprise Distributed Application Service:將Dubbo應用平滑遷移到EDAS

更新時間:Jun 30, 2024

如果您的Dubbo應用已經部署在阿里雲上,那麼本文檔將向您介紹如何將應用平滑遷移到EDAS中,並實現基本的服務註冊與發現。如果您的Dubbo應用還未部署到阿里雲,請提交工單或聯絡EDAS技術支援人員為您提供完整的上雲及遷移到EDAS方案。

遷移到EDAS的價值

  • EDAS為應用部署提供了啟動參數靈活配置、流程可視化、服務優雅上下線和分批發布等功能,讓您的應用發布可配、可查、可控。

  • EDAS提供了服務發現與組態管理功能,您無需再自行營運Eureka、ZooKeeper、Consul等中介軟體組件,可以直接使用EDAS提供的商業版服務發現與組態管理。

  • EDAS控制台提供了統一的服務治理,目前支援查詢發布和消費的服務詳情。

  • EDAS提供了動態擴、縮容功能,可以根據流量高峰和低穀即時地為您的應用擴容和縮容。

  • EDAS提供了進階監控功能,除了支援基本的執行個體資訊查詢外,還支援微服務調用鏈查詢、系統調用拓撲圖、慢SQL查詢等進階監控功能。

  • EDAS提供限流降級功能,保證您的應用高可用。

  • EDAS提供了全鏈路灰階功能,滿足您的應用在迭代、更新時通過灰階進行小規模驗證的需求。

什麼是平滑遷移

如果您的Dubbo應用已經部署到生產環境並處於正常運行狀態中,此時想將應用遷移到EDAS享受完整的EDAS功能,那麼在遷移過程中,保證業務的平穩運行不中斷是第一要務,而保證應用平台運行不中斷遷移到EDAS即為平滑遷移。

說明

如果您的應用尚未在生產環境中運行,或者您可以接受停機遷移,則沒必要按照本文進行平滑遷移,可直接將應用在本地開發完再部署到EDAS,請參見開始使用EDAS

遷移流程

  1. (必選)遷移應用

    遷移的應用一般都是無狀態的,所以這一步是可以先進行。同時,本文將重點介紹如何遷移應用。

  2. (可選)遷移SLB或修改網域名稱配置

    在應用遷移完成後,您還需要遷移SLB或修改網域名稱配置。

    • SLB

      • 如果您的應用在遷移之前已經使用SLB,在應用遷移後,可以複用該SLB。

      • 如果您的應用在遷移之前沒有使用SLB,建議您在遷移完入口應用(如上圖所示的API Gateway)後,為該應用建立並綁定一個新的SLB。

    • 網域名稱

      • 如果遷移後的應用可以複用SLB,網域名稱配置也無需修改。

      • 如果遷移後的應用需要建立新的SLB並綁定到應用,則需要在網域名稱中添加新的SLB配置,並刪除原來不再使用的SLB,請參見網域名稱DNS修改

  3. 可選:遷移儲存和訊息佇列

    • 如果應用已經部署在阿里雲,儲存和訊息佇列也使用阿里雲相關產品(例如RDS、MQ等),則應用遷移完成後,之前的儲存和訊息佇列無需遷移。

    • 如果應用未部署在阿里雲,請加入釘群(釘群號:31723701)聯絡產品技術專家為您提供完整的上雲及遷移到EDAS方案。

本文將主要介紹如何遷移應用。如果您想通過一個Demo快速體驗平滑遷移的過程,可下載Demo,按照Readme運行一個遷移的範例。

遷移方案

遷移應用有兩種方案,切流遷移、雙註冊和雙訂閱遷移方案。這兩種方案都可以保證您的應用正常運行不中斷的完成遷移。

  • 切流遷移方案

    使用Dubbo將原有的服務註冊中心切換到EDAS ConfigServer,開發一套新的應用部署到EDAS,最後通過SLB和網域名稱配置來進行切流。

    如果您選擇此方案,那您可以參考使用Spring Boot開發Dubbo微服務應用開發應用,不需要再閱讀遷移應用的後續內容。

  • 雙註冊和雙訂閱遷移方案

    雙註冊和雙訂閱遷移方案是指在應用遷移時同時接入兩個註冊中心(原有註冊中心和EDAS註冊中心)以保證已遷移的應用和未遷移的應用之間的相互調用。

    • 已遷移的應用和未遷移的應用可以互相發現,從而實現互相調用,保證了業務的連續性。

    • 使用方式簡單,只需要添加依賴,並修改一行代碼,就可以實現雙註冊和雙訂閱。

    • 支援查看消費者服務調用列表的詳情,即時地查看到遷移的進度。

    • 支援在不重啟應用的情況下,動態地變更服務註冊的策略和服務訂閱的策略,只需要重啟一次應用就可以完成遷移。

遷移第一個應用

  1. 選擇最先遷移的應用。

    建議是從最下層Provider開始遷移。但如果調用鏈路太複雜,比較難分析,也可以任意選一個應用進行遷移。選擇完成後,即可參考下面的遷移步驟遷移第一個應用。

  2. 在應用程式中添加依賴並修改配置(雙註冊、雙訂閱)。

    為了能將您原來的應用託管到EDAS中,您需要在您的應用程式中添加相關依賴並修改配置。

    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>                                
    2. application.properties中添加註冊中心的地址。

      dubbo.registry.address = edas-migration://30.5.124.15:9999?service-registry=edas://127.0.0.1:8080,zookeeper://172.31.20.219:2181&reference-registry=zookeeper://172.31.20.219:2181&config-address=127.0.0.1:8848             
      說明

      如果是非Spring Boot應用,在dubbo.properties或者對應的Spring設定檔中配置。

      • edas-migration://30.5.124.15:9999

        多註冊中心的頭部可以不做更改,啟動的時候,如果記錄層級是WARN及以下,可能會拋一個WARN的日誌,因為Dubbo會對IP和連接埠做校正,可以忽略。

      • service-registry

        是服務註冊的註冊中心地址,預設會進行多註冊,寫入多個註冊中心地址。每個註冊中心都是標準的Dubbo註冊中心格式;多個用,分隔。其中ZooKeeper的地址172.31.20.219為執行個體,請使用真實的ZooKeeper地址和連接埠。`

      • reference-registry

        是服務訂閱的註冊中心地址,可以進行多註冊或者先註冊到老的註冊中心都可以。每個註冊中心都是標準的Dubbo註冊中心格式;多個用,分隔。

      • config-address

        是動態推送的地址,如果本地想進行嘗試,需要下載Nacos。EDAS會對這個地址進行轉換。

    3. 其他修改。

      對於非Spring Boot的Spring應用,將com.alibaba.edas.dubbo.migration.controller.EdasDubboRegistryRest加入到您的掃描路徑裡。

  3. 本地驗證。

    如果只想進行一次修改,則可以使用動態配置的方式。

    1. 準備工作。

    2. 檢查服務是否成功註冊。

      • 登入輕量配置中心,在服務提供者列表中查看對應的服務。

      • 登入ZooKeeper,查看服務註冊和消費資訊。

    3. (可選)登入Nacos,配置對應的服務註冊資訊。

      說明

      如果不需要動態配置的話,可以跳過此步驟。

      • DataIddubbo.registry.config

      • Group:對應Dubbo應用的名稱,applicationName,如dubbo-migration-demo-server。配置資訊是應用維度,所以應用程式名稱不能重複。

      • 配置內容:包含兩種,一種是應用層級,一種是針對執行個體的IP層級(多張網卡可能出現問題)。

        • 應用層級

          dubbo.reference.registry=edas://127.0.0.1:8080   ##註冊服務的註冊中心
          dubbo.service.registry=edas://127.0.0.1:8080,zookeeper:127.0.0.1:2181   ##訂閱服務的註冊中心                                                
        • 執行個體IP層級

          169.254.15.86.dubbo.reference.registry=edas://127.0.0.1:8080,zookeeper:127.0.0.1:2181
          169.254.15.86.dubbo.service.registry=edas://127.0.0.1:8080                                                

        當對叢集驗證的時候,可以先從執行個體IP層級,再從整個應用驗證這些配置是否生效。

    4. 查看應用調用是否正常,查看註冊中心的註冊訂閱關係。

      • Spring Boot 1.x版本:http://ip:port/dubboRegistry

      • Spring Boot 2.x版本:http://ip:port/actuator/dubboRegistry

  4. 將修改後的應用部署到EDAS中。

    您可以根據您的實際需求將應用部署到ECS叢集或Container ServiceKubernetes叢集中,在部署時也可以選擇通過控制台、工具等方式進行部屬。相關內容,請參見建立和部署應用概述建立和部署應用概述

    • 為了協助您節約成本,建議您繼續使用之前ECS,但需要將ECS匯入到EDAS中。具體操作,請參見使用控制台建立ECS叢集

      重要

      在匯入ECS的時候如果提示需要轉化後匯入,請對重要的資料做好備份。

    • 如果需要建立新的ECS、叢集等資源,請確保在原有VPC內建立,以保證遷移前後的應用網路互連,順利完成遷移。具體操作,請參見ECS資源管理概述

    • 在資料庫、緩衝、訊息佇列等產品中為新ECS配置IP白名單等,確保應用依賴的這些第三方組件可以正常訪問。

  5. 結果驗證。

    1. 查看業務是否正常。

    2. 查看服務訂閱監控。

      如果您的應用開啟了Spring Boot Actuator監控,那麼可以訪問Actuator來查看此應用訂閱的各服務的RibbonServerList的資訊。Actuator地址如下:

      • Spring Boot 1.x版本:http://ip:port/dubboRegistry

      • Spring Boot 2.x版本:http://ip:port/actuator/dubboRegistry

      • dubbo.orig.**表示應用中配置的註冊中心資訊。

      • dubbo.effective.**表示生效的註冊中心資訊。

遷移其它所有應用

依照遷移第一個應用的遷移步驟,依次將所有應用遷移到EDAS。

清理遷移配置

遷移完成後,刪除原有的註冊中心的配置和遷移過程專用的依賴edas-dubbo-migration-bom

修改對應的註冊中心地址,即將ZooKeeper的配置刪除,保證Consumer只從EDAS訂閱,Provider只在EDAS訂閱。有以下兩種方式:

  • 方式一:動態配置

    可以直接參考本地驗證裡的配置修改。

  • 方式二:手動修改

    當所有的應用都修改完成之後,修改應用的註冊中心地址,將訂閱的地址改為EDAS ConfigServer。

    dubbo.registry.address = edas-migration://30.5.XXX.XXX:9999?service-registry=edas://127.0.0.1:8080,zookeeper://172.31.20.219:2181&reference-registry=edas://127.0.0.1:8080&config-address=127.0.0.1:8848                   

    reference-registry的值從zookeeper://172.31.20.219:2181改為edas://127.0.0.1:8080。修改完成之後,即可部署應用。

    說明

    當應用遷移完成之後,如果不再使用ZooKeeper,需要從註冊中心配置中刪除zookeeper://172.31.20.219:2181,最後就變成了如下地址。

    dubbo.registry.address = edas://127.0.0.1:8080                        

雖然長期使用對您業務的穩定性沒有影響,但增加了Dubbo使用註冊中心的複雜性和出錯率,推薦您在遷移完畢後清理掉,然後在業務量較小的時間分批重啟應用。