本篇内容介绍了“Nacos集群模式下服务无法注册怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Nacos集群模式下服务无法注册一、环
本篇内容介绍了“Nacos集群模式下服务无法注册怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
jdk1.8.0_151(由于nacos必须1.8以上),1.8以下会有启动问题,务必升级
nacos版本0.8.0
基本按照官网文档就能搭建起来,另外按照官网文档修改
了cluster.conf,添加了三台机器的IP(172.XX.XX.14:8848, 172.XX.XX.7:8848, 172.XX.XX.14:8848),启动发现报错
java.lang.IllegalStateException: unable to find local peer: 118.XX.XX.52:8848, all peers: [172.XX.XX.14:8848, 172.XX.XX.7:8848, 172.XX.XX.14:8848]
at com.alibaba.nacos.naming.raft.PeerSet.local(PeerSet.java:191)
at com.alibaba.nacos.naming.monitor.PerfORManceLoggerThread.collectmetrics(PerformanceLoggerThread.java:114)
at sun.reflect.GeneratedMethodAccessor74.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
不理它,先把报错的IP加上后,启动成功。
此时启动服务应用进行服务注册,发现报如下错误:
java.lang.IllegalStateException: failed to req api:/nacos/v1/ns/instance after all servers([172.XX.XX.23:80]) tried
at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:335)
at com.alibaba.nacos.client.naming.net.NamingProxy.reqAPI(NamingProxy.java:267)
at com.alibaba.nacos.client.naming.net.NamingProxy.reGISterService(NamingProxy.java:167)
at com.alibaba.nacos.client.naming.NacosNamingService.registerInstance(NacosNamingService.java:170)
at org.springframework.cloud.alibaba.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:56)
at org.springframework.cloud.alibaba.nacos.registry.NacosServiceRegistry.register(NacosServiceRegistry.java:29)
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.register(AbstractAutoServiceRegistration.java:209)
at org.springframework.cloud.alibaba.nacos.registry.NacosAutoServiceRegistration.register(NacosAutoServiceRegistration.java:75)
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.start(AbstractAutoServiceRegistration.java:108)
at org.springframework.cloud.client.serviceregistry.AbstractAutoServiceRegistration.bind(AbstractAutoServiceRegistration.java:73)
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)
服务端应用启动报调用服务注册失败,但nacos服务后台三台机器均启动成功,且后台能正常进入,通过URL访问/nacos/v1/ns/instance,也是能正常访问。实在无解,调试代码
根据调试发现,走到了no leader now,遂怀疑nacos注册中心并未启动成功,之前在cluster.conf中添加的118.XX.XX.52:8848并未解决真正的问题,所以还是不要偷懒,发现问题就要找到真实原因,以免把真实原因给盖掉了
Loggers.RAFT.info("I'm not leader, will proxy to leader."); if (RaftCore.getLeader() == null) { throw new IllegalArgumentException("no leader now."); }
后端日志里确实也打印了这个warning,日志在naming-raft.log中
然后开始调试nacos服务代码,通过调试发现nacos注册中心在启动时会通过NetUtils类中InetAddress.getLocalHost()去获取本机的IP地址,但这个IP(118.XX.XX.52:8848)并不是本机IP,导致了本机IP不正确,注册中心并没加载成功
翻阅下文档:
深层的原因: 在大多数linux操作系统中,都是以/etc/hosts中的配置查找主机名的而Java 的InetAddress.java 调用 InetAddressImpl.java 的 public native String getLocalHostName() throws UnknownHostException; 来获取本地主机名, Java 的这个方法是native的,是本地系统的一个实现,此时根据本地/etc/hostname文件中的机器名来获取本机IP,然而这个IP并不是这台机器的内网IP,那这个IP是哪里来的?
查找到腾讯云相关配置地方,都没有这个IP,以及在机器上也没找到,后来通过PING本机名获取到了以上报错的IP,猜测这个IP是腾讯云统一分配的,而且生产的机器PING出来的结果也一样。
设置本机名称:/etc/hostname mName 最好不是写IP地址的形式,若写则必须是本机的完全IP形式(不要只写一半),如果有就不用设置了
在/etc/hosts里加一行 本机IP mName
重启注册中心,注册中心启动成功,发现不报java.lang.IllegalStateException: unable to find local peer: 118.XX.XX.52:8848这个错误了,且通过调试发现,IP确实也正确了
修改cluster.conf去掉了118.XX.XX.52:8848,重启服务应用进行注册,服务注册成功
因为没有加上版本号,导致不能注册。
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>0.2.1.RELEASE</version> </dependency>
“Nacos集群模式下服务无法注册怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!
--结束END--
本文标题: Nacos集群模式下服务无法注册怎么解决
本文链接: https://lsjlt.com/news/306613.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0