• 配置中心Nacas版本升级


    简介

    此文介绍配置管理中心 Nacos 的升级问题。

    升级目标

    Nacos版本:v1.2.1 -> v.1.3.0-beta

    版本升级原因:Nacos服务器端版本1.2.1版本中出现配置项的内容md5化后,会出现少一位的现象,少的一位大部分是0这个字符串,这个bug会引起客户端的配置不断刷新本地配置,继而导致对应项目的配置不断刷新。

    服务器配置信息

    主机名 IP 配置
    nacos01 192.168.17.37 4C8G100G
    nacos02 192.168.17.38 4C8G100G
    nacos03 192.168.17.39 4C8G100G

    两个版本之间主配置文件异同

    Nacos v1.2.1主配置文件:application.properties

    # egrep -v "^$|#" conf/application.properties
    server.servlet.contextPath=/nacos
    server.port=8848
    spring.datasource.platform=mysql
    db.num=1
    db.url.0=jdbc:mysql://192.168.14.2:23306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=********
    nacos.naming.empty-service.auto-clean=false
    nacos.naming.empty-service.clean.initial-delay-ms=60000
    nacos.naming.empty-service.clean.period-time-ms=20000
    management.endpoints.web.exposure.include=*
    management.metrics.export.elastic.enabled=false
    management.metrics.export.influx.enabled=false
    server.tomcat.accesslog.enabled=true
    server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
    server.tomcat.basedir=
    nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
    nacos.core.auth.system.type=nacos
    nacos.core.auth.enabled=true
    nacos.core.auth.default.token.expire.seconds=18000
    nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
    nacos.core.auth.caching.enabled=false
    nacos.istio.mcp.server.enabled=false
    

    Nacos v.1.3.0-beta主配置文件新增加内容

    ###*************** Add from 1.3.0-BETA ***************###
    
    
    #*************** Core Related Configurations ***************#
    
    ### set the WorkerID manually
    # nacos.core.snowflake.worker-id=
    
    ### Member-MetaData
    # nacos.core.member.meta.site=
    # nacos.core.member.meta.adweight=
    # nacos.core.member.meta.weight=
    
    ### MemberLookup
    ### Addressing pattern category, If set, the priority is highest
    # nacos.core.member.lookup.type=[file,address-server,discovery]
    ## Set the cluster list with a configuration file or command-line argument
    # nacos.member.list=192.168.16.101:8847?raft_port=8807,192.168.16.101?raft_port=8808,192.168.16.101:8849?raft_port=8809
    ## for DiscoveryMemberLookup
    # If you want to use cluster node self-discovery, turn this parameter on
    # nacos.member.discovery=false
    ## for AddressServerMemberLookup
    # Maximum number of retries to query the address server upon initialization
    # nacos.core.address-server.retry=5
    
    #*************** JRaft Related Configurations ***************#
    
    ## 集群一致性相关配置 ##
    
    ### Sets the Raft cluster election timeout, default value is 5 second
    
    # 选举超时时间
    # nacos.core.protocol.raft.data.election_timeout_ms=5000
    
    # 集群以中性数据快照间隔时间
    ### Sets the amount of time the Raft snapshot will execute periodically, default is 30 minute
    # nacos.core.protocol.raft.data.snapshot_interval_secs=30
    
    # 请求失败尝试次数
    ### Requested retries, default value is 1
    # nacos.core.protocol.raft.data.request_failoverRetries=1
    
    # 线程个数
    ### raft internal worker threads
    # nacos.core.protocol.raft.data.core_thread_num=8
    
    # 客户端线程请求数
    ### Number of threads required for raft business request processing
    # nacos.core.protocol.raft.data.cli_service_thread_num=4
    
    # 一致性线性读策略
    ### raft linear read strategy, defaults to index
    # nacos.core.protocol.raft.data.read_index_type=ReadOnlySafe
    
    # RPC 请求超时时间
    ### rpc request timeout, default 5 seconds
    # nacos.core.protocol.raft.data.rpc_request_timeout_ms=5000
    

    版本升级后默认修改的参数

    注意:以下版本升级仅针对1.2.1v.1.3.0-beta

    1. 版本升级后:nacos.naming.empty-service.auto-clean参数由false改为true
    ### If enable the empty service auto clean, services with an empty instance are automatically cleared
    nacos.naming.empty-service.auto-clean=false
    ->
    nacos.naming.empty-service.auto-clean=true
    
    1. 版本升级后:nacos.naming.empty-service.clean.initial-delay-ms参数由60000改为50000
    ### The empty service cleanup task delays startup time in milliseconds
    nacos.naming.empty-service.clean.initial-delay-ms=60000 
    ->
    nacos.naming.empty-service.clean.initial-delay-ms=50000
    
    1. 版本升级后:nacos.naming.empty-service.clean.period-time-ms参数由20000该为30000
    ### The empty service cleanup task cycle execution time in milliseconds
    nacos.naming.empty-service.clean.period-time-ms=20000
    ->
    nacos.naming.empty-service.clean.period-time-ms=30000
    
    1. 版本升级后:nacos.core.auth.caching.enabled参数由false改为true
    ### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
    nacos.core.auth.caching.enabled=false
    ->
    nacos.core.auth.caching.enabled=true
    

    升级策略

    目前nacos采用三节点方式部署,升级过程中选择逐台升级

    注意事项

    由于版本不同导致配置文件都有差异,因此,需要将原v1.2.1的配置全部配置到v.1.3.0-beta,使用新版本的配置文件。

    1. 由于数据库已配置主主,Nacas通过配置文件中的相关配置读取数据库,因此,需要修改数据库相关配置;
    2. 开启配置文件中的prometheus监控选项:management.endpoints.web.exposure.include=*
    3. 需要将bin/conf/application.propertiestarget/nacos-server.jar更换为新的配置。

    升级

    1. 准备安装包

    1. 准备 Nacos v.1.3.0-beta 安装包
    # cd /opt
    # wget https://github.com/alibaba/nacos/releases/download/1.3.0-beta/nacos-server-1.3.0-BETA.tar.gz
    # tar -xf nacos-server-1.3.0-BETA.tar.gz
    
    1. 查看解压后的安装包有哪些文件
    # tree /opt/nacos
    /opt/nacos
    ├── bin
    │   ├── shutdown.cmd
    │   ├── shutdown.sh
    │   ├── startup.cmd
    │   └── startup.sh
    ├── conf
    │   ├── application.properties
    │   ├── application.properties.example
    │   ├── cluster.conf.example
    │   ├── nacos-logback.xml
    │   ├── nacos-mysql.sql
    │   └── schema.sql
    ├── LICENSE
    ├── NOTICE
    └── target
        └── nacos-server.jar
    
    3 directories, 13 files
    

    2.提前配置好新版本的配置文件

    # egrep -v "^$|#" /opt/nacos/conf/application.properties
    server.servlet.contextPath=/nacos
    server.port=8848
    spring.datasource.platform=mysql
    db.num=1
    db.url.0=jdbc:mysql://192.168.14.2:23306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
    db.user=root
    db.password=********
    nacos.naming.empty-service.auto-clean=true
    nacos.naming.empty-service.clean.initial-delay-ms=50000
    nacos.naming.empty-service.clean.period-time-ms=30000
    management.endpoints.web.exposure.include=*
    management.metrics.export.elastic.enabled=false
    management.metrics.export.influx.enabled=false
    server.tomcat.accesslog.enabled=true
    server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i
    server.tomcat.basedir=
    nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
    nacos.core.auth.system.type=nacos
    nacos.core.auth.enabled=true
    nacos.core.auth.default.token.expire.seconds=18000
    nacos.core.auth.default.token.secret.key=SecretKey012345678901234567890123456789012345678901234567890123456789
    nacos.core.auth.caching.enabled=true
    nacos.istio.mcp.server.enabled=false
    

    3. 停止服务

    # systemctl stop nacos
    

    4. 备份目前 v1.2.1 的配置

    # cd /usr/local/nacos
    # tar -cvzf nacos.backup.1.2.1.tar.gz bin/ conf/ target/
    

    5. 更换配置

    1. 更换服务启停脚本
    # cp /opt/nacos/bin/shutdown.sh /usr/local/nacos/bin/shutdown.sh 
    # cp /opt/nacos/bin/startup.sh /usr/local/nacos/bin/startup.sh 
    
    1. 更换主配置文件
    # cp /opt/nacos/conf/application.properties /usr/local/nacos/conf/application.properties
    
    1. 更换库文件
    # cp /opt/nacos/target/nacos-server.jar /usr/local/nacos/target/nacos-server.jar 
    

    6. 启动服务

    # systemctl start nacos
    
  • 相关阅读:
    第二章 Google guava cache源码解析1--构建缓存器
    第十一章 AtomicInteger源码解析
    JVM虚拟机(五):JDK8内存模型—消失的PermGen
    JVM虚拟机(四):JVM 垃圾回收机制概念及其算法
    Java中RunTime类介绍
    JVM虚拟机(三):参数配置
    ZooKeeperEclipse 插件
    zookeeper(五):Zookeeper中的Access Control(ACL)
    zookeeper(六):Zookeeper客户端Curator的API使用详解
    Java并发编程(九):拓展
  • 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12926722.html
Copyright © 2020-2023  润新知