错误描述:
在一台服务器上分别配置了一个nginx通过1111端口来监听三个nacos,其中配置的三个nacos 端口号分别是3333 4444 5555,通过命令分别启动sh startup.sh -p 3333 sh startup.sh -p 4444
sh startup.sh -p 5555 启动后
但是通过浏览器http://192.168.2.103:1111/nacos/#/serviceManagement?dataId=&group=&appName=&namespace=访问nacos正常打开页面填数据也正常,就是微服务启动后注册失败
微服务提供者启动报的错:
2023-08-21 22:21:16.890 INFO 12984 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2023-08-21 22:21:16.986 INFO 12984 --- [ main] o.s.s.c.ThreadPoolTaskScheduler : Initializing ExecutorService
2023-08-21 22:21:17.864 INFO 12984 --- [ main] o.s.b.a.e.web.EndpointLinksResolver : Exposing 18 endpoint(s) beneath base path '/actuator'
2023-08-21 22:21:17.920 INFO 12984 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 9001 (http) with context path ''
2023-08-21 22:21:20.013 ERROR 12984 --- [ main] c.a.c.n.registry.NacosServiceRegistry : nacos registry, nacos-payment-provider register failed...NacosRegistration{nacosDiscoveryProperties=NacosDiscoveryProperties{serverAddr='192.168.2.103:1111', endpoint='', namespace='', watchDelay=30000, logName='', service='nacos-payment-provider', weight=1.0, clusterName='DEFAULT', namingLoadCacheAtStart='false', metadata={preserved.register.source=SPRING_CLOUD}, registerEnabled=true, ip='192.168.2.101', networkInterface='', port=9001, secure=false, accessKey='', secretKey=''}},
java.lang.IllegalStateException: failed to req API:/nacos/v1/ns/instance after all servers([192.168.2.103:1111]) tried: failed to req API:192.168.2.103:1111/nacos/v1/ns/instance. code:500 msg: java.net.SocketTimeoutException: Read timed out
at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:464) ~[nacos-client-1.1.1.jar:na]
at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:386) ~[nacos-client-1.1.1.jar:na]
at com.alibaba.nacos.client.naming.net.NamingProxy.registerService(NamingProxy.java:188) ~[nacos-client-1.1.1.jar:na]
at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:205) ~[nacos-client-1.1.1.jar:na]
at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:184) ~[nacos-client-1.1.1.jar:na]
at com.alibaba.cloud.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:61) ~[spring-cloud-alibaba-nacos-discovery-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:239) [spring-cloud-commons-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at com.alibaba.cloud.nacos.registry.NacosAutoServiceRegistration.register(NacosAutoServiceRegistration.java:74) [spring-cloud-alibaba-nacos-discovery-2.1.0.RELEASE.jar:2.1.0.RELEASE]
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:138) [spring-cloud-commons-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.bind(AbstractAutoServiceRegistration.java:101) [spring-cloud-commons-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:88) [spring-cloud-commons-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.onApplicationEvent(AbstractAutoServiceRegistration.java:47) [spring-cloud-commons-2.2.1.RELEASE.jar:2.2.1.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) [spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) [spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) [spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:403) [spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:360) [spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:165) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:553) [spring-context-5.2.2.RELEASE.jar:5.2.2.RELEASE]
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215) [spring-boot-2.2.2.RELEASE.jar:2.2.2.RELEASE]
at com.atguigu.springcloud.PaymentMain9001.main(PaymentMain9001.java:15) [classes/:na]
2023-08-21 22:21:20.485 INFO 12984 --- [ main] com.atguigu.springcloud.PaymentMain9001 : Started PaymentMain9001 in 6.225 seconds (JVM running for 6.901)
2023-08-21 22:21:21.077 INFO 12984 --- [)-192.168.2.101] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring DispatcherServlet 'dispatcherServlet'
2023-08-21 22:21:21.078 INFO 12984 --- [)-192.168.2.101] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2023-08-21 22:21:21.082 INFO 12984 --- [)-192.168.2.101] o.s.web.servlet.DispatcherServlet : Completed initialization in 4 ms
nacos日志报的错:
java.lang.IllegalStateException: unable to find local peer: 192.168.2.103:3333, all peers: [11.16.128.34:3333, 10.10.109.214:3333, 11.16.128.36:3333]
at com.alibaba.nacos.naming.consistency.persistent.raft.RaftPeerSet.local(RaftPeerSet.java:224)
at com.alibaba.nacos.naming.monitor.PerformanceLoggerThread.collectMetrics(PerformanceLoggerThread.java:100)
java.lang.IllegalStateException: unable to find local peer: 192.168.2.103:4444, all peers: [11.16.128.34:4444, 11.16.128.36:4444, 10.10.109.214:4444]
at com.alibaba.nacos.naming.consistency.persistent.raft.RaftPeerSet.local(RaftPeerSet.java:224)
java.lang.IllegalStateException: unable to find local peer: 192.168.2.103:5555, all peers: [11.16.128.34:5555, 11.16.128.36:5555, 10.10.109.214:5555]
at com.alibaba.nacos.naming.consistency.persistent.raft.RaftPeerSet.local(RaftPeerSet.java:224)
错误分析
在win10h 配置单个的时候没有问题,现在在linux系统上单机配置三个启动三个端口号不同的nacos
分别是192.168.2.103:3333、192.168.2.103:4444、192.168.2.103:5555,192.168.2.103:1111是我配置的nginx 监听地址来管理这三个nacos地址的
出现此项错误的原因在于:分别启动sh startup.sh -p 3333 sh startup.sh -p 4444
sh startup.sh -p 5555
配置了 nacos 集群。分别启动单个nacos时,会监测 cluster.conf文件中的信息,当其中配置了其他nacos时,若其他未启动,则会出现上述报错!
错误解决
nacos 配置了集群后出现的问题,需要在配置中增加:
添加启动参数-Dnacos.standalone=true
像下面这样启动
sh startup.sh -p 3333 -m standalone
sh startup.sh -p 4444-m standalone
sh startup.sh -p 5555 -m standalone
分别启动后就正常了
-p是参数是因为我三个nacos就部署在一台机器上所以端号不能一样,所以在nacos的startup.sh文件里面进行了修改加了port