【Nacos】Nacos 双端版本升级实战手册

本文详细描述了如何将Nacos服务从1.1.4版本升级到2.2.4版本,包括服务端的Nginx配置调整、数据库结构更新、配置文件修改以及开启鉴权的过程。同时提供了客户端升级策略,特别是针对SpringBoot项目重写Nacos客户端源码以支持新版本和SSL连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

背景

由于原来使用的 Nacos 版本(1.1.4)存在安全漏洞,需要进行升级修复。经过查询后,决定将版本升级到2.2.4。

Nacos 服务共有三个:

  • 192.168.2.190:8848
  • 192.168.2.191:8848
  • 192.168.2.192:8848

步骤

  1. 服务端升级(不开鉴权)
  2. 客户端升级
  3. 服务端开启鉴权

说明:服务端升级到 2.2.4 版本,如果不需要开启鉴权,则客户端可以不升级,因为配置中心兼容支持 Nacos1.0 起的所有版本客户端,服务发现兼容 Nacos1.2 起所有版本客户端。
具体参考:https://nacos.io/zh-cn/docs/v2/upgrading/2.0.0-compatibility.html(FAQ)

一、服务端升级

1. 修改 Nginx 代理配置(nginx.conf)

说明:在1.1.4版本时,我们对 Nacos 服务端的协议进行了升级(即 http -> https),方式是通过 Nginx 进行代理转发,从 8848 转发到 8849 端口。而在 2.2.4 版本的 Nacos 中,新增了 gRPC 的通信方式,需要新增端口,因此这里在 nginx.conf 需要新增一些端口转发配置。
具体参考:https://nacos.io/zh-cn/docs/v2/upgrading/2.0.0-compatibility.html(新版本部署)

# 具体路径以实际为准,这里仅供参考
# 若不知道配置文件位置,可通过 history 或 find ./ -name "nginx.conf" 2> /dev/null 命令查找
# 备份配置文件
cp /home/appuser/nginx/conf/nginx.conf /home/appuser/nginx/conf/nginx.conf_20240114_bak

# 修改配置文件
vim /home/appuser/nginx/conf/nginx.conf

# 在 http{} 同层级下添加以下内容
stream {
   
    upstream nacos-tcp {
   
    	# IP 与所在服务器需对应
        server 192.168.2.190:9849;
    }
    server {
   
        listen 9848;
        proxy_pass nacos-tcp;
    }
}

# 检查配置修改是否正确
/home/appuser/nginx/sbin/nginx -t

# 重新加载配置文件
/home/appuser/nginx/sbin/nginx -s reload
2. 执行SQL

Nacos 2.x 版本相比 Nacos 1.x 版本,数据结构有所变更,以下是相应 SQL 脚本:

注意:SQL 脚本需在新版本启动前执行,否则将启动报错

ALTER TABLE nacos_config.config_info ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
ALTER TABLE nacos_config.config_info_beta ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
ALTER TABLE nacos_config.his_config_info ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';

CREATE TABLE nacos_config.`permissions` (
    `role` varchar(50) NOT NULL,
    `resource` varchar(255) NOT NULL,
    `action` varchar(8) NOT NULL,
    UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);
3. 修改配置文件

建议直接在本地修改好相应的配置文件之后,再压缩上传到服务器,避免配置文件修改不一致出现问题。

  • application.properties

  • ### 服务端端口号
    server.port=8849
    
    ### 使用数据库类型
    spring.datasource.platform=mysql
    db.num=1
    db.url.0=jdbc:mysql://192.168.2.193:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
    db.user.0=root
    db.password.0=root
    
    ### 是否开启鉴权(这里暂时不开启,因为客户端是1.1.4,开启后将会导致服务注册不了)
    nacos.core.auth.enabled=false
    
    ### 开启旧版本服务之间的鉴权方式,升级完成后关闭
    nacos.core.auth.enable.userAgentAuthWhite=true
    
    ### 白名单授权,用于标识来自其他nacos服务器的请求。(根据需要自行修改,需要保证每台nacos服务器都是一样配置)
    nacos.core.auth.server.identity.key=identityRegexp
    nacos.core.auth.server.identity.value=identityRegexp
    
    ### 用于生成accessToken的密钥(根据需要自行修改,需要保证每台nacos服务器都是一样配置)
    # 官方推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符
    nacos.core.auth.plugin.nacos.token.secret.key=aWRlbnRpdHlpZGVudGl0eWlkZW50aXR5aWRlbnRpdHlpZGVudGl0eQ==
    

    Nacos 2.2.4 配置文件中文版
    https://pan.quark.cn/s/5e2bf31b5b1e

  • cluster.conf

    192.168.2.190:8848
    192.168.2.191:8848
    192.168.2.192:8848
    
4. 升级服务端(依次升级)
## 上传安装包(可以通过rz命令或sftp上传)
rz

## 解压缩
unzip nacos-2.2.4.zip -d /home/appuser

## 停止旧服务
sh /home/appuser/nacos-1.1.4/bin/shutdown.sh

## 启动新服务
sh /home/appuser/nacos-2.2.4/bin/startup.sh

## 查看启动日志
tail -f /home/appuser/nacos-2.2.4/logs/start.out -n 10

## 若观察到 mybatis-plus 图标,并没有报错,即启动成功
## 登录nacos页面(https://192.168.0.190:8848/nacos)查看是否正常

二、客户端升级

据我了解,客户端升级有两种方式:

  • 第一种:直接升级 Spring Boot、Spring Cloud、Spring Cloud Alibaba 版本
  • 第二种:升级 Nacos
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正则表达式1951

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值