首页 > 其他分享 >如何平稳地从nacos迁移到r-nacos?

如何平稳地从nacos迁移到r-nacos?

时间:2024-07-22 09:11:38浏览次数:8  
标签:RNACOS 平稳 配置 端口 nacos grpc 迁移

1. 引言

很多同学了解r-nacos特性后最开始只将r-nacos用于开发测试环境。

经过一段时间的使用后,部分同学有打算生产环境也从nacos迁移到r-nacos。

那么如何平衡地从nacos迁移到r-nacos呢?

r-nacos 简介:

r-nacos是一个用rust实现的nacos服务。相较于java nacos来说,是一个提供相同功能,启动更快、占用系统资源更小(初始内存小于10M)、性能更高、运行更稳定的服务。

r-nacos设计上完全兼容最新版本nacos面向client sdk 的协议(包含1.x的http OpenApi,和2.x的grpc协议), 支持使用nacos服务的应用平迁到 r-nacos。

2. 迁移计划

2.1 待迁移内容分析

迁移的目标已明确,在设计迁移计划前,我们需要先分析待迁移的数据。

从nacos迁移到r-nacos主要涉及4类数据:

  1. nacos鉴权用户数据
  2. 命名空间数据
  3. 配置数据
  4. 服务实例数据

nacos用户数据、命名空间数据与配置数据是持久化数据,需要事先完成设置与迁移。
服务实例数据是动态数据,切换后应该会自动注册,不需要事先迁移。

2.2 迁移阶段与步骤

我们可以把迁移分为3个阶段:

  1. 迁移前准备阶段;
  2. 迁移阶段;
  3. 迁移后收尾阶段;

一、迁移前准备

  1. 部署r-nacos,用于迁移前做数据迁移与数据录入。(如果nacos与r-nacos在同一台机器,可以用临时端口号启动r-nacos,等迁移时再更新端口号重启)
  2. 在r-nacos控制台录入应用依赖的用户信息,完成用户数据初始化。
  3. 在r-nacos控制台录入命名空间数据;
  4. 从nacos控制台按命名空间全量导出数据(每个命名空间会导出一个文件);然后分别把这部分配置数据通过r-nacos控制台导入对应命名空间中,完成配置数据迁移。

二、迁移中

数据迁移完成后即可开始切流迁移。

把应用请求流量切到r-nacos中,这一步不同的场景需要用不同的处理方式:

  1. 应用直接请求nacos服务场景:r-nacos需要和nacos在同一个机器替换它;需要先关闭nacos,再把r-nacos的端口改成原nacos端口启动,完成切换。
  2. 应用请求nginx后反向代理到nacos场景:更新nginx配置,把nacos反向代理地址更新为r-nacos地址,然后重新增加配置完成切换。

切流迁移完成后,注意观察应用与r-nacos的表现是否符合预期。

注意:就算目标是要开启鉴权,这个阶段r-naocs也不要启接口鉴权 (RNACOS_ENABLE_OPEN_API_AUTH=false),以防应用使用原nacos分配旧token请求被拦截。

三、迁移后收尾

完成迁移稳定运行一小段时间后,可以将nacos移除,只保留r-nacos。

如果需要对接口开启鉴权,则走以下操作:

a) 等应用旧token都过期(默认过期时间是5小时)都重新从r-nacos获取新token之后,再开启接口鉴权配置重启r-nacos(r-nacos可以秒级重启,应用几乎无感)。
b) 也可以分批重启应用强行其使用r-nacos token,之后再开启接口鉴权配置重启r-nacos。

至此完成从nacos迁移到r-nacos

3. 迁移案例

前面讲的是迁移操作步骤可能比较抽象,这里再补充两个具体迁移场景案例让读者更有体感。

3.1 应用服务直链单节点nacos的场景迁移方案

部署图:

nacos持久化内容:

nacos使用情况:

  1. 在10.0.24.9部署一台nacos,使用默认端口号8848,8948提供服务;
  2. nacos上设置两个命名空间pre,prod分别对预发、生产环境提供服务
  3. 有3个应用,每个应用2个实例使用nacos服务; 总共两套环境,其中一套环境共有3个配置文件,3个服务,6个实例;
  4. 应用使用的用户名:xxx_app_id ,密码: a07a6deb5e56

目标:
在同一台机器中部署r-nacos替换nacos提供服务,使用systemd方式部署

3.1.1 迁移步骤——迁移前

步骤1 、 在10.0.24.9使用临时端口8858部署r-nacos。
这里假设使用linux systemd方式部署。具体部署方式参考r-nacos说明文档,这里不展开。
关键配置项如下:

