当前位置: 首页 > news >正文

Nacos-1.4.6升级2.3.2

一、nacos-2.3.2部署(非升级测试步骤)

1、使用nginx进行代理
# nginx-1.25.5
docker run -d --name nginx-nacos --network nacos --privileged=true -v /data/nacos/nginx.conf:/etc/nginx/conf.d/default.conf -p 8848:8848 nginx:latest
2、创建nacos服务
# nacos-2.3.2
docker run --name nacos-1 --network nacos --ip 172.21.0.3 -d --privileged=true -e NACOS_SERVERS="172.21.0.3:8848 172.21.0.4:8848 172.21.0.5:8848" -v /data/nacos/application.properties:/home/nacos/conf/application.properties -v /data/nacos/cluster.conf:/home/nacos/conf/cluster.conf nacos-server:2.3.2
docker run --name nacos-2 --network nacos --ip 172.21.0.4 -d --privileged=true -e NACOS_SERVERS="172.21.0.3:8848 172.21.0.4:8848 172.21.0.5:8848" -v /data/nacos/application.properties:/home/nacos/conf/application.properties -v /data/nacos/cluster.conf:/home/nacos/conf/cluster.conf nacos-server:2.3.2
docker run --name nacos-3 --network nacos --ip 172.21.0.5 -d --privileged=true -e NACOS_SERVERS="172.21.0.3:8848 172.21.0.4:8848 172.21.0.5:8848" -v /data/nacos/application.properties:/home/nacos/conf/application.properties -v /data/nacos/cluster.conf:/home/nacos/conf/cluster.conf nacos-server:2.3.2
3、数据库使用
# mysql-5.7
docker run -it  -p 0.0.0.0:3306:3306 -e MYSQL_ROOT_PASSWORD="root" -d mysql:5.7 --name mysql-5.7
# 数据库信息
主机IP:10.128.12.38
数据库名称:nacos_config_erbao_test
用户:root
密码:root

二、nacos-1.4.6部署

1、创建数据库
# mysql-5.7
# 数据库信息
## 数据库-1
主机IP:10.128.12.38
数据库名称:nacos_config_1.0_test
用户:root
密码:root
## 数据库-2(暂无用到)
主机IP:10.128.12.38
数据库名称:nacos_config_2.0_test
用户:root
密码:root
2、创建nacos服务
# nacos-1.4.6
docker run --name nacos-11 --network nacos --ip 172.21.0.11 -d --privileged=true -e NACOS_SERVERS="172.21.0.11:8848 172.21.0.12:8848 172.21.0.13:8848" -v /data/nacos-1.4.6/nacos-11/bin/:/home/nacos/bin/ -v /data/nacos-1.4.6/nacos-11/conf/:/home/nacos/conf/ -v /data/nacos-1.4.6/nacos-11/target/:/home/nacos/target/ nacos/nacos-server-new:v1.4.6docker run --name nacos-12 --network nacos --ip 172.21.0.12 -d --privileged=true -e NACOS_SERVERS="172.21.0.11:8848 172.21.0.12:8848 172.21.0.13:8848" -v /data/nacos-1.4.6/nacos-12/bin/:/home/nacos/bin/ -v /data/nacos-1.4.6/nacos-12/conf/:/home/nacos/conf/ -v /data/nacos-1.4.6/nacos-12/target/:/home/nacos/target/ nacos/nacos-server-new:v1.4.6docker run --name nacos-13 --network nacos --ip 172.21.0.13 -d --privileged=true -e NACOS_SERVERS="172.21.0.11:8848 172.21.0.12:8848 172.21.0.13:8848" -v /data/nacos-1.4.6/nacos-13/bin/:/home/nacos/bin/ -v /data/nacos-1.4.6/nacos-13/conf/:/home/nacos/conf/ -v /data/nacos-1.4.6/nacos-13/target/:/home/nacos/target/ nacos/nacos-server-new:v1.4.6
3、使用nginx进行代理
# nginx-1.25.5
docker run -d --name nginx-nacos-1.x --network nacos --privileged=true -v /data/nacos-1.4.6/nginx.conf:/etc/nginx/conf.d/default.conf -p 8848:8848 nginx:1.21.5

三、nacos升级至2.0.2

