Eureka 迁移方案

服务迁移

原理说明

北极星对Eureka的API进行了全兼容,因此,业务可以把北极星集群作为一个Eureka节点,加入到Eureka原来的集群中,基于Eureka原生的同步协议进行新老注册中心的服务数据双向同步。

在这种迁移模式下, 用户可逐渐、分批次的将老集群中的eureka升级成北极星,升级过程对数据面不感知。新应用(使用Spring Cloud Tencent或其他北极星客户端),和存量应用(仍然使用Spring Cloud Netflix或者其他Eureka客户端),都可以接入到北极星完成注册发现,无需代码修改。

启动迁移

*** 安装北极星集群版 ***

需要先安装北极星集群版,可参考 集群版安装

*** 迁移相关的参数说明 ***

北极星通过eureka-apiserver实现了与开源标准eureka接口全兼容,用户如果对eureka进行了一些定制,需要手动调整eurekaeureka-apiserver的相关参数。

所有的eureka相关的参数都在polaris.yaml中,在apiservers.option下面进行配置:

参数名 含义 示例
listenIP eureka兼容的服务端监听IP 0.0.0.0
listenPort eureka兼容的服务端监听端口 8761
namespace 通过eureka接口注册及发现的服务节点的命名空间,由于eureka本身没有命名空间的概念,所以针对eureka的服务管理操作必须在北极星某个命名空间下进行 default
refreshInterval 全量服务实例缓存的刷新间隔,单位秒 10
deltaExpireInterval 增量实例缓存的刷新间隔,单位秒 60
peersToReplicate 需要进行复制的对端eureka服务端节点列表 - 9.15.15.5:8761
customValues 自定义配置,用户如果对eureka服务端进行了定制并影响了参数,则可以把相关的参数填上,比如定制了dataCenterInfo,则可以将新的dci信息填入,北极星服务端会按照配置的信息进行下发 见" 定制dataCenterInfo"

*** 往北极星服务端添加eureka地址 ***

  • 进入北极星集群中的其中一个节点,找到polaris.yaml配置文件,在apiservers.service-eureka.option下面,添加eureka服务端地址信息,用于做数据复制:
apiservers:
  - name: service-eureka
    option:
      ... // 其他配置
      peersToReplicate: // eureka服务端节点的地址列表
      - <eureka1 IP>:<eureka1 port>
      - <eureka2 IP>:<eureka2 port>
  • 重启北极星服务端。

*** 往eureka服务端添加北极星服务端地址 ***

  • 修改eureka服务端的配置,将北极星其中一个节点的地址,加入到原有的eureka集群中。
eureka:
  client:
    serviceUrl:
      defaultZone: http://<北极星服务端IP>:8761/eureka/
  • 重启Eureka服务端。

*** 定制dataCenterInfo ***

如果用户对eureka-server进行了定制,比如定制了<dataCenterInfo class="com.netflix.appinfo.AmazonInfo">,那么可以在北极星把这个配置项加入,即可下发带有定制后的DCI相关的服务数据。

apiservers:
  - name: service-eureka
    option:
      ... // 其他配置
      customValues:
        dataCenterInfoClass: "com.netflix.appinfo.AmazonInfo"
        dataCenterInfoName: "myOwn"

迁移完成

配置好迁移后,可以在北极星控制台能同时查看到注册在eureka的实例,以及注册到北极星的实例,相互之间可以正常访问。

从eureka同步到北极星的服务实例,会打入internal-eureka-replicate:true的标签。