MSE提供了托管版的Nacos,包含比开源Nacos更强大更稳定的功能,能帮助您免去运维Nacos集群的烦恼,更加聚焦业务本身的实现,同时MSE也提供了专业版的Nacos专家支持。本文介绍如何将Spring Cloud应用从开源Consul平滑迁移至MSE。
前提条件
背景信息
为了更好地说明完整的场景,本文以部署在阿里云ACK集群上的一组应用为背景进行说明。如果您已充分了解注册中心迁移的场景,请参见迁移方案。
最开始的业务形态
假设在ACK集群中,部署了Provider和Consumer应用,Consumer服务通过注册中心去获取Provider服务的地址,并通过访问/user/rest这个URL,返回服务提供者的端口号。

- 在阿里云ACK集群中,部署Consumer、Provider和Consul应用。具体操作,请参见创建无状态工作负载Deployment。
- 配置阿里云ACK集群的服务。
- Consumer服务属于LoadBalancer类型,通过SLB,可以直接访问Consumer服务。
- Consul服务属于LoadBalancer类型,通过SLB,可以访问开源Consul控制台。
- Consul Server服务属于NodePort类型,配置好后,Consumer应用和Provider应用可以通过配置好后,通过
http://consul-server:8500
访问Consul Server服务。
- 验证服务调用成功,并登录开源Consul控制台可查看服务注册详情。
模拟迁移过程
部署一个Consumer-new应用,注册到MSE上的Nacos,Consumer-new应用与Consumer应用使用了两个不同的标签。事实上,Consumer-new应用除了将开源Consul的地址修改为MSE Nacos地址外,没有任何其他修改。

同样,在阿里云ACK集群中配置一个负载均衡服务访问Consumer-new应用。
遇到的问题
Consumer-new应用无法调用Provider服务,MSE Nacos可以查询到Consumer-new应用节点,但开源Consul上查询不到,原因是在开源Consul并没有注册。
在实际业务中,如果新应用无法访问原有注册中心的应用,就无法顺利地完成注册中心的迁移,特别是应用规模比较大,调用链路比较复杂的时候,这个问题就更加明显,所以要先将应用迁移至MSE。
迁移方案
MSE基于Java Agent技术,您只需要接入MSE,就能享受微服务的功能,无需修改任何代码和配置。详细的迁移架构图如下:

步骤一:为集群安装MSE治理中心组件并开启微服务治理
- 安装MSE微服务治理组件。
- 为应用开启微服务治理。
- 登录MSE治理中心控制台。
- 在左侧导航栏,选择操作列,单击管理。 。在目标集群
- 在集群详情页面,在目标命名空间操作列,单击开启微服务治理。然后单击确定。
步骤二:开启Consul无缝迁移功能
- 登录容器服务控制台。
- 在左侧导航栏,单击集群,然后在集群列表页面单击目标集群名称。
- 在左侧导航栏,选择命名空间。 ,选择
- 在目标应用右侧单击编辑。
- 在编辑页面的环境变量区域,单击新增,添加以下环境变量,然后单击更新。
新增环境变量说明如下:
类型 变量名称 变量/变量引用 自定义 additional_nacos_address mse-9xxxxx-p.nacos-ans.mse.aliyuncs.com:8848 说明 该变量值为MSE Nacos的地址。自定义 additional_nacos_namespace e5bdc7e1-xxxx-4e2b-906d-b47b8efeee8b 说明 该配置选填,若不配置,则使用MSE Nacos默认命名空间。
说明 在实际迁移过程中,建议在创建新应用时就开启MSE并配置好环境变量,避免出现多次重启。当前迁移方案相关实现还未在MSE中全量发布,如需使用,请加入钉群(钉群号:34754806)联系技术支持。
结果验证
验证服务注册结果
- 登录Consul Server控制台,查看服务注册实例信息:
登录MSE Nacos控制台,在服务列表页面,可查看服务注册实例信息。
验证服务调用结果
在本文示例中,通过Consumer-new服务调用Provider服务,在浏览器中输入http://Consumer-new服务的外部端点地址/user/rest,显示服务调用成功。
