NoNodeAvailableException[None of the configured nodes are available异常

记录一下我当时的排查过程:
1.看异常第一反应是集群有问题,但是排查集群的节点以后,发现集群的节点都是没问题的。
2.而后开始检查settings中设置的cluster.name的是否正确发现也是正确的
3.google发现很多人是因为将es集群的端口写错,也就是9300错写为9200,但是检查我的数据以后发现也是没问题的。
4.es client的版本和es集群的版本不一致也有可能
出问题,于是google了一波es 版本不一致这个关键字,果然是因为版本不一致导致的。
5.而后开始怀疑我设置的client.transport.sniff的缘故,因为这个参数的作用是:

使客户端去嗅探整个集群的状态,把集群中其它机器的ip地址加到客户端中。这样做的好处是,一般你不用手动设置集群里所有集群的ip到连接客户端,它会自动帮你添加,并且自动发现新加入集群的机器

但是这个参数有一个问题就是:

当ES服务器监听(publish_address )使用内网服务器IP,而访问(bound_addresses )使用外网IP时,不要设置client.transport.sniff为true。不设置client.transport.sniff时,默认为false(关闭客户端去嗅探整个集群的状态)。因为在自动发现时会使用内网IP进行通信,导致无法连接到ES服务器。因此此时需要直接使用addTransportAddress方法把集群中其它机器的ip地址加到客户端中。
我的因为使用了云服务器所有一直报错.最后在application.yml中加入
transport:
    sniff: false
    错误完美解决

猜你喜欢

转载自blog.csdn.net/qq_37669050/article/details/104878957
今日推荐