在开发应用时,可以使用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。