我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Nacos版本升级

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Nacos版本升级

nacos 默认使用内嵌数据库 Derby,做持久化,我们也可以使用 外部MySQL 作为持久化服务! 在使用 MySQL 作数据库时,需要提前创建数据库和表;
官网简绍
在这里插入图片描述
☑ 部署部分,适用于直接部署Nacos2.0.0以上版本的用户。
☑ 升级部分,适用于从Nacos1.X版本平滑升级到Nacos2.0.0版本(以及2.0.0-BETA版本)的用户。Nacos2.0.0-ALPHA版本无法进行平滑升级,请勿参照本文档进行升级。
由于Nacos1.X和Nacos2.0的数据结构发生了变化,为了能够完成平滑升降级,需要将数据进行双写,分别生成Nacos1和Nacos2的数据结构进行存储。因此会对性能有一定影响。当集群升级并稳定运行后,可以关闭双写,关闭双写后将会失去平滑降级的功能。

在Nacos2.1.0版本后,默认关闭了双写能力,因此无法支持从Nacos1.X版本平滑升级到2.1.0的能力,若需要使用平滑升级能力,从Nacos1.X直接升级到Nacos2.1.0版本,需要在application.properties文件中设置配置nacos.core.support.upgrade.from.1x=true.

升级

为保证用户敏感配置数据的安全,Nacos 提供了配置加密的新特性。降低了用户使用的风险,也不需要再对配置进行单独的加密处理。
前提条件
• 版本:
老版本暂时不兼容,目前只基于2.x版本进行了改造,推荐版本 > 2.0.4。
• 内嵌数据库启动:
数据库表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。
如果之前使用过内嵌数据库的单机模式启动,则需要删除 nacos/data 文件夹,在重新启动会重新创建表。
• MySQL启动:
数据库表 config_info、config_info_beta、his_config_info中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。
对于目前已经搭建好的 Nacos 使用以下 sql 将字段添加到对应的表中:

ALTER TABLE table_name ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥'

实例

最新版Nacos的初始化SQL文件
一、Nacos 1.4.1升级到v2.1.0后启动报如下错误:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'memoryMonitor' defined in URL [jar:file:/home/nacos/target/nacacos-config-2.1.0.jar!/com/alibaba/nacos/config/server/monitor/MemoryMonitor.class]: Unsatisfied dependency expressed through constructor parameter 0; nested erk.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'asyncNotifyService': Unsatisfied dependency expressed through field 'dumpServicpringframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ver did not start because dumpservice bean construction failure :PreparedStatementCallback; bad SQL grammar [SELECT id,data_id,group_id,tenant_id,app_name,content,md5,gmt_modified,type,encrypted_data_key FROM config_info WHEIT ?,?]; nested exception is java.sql.SQLSyntaxErrorException: Unknown column 'encrypted_data_key' in 'field list'

二、解决方案:
看提示是数据表缺少encrypted_data_key字段,那就手动为据表添加该字段
为保证用户敏感配置数据的安全,Nacos 提供了配置加密的新特性。降低了用户使用的风险,也不需要再对配置进行单独的加密处理。
数据库表 config_info、config_info_beta、his_config_info 中需要新增字段 encrypted_data_key ,用来存储每一个配置项加密使用的秘钥。新版本的默认创建表的sql中已经添加该字段。

对于目前已经搭建好的 Nacos 使用以下 sql 将字段添加到对应的表中:

ALTER TABLE config_info ADD COLUMN `encrypted_data_key` text NOT NULL COMMENT '秘钥';alter table config_info_beta add column `config_info_beta` text NOT NULL COMMENT '秘钥';alter table his_config_info add column `config_info_beta` text NOT NULL COMMENT '秘钥';

三、主配置文件
/home/nacos/conf/application.properties

 1# spring 2server.servlet.contextPath=${SERVER_SERVLET_CONTEXTPATH:/nacos} 3server.contextPath=/nacos 4server.port=${NACOS_APPLICATION_PORT:8848} 5spring.datasource.platform=${SPRING_DATASOURCE_PLATFORM:""} 6nacos.cmdb.dumpTaskInterval=3600 7nacos.cmdb.eventTaskInterval=10 8nacos.cmdb.labelTaskInterval=300 9nacos.cmdb.loadDataAtStart=false10db.num=${MYSQL_DATABASE_NUM:1}11db.url.0=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}12db.url.1=jdbc:mysql://${MYSQL_SERVICE_HOST}:${MYSQL_SERVICE_PORT:3306}/${MYSQL_SERVICE_DB_NAME}?${MYSQL_SERVICE_DB_PARAM:characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false}13db.user=${MYSQL_SERVICE_USER}14db.password=${MYSQL_SERVICE_PASSWORD}15### The auth system to use, currently only 'nacos' is supported:16nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}171819### The token expiration in seconds:20nacos.core.auth.default.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}2122### The default token:23nacos.core.auth.default.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}2425### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.26nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}27nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}28nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}29nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}30server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}31server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D32# default current work dir33server.tomcat.basedir=34## spring security config35### turn off security36nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,*.css,*.js,*.html,*.map,*.svg,*.png,*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}37# metrics for elastic search38management.metrics.export.elastic.enabled=false39management.metrics.export.influx.enabled=false4041nacos.naming.distro.taskDispatchThreadCount=1042nacos.naming.distro.taskDispatchPeriod=20043nacos.naming.distro.batchSyncKeyCount=100044nacos.naming.distro.initDataRatio=0.945nacos.naming.distro.syncRetryDelay=500046nacos.naming.data.warmup=true

