本文通过模拟真实的调用链路,为您演示如何自动实现Serverless 应用引擎 SAE(Serverless App Engine)本地开发环境与测试环境的流量隔离,方便您快速开发联调,提高开发效率。
前提条件
- 在应用所在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。具体操作,请参见将Spring Cloud应用托管到SAE。
建议使用镜像方式或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]