原文链接:全网最新的nacos 2.1.0集群多节点部署教程-语雀
基本信息
- 进度整理中
- 版本
2.1.0
- 版本发布日期
2022-04-29
- git revision number
b584531331cc95054964ba4e33984f4cab9e582d
- 编写日期
2022-07-04
~2022-07-14
- 官网https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html
- GitHub https://github.com/alibaba/nacos
源码编译环境
- 服务器 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
从git拉取最新代码
git clone https://github.com/alibaba/nacos.git
cd nacos
切换到master主分支,并通过git log确认当前commit为b584531331cc95054964ba4e33984f4cab9e582d
git checkout master
cherry-pick 74c3355b712e74e8274ac038470dc3db411b7c9e,解决nacosAuthConfig jwtTokenManager之间的circular reference
git cherry-pick 74c3355b712e74e8274ac038470dc3db411b7c9e
编译
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 需要部署的jar包
cp distribution/target/nacos-server-2.1.0.tar.gz /data/app/nacos-server-2.1.0.tar.gz
cd /data/app
解压
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/*
全局替换回车符。
原因
脚本是在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,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节点。同时也不用考虑单机节点冲突问题。个人学习因服务器硬件资源有限,选择单服务器部署所有服务。
部署集群
集群配置文件cluster.conf
cat << EOF > nacos3/conf/cluster.conf 172.18.155.8:18848 172.18.155.8:28848 172.18.155.8:38848 EOF
复制多节点
复制节点2:nacos2 cp -r nacos nacos2 复制节点3:nacos3 cp -r nacos nacos3 将nacos节点移动为节点1:nacos1 mv nacos nacos1 修改端口号 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: ┌─────┐ | 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] ↑ ↓ | jwtTokenManager (field private com.alibaba.nacos.plugin.auth.impl.NacosAuthConfig com.alibaba.nacos.plugin.auth.impl.JwtTokenManager.nacosAuthConfig) └─────┘
解决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/
转载文章受原作者版权保护。转载请注明原作者出处!