本文通過類比真實的調用鏈路,為您示範如何自動實現Serverless 應用引擎 SAE(Serverless App Engine)本地開發環境與測試環境的流量隔離,方便您快速開發聯調,提高開發效率。
前提條件
在IntelliJ IDEA中安裝和配置Cloud Toolkit
在應用所在VPC內建立一台可使用SSH登入的ECS,用於建立端雲互聯通道。更多資訊,請參見通過控制台使用ECS執行個體(快捷版)。
重要ECS與應用必須處於同一VPC內。
SSH通道需要使用密碼方式登入,暫不支援使用金鑰組登入。
如果作業系統配置代理,可能會導致串連端雲互聯通道失敗。請關閉代理後重試。
背景資訊
以下圖中Spring Cloud架構的微服務應用為例,您無需修改任何業務代碼,只需設定流量標籤(Tag),通過端雲聯調,將流量通過不同的路徑分配到SAE測試環境或本地開發環境,自動實現流量隔離。
步驟一:將應用部署至SAE測試環境
部署Demo應用,分別命名為spring-cloud-zuul、spring-cloud-a、spring-cloud-b、spring-cloud-c。具體操作,請參見將應用的服務註冊與發現中心更改為Nacos。
建議使用鏡像方式或JAR包方式部署應用,並配置啟動參數-Dnacos.use.endpoint.parsing.rule=false和-Dnacos.use.cloud.namespace.parsing=false才能使用已購買的註冊中心。
步驟二:配置端雲互聯
啟動IntelliJ IDEA。
在頂部功能表列,選擇。
在Settings對話方塊,選擇。
在Microservice頁面,配置端雲互聯的相關參數。
Proxy:購買一台跟SAE應用在同一VPC下的ECS(帶公網IP)作為代理機器,添加至Proxy頁面。
Microservice:在Microservice頁面,配置代理和已購買的MSE註冊中心。
MSE:在MSE頁面,配置相關參數。
輸入License Key和App Name。
您可以登入SAE的Webshell,執行以下命令擷取License Key和App Name。登入Webshell的具體操作,請參見查看Webshell。
env | grep java輸出樣本如下:
JAVA_TOOL_OPTIONS=-javaagent:/home/admin/.opt/ArmsAgent/arms-bootstrap-1.7.0-SNAPSHOT.jar -Darms.licenseKey=iioe7jcnuk@a0bcdaec24f**** -Darms.appId=8641dbc9-8663-4c47-95f7-683fa6dd**** -Darms.agent.env=Serverless -Darms.agent.args= -Dprofiler.micro.service.canary.enable=true -Dprofiler.micro.service.metadata.report.enable=true -Dprofiler.micro.service.http.server.enable=true -Dmsc.appName=cn-shenzhen-test-sc-gateway-****** -Dmsc.licenseKey=iioe7jcnuk@460d62050fa****設定標籤。在Tag欄,輸入local。
下載Agent到本地。
單擊Apply,然後單擊OK。
啟動本地應用,驗證聯調。
在Info對話方塊如果看到端雲互聯成功啟用的提示,證明端雲互聯功能已生效。
步驟三:發起流量調用進行測試
如果您發往雲原生網關的Request是HTTP請求,您需要在請求的Header中添加x-mse-tag=[local],配置完成後流量會自動在指定的環境內完成閉環。
此處的Key為x-mse-tag是固定值,其參數值需要和環境標籤保持一致。
環境標籤配置完成後,使用curl命令發起流量調用請求,返回結果如下:
主鏈路:
curl http://47.106.XX.XX:8080/A/a調用結果:
A[10.0.1.160] -> B[10.0.1.161] -> C[10.0.1.162]分支鏈路:
curl http://47.106.XX.XX:8080/A/a \--header 'x-mse-tag: local'調用結果:
A[127.0.0.1] -> B[127.0.0.1] -> C[10.0.1.162]