配置迁移

概述

如果你希望使用 Polaris 代替 Nacos 作为新的配置中心,Polaris 提供 polaris-sync方案:通过 server-to-server 的迁移方式,将 Nacos 的配置迁移至 Polaris。

准备Polaris服务端

需要预先安装好Polaris服务端,安装方式可参考:集群版安装

准备 polaris-sync

说明:

polaris-sync 是基于 Java 编写的程序,如果你希望在 VM 上运行 polaris-sync,则需要在 VM 上安装相关 Java 运行环境。

Java 版本最低要求 JDK8

需要下载 polaris-sync 的最新 release 版本:下载地址

下载完之后,将 polaris-sync-server-${version}.zip 进行解压

  1. wget https://github.com/polarismesh/polaris-sync/releases/download/${version}/polaris-sync-server-${version}.zip
  2. unzip polaris-sync-server-${version}.zip

完成上述步骤之后,进入 polaris-sync-server-${version}/conf 目录,可以看到两个配置文件,这里只需要关注 sync-config.json

  1. conf tree
  2. .
  3. ├── sync-config.json # 配置同步任务配置文件
  4. └── sync-registry.json # 服务同步任务配置文件

sync-config.json 配置

sync-config.json 是服务同步任务的配置文件,polaris-sync 启动之后会自动加载该配置文件,从中获取服务数据同步任务配置信息,并根据该信息创建对应的服务同步任务执行。

sync-config.json 配置文件的格式是 json,其配置内容主要由以下四个对象组成

  • tasks: 数组形式,定义的服务数据同步任务信息,即设置服务数据从那个源注册中心同步到目标注册中心
  • methods: 数组形式,定义服务数据同步的方式,当前支持 PULL 模式以及 WATCH 模式
  • health_check: 对象形式,定义是否需要对源注册中心以及目标注册中心进行健康检查,探测注册中心是否存活
  • report: 对象形式,定义 polaris-sync 在同步过程中产生的指标数据上报的目标位置

这里我们对 tasks 配置参数解析

参数 key类型名称示例|
namestring同步任务 ID,唯一标识nacos-to-polaris
enablebool同步任务是否开启true
sourceobject源配置中心信息NULL
source.namestring源注册中心实例别名nacos
source.typestring注册中心类型nacos
source.serverobject源配置中心服务端信息NULL
source.server.addresses[]string注册中心接入地址[“127.0.0.1:8848”]
source.server.userstring注册中心用户信息nacos
source.server.passwordstring注册中心用户密码信息nacos
source.server.tokenstring注册中心用户访问凭据 tokentoken-123
source.dbobject源配置中心数据库信息NULL
source.db.jdbc_urlstring数据库 jdbc 信息jdbc:mysql://127.0.0.1:3306/nacos
source.db.usernamestring数据库账户nacos
source.db.passwordstring配置数据库账户密码nacos
destinationobject目标配置中心信息NULL
destination.namestring目标配置中心实例别名nacos
destination.typestring目标配置中心类型nacos
destination.serverobject目标配置中心服务端信息NULL
destination.server.addresses[]string目标配置中心接入地址[“127.0.0.1:8848”]
destination.server.userstring目标配置中心用户信息nacos
destination.server.passwordstring目标配置中心用户密码信息nacos
destination.server.tokenstring目标配置中心用户访问凭据 tokentoken-123
destination.dbobject目标配置中心数据库信息NULL
destination.db.jdbc_urlstring数据库 jdbc 信息jdbc:mysql://127.0.0.1:3306/nacos
destination.db.usernamestring数据库账户nacos
destination.db.passwordstring配置数据库账户密码nacos
match[]object设置待同步的配置数据匹配规则[{}]
match[${index}].namespacestring待同步的服务命名空间的namespace
match[${index}].config_groupstring待同步的配置分组config_group

这里你可以参考 sync-config.json 的样例配置,根据你的实际情况进行调整 tasks 对象即可,examples/sync-config.json

说明:

  • nacos 默认命名空间下的配置数据,将同步到 polaris 中名称为 default 的命名空间
  • 当 nacos 为配置数据同步的目标注册中心时,如果 nacos 开启了鉴权,则必须配置 nacos 的 admin 账户,因为在同步服务时,polaris-sync 会主动的在 nacos 创建对应的命名空间以完成服务同步任务。

启动 polaris-sync

完成 sync-config.json 的配置之后,启动 polaris-sync 执行配置数据同步

  1. cd polaris-sync-server-0.3.0-beta
  2. bash bin/start.sh

验证

  • 启动 polaris-sync 之后,查看日志 loggers/polaris-sync.log 观察到有以下日志则同步任务正常运行
  1. [Polaris] success to send post http://127.0.0.1:8090/config/v1/configfiles/release, method POST
  • 登陆 nacos 控制台以及 polaris 控制台,查看配置是否同步到了 Polaris,以及在 Nacos 新增配置后,在 Polaris 控制台也能够实时看到。

    配置迁移 - 图1 配置迁移 - 图2

何时结束

当你的所有应用均默认从 Polaris 拉取配置后,则可以关闭 polaris-sync 进程结束配置数据同步,然后便可以关停 Nacos 服务。至此完成配置数据从 Nacos 迁移至 Polaris。