关闭双写

注意,关闭双写后无法在进行平滑降级,请先确认关闭前集群正确运行。

为了节省性能开销,当集群部署完成后,可以先观察一段时间运行情况,当确认无误后,可以关闭双写,从而释放性能,具体的关闭方式是通过API进行:

curl -X PUT 'localhost:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false'

关闭后可以从logs/naming-server.log日志中观察到Disable Double write, stop and clean v1.x cache and features字样。说明关闭双写。

插件化实现

通过 SPI 的机制抽象出加密和解密的操作,Nacos 默认提供 AES 的实现。用户也可以自定义加解密的实现方式。具体的实现在 nacos-plugin 仓库。
在 Nacos 服务端启动的时候就会加载所有依赖的加解密算法,然后通过发布配置的 dataId 的前缀来进行匹配是否需要加解密和使用的加解密算法。
客户端发布的配置会在<客户端>通过filter完成加解密,也就是配置在传输过程中都是密文的。而控制台发布的配置会在服务端进行处理。

如何使用

Nacos 加解密插件是可插拔的,有没有都不影响 Nacos 的核心功能的运行。如果想要使用 Naocs 的配置加解密功能需要单独引用加密算法的实现。客户端和服务端都通过添加以下依赖来使用 AES 加解密算法,服务端推荐添加到 config 模块下。

    com.alibaba.nacos    nacos-aes-encryption-plugin    ${nacos-aes-encryption-plugin.version}

${nacos-aes-encryption-plugin.version} 可以获取插件的最新版本。目前插件需要自己编译,并未上传至maven中央仓库

如何编译

编译插件之前需要先编译nacos并安装至本地仓库.

git clone git@github.com:alibaba/nacos.gitcd nacos && mvn -B clean package install -Dmaven.test.skip=true         # 若出现revision变量无法解析,请更新maven至最新版本git clone git@github.com:nacos-group/nacos-plugin.gitmvn install# 建议上传到公司的maven仓库

Only to burn the back of the road, in order to look back!

来源地址:https://blog.csdn.net/qq_50573146/article/details/126966631

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Nacos版本升级

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nacos版本升级

nacos 默认使用内嵌数据库 Derby,做持久化,我们也可以使用 外部MySQL 作为持久化服务! 在使用 MySQL 作数据库时,需要提前创建数据库和表; 官网简绍 ☑ 部署部分,适用于直接部署Nacos2.0.0以上版本的用户。
2023-08-16

如何升级dubbo2.7.4.1版本平滑迁移到注册中心nacos

这篇文章主要介绍“如何升级dubbo2.7.4.1版本平滑迁移到注册中心nacos”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何升级dubbo2.7.4.1版本平滑迁移到注册中心nacos”文章
2023-06-29

Linux升级Python版本

安装升级Pythonlinux自带的python是2.6版本的,用习惯了2.7.x,所以想升级python21.下载源码包,后面的下载链接直接在python官网找的,如果想安装更高的版本自行更换wget https://www.python
2023-01-31

nexus 2.X版本升级 3.X版本

Nexus版本是2.X , 开发需要使用新特性,进行升级,通过查询官网发现,需要升级到2.X特定版本,才能升级到3.X的对应版本. https://help.sonatype.com/repomanager3/upgrade-comp
2023-01-31

怎么升级node版本

今天小编给大家分享一下怎么升级node版本的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Window 系统window系统升
2023-07-05

nodejs怎么升级版本

小编给大家分享一下nodejs怎么升级版本,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法一: 用n升级nodejs# 全局安装n$ npm install -
2023-06-14

宝塔升级JDK版本

宝塔面板 JDK8 → JDK17 一、下载 JDK17 打开服务器命令行,创建并进入/usr/lib/jvm/ 目录: mkdir -p /usr/lib/jvmcd /usr/lib/jvm wget https://downl
2023-08-18

mysql怎么升级版本

mysql版本升级指南可通过以下步骤完成:1. 备份数据库;2. 导出用户和权限;3. 停止mysql服务;4. 安装新版本mysql;5. 初始化新版本数据目录;6. 配置新版本;7. 导入用户和权限;8. 导入数据;9. 启动新版本my
mysql怎么升级版本
2024-05-16

如何升级或升级Nagios软件版本

升级Nagios软件版本通常需要以下步骤:1.备份Nagios配置文件和数据:在升级之前,请务必备份Nagios的配置文件和数据库,以防意外情况发生。2.下载新版本的Nagios软件:从Nagios官方网站或适当的软件源获取最新版本的N
如何升级或升级Nagios软件版本
2024-03-11

编程热搜

目录