关于elasticsearch node 节点不可用的故障分析

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于elasticsearch node 节点不可用的故障分析相关的知识,希望对你有一定的参考价值。

开发那边在搭建集群的时候,无论如何测试,node 节点就是连不上,始终报错误

org.elasticsearch.client.transport.NoNodeAvailableException: No node available

后开看了下,本地环境,原因是回话时间太多,而他的本地环境并没有做内核优化,而线上都做了统一的内核优化,其中一条就是吧,检测tcp 连接探测间隔在5秒,对es 来说,太断了,

google 搜到一片文章,连接如下

https://blog.trifork.com/2015/04/08/dealing-with-nodenotavailableexceptions-in-elasticsearch/

大概内容是,这根本因为系统没有调优内核,导致无法连接,与我们相反,他是保持连接时间探测过长导致的

那么我们可以推测,tcp 内核连接,要保持在一定的数值范围内,而且必须与es 连接的工作原理相符,不然linux 系统的防火机制,和tcp 连接探测机制,会把还需要继续保持的连接给干掉,结果就会变成了,没有节点可用

具体操作如下

centos 系统

修改内核参数

net.ipv4.tcp_keepalive_time=7200(默认值)

改为

net.ipv4.tcp_keepalive_time=600(具体看情况)

以上是关于关于elasticsearch node 节点不可用的故障分析的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch 集群

ElasticSearch-工作流程

ElasticSearch:elasticsearch.yml配置说明

ElasticSearch ElasticSearch集群

分布式安装 Elasticsearch

搭建Elasticsearch集群的配置