1、备份旧版本应用及数据库
# nacos-11\nacos-12\nacos-13应用配置及文件一致
cp /data/nacos-1.4.6/nacos-11 /data/nacos-1.4.6/nacos-bak
# 数据库可用Navicat备份
2、使用nacos-server-2.0.2配置覆盖1.4.6配置、启动脚本和应用程序
# 升级nacos集群需要每次升级一个服务nacos-11-->nacos-12-->nacos-13
# 覆盖bin、conf、target三个文件夹中文件
# 修改conf文件夹下的application.properties文件,数据库使用同一个数据库,修改鉴权开启
# nacos-1.x升级nacos-2.x需要开启双写,在新的application.properties文件添加nacos.core.support.upgrade.from.1x=true
# 依次升级nacos-11、nacos-12、nacos-13# 鉴权开启使用
nacos.core.auth.enabled=true
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
# 默认值
nacos.core.auth.server.identity.key=serverIdentity
# 默认值
nacos.core.auth.server.identity.value=security
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
# 默认值
nacos.core.auth.plugin.nacos.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
3、升级注意事项
# 每次操作完成后,可查看naming-server.log文件,可以看到有upgrade check result false 以及 Check whether close double write等日志信息。
# 所有节点升级完成后,可以从logs/naming-server.log日志中观察到upgrade check result true及Upgrade to 2.0.X。
4、关闭双写
# 集群升级完成后,无报错或无其他问题后可以关闭双写功能
# 获取accessToken
curl -X POST '172.21.0.11:8848/nacos/v1/auth/login' -d 'username=nacos&password=Secu!Js@L#20200202'
# 关闭双写
curl -X PUT '172.21.0.11:8848/nacos/v1/ns/operator/switches?entry=doubleWriteEnabled&value=false&accessToken=eyJhbGciOiJIUzM4NCJ9.eyJzdWIiOiJuYWNvcyIsImV4cCI6MTczMDMxODgxNH0.dmgNBX4-rxC9X4eZtrdGDLJdof8LRFYEmaGw2-pXluhI8tMRMLmt2RBEiphS17Gt'
# 成功关闭后,可以从logs/naming-server.log日志中观察到Disable Double write, stop and clean v1.x cache and features字样,说明关闭双写。

四、nacos-2.0.2升级至2.3.2

1、修改token过期时间(根据实际情况配置)
# 修改token.secret.key并重启Nacos Server端后,来自Nacos Client的请求将会因无效token被拒绝。
# 直到客户端到达旧token的TTL时间后,才会重新去获取新token。
# 需要将token过期时间缩短,并等待原来的token过期。
nacos.core.auth.plugin.nacos.token.expire.seconds=5
# 等待原有token过期时间,再改回18000秒
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
2、备份
# 备份旧的nacos
tar zcf nacos-1.4.6-2.0.2.tar.gz nacos-11
3、修改数据库
# nacos版本升级之后,mysql数据架构发生改变,需要添加数据结构
ALTER TABLE config_info ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
ALTER TABLE config_info_beta ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
ALTER TABLE his_config_info ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
4、更替应用软件
# 停止服务
docker stop nacos-11 nacos-12 nacos-13
# 使用nacos-server-2.3.2版本
cp /data/nacos-1.4.6/nacos-2.3.2/target/nacos-server.jar /data/nacos-1.4.6/nacos-11/target/nacos-server.jar
cp /data/nacos-1.4.6/nacos-2.3.2/target/nacos-server.jar /data/nacos-1.4.6/nacos-12/target/nacos-server.jar
cp /data/nacos-1.4.6/nacos-2.3.2/target/nacos-server.jar /data/nacos-1.4.6/nacos-13/target/nacos-server.jar
cp /data/nacos-1.4.6/nacos-2.3.2/bin/startup.sh /data/nacos-1.4.6/nacos-11/bin/startup.sh
cp /data/nacos-1.4.6/nacos-2.3.2/bin/startup.sh /data/nacos-1.4.6/nacos-12/bin/startup.sh
cp /data/nacos-1.4.6/nacos-2.3.2/bin/startup.sh /data/nacos-1.4.6/nacos-13/bin/startup.sh
# 修改配置文件
# application.properties
sed -i 's/spring.datasource.platform/# spring.datasource.platform/g' /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "server.tomcat.accesslog.rotate=true" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "nacos.config.push.maxRetryTime=50" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "server.tomcat.accesslog.file-date-format=.yyyy-MM-dd-HH" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "nacos.core.auth.plugin.nacos.token.cache.enable=false" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
echo "spring.sql.init.platform=mysql" >> /data/nacos-1.4.6/nacos-11/conf/application.properties
# 同步集群内其他机器
cp /data/nacos-1.4.6/nacos-11/conf/application.properties /data/nacos-1.4.6/nacos-12/conf/application.properties
cp /data/nacos-1.4.6/nacos-11/conf/application.properties /data/nacos-1.4.6/nacos-13/conf/application.properties
5、服务启动
docker start nacos-11 nacos-12 nacos-13
6、注意事项
# 1、服务重启之后,浏览器访问需要清除缓存之后进行访问,否则会出现以下报错
## org.springframework.web.bind.UnsatisfiedServletRequestParameterException: Parameter conditions "search=accurate" OR "search=blur" not met for actual request parameters
# 2、控制台集群节点出现errMsg错误,代码1014,原因是集群节点同步问题,需要删除有问题节点的data/protocol内文件,手动删除后,该节点会从leader上再取数据,删除后重启服务
## "errMsg":"Error [type=ERROR_TYPE_LOG, status=Status[EIO<1014>: Failed operation in LogStorage]]"

