- 什么是 Nacos
- Nacos 快速开始
- Java SDK
- 运营指南
- Nacos 2.0
- 开源共建
- 社区
Nacos 2.0 升级文档
本文档实用于Nacos1.X版本平滑升级到Nacos2.0.0-BETA版本,Nacos2.0.0-ALPHA版本无法进行平滑升级,请勿参照本文档进行升级。
由于Nacos1.X和Nacos2.0的数据结构发生了变化,为了能够完成平滑升降级,需要将数据进行双写,分别生成Nacos1和Nacos2的数据结构进行存储。因此会对性能有一定影响。当集群升级并稳定运行后,可以关闭双写,关闭双写后将会失去平滑降级的功能。
直接部署Nacos2.0.0-BETA版本的用户,可以直接跳到关闭双写关闭降级双写。
升级步骤
以linux系统为例。window系统请自行替换sh
脚本为cmd
脚本。
1. 停止旧节点
选择集群中一台Nacos1.X节点,使用Nacos目录下nacos/bin/shutdown.sh
进行停止。
2. 替换文件
下载并解压缩nacos-server-2.0.0-BETA.tar.gz
,将其下的bin
,conf
,target
目录覆盖原Nacos1.X的安装目录下。
3. 修改配置
自行修改nacos/bin/startup.sh
中的JVM参数,conf/cluster.conf
中的集群列表以及conf/application.prpperties
中数据库或其他相关参数。
4. 启动Nacos2.0
使用nacos目录下nacos/bin/startup.sh
启动nacos2.0,其他更多启动指令请查看Nacos部署环境 。
5. 观察是否启动成功
首先查看nacos目录下 logs/start.out
或logs/nacos.log
观察到nacos启动成功的日志,如 Nacos started successfully in cluster mode. use xxx storage
说明程序已启动成功。
之后在观察 logs/naming-server.log
中,可以看到有upgrade check result false
以及 Check whether close double write
等日志信息。
属于正常现象。
6. 升级其他节点
待该节点的服务及实例信息已经同步完毕后(可从控制台进行确认)。重复1~5步骤,将其他的nacos节点也进行升级。
7. 确认升级完成
当集群中最后一个节点也升级到2.0.X版本时,集群会开始进行升级检测。每个节点会对该节点的服务信息和实例信息进行校验,并检测是否还有未完成的双写任务。
当该节点的服务信息和实例信息已经核对成功,并且没有双写任务存在时,该节点会判定自己已经做好升级准备,并修改自己的状态且通知其他Nacos节点。每台节点是否完成升级准备可以从控制台的集群管理中元数据信息中看到"readyToUpgrade": false/true
。
当集群中所有节点均判定为准备完毕时。Nacos集群中的节点会进行升级切换,自动升级到Nacos2.0的处理逻辑。
可以从logs/naming-server.log
日志中观察到upgrade check result true
及Upgrade to 2.0.X
。
8.1 关闭双写
当集群升级完成后,可以先观察一段时间运行情况,当确认无误后,可以关闭双写,从而释放性能,具体的关闭方式是通过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
字样。说明关闭双写。
注意,关闭双写后无法在进行平滑降级,请先确认关闭前集群正确运行。
8.2 降级
集群升级完毕后,依旧会进行双写,当升级后发现Nacos2.0存在问题时,可以快速进行降级,降级流程为重复步骤1~6,只是将版本改为对应的1.X版本。
当第一台降级完成后,集群即可观察到logs/naming-server.log
中的upgrade check result false
,且控制台集群管理中,所有新版本"readyToUpgrade": false
。
升级过程中可能遇到的问题
1. 最后一台节点升级完成时,注册的服务出现波动(变成不健康或暂时被摘除)
升级过程中,为了节约性能,双写的内容仅是内容发生变更时的状态,心跳等内容不会被双写,因此切换版本时,可能有部分实例的心跳过久而健康检查又刚好开始执行,从而被标记非健康或摘除。
后续心跳处理将会把数据补充回来,最终会一致。
2. 升级完成后,升级的最后一台服务端报错Server is DOWN
这可能是因为Raft选主失败导致的,解决方法是重启最后一台升级的服务端。或先将最后一台服务端降级,之后再重新进行一次升级即可。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论