当访问运行在ubuntu虚拟机上的elasticsearch的其余API时,对等端重置了连接[关闭]

oyt4ldly  于 2023-10-17  发布在  ElasticSearch
关注(0)|答案(2)|浏览(105)

已关闭此问题为not about programming or software development。它目前不接受回答。

这个问题似乎不是关于a specific programming problem, a software algorithm, or software tools primarily used by programmers的。如果你认为这个问题与another Stack Exchange site的主题有关,你可以留下评论,解释在哪里可以回答这个问题。
9天前关闭
Improve this question
我在运行在Oracle虚拟机上的Ubuntu VM上运行elasticsearch。我已配置端口转发到虚拟机上的VM。本地端口9201转发到VM端口9200。如你所知,9200是elasticsearch的其余API端口。现在,当我尝试从本地终端访问elasticsearch的其余API时,如下所示:

curl -vv -XGET 127.0.0.1:9201 

I get  the following:

Note: Unnecessary use of -X or --request, GET is already inferred.
* Rebuilt URL to: 127.0.0.1:9201/
*   Trying 127.0.0.1...
* Connected to 127.0.0.1 (127.0.0.1) port 9201 (#0)
> GET / HTTP/1.1
> Host: 127.0.0.1:9201
> User-Agent: curl/7.47.0
> Accept: */*
> 
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer

现在我也在服务器上设置了tcpdump(运行elasticsearch的VM),当它收到请求时,它会转储以下内容:

12:40:39.540317 IP (tos 0x0, ttl 64, id 34977, offset 0, flags [none], proto TCP (6), length 44)
    10.0.2.2.44152 > 10.0.2.15.9200: Flags [S], cksum 0x14d9 (correct), seq 4006784001, win 65535, options [mss 1460], length 0
12:40:39.540346 IP (tos 0x0, ttl 64, id 58786, offset 0, flags [DF], proto TCP (6), length 40)
    10.0.2.15.9200 > 10.0.2.2.44152: Flags [R.], cksum 0x2c82 (correct), seq 0, ack 4006784002, win 0, length 0

但是,当SSH到虚拟机(serer运行elasticsearch)并执行以下操作时:

curl -XGET 127.0.0.1:9200 

{
  "name" : "jEukiTt",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "xk6SzW0kT_WFSXnm-0u4Hw",
  "version" : {
    "number" : "6.1.2",
    "build_hash" : "5b1fea5",
    "build_date" : "2018-01-10T02:35:59.208Z",
    "build_snapshot" : false,
    "lucene_version" : "7.1.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

如上所述,我得到了所需的响应。因此,正如我所看到的,服务器(运行elasticsearch的VM)收到了请求,但它将重置信号发送回客户端,并将请求抑制到elasticsearch rest API。如何解决这个问题。
请提前回复感谢Santhosh

wbgh16ku

wbgh16ku1#

当我尝试将elasticsearch作为docker容器运行时,我遇到了同样的问题,并通过在elasticsearch.yml文件中添加以下行来修复它
network.bind_host: 0.0.0.0
或者你可以像这样将它作为一个环境变量添加到docker-compose文件中:

environment:
    - network.bind_host=0.0.0.0

它将elasticsearch rest服务器绑定到0.0.0.0,允许它接受任何IP的连接

eagi6jfj

eagi6jfj2#

请注意,如果没有防火墙,0.0.0.0是向互联网开放的。
在某些发行版/版本上,docker会在172.17.0.1上提供桥接网络。该接口仍然是私有/本地的。在这种情况下,设置您的绑定到该接口,并使用IP.
在YAML中,这样写:

ports:
  - "172.17.0.1:9200:9200"

它会工作,即:

[joeuser@server]~/elastic% netstat -an | egrep 9200
tcp        0      0 172.17.0.1:9200         0.0.0.0:*               LISTEN     
[joeuser@server]~/elastic%

以及:

[joeuser@server]~/elastic% curl -X GET "172.17.0.1:9200/_cat/nodes?v=true&pretty"
ip         heap.percent ram.percent cpu load_1m load_5m load_15m node.role   master name
172.19.0.2           40          93   4    1.68    1.96     1.64 cdfhilmrstw -      es02
172.19.0.4           34          93   4    1.68    1.96     1.64 cdfhilmrstw *      es01
172.19.0.3           24          93   4    1.68    1.96     1.64 cdfhilmrstw -      es03
[joeuser@server]~/elastic%

YMMV的网络,但看看接口和路由,它应该是显而易见的。

相关问题