NacosSync迁移用户手册

手册目标

  • 启动NacosSync服务
  • 通过一个简单的例子,演示如何将注册到Zookeeper的Dubbo客户端迁移到Nacos

系统需要

启动服务之前,你需要安装下面的服务:

获取安装包

有2种方式可以获得NacosSync的安装包:

  1. cd nacosSync/
  2. mvn clean package -U

目标文件的路径:

  1. nacos-sync/nacossync-distribution/target/nacosSync.${version}.zip

解压安装包之后,工程的文件目录结构:

  1. nacosSync
  2. ├── LICENSE
  3. ├── NOTICE
  4. ├── bin
  5. ├── nacosSync.sql
  6. ├── shutdown.sh
  7. └── startup.sh
  8. ├── conf
  9. ├── application.properties
  10. └── logback-spring.xml
  11. ├── logs
  12. └── nacosSync-server.${version}.jar

初始化DB

系统默认配置的数据库是MySql,也能支持其他的关系型数据库

  • 建库,缺省的数据库名字为“nacos_Sync”
  • 数据库表不需要单独创建,默认使用了hibernate的自动建表功能
  • 如果你的环境不支持自动建表,可以使用系统自带的sql脚本建表,脚本放在bin目录下

DB配置

DB的配置文件放在conf/application.properties中:

  1. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/nacos_sync?characterEncoding=utf8
  2. spring.datasource.username=root
  3. spring.datasource.password=root

启动服务器

  1. $ nacosSync/bin:
  2. sh startup.sh restart

检查系统状态

1.系统日志检查日志的路径在 nacosSync/logs/nacosSync.log,检查是否有异常信息2.检查系统端口(缺省的系统端口是8081,你可以自己定义在application.properties中)

  1. $netstat -ano|grep 8081
  2. tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN off (0.00/0/0)

控制台

访问路径:

  1. http://127.0.0.1:8081/#/serviceSync

image.png

如果检查没有问题,NacosSync已经正常启动了,NacosSync的部署结构:image.png

开始迁移

迁移信息

Dubbo服务的部署信息:image.png

迁移的服务:

Service NameVersionGroup Name
com.alibaba.nacos.api.DemoService1.0.0zk

添加注册中心集群信息

1.点击左侧导航栏中的“集群配置”按钮,新增加一个集群,先增加一个Zookeeper集群,选择集群类型为ZKimage.png

注意:集群名字可以自定义,但是一旦确认,不能被修改,否则基于此集群增加的任务,在NacosSync重启后,将不会恢复成功

2.同样的步骤,增加NacosSync集群image.png

添加完成后,可以在列表中查询到image.png

添加同步任务

1.增加一个同步任务,从Zookeeper集群同步到Nacos集群,同步的粒度是服务,Zookeeper集群则称为源集群,Nacos集群称为目标集群imagesd.png

添加完成之后,可以在服务同步列表中,查看已添加的同步任务:image.png

2.同步完成之后,检查下数据是否同步成功到Nacos集群,可以通过Nacos的控制台进行查询image.png

此刻,数据已经成功从Zookeeper集群同步到了Nacos集群,部署结构如下:

image.png

让Dubbo客户端连接到Nacos注册中心

Dubbo Consumer客户端迁移

Dubbo 已经支持Nacos注册中心,支持的版本为2.5+,需要增加一个Nacos注册中心的Dubbo扩展插件依赖:

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>dubbo-registry-nacos</artifactId>
  4. <version>0.0.2</version>
  5. </dependency>

增加Nacos客户端的依赖:

  1. <dependency>
  2. <groupId>com.alibaba.nacos</groupId>
  3. <artifactId>nacos-client</artifactId>
  4. <version>0.6.2</version>
  5. </dependency>

配置Dubbo Consumer的Dubbo配置文件,让客户端能够找到Nacos集群consumer.yaml

  1. spring:
  2. application:
  3. name: dubbo-consumer
  4. demo:
  5. service:
  6. version: 1.0.0
  7. group: zk
  8. dubbo:
  9. registry:
  10. address: nacos://127.0.0.1:8848

不需要修改代码,配置更新完毕之后 ,你就可以重启你的应用,使之生效了.

Consumer发布完成之后,目前的部署结构如下:image.png

Dubbo Provider迁移

在升级Provider之前,你需要确保该Provider发布的服务,都已经配置在NacosSync中,同步的方式为从Nacos同步到Zookeeper,因为Provider升级连接到Nacos之后,需要确保老的Dubbo Consumer客户端能够在Zookeeper上订阅到该Provider的地址,现在,我们增加一个同步任务:image.pngimage.png

注意:Nacos服务同步到Zookeeper,不需要填写版本号,你在选择源集群的时候,版本号的输入框会自动隐藏掉

同步任务完成后,你就可以升级Provider了,升级Provider的方法,参考升级Consumer的步骤.

新的部署结构

  • 在升级的过程中,会有新老版本的客户端同时存在,部署结构如下:
    image.png

  • 在所有的客户端迁移完成之后,部署结构如下:
    image.png

现在,Zookeeper集群,NacosSync集群就可以下线了.

注意事项

  • 同步任务添加之后,需要确保下服务是否成功同步到目标集群,可以通过目标集群的控制台进行查询
  • NacosSync支持高可用集群模式部署,你只需要把数据库配置成同一个即可
  • 如果梳理不清楚订阅和发布的服务,建议可以把服务都做双向同步
  • Dubbo客户端目前不支持Nacos的权重功能,如果你用到了权重功能,需要重新考虑一下方案是否合适