在開發應用時,可以使用Alibaba Cloud Toolkit(后文簡稱Cloud Toolkit)插件實現本地應用和部署在EDAS中的應用的相互調用,即端云互聯,幫助您提升開發效率。
前提條件
已安裝和配置Cloud Toolkit,請參見在IntelliJ IDEA中安裝和配置Cloud Toolkit。什么是端云互聯
端云互聯(也稱“端云聯調”)是一種使用安全通道連接本地應用與云端VPC網絡環境的開發方式,處于此模式下的本地應用將能正常訪問云端VPC內的資源(如微服務、數據庫、緩存、消息隊列等),云端VPC內微服務亦能調通本地應用所提供的服務。
處于端云互聯中的本地應用流量會通過本地通道服務進程轉至云端代理,再由云端代理相應轉至注冊中心、其他服務、數據庫等下游資源中,云端服務也通過代理和通道服務來訪問本地應用。端云互聯具有如下特性:
- 易用性:在使用過程中,您只需在IDE插件可視化界面中啟用端云互聯,配置SSH賬號并一鍵初始化,然后正常啟動應用即可。插件自動化幫您完成代理配置、通道拉起、請求轉發等工作,此過程無需任何人工操作,應用代碼無需任何修改。
- 可用性:啟用端云互聯后本地應用可正常訪問云端微服務、數據庫、緩存等資源,云端微服務亦能訪問本地服務,實現雙向互通。端云互聯適配Windows、Mac和Linux系統,支持Dubbo、SpringCloud和HSF等微服務框架,相對于同類產品可用性較高。
- 安全性:本地通道服務跟云端代理間基于SSH加密通道進行通信,無需擔心通信數據竊取。
使用場景
在云原生時代,開發測試環境部署在云端,本地無法正常啟動應用進行調試,由此帶來了研發效率的下降。端云互聯能夠通過IDE插件一鍵啟用本地應用,跟云端資源進行互聯互通,以便進行端云聯調,提升開發效率。下面為您介紹端云互聯常見的使用場景。
- 雙向互聯和單向訪問
雙向互聯:啟用端云互聯功能后,本地應用默認注冊到云端注冊中心并訂閱云端注冊中心的服務,本地應用中的服務可以和云端服務相互調用。
單向訪問:如果僅需要調用云端服務,不希望云端服務調用本地服務,可以選中只訂閱云端服務,不注冊本地服務。
- 全鏈路流控
全鏈路流控是EDAS提供的對服務流量進行細粒度控制的核心能力。通過全鏈路流控,您可在同一套開發環境中進行多特性開發且相互間不受干擾。例如,如下開發場景:
環境中包含HSF-A、HSF-B、HSF-C、HSF-D四個服務,白色框鏈路為穩定的基準環境,綠色框鏈路為正在開發測試的特性分支,通過全鏈路流控可以使得包含env=2的請求路由到特性分支環境中。而在本地也可以通過端云互聯來使得本地應用加入到特性分支環境中,如圖所示:
選中加入全鏈路流控,選擇本地服務歸屬應用和本地服務歸屬灰度分組,控制請求鏈路流向。通過全鏈路流控,您可在同一套開發環境中進行多特性開發且相互間不受干擾。
- 遠程調試
遠程調試是開發者在開發過程中經常使用的問題排查手段,通過遠程調試進行斷點調試可方便了解請求處理過程。而當服務部署到云上時,受限于安全要求和環境限制,往往不能直接在本地連接云上服務的調試端口。對于此場景,端云互聯提供了基于代理的遠程調試模式。安裝Cloud Toolkit插件后,打開運行配置界面,可配置Alibaba Cloud Remote Debug運行配置,如圖所示:
在實際場景中,您可根據目標IP及調試端口進行設置。保存配置后,即可以調試模式運行,通過提示來確認連接狀態。
環境隔離
在項目研發中,一般會區分開發、測試和生產等多套環境,并且在開發過程的不同階段,使用不同的環境。對于端云互聯,我們推薦您在開發或測試環境中使用,以提高研發生產力。但同時有必要對生產環境進行嚴格的安全控制,以避免數據泄露和影響服務穩定。這里,我們推薦結合專有網絡VPC和命名空間對不同環境進行隔離,來保證云上服務的穩定和安全。
開發環境和生產環境分別部署在兩個VPC中,這兩個環境相互物理隔離。而且開發環境的微服務和生產環境的微服務屬于不同命名空間,由注冊中心進行服務邏輯隔離。在開發環境VPC中,您可自由選擇一臺實例開放SSH,使用它來作為開發環境的代理。同時,我們也對本地應用歸屬的命名空間進行了安全管控,只有在控制臺上打開遠程調試開關后,本地應用才能選擇注冊到該命名空間去(默認命名空間除外)。此機制有效的防止本地應用注冊到生產命名空間而影響服務穩定。
配置代理
配置單級SSH代理
- 啟動IntelliJ IDEA。
- 在頂部菜單欄中選擇
- 在Settings對話框中選擇 。
- 在Proxy頁面中單擊AddProfile,生成一個空代理。
- 在Profile Detail區域右側單擊Add。
- 在代理配置對話框中設置SSH代理賬號及密碼,單擊OK。
參數 描述 代理類型 選擇SSH代理類型。 代理IP和端口 輸入代理機的IP和端口。 賬號 輸入代理機賬號。 密碼 輸入代理機密碼。
配置多級代理
對于安全要求極高的項目可能會限制對外開放SSH登錄,這種場景可利用端云互聯多級代理能力來構建符合安全合規的代理。
- 啟動IntelliJ IDEA。
- 在頂部菜單欄中選擇
- 在Settings對話框中選擇 。
- 在Proxy頁面中單擊AddProfile,生成一個空代理。說明 多級代理都是基于同一個Profile進行配置,同一個Profile下的代理配置同時生效,多個代理形成級聯。
- 配置SSH代理。
- 配置SOCKS代理。
配置端云互聯
- 啟動IntelliJ IDEA。
- 在頂部菜單欄,選擇 。
- 在Settings對話框,選擇 。
- 在Microservice對話框中配置端云互聯相關參數。
參數 描述 配置粒度 本地工程需要使用端云互聯功能的粒度,包含項目和模塊。 - 項目:當前工程使用統一的端云互聯配置。適用于單模塊工程或模塊間無配置差異的多模塊工程。
- 模塊:當前工程包含多個模塊,其中僅某個模塊需要使用端云互聯或不同模塊的端云互聯配置需求不同。如果需要為不同模塊配置端云互聯,選擇具體模塊,完成各自的端云互聯配置。
端云互聯 選中端云互聯,啟用端云互聯功能。 啟用端云互聯功能后,本地應用默認注冊到云端注冊中心并訂閱云端注冊中心的服務,本地應用中的服務可以和云端服務相互調用。
如果僅需要調用云端服務,不希望云端服務調用本地服務,可以選中只訂閱云端服務,不注冊本地服務。
產品 選擇企業級分布式應用服務(EDAS)。 端云互聯環境 設置需要調用的云端應用所在的地域和命名空間。除了默認命名空間外,其他命名空間下的應用需按照以下步驟手動打開允許遠程調試開關。 - 登錄EDAS控制臺。
- 在左側導航欄選擇 ,然后在頂部菜單欄選擇地域。
- 在命名空間列表中目標命名空間的操作列單擊編輯按鈕。
- 在編輯命名空間對話框中打開允許遠程調試開關。
SpringCloud服務端口 如果是Spring Cloud應用,則需在SpringCloud服務端口文本框內添加該應用的服務端口,其他類型應用不需要填寫。 代理 選擇代理機。關于代理配置的相關內容,請參見配置代理。 初始化代理... 初始化SSH代理機,配置SSH規則使得端云互聯生效。 說明 如果代理列表中最后一級SSH代理非root賬號,則會提示您提供root權限來進行配置,配置完成后即可正常使用。若您不希望插件幫您配置,也可手動配置代理,關于手動初始化代理的相關操作,請參見配置代理。加入全鏈路流控 選中加入全鏈路流控,選擇本地服務歸屬應用和本地服務歸屬灰度分組,控制請求鏈路流向。 說明 全鏈路流控是EDAS提供的對服務流量進行細粒度控制的核心能力。通過全鏈路流控,您可在同一套開發環境中進行多特性開發且相互間不受干擾。高級配置 選中自動關閉啟動提示,可設置應用啟動提示停留時間,單位毫秒。 一鍵診斷 端云互聯過程中,如果遇到問題,可以單擊一鍵診斷,排查etrans通道啟動異常和服務連接不通等問題。
- 單擊Apply,然后單擊OK。重要 如果使用EDAS專有云企業版,還需要執行以下步驟在Cloud Toolkit中配置Endpoint。Endpoint請聯系EDAS技術支持獲取。
- 在Preference(Filtered)對話框的左側導航欄,選擇 。
- 在Endpoint對話框設置Endpoint。配置完成后,單擊Apply and Close。
啟動本地應用進行端云互聯
啟動本地應用,如果當前狀態處于端云互聯狀態,那么會有如下提示:
并且,在啟動應用之后會啟動一個etrans的進程:
更多信息
- 在使用Cloud Toolkit實現端云互聯時,如果遇到相關問題,請參見端云互聯問題。
- 您可以在EDAS上代理購買ECS,具體操作,請參見創建ECS實例。
- 如果您想使用IntelliJ IDEA插件快速在EDAS上部署應用,請參見使用IntelliJ IDEA部署應用到EDAS。