# r-nacos监听http端口,这里使用临时端口8858,后面切流时调整回来
RNACOS_HTTP_PORT=8858
# r-nacos监听grpc端口,grpc端口这里不配置,默认值:HTTP端口+1000
# RNACOS_GRPC_PORT=9858
# r-nacos独立控制台端口,这个没有端口冲突,可以直接使用正式端口
RNACOS_HTTP_CONSOLE_PORT=10848
RNACOS_ENABLE_OPEN_API_AUTH=false

注:如果是docker启动方式,配置端口不用改,只需改对应对外映射的端口号即可

步骤2 、初始化用户信息
访问http://10.0.24.9:10848/rnacos/进入控制台。
增加应用依赖用户,用户名:xxx_app_id ,密码: `a07a6deb5e56

步骤3、初始化命名空间

初始化命名空间 pre、prod

步骤4、迁移配置信息

  1. 从nacos导出配置

分别导出pre、prod命名空间下的配置

导出的文件名格式为:nacos_config_export_20240721230938.zip

注意:每次导出后记得改下文件名增加命名空间标记,以防导入时选错文件。

  1. 把配置导入r-nacos
    分别把上一步nacos导出的配置文件包导出到r-nacos pre、prod命名空间下的配置。

a) 进入r-nacos控制台->配置列表页,选择对应命名空间

b) 上传导入配置文件

导入后:

上面图中操作的是pre命名空间,prod命名空间也操作一遍,这里不展开。

3.1.2 迁移步骤——迁移中

步骤5、 完成数据初始化后关闭r-nacos,先把临时端口更新正式端口,方便后面可以直接启动r-nacos。

关闭r-nacos服务

systemctl stop rnacos

关键配置项如下:

properties
# r-nacos监听http端口
RNACOS_HTTP_PORT=8848
# r-nacos监听grpc端口,grpc端口这里不配置,默认值:HTTP端口+1000
# RNACOS_GRPC_PORT=9848
# r-nacos独立控制台端口
RNACOS_HTTP_CONSOLE_PORT=10848
# 切换过程中不开启接口鉴权
RNACOS_ENABLE_OPEN_API_AUTH=false

步骤6、关闭nacos

# 切换到nacos目录,执行以下命名关闭nacos
./bin/shutdown.sh

步骤7、启动r-nacos

配置信息在关闭nacos前已准备好,直接启动r-nacos服务:

systemctl start rnacos

3.1.3 迁移步骤——迁移后

步骤8、切流完成,观察应用与r-nacos确认其是否正常工作。

应用服务可通过上游应用页面访问看看是否正常。
r-nacos可能通过监控页面查询其是否被应用访问。

步骤9、开启r-nacos接口鉴权 (可选)

切流完成后过5个小时之后,开启r-nacos接口鉴权。

关键配置项如下:

properties
# r-nacos监听http端口
RNACOS_HTTP_PORT=8848
# r-nacos监听grpc端口,grpc端口这里不配置,默认值:HTTP端口+1000
# RNACOS_GRPC_PORT=9848
# r-nacos独立控制台端口
RNACOS_HTTP_CONSOLE_PORT=10848
# 开启接口鉴权
RNACOS_ENABLE_OPEN_API_AUTH=true

重启r-nacos服务:

systemctl start rnacos

至此,完成从nacos到r-nacos的迁移

3.2 应用服务通过nginx链接nacos场景迁移方案

部署图:

nacos内容和前一个场景一样,部署时中间多用了nginx代理提供服务。

通过nginx链接nacos,那么切换时只需要把nginx配置中原nacos地址切换为r-naocs地址,然后通过 nginx -s reload 重新加载配置规则即可完成切流。

3.2.1 迁移步骤——迁移前

步骤和前一个场景第1、2、3、4步一致,这里不展开。

3.2.2 迁移步骤——迁移中

步骤5、更新nginx配置,把原nacos地址切换为r-naocs地址。

原nginx配置

# nacos http
server {
    listen       8848;
    listen  [::]:8848;
    server_name  localhost;

    location /nacos {
        proxy_set_header Host $proxy_host;
        proxy_pass http://10.0.24.9:8848;
    }
}

# nacos grpc
server {
    listen       9848;
    listen  [::]:9848;
    server_name  localhost;

    location /nacos {
        grpc_pass grpc://10.0.24.9:9848;
    }
}

更新后的nginx配置

# nacos http
server {
    listen       8848;
    listen  [::]:8848;
    server_name  localhost;

    location /nacos {
        proxy_set_header Host $proxy_host;
        proxy_pass http://10.0.24.9:8858;
    }
}

# nacos grpc
server {
    listen       9848;
    listen  [::]:9848;
    server_name  localhost;

    location /nacos {
        grpc_pass grpc://10.0.24.9:9858;
    }
}

执行nginx -s reload 重新加载配置规则即可完成切流。

切换后:

3.2.3 迁移步骤——迁移后

步骤和前一个场景第8、9步一致,这里不展开。

总结

对于nacos迁移到r-nacos,分析待迁移数据项与划分好迁移各个阶段需要做的事项,可以设计出合适的迁移方案。

迁移可分在迁移前、迁移中、迁移后三个阶段,本文结合样例场景给出了较具体操作步骤。

如果上面的案例和自己的实际情况一致,可以考虑应用请求nacos前加一层nginx反向代理,之后再按案例2迁移即可。

标签:RNACOS,平稳,配置,端口,nacos,grpc,迁移
From: https://www.cnblogs.com/shizioo/p/18315302

相关文章

  • 迁移学习Transfer learning 与 元学习Meta-learning,二者的联系和差异
    基本概念:迁移学习tansferlearning迁移学习(tansferlearning):运用已有领域学到的知识来辅助新环境中的学习任务。新兴领域往往缺少大量训练数据,直接从头训练成本太高,而相关领域的知识学习是相似的,因此我们可以运用已有的相关知识(sourcedomain)迁移到新的学习任务(targetdomain)上......
  • 基于python的非平稳时间序列模型
    前言平稳时间序列指的是宽平稳时间序列,就是指时间序列的均值、方差和协方差等一二阶矩存在但不随时间改变,表现为时间的常数。若三个条件有一个不成立,那么就称该序列为非平稳时间序列。包括确定性趋势时间序列和随机性趋势时间序列。要想把非平稳的时间序列转化为平稳的时......
  • NebulaGraph 3.6的迁移​
    一.环境原IP目标IP迁移的服务备注192.168.11.20192.168.11.23nebula-metadnebula-graphdnebula-storaged服务部署目录/opt/nebulagraph数据存储目录/data/nebula192.168.11.21192.168.11.24192.168.11.22192.168.11.25二.迁移前的准备操作系统......
  • Nacos原理和应用
    文章目录Nacos安装与启动快速入门服务分级存储模型环境隔离Nacos原理Nacos安装与启动首先安装Nacos服务,Windows安装地址:https://github.com/alibaba/nacos/releases之后进入bin目录,使用命令行输入:startup.cmd-mstandalone此时出现下图就代表启动成功默......
  • 如何从 Oracle 迁移到 Greenplum 第二篇
    如何从Oracle迁移到Greenplum第二篇Greenplum中文社区Greenplum中文社区2020/04/3009:00阅读数2.7K本文被收录于专区数据库进入专区参与更多专题讨论  在上周和大家分享的《如何从Oracle迁移到Greenplum第一篇》中,我们介绍了Greenplum......
  • 详解Nacos集群搭建
    目录前言1.集群结构图 2.搭建集群2.1初始化数据库 2.2下载nacos 2.3配置Nacos2.4启动2.5nginx反向代理2.6优化前言在我们日常的开发当中,用的都是单点Nacos,这种模式,我们自己开发测试玩一玩还可以,但是到了企业的生产环境之下,你还这么玩的话,那肯定是要出......
  • 阿里云服务器高效部署Nacos:打造高可用服务发现与配置管理平台
    1.为什么用阿里云服务器部署nacos当我们考虑为何选择阿里云服务器来部署Nacos时,一个不可忽视的因素是成本效益。特别是当我们选择突发实例型服务器时,按月购买的成本相比其他云服务器提供商来说更为经济划算。然而,除了价格优势外,阿里云服务器还带来了另一个关键优势:那就是其内......
  • 自建elasticsearch迁移到阿里云
    迁移工具:elasticsearch-dump 前提:阿里云elasticsearch开启“自动创建索引” 一、安装elasticdump安装node.js。下载安装包。 wgethttps://nodejs.org/dist/v16.18.0/node-v16.18.0-linux-x64.tar.xz解压。 tar-xfnode-v16.18.0-linux-x64.tar......
  • 革新技术架构,华为云DTSE助力紫藤科技迁移上云经验分享
    本文分享自华为云社区《紫藤科技迁移上云,推动技术架构革新,探索业务增长新路径》,作者:HuaweiCloudDeveloper。天津紫藤科技是一家在2014年5月成立的公司,其注册地位于天津自贸实验区。该公司在新三板挂牌交易,是一家高新技术企业。天津紫藤科技汇聚了众多专家,覆盖企业管理、电子政务......
  • Stable Diffusion ControlNet垫图:IP-Adapter实现图片风格迁移
    IP-Adapter实现的SD垫图功能对我们的图片处理非常有用,后面我们会进行一系列IP-Adapter的应用分享,通过具体的实例真正看到IP-Adapter的强大。文章使用的AI工具SD整合包、各种模型插件、提示词、AI人工智能学习资料都已经打包好放在网盘中了,无需自行查找,有需要的小伙伴下方扫......