一直以来在docker版本里使用nacos都有一个问题,springcloud项目会报找不到nacos服务器:

16:05:16.930 [com.alibaba.nacos.client.Worker.longPolling.fixed-10.1.6.102_8848] ERROR com.alibaba.nacos.client.config.impl.ClientWorker - longPolling error : 
java.net.NoRouteToHostException: No route to host (Host unreachable)

也百度了谷歌了,都说是客户端版本和服务端版本不一致导致的,今天开发把客户端版本由1.1.4升级到1.4.1后更新springcloud项目后又出现问题:

nacos no available server, currentServerAddr

也是找不到nacos服务端,但是和以前的报错有点不一样,在更换了服务器版本多次后均没有效果,遂下决定研究一翻,经过谷歌一通,终于发现一个简单而行之有效的方法:

在pom.xml文件加入指定nacos客户端版本的依赖:

  1. <dependency>
  2. <groupId>com.alibaba.cloudgroupId>
  3. <artifactId>spring-cloud-starter-alibaba-nacos-discoveryartifactId>
  4. dependency>
  5. <dependency>
  6. <groupId>com.alibaba.cloudgroupId>
  7. <artifactId>spring-cloud-starter-alibaba-nacos-configartifactId>
  8. dependency>
  9. <dependency>
  10. <groupId>com.alibaba.nacosgroupId>
  11. <artifactId>nacos-clientartifactId>
  12. <version>1.4.1version>
  13. dependency>

加入依赖后重启springcloud项目后,没有报找不到,又报一个新问题

org.redisson.connection.DNSMonitor - Unable to resolve redis

以谷歌查询得出如下结论:

Fixed - Redisson can't resolve short DNS name #1693

肯定是开发又瞎搞了,redisson这个组件不能解析短域名,而我的那些配置都是短域名。经过对比线上和开发环境的redisson组件后发现开发的redisson组件是最新的版本redisson-3.15.3,而线上的版本redisson-3.7.3,叫开发暂时降低版本查看!

过程中又有出现过nacos配置页面刷新的时候服务一会儿有一会儿没有的问题,后来更换了seata版本由docker最新版的换为seata1.3.0版本后,暂时没有发现问题,依据如下:

nacos no available server, currentServerAddr_nacos

链接 https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E