全网最新的nacos 2.1.0集群多节点部署教程

原文链接:全网最新的nacos 2.1.0集群多节点部署教程-语雀

基本信息

源码编译环境

  • 服务器 Alibaba Cloud Linux 3.2104 64位
  • Maven apache-maven-3.8.4
  • JDK 1.8.0_291编译成功
java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)
  • OpenJDK 11 编译失败
java -version
openjdk version "11" 2018-09-25
OpenJDK Runtime Environment 18.9 (build 11+28)
OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode)

编译准备

  • 1、配置JAVA_HOME

通过 vim /etc/profile编辑profile文件,配置JAVA_HOME,并通过 source /etc/profile刷新配置。示例如下:

[root@aliyun ~]# cat /etc/profile
jdk8
export JAVA_HOME=/data/source/jdk1.8.0_202
openjdk11
#export JAVA_HOME=/usr/local/jdk-11
export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
  • 2、配置maven

通过 vim ~/.bash_profile编辑.bash_profile文件,配置MAVEN_HOME,并通过 source ~/.bash_profile刷新配置。示例如下:

#JAVA_HOME CONFIG IN /etc/profile
#JAVA_HOME=/usr/local/jdk-11
#JAVA_HOME=/data/source/jdk1.8.0_202
#export JAVA_HOME
MAVEN_HOME=/data/app/apache-maven-3.8.4
PATH=$PATH:$HOME/bin:$MAVEN_HOME/bin
export PATH

/data/app/apache-maven-3.8.4/conf/settings.xml的mirrors节点添加aliyun maven镜像源。

    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorof>central</mirrorof>
    </mirror>

命令

编译打包

cd /data/source
&#x4ECE;git&#x62C9;&#x53D6;&#x6700;&#x65B0;&#x4EE3;&#x7801;
git clone https://github.com/alibaba/nacos.git
cd nacos
&#x5207;&#x6362;&#x5230;master&#x4E3B;&#x5206;&#x652F;&#xFF0C;&#x5E76;&#x901A;&#x8FC7;git log&#x786E;&#x8BA4;&#x5F53;&#x524D;commit&#x4E3A;b584531331cc95054964ba4e33984f4cab9e582d
git checkout master
cherry-pick 74c3355b712e74e8274ac038470dc3db411b7c9e&#xFF0C;&#x89E3;&#x51B3;nacosAuthConfig jwtTokenManager&#x4E4B;&#x95F4;&#x7684;circular reference
git cherry-pick 74c3355b712e74e8274ac038470dc3db411b7c9e
&#x7F16;&#x8BD1;
mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U
  • 打包命令

mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U 【推荐】
mvn -Prelease-nacos clean install -U -DskipTests -Drat.skip=true
执行成功时,日志如下:

[INFO] Building tar: /data/source/nacos/distribution/target/nacos-server-2.1.0.tar.gz
[WARNING] Encountered ModuleSet with no sources or binaries specified. Skipping.

