已关闭此问题为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
2条答案
按热度按时间wbgh16ku1#
当我尝试将elasticsearch作为docker容器运行时,我遇到了同样的问题,并通过在
elasticsearch.yml
文件中添加以下行来修复它network.bind_host: 0.0.0.0
或者你可以像这样将它作为一个环境变量添加到docker-compose文件中:
它将elasticsearch rest服务器绑定到0.0.0.0,允许它接受任何IP的连接
eagi6jfj2#
请注意,如果没有防火墙,0.0.0.0是向互联网开放的。
在某些发行版/版本上,docker会在172.17.0.1上提供桥接网络。该接口仍然是私有/本地的。在这种情况下,设置您的绑定到该接口,并使用IP.
在YAML中,这样写:
它会工作,即:
以及:
YMMV的网络,但看看接口和路由,它应该是显而易见的。