【问题标题】:Failed to connect to XX.XX.XXX.XX port 9200: Connection refused on EC2无法连接到 XX.XX.XXX.XX 端口 9200:EC2 上的连接被拒绝
【发布时间】:2019-05-26 09:43:23
【问题描述】:

我在 EC2 Ubuntu 14 服务器上安装了 Elasticsearch。

我可以看到它正在运行:

elastic@ip-xxx-xx-xx-xxx:~$ curl -get localhost:9200
{
  "name" : "ip-xxx-xx-xx-xxx",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "V6axWUV9SoqABC8sX62XMQ",
  "version" : {
    "number" : "7.0.1",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "e4efcb5",
    "build_date" : "2019-04-29T12:57:03.145736Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.7.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

我已将其添加到安全组:

但我无法从远程连接:

C:\>curl -get http://XX.XX.XXX.XX:9200/
curl: (7) Failed to connect to XX.XX.XXX.XX port 9200: Connection refused

netstat -nlp |grep 9200:

tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      29467/java   
tcp6       0      0 ::1:9200                :::*                    LISTEN      29467/java 

这是删除所有cmets后elasticsearch.yml的内容:

path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch

【问题讨论】:

  • 请运行此命令“netstat -nlp |grep 9200”并分享输出
  • 请分享 elasticsearch.yml 文件
  • 这个错误来自服务器而不是 curl 命令。你确定监听端口是9200吗?尝试:netstat -ln | grep 9200 并查看该端口的状态。
  • @hamidbayat 我添加了 netstat -nlp |grep 9200 的结果
  • 我已经更新了我的问题,包括 netstat -nlp |grep 9200 的结果

标签: amazon-web-services elasticsearch networking amazon-ec2 ubuntu-14.04


【解决方案1】:

我已经解决了这个问题。

我必须配置的第一件事是network.host,但非常重要的是要注意它不适用于我尝试从客户端连接的 IP,因为这是 EC2 公共 IP。我必须使用 EC2 私有 IP。

但后来我一直收到同样的错误,我发现集群协调算法在 Elasticsearch 7.0 中发生了变化,为了安全起见,它需要一些特定的配置。当一个人只绑定到 localhost 时,Elastic 放宽了这一要求(也就是说,它们以不太安全的模式运行),但是如果/当一个人更改 network.host 时,他们会强制他安全地配置集群。

所以,由于我使用的是单节点集群,我不得不在 elasticsearch.yml 的 Discovery 部分添加以下设置:

discovery.type: single-node

【讨论】:

  • 太好了,你节省了我的几个小时的调试时间,赞成的问题和答案
  • 如果你能链接官方 ES 文档也很好,其中包含更改的 custer co-oridination 算法的详细信息以及他们建议的位置discovery.type: single-node
【解决方案2】:

请在elasticsearch.yml中添加以下行并重启elasticsearch服务:

network.host: xxx.xxx.xxx.xxx 

xxx.xxx.xxx.xxx 是你的 elasticsearch 服务器的 IP 地址

【讨论】:

  • 现在我无法同时从远程和同一台机器连接。我也尝试取消注释 http.port 设置。
  • @Alon 问题还没解决?更改设置并重新启动服务后,您可以发送 netstat -nlp |grep 9200 吗?
  • AWS似乎不允许使用IP作为network.host。请试试这个,让我知道它是否有效:network.host:_ec2_
猜你喜欢
  • 2015-10-19
  • 2016-10-18
  • 2019-07-29
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 2015-12-03
  • 1970-01-01
  • 2017-12-01
相关资源
最近更新 更多