[INFO] Building zip: /data/source/nacos/distribution/target/nacos-server-2.1.0.zip
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for Alibaba NACOS 2.1.0 2.1.0:
[INFO]
[INFO] Alibaba NACOS 2.1.0 ................................ SUCCESS [  4.612 s]
[INFO] nacos-api 2.1.0 .................................... SUCCESS [ 12.877 s]
[INFO] nacos-common 2.1.0 ................................. SUCCESS [ 13.351 s]
[INFO] nacos-consistency 2.1.0 ............................ SUCCESS [  6.605 s]
[INFO] nacos-plugin 2.1.0 ................................. SUCCESS [  0.228 s]
[INFO] nacos-auth-plugin 2.1.0 ............................ SUCCESS [  0.979 s]
[INFO] nacos-sys 2.1.0 .................................... SUCCESS [  2.045 s]
[INFO] nacos-auth 2.1.0 ................................... SUCCESS [  1.515 s]
[INFO] nacos-core 2.1.0 ................................... SUCCESS [ 13.775 s]
[INFO] nacos-encryption-plugin 2.1.0 ...................... SUCCESS [  0.533 s]
[INFO] nacos-config 2.1.0 ................................. SUCCESS [ 21.569 s]
[INFO] nacos-cmdb 2.1.0 ................................... SUCCESS [  0.916 s]
[INFO] nacos-naming 2.1.0 ................................. SUCCESS [ 23.832 s]
[INFO] nacos-address 2.1.0 ................................ SUCCESS [  0.954 s]
[INFO] nacos-client 2.1.0 ................................. SUCCESS [ 25.395 s]
[INFO] nacos-plugin-default-impl 2.1.0 .................... SUCCESS [  2.811 s]
[INFO] nacos-istio 2.1.0 .................................. SUCCESS [  8.047 s]
[INFO] nacos-console 2.1.0 ................................ SUCCESS [  4.740 s]
[INFO] nacos-test 2.1.0 ................................... SUCCESS [  0.382 s]
[INFO] nacos-config-test 2.1.0 ............................ SUCCESS [  0.364 s]
[INFO] nacos-naming-test 2.1.0 ............................ SUCCESS [  0.340 s]
[INFO] nacos-core-test 2.1.0 .............................. SUCCESS [  0.433 s]
[INFO] nacos-example 2.1.0 ................................ SUCCESS [  0.536 s]
[INFO] nacos-distribution 2.1.0 ........................... SUCCESS [ 10.944 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  02:38 min
[INFO] Finished at: 2022-07-14T22:55:27+08:00
[INFO] ------------------------------------------------------------------------

解压部署的jar包

copy &#x9700;&#x8981;&#x90E8;&#x7F72;&#x7684;jar&#x5305;
cp distribution/target/nacos-server-2.1.0.tar.gz /data/app/nacos-server-2.1.0.tar.gz
cd /data/app
&#x89E3;&#x538B;
tar -xvzf nacos-server-2.1.0.tar.gz

配置调整

应用配置文件application.properties

修改DB连接串

nacos/conf/application.properties的第33~41行DB配置信息根据实际情况修改,并取消注释

 31 #*************** Config Module Related Configurations ***************#
 32 ### If use MySQL as datasource:
 33 spring.datasource.platform=mysql
 34
 35 ### Count of DB:
 36 db.num=1
 37
 38 ### Connect URL of DB:
 39 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
 40 db.user.0=nacos
 41 db.password.0=nacos
注意点
  • DB名称: 名称可由服务器所采用的字符集中任意字母、数字、”_”和” $”组成。如果需要其他字符,需要使用[]包裹起来,例如db-nacos。已踩坑未验证</li> <li>db.url:增加allowPublicKeyRetrieval=true。 已踩坑已验证</li> </ul> <h5>修改服务端口</h5> <p>可先跳过,按顺序查看【批量服务端口】章节</p> <h4>启动文件startup.sh</h4> <p>根据硬件资源及实际情况,在 <code>nacos/bin/startup.sh</code>文件中调整JVM参数</p> <pre><code> 93 #JAVA_OPT="${JAVA_OPT} -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m" 94 JAVA_OPT="${JAVA_OPT} -server -Xms128m -Xmx256m -Xmn64m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m" </code></pre> <h5>JVM参数</h5> <p>Xss:每个线程的stack大小(栈) Xmx:JAVA HEAP的最大值、默认为物理内存的1/4 Xms:JAVA HEAP的初始值,server端最好Xms与Xmx一样 Xmn:JAVA HEAP young区的大小 XX:MetaspaceSiz:设定内存的永久保存区域 XX:MaxMetaspaceSiz:设定最大内存的永久保存区域</p> <h5>编码问题</h5> <pre><code>[root@aliyun app]# sh nacos/bin/startup.sh startup.sh: line 2: $'\r': command not found startup.sh: line 7: $'\r': command not found startup.sh: line 15: $'\r': command not found startup.sh: line 19: syntax error near unexpected token $’in\r”
    ‘tartup.sh: line 19: case "`" in

    则可以执行 sed -i 's/\r//g' nacos/bin/*全局替换回车符。
    &#x539F;&#x56E0;
    脚本是在Windows下编辑完成后上传Linux上执行的,Windows下的换行是回车符+换行符,也就是\r\n,而Linux下是换行符\n。Linux下不识别\r为回车符,所以导致每行的配置都多了个\r,因此是编码的问题。

    日志

    启动日志

    [root@aliyun app]# sh nacos/bin/startup.sh
    /data/source/jdk1.8.0_202/bin/java -Djava.ext.dirs=/data/source/jdk1.8.0_202/jre/lib/ext:/data/source/jdk1.8.0_202/lib/ext  -server -Xms128m -Xmx256m -Xmn64m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:-OmitStackTraceInFastThrow -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/app/nacos/logs/java_heapdump.hprof -XX:-UseLargePages -Dnacos.member.list= -Xloggc:/data/app/nacos/logs/nacos_gc.log -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintGCTimeStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Dloader.path=/data/app/nacos/plugins/health,/data/app/nacos/plugins/cmdb,/data/app/nacos/plugins/selector -Dnacos.home=/data/app/nacos -jar /data/app/nacos/target/nacos-server.jar  --spring.config.additional-location=file:/data/app/nacos/conf/ --logging.config=/data/app/nacos/conf/nacos-logback.xml --server.max-http-header-size=524288
    nacos is starting with cluster
    nacos is starting&#xFF0C;you can check the /data/app/nacos/logs/start.out
    

    服务日志

    [root@aliyun app]# tail -f nacos/logs/start.out nacos/logs/nacos.log
    ==> nacos/logs/start.out <== 2022-07-14 23:12:03,213 info nacos is starting... 23:12:04,215 23:12:05,229 23:12:06,238 23:12:06,358 started successfully in cluster mode. use external storage="="> nacos/logs/nacos.log <== 8848 2022-07-14 23:12:06,238 info nacos is starting... 23:12:06,306 starting protocolhandler ["http-nio-8848"] 23:12:06,353 tomcat started on port(s): (http) with context path ' nacos' 23:12:06,358 in 18.12 seconds (jvm running for 18.93) successfully cluster mode. use external storage < code></==></==>
    

    可以看到 Tomcat started on port(s): 8848 (http) with context path '/nacos'Nacos started successfully in cluster mode. use external storage等信息,表示启动成功。
    访问http://localhost:8848/nacos/,如下图:

    全网最新的nacos 2.1.0集群多节点部署教程
    以上为单节点,继续修改配置,在单服务器部署集群。

    生产环境,必须在多服务器上部署集群,一台服务器上禁止部署多个nacos节点。同时也不用考虑单机节点冲突问题。个人学习因服务器硬件资源有限,选择单服务器部署所有服务。

    部署集群

    集群配置文件cluster.conf

      cat << EOF > nacos3/conf/cluster.conf
      172.18.155.8:18848
      172.18.155.8:28848
      172.18.155.8:38848
      EOF
    

    复制多节点

    &#x590D;&#x5236;&#x8282;&#x70B9;2&#xFF1A;nacos2
    cp -r nacos nacos2
    &#x590D;&#x5236;&#x8282;&#x70B9;3&#xFF1A;nacos3
    cp -r nacos nacos3
    &#x5C06;nacos&#x8282;&#x70B9;&#x79FB;&#x52A8;&#x4E3A;&#x8282;&#x70B9;1&#xFF1A;nacos1
    mv nacos nacos1
    
    &#x4FEE;&#x6539;&#x7AEF;&#x53E3;&#x53F7;
    sed -i 's/8848/18848/g' nacos1/conf/application.properties
    sed -i 's/8848/28848/g' nacos2/conf/application.properties
    sed -i 's/8848/38848/g' nacos3/conf/application.properties
    
    服务端口

    raft port: ${server.port} – 1000
    grpc port: ${server.port} + 1000
    grpc port for server: ${server.port} + 1001
    假设对外端口为8848,即总共会有4个端口被占用,分别为7848、8848、9848、9849。所以单服务器部署集群时,端口不要太集中。未踩坑未验证

    启动集群

    节点1:nacos1
    cd /data/app/nacos1
    sh bin/startup.sh
    tail -f logs/start.out logs/nacos.log
    
    启动日志
    [root@aliyun nacos1]# tail -f logs/start.out logs/nacos.log
    ==> logs/nacos.log <== 2 18848 2022-07-14 23:38:04,729 info nacos is starting... 23:38:05,191 creating filter chain: ant [pattern="/**" ], [] 23:38:05,258 any request, [org.springframework.security.web.context.request.async.webasyncmanagerintegrationfilter@387bf2d9, org.springframework.security.web.context.securitycontextpersistencefilter@3a5c2626, org.springframework.security.web.header.headerwriterfilter@7ee3d262, org.springframework.security.web.csrf.csrffilter@2e23c180, org.springframework.security.web.authentication.logout.logoutfilter@d74bac4, org.springframework.security.web.savedrequest.requestcacheawarefilter@7fb33394, org.springframework.security.web.servletapi.securitycontextholderawarerequestfilter@5176d279, org.springframework.security.web.authentication.anonymousauthenticationfilter@74aa9c72, org.springframework.security.web.session.sessionmanagementfilter@75308740, org.springframework.security.web.access.exceptiontranslationfilter@25da615a] 23:38:05,433 initializing executorservice 'taskscheduler' 23:38:05,478 exposing endpoint(s) beneath base path ' actuator' 23:38:05,622 starting protocolhandler ["http-nio-18848"] 23:38:05,666 tomcat started on port(s): (http) with context nacos' 23:38:05,672 in 18.449 seconds (jvm running for 19.253) successfully cluster mode. use external storage="="> logs/start.out <== 2022-07-14 23:38:05,672 info nacos started successfully in cluster mode. use external storage < code></==></==>
    
    节点2:nacos2
    cd /data/app/nacos2
    sh bin/startup.sh
    tail -f logs/start.out logs/nacos.log
    
    启动日志
    [root@aliyun nacos2]# tail -f logs/start.out logs/nacos.log
    ==> logs/nacos.log <== 2 23 28848 702299861 2022-07-14 23:39:07,791 info initializing executorservice 'taskscheduler' 23:39:07,827 exposing endpoint(s) beneath base path ' actuator' 23:39:07,972 starting protocolhandler ["http-nio-28848"] 23:39:08,038 tomcat started on port(s): (http) with context nacos' 23:39:08,046 nacos in 20.116 seconds (jvm running for 20.935) 23:39:08,047 successfully cluster mode. use external storage 23:39:08,207 spring dispatcherservlet 'dispatcherservlet' servlet 23:39:08,230 completed initialization ms 23:39:08,874 [cluster-172.18.155.8:18848] rpcclient init label, labels="{source=cluster}" 23:39:08,881 init, serverlistfactory="com.alibaba.nacos.core.cluster.remote.ClusterRpcClientProxy$1" 23:39:08,888 try to connect server start up, server: {serverip="172.18.155.8" , main port="18848}" 23:39:09,268 success [172.18.155.8:18848] connectionid="1657813148983_172.18.155.8_46820" 23:39:09,270 register push request handler:com.alibaba.nacos.common.remote.client.rpcclient$connectresetrequesthandler handler:com.alibaba.nacos.common.remote.client.rpcclient$$lambda$777 23:39:13,894 error console v1 ns operator state java.lang.illegalstateexception: unable find local peer: 172.18.155.8:28848, all peers: [] at com.alibaba.nacos.naming.consistency.persistent.raft.raftpeerset.local(raftpeerset.java:292) com.alibaba.nacos.naming.core.servicemanager.getmyselfclusterstate(servicemanager.java:287) com.alibaba.nacos.naming.controllers.operatorcontroller.getclusterstates(operatorcontroller.java:296) sun.reflect.nativemethodaccessorimpl.invoke0(native method) sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) java.lang.reflect.method.invoke(method.java:498) org.springframework.web.method.support.invocablehandlermethod.doinvoke(invocablehandlermethod.java:190) org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:138) org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:105) org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlermethod(requestmappinghandleradapter.java:892) org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:797) org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:87) org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:1040) org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:943) org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:1006) org.springframework.web.servlet.frameworkservlet.doget(frameworkservlet.java:898) javax.servlet.http.httpservlet.service(httpservlet.java:626) org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:883) javax.servlet.http.httpservlet.service(httpservlet.java:733) org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:231) org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:166) org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:53) org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:193) com.alibaba.nacos.console.filter.xssfilter.dofilterinternal(xssfilter.java:42) org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:119) org.springframework.web.filter.corsfilter.dofilterinternal(corsfilter.java:97) org.springframework.boot.actuate.web.trace.servlet.httptracefilter.dofilterinternal(httptracefilter.java:88) com.alibaba.nacos.naming.web.distrofilter.dofilter(distrofilter.java:98) com.alibaba.nacos.core.auth.authfilter.dofilter(authfilter.java:69) com.alibaba.nacos.naming.web.servicenamefilter.dofilter(servicenamefilter.java:68) com.alibaba.nacos.naming.web.trafficrevisefilter.dofilter(trafficrevisefilter.java:75) org.springframework.security.web.filterchainproxy.dofilterinternal(filterchainproxy.java:209) org.springframework.security.web.filterchainproxy.dofilter(filterchainproxy.java:178) org.springframework.web.filter.delegatingfilterproxy.invokedelegate(delegatingfilterproxy.java:358) org.springframework.web.filter.delegatingfilterproxy.dofilter(delegatingfilterproxy.java:271) org.springframework.web.filter.requestcontextfilter.dofilterinternal(requestcontextfilter.java:100) org.springframework.web.filter.formcontentfilter.dofilterinternal(formcontentfilter.java:93) org.springframework.web.filter.hiddenhttpmethodfilter.dofilterinternal(hiddenhttpmethodfilter.java:94) org.springframework.boot.actuate.metrics.web.servlet.webmvcmetricsfilter.filterandrecordmetrics(webmvcmetricsfilter.java:114) org.springframework.boot.actuate.metrics.web.servlet.webmvcmetricsfilter.dofilterinternal(webmvcmetricsfilter.java:104) org.springframework.web.filter.characterencodingfilter.dofilterinternal(characterencodingfilter.java:201) org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:202) org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:97) org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:541) org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:143) org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:92) org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:78) org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:690) org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:343) org.apache.coyote.http11.http11processor.service(http11processor.java:374) org.apache.coyote.abstractprocessorlight.process(abstractprocessorlight.java:65) org.apache.coyote.abstractprotocol$connectionhandler.process(abstractprotocol.java:868) org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun(nioendpoint.java:1590) org.apache.tomcat.util.net.socketprocessorbase.run(socketprocessorbase.java:49) java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1149) java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:624) org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) java.lang.thread.run(thread.java:748) 23:40:29,896 23:40:35,560 23:40:38,565 [cluster-172.18.155.8:38848] 23:40:38,572 23:40:38,578 23:40:38,737 [172.18.155.8:38848] < code></==>
    

    有异常日志,判断为集群状态检查,暂时忽略。已踩坑未验证

    节点3:nacos3
    cd /data/app/nacos3
    sh bin/startup.sh
    tail -f logs/start.out logs/nacos.log
    
    启动日志
    [root@aliyun nacos3]# tail -f logs/start.out logs/nacos.log
    ==> logs/start.out <== 2022-07-14 23:40:33,524 info nacos started successfully in cluster mode. use external storage="="> logs/nacos.log <== 32 1097082853 2022-07-14 23:40:33,966 info initializing spring dispatcherservlet 'dispatcherservlet' 23:40:33,967 servlet 23:40:33,999 completed initialization in ms 23:40:34,073 error console nacos v1 ns operator cluster state java.lang.illegalstateexception: unable to find local peer: 172.18.155.8:38848, all peers: [] at com.alibaba.nacos.naming.consistency.persistent.raft.raftpeerset.local(raftpeerset.java:292) com.alibaba.nacos.naming.core.servicemanager.getmyselfclusterstate(servicemanager.java:287) com.alibaba.nacos.naming.controllers.operatorcontroller.getclusterstates(operatorcontroller.java:296) sun.reflect.nativemethodaccessorimpl.invoke0(native method) sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) java.lang.reflect.method.invoke(method.java:498) org.springframework.web.method.support.invocablehandlermethod.doinvoke(invocablehandlermethod.java:190) org.springframework.web.method.support.invocablehandlermethod.invokeforrequest(invocablehandlermethod.java:138) org.springframework.web.servlet.mvc.method.annotation.servletinvocablehandlermethod.invokeandhandle(servletinvocablehandlermethod.java:105) org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.invokehandlermethod(requestmappinghandleradapter.java:892) org.springframework.web.servlet.mvc.method.annotation.requestmappinghandleradapter.handleinternal(requestmappinghandleradapter.java:797) org.springframework.web.servlet.mvc.method.abstracthandlermethodadapter.handle(abstracthandlermethodadapter.java:87) org.springframework.web.servlet.dispatcherservlet.dodispatch(dispatcherservlet.java:1040) org.springframework.web.servlet.dispatcherservlet.doservice(dispatcherservlet.java:943) org.springframework.web.servlet.frameworkservlet.processrequest(frameworkservlet.java:1006) org.springframework.web.servlet.frameworkservlet.doget(frameworkservlet.java:898) javax.servlet.http.httpservlet.service(httpservlet.java:626) org.springframework.web.servlet.frameworkservlet.service(frameworkservlet.java:883) javax.servlet.http.httpservlet.service(httpservlet.java:733) org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:231) org.apache.catalina.core.applicationfilterchain.dofilter(applicationfilterchain.java:166) org.apache.tomcat.websocket.server.wsfilter.dofilter(wsfilter.java:53) org.apache.catalina.core.applicationfilterchain.internaldofilter(applicationfilterchain.java:193) com.alibaba.nacos.console.filter.xssfilter.dofilterinternal(xssfilter.java:42) org.springframework.web.filter.onceperrequestfilter.dofilter(onceperrequestfilter.java:119) org.springframework.web.filter.corsfilter.dofilterinternal(corsfilter.java:97) org.springframework.boot.actuate.web.trace.servlet.httptracefilter.dofilterinternal(httptracefilter.java:88) com.alibaba.nacos.naming.web.distrofilter.dofilter(distrofilter.java:98) com.alibaba.nacos.core.auth.authfilter.dofilter(authfilter.java:69) com.alibaba.nacos.naming.web.servicenamefilter.dofilter(servicenamefilter.java:68) com.alibaba.nacos.naming.web.trafficrevisefilter.dofilter(trafficrevisefilter.java:75) org.springframework.security.web.filterchainproxy.dofilterinternal(filterchainproxy.java:209) org.springframework.security.web.filterchainproxy.dofilter(filterchainproxy.java:178) org.springframework.web.filter.delegatingfilterproxy.invokedelegate(delegatingfilterproxy.java:358) org.springframework.web.filter.delegatingfilterproxy.dofilter(delegatingfilterproxy.java:271) org.springframework.web.filter.requestcontextfilter.dofilterinternal(requestcontextfilter.java:100) org.springframework.web.filter.formcontentfilter.dofilterinternal(formcontentfilter.java:93) org.springframework.web.filter.hiddenhttpmethodfilter.dofilterinternal(hiddenhttpmethodfilter.java:94) org.springframework.boot.actuate.metrics.web.servlet.webmvcmetricsfilter.filterandrecordmetrics(webmvcmetricsfilter.java:114) org.springframework.boot.actuate.metrics.web.servlet.webmvcmetricsfilter.dofilterinternal(webmvcmetricsfilter.java:104) org.springframework.web.filter.characterencodingfilter.dofilterinternal(characterencodingfilter.java:201) org.apache.catalina.core.standardwrappervalve.invoke(standardwrappervalve.java:202) org.apache.catalina.core.standardcontextvalve.invoke(standardcontextvalve.java:97) org.apache.catalina.authenticator.authenticatorbase.invoke(authenticatorbase.java:541) org.apache.catalina.core.standardhostvalve.invoke(standardhostvalve.java:143) org.apache.catalina.valves.errorreportvalve.invoke(errorreportvalve.java:92) org.apache.catalina.core.standardenginevalve.invoke(standardenginevalve.java:78) org.apache.catalina.valves.abstractaccesslogvalve.invoke(abstractaccesslogvalve.java:690) org.apache.catalina.connector.coyoteadapter.service(coyoteadapter.java:343) org.apache.coyote.http11.http11processor.service(http11processor.java:374) org.apache.coyote.abstractprocessorlight.process(abstractprocessorlight.java:65) org.apache.coyote.abstractprotocol$connectionhandler.process(abstractprotocol.java:868) org.apache.tomcat.util.net.nioendpoint$socketprocessor.dorun(nioendpoint.java:1590) org.apache.tomcat.util.net.socketprocessorbase.run(socketprocessorbase.java:49) java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1149) java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:624) org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61) java.lang.thread.run(thread.java:748) 23:40:34,958 [cluster-172.18.155.8:18848] rpcclient init label, labels="{source=cluster}" 23:40:34,960 init, serverlistfactory="com.alibaba.nacos.core.cluster.remote.ClusterRpcClientProxy$1" 23:40:34,970 try connect server on start up, server: {serverip="172.18.155.8" , main port="18848}" 23:40:35,186 success [172.18.155.8:18848] connectionid="1657813235056_172.18.155.8_47360" 23:40:35,188 register push request handler:com.alibaba.nacos.common.remote.client.rpcclient$connectresetrequesthandler handler:com.alibaba.nacos.common.remote.client.rpcclient$$lambda$753 23:40:35,244 ^c < code></==></==>
    

    服务安装

    cd /lib/systemd/system
    touch nacos.service
    
    [Unit]
    Description=nacos
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/nacos-server-1.1.3/nacos/bin/startup.sh -m standalone
    ExecReload=/usr/nacos-server-1.1.3/nacos/bin/shutdown.sh
    ExecStop=/usr/nacos-server-1.1.3/nacos/bin/shutdown.sh
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    

    艰难的启动

    No DataSource set

    • start.out

    Caused by: java.lang.IllegalStateException: No DataSource set

    2022-07-13 22:04:33,019 ERROR Startup errors :
    
    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'configChangeClusterSyncRequestHandler' defined in URL [jar:file:/data/app/nacos1/target/nacos-server.jar!/BOOT-INF/lib/nacos-config-2.1.0.jar!/com/alibaba/nacos/config/server/remote/ConfigChangeClusterSyncRequestHandler.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500, ErrMsg:Nacos Server did not start because dumpservice bean construction failure :
    No DataSource set
            at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
            at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
            at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:866)
            at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)
            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
            at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
            at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
            at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204)
            at com.alibaba.nacos.Nacos.main(Nacos.java:35)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
            at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'externalDumpService': Invocation of init method failed; nested exception is ErrCode:500, ErrMsg:Nacos Server did not start because dumpservice bean construction failure :
    No DataSource set
            at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:139)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:413)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1761)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
            at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
            at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
            at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
            at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
            ... 27 common frames omitted
    Caused by: com.alibaba.nacos.api.exception.NacosException: Nacos Server did not start because dumpservice bean construction failure :
    No DataSource set
            at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:225)
            at com.alibaba.nacos.config.server.service.dump.ExternalDumpService.init(ExternalDumpService.java:52)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363)
            at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307)
            at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
            ... 40 common frames omitted
    Caused by: java.lang.IllegalStateException: No DataSource set
            at org.springframework.util.Assert.state(Assert.java:73)
            at org.springframework.jdbc.support.JdbcAccessor.obtainDataSource(JdbcAccessor.java:77)
            at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
            at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:452)
            at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:462)
            at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:473)
            at org.springframework.jdbc.core.JdbcTemplate.queryForObject(JdbcTemplate.java:480)
            at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalStoragePersistServiceImpl.findConfigMaxId(ExternalStoragePersistServiceImpl.java:674)
            at com.alibaba.nacos.config.server.service.dump.processor.DumpAllProcessor.process(DumpAllProcessor.java:51)
            at com.alibaba.nacos.config.server.service.dump.DumpService.dumpConfigInfo(DumpService.java:282)
            at com.alibaba.nacos.config.server.service.dump.DumpService.dumpOperate(DumpService.java:195)
            ... 48 common frames omitted
    2022-07-13 22:04:34,904 WARN [WatchFileCenter] start close
    
    2022-07-13 22:04:34,905 WARN [WatchFileCenter] start to shutdown this watcher which is watch : /data/app/nacos1/data/loader
    
    2022-07-13 22:04:34,905 WARN [WatchFileCenter] start to shutdown this watcher which is watch : /data/app/nacos1/data/tps
    
    2022-07-13 22:04:34,905 WARN [WatchFileCenter] start to shutdown this watcher which is watch : /data/app/nacos1/conf
    
    2022-07-13 22:04:34,905 WARN [WatchFileCenter] already closed
    
    2022-07-13 22:04:34,905 WARN [NotifyCenter] Start destroying Publisher
    
    2022-07-13 22:04:34,905 WARN [NotifyCenter] Destruction of the end
    
    2022-07-13 22:04:34,906 ERROR Nacos failed to start, please see /data/app/nacos1/logs/nacos.log for more details.
    
    

    原因:DB不支持中划线
    db-nacos改为 db_nacos

    Public Key Retrieval is not allowed

    • nacos.log

    vim /data/app/nacos1/logs/nacos.log
    21:27 Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed

    2022-07-13 22:04:27,234 ERROR HikariPool-1 - Exception during pool initialization.
    
    java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
            at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
            at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:906)
            at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:831)
            at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
            at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:246)
            at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:197)
            at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
            at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:354)
            at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202)
            at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:473)
            at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:554)
            at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
            at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112)
            at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:158)
            at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:116)
            at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:79)
            at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:371)
            at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:523)
            at com.alibaba.nacos.config.server.service.datasource.ExternalDataSourceServiceImpl$SelectMasterTask.run(ExternalDataSourceServiceImpl.java:212)
            at com.alibaba.nacos.config.server.service.datasource.ExternalDataSourceServiceImpl.reload(ExternalDataSourceServiceImpl.java:130)
            at com.alibaba.nacos.config.server.service.datasource.ExternalDataSourceServiceImpl.init(ExternalDataSourceServiceImpl.java:106)
            at com.alibaba.nacos.config.server.service.datasource.DynamicDataSource.getDataSource(DynamicDataSource.java:55)
            at com.alibaba.nacos.config.server.service.repository.extrnal.ExternalStoragePersistServiceImpl.init(ExternalStoragePersistServiceImpl.java:135)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:363)
            at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:307)
            at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:136)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:413)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1761)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:592)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
            at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
            at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
            at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
            at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
            at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
            at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:866)
            at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)
            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
            at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
            at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
            at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204)
            at com.alibaba.nacos.Nacos.main(Nacos.java:35)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
            at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
    Caused by: com.mysql.cj.exceptions.CJException: Public Key Retrieval is not allowed
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
            at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
            at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
            at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:124)
            at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:151)
            at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:49)
            at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:438)
            at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:171)
            at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1342)
            at com.mysql.cj.NativeSession.connect(NativeSession.java:157)
            at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:850)
            ... 68 common frames omitted
    Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
            at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
            at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85)
            at com.mysql.cj.protocol.a.authentication.CachingSha2PasswordPlugin.nextAuthenticationStep(CachingSha2PasswordPlugin.java:128)
            ... 74 common frames omitted
    </init></init>
    
    • 解决方案

    在DB连接串中,添加allowPublicKeyRetrieval。
    允许公钥检索是默认关闭的(allowPublicKeyRetrieval=false),需要把它开启,即改为allowPublicKeyRetrieval=true。

    循环依赖(循环引用)

    21:29 Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'nacosAuthConfig': Requested bean is currently in creation: Is there an unresolvable circular reference?

    2022-07-13 22:38:07,367 ERROR Startup errors :
    
    org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'nacosAuthConfig' defined in URL [jar:file:/data/app/nacos1/target/nacos-server.jar!/BOOT-INF/lib/nacos-plugin-default-impl-2.1.0.jar!/com/alibaba/nacos/plugin/auth/impl/NacosAuthConfig.class]: Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jwtTokenManager': Unsatisfied dependency expressed through field 'nacosAuthConfig'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'nacosAuthConfig': Requested bean is currently in creation: Is there an unresolvable circular reference?
    
            at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:769)
            at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:218)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1338)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1185)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:554)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
            at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:866)
            at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:878)
            at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
            at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
            at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:744)
            at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:391)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:312)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
            at org.springframework.boot.SpringApplication.run(SpringApplication.java:1204)
            at com.alibaba.nacos.Nacos.main(Nacos.java:35)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:498)
            at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
            at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
            at org.springframework.boot.loader.PropertiesLauncher.main(PropertiesLauncher.java:467)
    Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jwtTokenManager': Unsatisfied dependency expressed through field 'nacosAuthConfig'; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'nacosAuthConfig': Requested bean is currently in creation: Is there an unresolvable circular reference?
    
            at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:598)
            at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:90)
            at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:376)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1402)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:591)
            at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:514)
            at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:321)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
            at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
            at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:857)
            at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:760)
            ... 27 common frames omitted
    Caused by: org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name 'nacosAuthConfig': Requested bean is currently in creation: Is there an unresolvable circular reference?
    
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.beforeSingletonCreation(DefaultSingletonBeanRegistry.java:355)
            at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:227)
            at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:319)
            at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
            at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:277)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1276)
            at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1196)
            at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:595)
            ... 41 common frames omitted
    2022-07-13 22:38:10,409 WARN [WatchFileCenter] start close
    
    2022-07-13 22:38:10,410 WARN [WatchFileCenter] start to shutdown this watcher which is watch : /data/app/nacos1/data/loader
    
    2022-07-13 22:38:10,410 WARN [WatchFileCenter] start to shutdown this watcher which is watch : /data/app/nacos1/data/tps
    
    2022-07-13 22:38:10,410 WARN [WatchFileCenter] start to shutdown this watcher which is watch : /data/app/nacos1/conf
    
    2022-07-13 22:38:10,410 WARN [WatchFileCenter] already closed
    
    2022-07-13 22:38:10,410 WARN [NotifyCenter] Start destroying Publisher
    
    2022-07-13 22:38:10,410 WARN [NotifyCenter] Destruction of the end
    
    2022-07-13 22:38:10,411 ERROR Nacos failed to start, please see /data/app/nacos1/logs/nacos.log for more details.
    
    2022-07-13 22:38:10,442 INFO
    
    Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
    
    2022-07-13 22:38:10,470 ERROR
    
    ***************************
    APPLICATION FAILED TO START
    ***************************
    
    Description:
    
    The dependencies of some of the beans in the application context form a cycle:
    
    &#x250C;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2510;
    |  nacosAuthConfig defined in URL [jar:file:/data/app/nacos1/target/nacos-server.jar!/BOOT-INF/lib/nacos-plugin-default-impl-2.1.0.jar!/com/alibaba/nacos/plugin/auth/impl/NacosAuthConfig.class]
    &#x2191;     &#x2193;
    |  jwtTokenManager (field private com.alibaba.nacos.plugin.auth.impl.NacosAuthConfig com.alibaba.nacos.plugin.auth.impl.JwtTokenManager.nacosAuthConfig)
    &#x2514;&#x2500;&#x2500;&#x2500;&#x2500;&#x2500;&#x2518;
    

    解决nacosAuthConfig jwtTokenManager之间的circular reference

    • 解决方案

    git cherry-pick 74c3355b712e74e8274ac038470dc3db411b7c9e
    修改application.properties,允许

    to allow circular references in spring boot 2.6
    spring.main.allow-circular-references=true
    
    git cherry-pick 74c3355b712e74e8274ac038470dc3db411b7c9e
    

    参考资料

    Original: https://www.cnblogs.com/Candies/p/16479829.html
    Author: Candyメ奶糖
    Title: 全网最新的nacos 2.1.0集群多节点部署教程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685771/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球