执行curl http://localhost:9200遇连接拒绝,请求排查(Firewalld已关闭)
解决Elasticsearch连接被拒绝(Failed connection refused)的问题
首先得说,连接被拒绝最核心的原因大概率是Elasticsearch服务压根没正常启动起来,咱们一步步排查:
1. 先确认Elasticsearch服务状态
先执行命令看看服务是不是在运行:
systemctl status elasticsearch
如果显示服务未启动或者启动失败,那咱们重点就放在找启动失败的原因上。
2. 修复配置文件里的路径错误
从你贴的elasticsearch.yml片段来看,路径配置明显写反了:
Path to directory where to store the data (separate multiple locations by comma):path.data: /var/log/elasticsearchPath to log files:path.logs: /var/data/elasticsearch
默认规则里,path.data是用来存ES数据的目录,path.logs才是存日志的目录,你这儿刚好搞反了。而且这两个目录还得满足两个条件:
- 目录本身必须存在(不存在就得手动创建)
- 必须给Elasticsearch运行用户(默认是
elasticsearch)读写权限
具体修复步骤:
- 打开
elasticsearch.yml,把路径改回来,还要去掉前面的#注释让配置生效:path.data: /var/data/elasticsearch path.logs: /var/log/elasticsearch - 如果对应的目录不存在,先创建:
mkdir -p /var/data/elasticsearch /var/log/elasticsearch - 设置正确的权限:
chown -R elasticsearch:elasticsearch /var/data/elasticsearch /var/log/elasticsearch
3. 检查绑定地址(默认配置可跳过)
默认情况下ES只绑定localhost(127.0.0.1),所以curl http://localhost:9200是合法的。如果你之前改了network.host配置,那可能得调整,但你说用的是默认配置,这一步先放一放,先解决前面的路径问题。
4. 看日志找启动故障细节
要是服务还是启动失败,直接去修正后的日志目录(/var/log/elasticsearch/)里看日志文件,里面会写死启动失败的具体原因——比如权限不够、内存不足、依赖缺失之类的,一眼就能看明白。
最后验证
改完配置和权限后,重启ES服务:
systemctl restart elasticsearch
等个10秒左右(ES启动需要一点时间),再执行curl http://localhost:9200,如果返回类似下面的JSON内容,就说明连接成功了:
{ "name" : "node-1", "cluster_name" : "elasticsearch", "cluster_uuid" : "xxxxxx", "version" : { "number" : "7.17.0", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "xxxxxx", "build_date" : "2022-01-28T08:36:04.875279988Z", "build_snapshot" : false, "lucene_version" : "8.11.1", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
内容的提问来源于stack exchange,提问作者Stuttgarter Hofbrau
相关产品推荐
相关产品推荐

