0%

nacos平滑迁移方案

一、背景

spring cloud netfix家族进入维护状态,后续也不再迭代更新

img

img

img

1. 业务背景

为防止注册中心对后续业务扩展形成束缚并阻碍其发展,同时为了优化项目架构,选择将注册中心从eureka切换至nacos

2. 技术背景

2.1. edas-sc-migration-starter

nacos架构和原理: https://developer.aliyun.com/ebook/36/10664?spm=a2c6h.26392459.ebook-detail.4.31b934e23Shydn eureka平滑迁移nacos章节

《Nacos架构&原理》使用edas-sc-migration-starter实现多注册和多订阅,通过两轮发布实现平滑迁移

2.2. nacos-sync

nacos-sync: https://nacos.io/zh-cn/docs/nacos-sync.html

NacosSync是一个支持多种注册中心的同步组件,通过nacos-sync实现eureka和nacos的双向注册实现平滑迁移

三、方案描述

1. 方案1

1.1. 概述

img

  • 通过引入 edas-sc-migration-starter 使得 Spring Cloud 应用支持多注册,这样确保原有系统 的应用可以调用 注册到 Nacos 中的服务。
  • 通过引入 edas-sc-migration-starter 并配置 RibbonClients Configuration 支持聚合订阅,使得迁移到 Nacos 中的应用可以调用原有系统的服务。
  • 迁移过程中,支持通过配置中心动态地修改订阅策略,支持通过 Endpoint 监控聚合订阅的详情,做到可配置可监控。

1.2. 详细说明

  1. 第一轮发布将所有服务双注册/订阅到nacos、eureka上
  2. 第二轮发布所有服务取消注册/订阅到eureka,仅在nacos注册/订阅
  3. 移除eureka server、config server、rabbitMQ

1.3. 方案优缺点

优点

  • 影响面仅在服务之间

缺点

  • 两轮发布存在一定工作量
  • 迁移周期较长
  • 长期不维护,自定义的健康检查端口在高版本spring有问题

2. 方案2

2.1. 概述

img

启动nacos-sync集群双向同步nacos和eureka服务列表

2.2. 详细说明

  1. 服务发布注册/订阅至nacos
  2. 移除eureka server、nacos-sync、config server、rabbitMQ

2.3. 方案优缺点

优点

  • 一轮发布
  • 专注于nacos升级

缺点

  • 影响面在集群层面

四、上线流程

  1. 上线前检查配置文件是否新增修改,如果有需要同步
  2. 部署nacos以及nacos-sync集群
  3. 发布spring-cloud-gateway和创建elk日志
  4. 修改nginx配置,逐步迁移isv、open、 portal等接口修改路由权重

img

  1. 运维使用nacos-encryptor进行加密,并将加密后的信息同步至nacos的env.properties中
  2. 新增【加密密钥】启动参数至腾讯云
  3. 创建所有服务eureka->nacos的同步任务
  4. 创建服务nacos->eureka的同步任务以及逐步上线服务
  5. 下线网关以及eureka、config server、nacos-sync、rabbitMQ

img

结语

以上就是从eureka平滑迁移至nacos的方案,以及方案间的优劣、上线步骤。哪其实我们在做的时候并不只是切换注册中心。

我们还对配置文件重新做了整理,抽象出env.yml文件作为环境变量配置文件,各服务新增${spring.application.name}-custom.properties配置文件用于存放独立部署环境的订制配置文件。

迁移过程中我们还将原业务网关从zuul切换到了spring-cloud-gateway

文章作者:xpp011

发布时间:2024年08月20日 - 11:08

原始链接:http://xpp011.cn/2024/08/20/461a0133.html

许可协议: 转载请保留原文链接及作者。