附录一

nacos镜像创建
Dockerfile
FROM jdk:1.8.0_201# 设置环境变量
ENV MODE="cluster" \PREFER_HOST_MODE="ip"\BASE_DIR="/home/nacos" \CLASSPATH=".:/home/nacos/conf:$CLASSPATH" \CLUSTER_CONF="/home/nacos/conf/cluster.conf" \FUNCTION_MODE="all" \JAVA_HOME="/usr/local/jdk1.8.0_201/" \NACOS_USER="nacos" \JAVA="/usr/local/jdk1.8.0_201/bin/java" \JVM_XMS="1g" \JVM_XMX="1g" \JVM_XMN="512m" \JVM_MS="128m" \JVM_MMS="320m" \NACOS_DEBUG="n" \TOMCAT_ACCESSLOG_ENABLED="false" \TIME_ZONE="Asia/Shanghai"ARG NACOS_VERSION=1.4.6
ARG HOT_FIX_FLAG=""ADD nacos-server-1.4.6.tar.gz /home/WORKDIR $BASE_DIRADD docker-startup.sh bin/docker-startup.sh# 设置启动日志目录
RUN mkdir -p logs \&& touch logs/start.out \&& ln -sf /dev/stdout logs/start.out \&& ln -sf /dev/stderr logs/start.out \&& chmod +x bin/docker-startup.shEXPOSE 8848
ENTRYPOINT ["sh","bin/docker-startup.sh"]
docker-startup.sh
#!/bin/bash
# Copyright 1999-2018 Alibaba Group Holding Ltd.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -x
export CUSTOM_SEARCH_NAMES="application"
export CUSTOM_SEARCH_LOCATIONS=file:${BASE_DIR}/conf/
export MEMBER_LIST=""
PLUGINS_DIR="/home/nacos/plugins/peer-finder"
function print_servers() {if [[ ! -d "${PLUGINS_DIR}" ]]; thenecho "" >"$CLUSTER_CONF"for server in ${NACOS_SERVERS}; doecho "$server" >>"$CLUSTER_CONF"doneelsebash $PLUGINS_DIR/plugin.shsleep 30fi
}
#===========================================================================================
# JVM Configuration
#===========================================================================================
JAVA_OPT="${JAVA_OPT} -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+CMSClassUnloadingEnabled -XX:SurvivorRatio=8 "
if [[ "${MODE}" == "standalone" ]]; thenJAVA_OPT="${JAVA_OPT} -Xms${JVM_XMS} -Xmx${JVM_XMX} -Xmn${JVM_XMN}"JAVA_OPT="${JAVA_OPT} -Dnacos.standalone=true"
elseif [[ "${EMBEDDED_STORAGE}" == "embedded" ]]; thenJAVA_OPT="${JAVA_OPT} -DembeddedStorage=true"fiJAVA_OPT="${JAVA_OPT} -server -Xms${JVM_XMS} -Xmx${JVM_XMX} -Xmn${JVM_XMN} -XX:MetaspaceSize=${JVM_MS} -XX:MaxMetaspaceSize=${JVM_MMS}"if [[ "${NACOS_DEBUG}" == "y" ]]; thenJAVA_OPT="${JAVA_OPT} -Xdebug -Xrunjdwp:transport=dt_socket,address=9555,server=y,suspend=n"fiJAVA_OPT="${JAVA_OPT} -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=${BASE_DIR}/logs/java_heapdump.hprof"JAVA_OPT="${JAVA_OPT} -XX:-UseLargePages"print_servers
fi#===========================================================================================
# Setting system properties
#===========================================================================================
# set  mode that Nacos Server function of split
if [[ "${FUNCTION_MODE}" == "config" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.functionMode=config"
elif [[ "${FUNCTION_MODE}" == "naming" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.functionMode=naming"
fi
# set nacos server ip
if [[ ! -z "${NACOS_SERVER_IP}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.server.ip=${NACOS_SERVER_IP}"
fiif [[ ! -z "${USE_ONLY_SITE_INTERFACES}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.use-only-site-local-interfaces=${USE_ONLY_SITE_INTERFACES}"
fiif [[ ! -z "${PREFERRED_NETWORKS}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.preferred-networks=${PREFERRED_NETWORKS}"
fiif [[ ! -z "${IGNORED_INTERFACES}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.inetutils.ignored-interfaces=${IGNORED_INTERFACES}"
fi### If turn on auth system:
if [[ ! -z "${NACOS_AUTH_ENABLE}" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.core.auth.enabled=${NACOS_AUTH_ENABLE}"
fiif [[ "${PREFER_HOST_MODE}" == "hostname" ]]; thenJAVA_OPT="${JAVA_OPT} -Dnacos.preferHostnameOverIp=true"
fi
JAVA_OPT="${JAVA_OPT} -Dnacos.member.list=${MEMBER_LIST}"JAVA_MAJOR_VERSION=$($JAVA -version 2>&1 | sed -E -n 's/.* version "([0-9]*).*$/\1/p')
if [[ "$JAVA_MAJOR_VERSION" -ge "9" ]]; thenJAVA_OPT="${JAVA_OPT} -Xlog:gc*:file=${BASE_DIR}/logs/nacos_gc.log:time,tags:filecount=10,filesize=102400"
elseJAVA_OPT_EXT_FIX="-Djava.ext.dirs=${JAVA_HOME}/jre/lib/ext:${JAVA_HOME}/lib/ext"JAVA_OPT="${JAVA_OPT} -Xloggc:${BASE_DIR}/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M"
fiJAVA_OPT="${JAVA_OPT} -Dloader.path=${BASE_DIR}/plugins,${BASE_DIR}/plugins/health,${BASE_DIR}/plugins/cmdb,${BASE_DIR}/plugins/selector"
JAVA_OPT="${JAVA_OPT} -Dnacos.home=${BASE_DIR}"
JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/target/nacos-server.jar"
JAVA_OPT="${JAVA_OPT} ${JAVA_OPT_EXT}"
JAVA_OPT="${JAVA_OPT} --spring.config.additional-location=${CUSTOM_SEARCH_LOCATIONS}"
JAVA_OPT="${JAVA_OPT} --spring.config.name=${CUSTOM_SEARCH_NAMES}"
JAVA_OPT="${JAVA_OPT} --logging.config=${BASE_DIR}/conf/nacos-logback.xml"
JAVA_OPT="${JAVA_OPT} --server.max-http-header-size=524288"echo "Nacos is starting, you can docker logs your container"
exec $JAVA ${JAVA_OPT}
http://www.lryc.cn/news/474724.html

相关文章:

  • 东识集中文印管理系统|DW-S408系统的主要功能
  • text-foreground讲解
  • 数字IC后端实现之Innovus Place跑完density爆涨案例分析
  • 【牛客刷题实战】二叉树遍历
  • 消息队列mq有哪些缺点?
  • 【CENet】多模态情感分析的跨模态增强网络
  • 动态代理:面向接口编程,屏蔽RPC处理过程
  • HTTP 405 Method Not Allowed:解析与解决
  • 推荐一款CAD/CAM设计辅助工具:Mastercam
  • 位运算刷题记录
  • 爬虫技术——小白入狱案例
  • vue 果蔬识别系统百度AI识别vue+springboot java开发、elementui+ echarts+ vant开发
  • 全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验
  • 信息学科平台系统设计与实现:Spring Boot技术手册
  • conda下jupyterlab安装问题以及交互绘图问题记录
  • 尚硅谷react教程_扩展_setState更新状态的2种写法
  • C语言编写的自动取款机模拟程序
  • 【常用数据结构】开发中常用的数据结构?
  • OCC 点云
  • 方法重写与方法重载
  • Vue3实现地球上加载柱体
  • OpenGL入门003——使用Factory设计模式简化渲染流程
  • 01_AI编程案例展示:借助AI轻松爬取海量网盘链接
  • 【机器学习导引】ch5-神经网络
  • 【Axure原型分享】颜色选择器——填充颜色
  • 怎么安装行星减速电机才是正确的
  • Unity程序化生成地形
  • Vxe UI vue vxe-table 表格中使用下拉表格,单元格渲染下拉表格
  • Android开发教程实加载中...动效
  • NVR设备ONVIF接入平台EasyCVR视频融合平台智慧小区视频监控系统建设方案