MSE提供了托管版的Nacos,相比开源Nacos功能更强大更稳定,能帮助您免去运维Nacos集群的烦恼,更加聚焦业务本身的实现,同时MSE也提供了专业版的Nacos专家支持。本文介绍如何将Dubbo应用从开源Nacos平滑迁移至MSE。

前提条件

创建Nacos引擎

说明
  • 如果您的集群只需要在VPC内访问,那么只需要开通专有网络
  • 如果您的集群需要被其他VPC访问,那么您需要开通公网网络。公网访问地址需要配置白名单,配置内容置空表示能被任意的地址访问。相关操作,请参见设置白名单

背景信息

说明 为了更好地说明完整的场景,以部署在阿里云ACK集群上的一组应用为背景信息进行说明。如果您已充分了解注册中心迁移的场景,请参见迁移方案

最开始的业务形态

假设在ACK集群中,部署了Nacos Server和Consumer应用,通过注册中心去获取Provider服务的地址,并通过访问/sayHello/abc这个URL,返回服务提供者的端口号。服务调用
  1. 在阿里云ACK集群中,部署Consumer、Provider和Nacos Server应用。具体操作,请参见创建无状态工作负载Deployment部署服务
  2. 配置阿里云ACK集群的服务。配置服务
    • Consumer服务属于LoadBalancer类型,通过SLB,可以直接访问Consumer服务。
    • Nacos服务属于LoadBalancer类型,通过SLB,可以访问开源Nacos控制台。
    • Nacos Server服务属于NodePort类型,配置好后,Consumer应用和Provider应用可以通过http://nacos-server:8848/访问Nacos Server服务。
  3. 验证服务调用成功,并登录开源Nacos控制台可查看服务注册详情。Nacos控制台服务注册信息

模拟迁移过程

部署一个Consumer-new应用,注册到MSE上的Nacos,Consumer-new应用与Consumer应用使用了两个不同的标签。事实上,Consumer-new应用除了将开源Nacos的地址修改为MSE Nacos地址外,没有任何其他修改。部署consumer-new

同样,在阿里云ACK集群中配置一个负载均衡服务访问Consumer-new应用。

遇到的问题

Consumer-new应用无法调用Provider服务,MSE Nacos可以查询到Consumer-new应用节点,但开源Nacos上查询不到,原因是在开源Nacos并没有注册。

在实际业务中,如果新应用无法访问原有注册中心的应用,就无法顺利地完成注册中心的迁移,特别是应用规模比较大,调用链路比较复杂的时候,这个问题就更加明显,所以要先将应用迁移至MSE。

迁移方案

该迁移方案基于Java Agent技术,您只需要接入MSE,就能享受微服务的功能,无需修改任何代码和配置。详细的迁移架构图如下:dubbo应用迁移方案

步骤一:为集群安装MSE治理中心组件

  1. 登录容器服务控制台
  2. 在左侧导航栏单击集群,然后在集群列表页面单击目标集群名称。
  3. 在集群详情页面左侧导航栏选择应用 > 微服务治理
  4. 微服务治理页面单击安装安装mse pilot
  5. 安装对话框中单击确定

步骤二:为应用开启MSE服务治理

  1. 登录MSE治理中心控制台
  2. 在左侧导航栏选择微服务治理中心 > K8s集群列表
  3. K8s集群列表页面搜索框列表中选择集群名称集群ID,然后输入相应的关键字,单击搜索图标图标。
  4. 单击目标集群操作列的管理
  5. 集群详情页面命名空间列表区域,单击目标命名空间操作列下的开启微服务治理

步骤三:开启Eureka无缝迁移功能

  1. 登录容器服务控制台
  2. 在左侧导航栏单击集群,然后在集群列表页面单击目标集群名称。
  3. 在集群详情页面左侧导航栏选择工作负载 > 无状态,选择命名空间
  4. 在目标应用右侧单击编辑
  5. 编辑页面的环境变量区域单击新增,添加以下两条环境变量,然后单击更新
    Dubbo应用迁移至MSE Nacos

    新增环境变量说明如下:

    类型 变量名称 变量/变量引用
    自定义 enable_dubbo_extra_nacos_registry true
    说明 是否需要开启双注册订阅功能。
    自定义 extra_dubbo_registry_address mse-xxxx-p.nacos-ans.mse.aliyuncs.com
    说明 该变量值为MSE Nacos服务的地址。
    自定义 additional_nacos_namespace e5bdc7e1-xxxx-4e2b-906d-b47b8efeee8b
    说明 该配置选填,若不配置,则使用MSE Nacos默认命名空间。
    自定义 extra_dubbo_registry_port 8848
    说明 该变量值为MSE Nacos服务的端口号。
    自定义 enable_dubbo_original_registry true
    说明 是否继续注册开源注册中心。
说明 在实际迁移过程中,建议在创建新应用时就开启MSE并配置好环境变量,避免出现多次重启。

结果验证

验证服务注册结果

  • 登录Nacos Server控制台,查看服务注册实例信息:Nacos控制台实例信息
  • 登录MSE Nacos控制台,查查看服务注册实例信息:MSE Nacos注册信息

验证服务调用结果

在本文示例中,通过Consumer服务调用Provider服务,在浏览器中输入http://Consumer服务的外部端点地址/sayHello/abc,显示服务调用成功。服务调用成功

联系我们

当前迁移方案相关实现还未在MSE中全量发布,如需使用,欢迎您使用钉钉扫描下方的二维码或搜索钉钉群号34754806进行咨询。

联系我们