ElasticSearch实例无法从服务器外部访问 - Azure Windows 2012

时间:2016-04-04 08:36:52

标签: azure elasticsearch windows2012

我已将Elastic Search 2.3.0设置为具有Windows Server 2012 R2的Azure VM中的服务。我可以使用

从服务器内访问弹性搜索实例
http://localhost:9200

但我无法从服务器外部访问。

我尝试了什么?

  • 仅仅是为了测试我已经在虚拟网络之外使用了VM。
  • 在Windows防火墙设置中将端口9200作为入站流量规则
  • 打开
  • 在Azure门户网站设置中添加了一个端口,用于打开端口9200

也尝试使用VM Classic。

另外,为了测试VM是否正常,我在该机器中设置了IIS,打开了端口80.可以从外部访问默认的IIS页面。

我唯一没试过的是在Linux VM中设置ES。

我在elasticsearch日志中找不到任何内容。在浏览器(Chrome)上,网络中没有日志。它只是旋转,等待服务器,并与“ERR_EMPTY_RESPONSE”对齐。

任何做过这件事的人都能解决一些问题吗?

更新: 以下是我在netstat中可以看到的内容:

TCP    127.0.0.1:9200         machine-name:0       LISTENING
TCP    127.0.0.1:9300         machine-name:0       LISTENING

5 个答案:

答案 0 :(得分:21)

从ES 2.0开始,弹性搜索过程仅binds to localhost,这解释了为什么您可以从内部而不是从外部查询ES。

您需要在elasticsearch.yml配置文件中更改以下设置:

network.host: 0.0.0.0

答案 1 :(得分:3)

我有同样的情况。在日志中查看

tail -f /var/log/elasticsearch/NODE.log

我看到了:

 [NODE_NAME] publish_address {10.XXX.XXX.XXX:9300}, bound_addresses {10.XXX.XXX.XXX:9300}
 [NODE_NAME] bound or publishing to a non-loopback address, enforcing bootstrap checks
 [NODE_NAME] node validation exception
 [1] bootstrap checks failed
 [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
 [NODE_NAME] stopping ...
 [NODE_NAME] stopped

解决方案:

使用以下命令修改不一致的种子行中的档案/ etc/elasticsearch/elasticsearch.yml

discovery.seed_hosts: ["127.0.0.1", "[::1]"]

完成。

答案 2 :(得分:1)

我建议将network.host设置为特殊值

例如

network.host: [_local_, _site_]

这适合我。

答案 3 :(得分:1)

请注意,对我来说,只有在设定

后才能取得成功
http.host: 0.0.0.0

而不是

http.host: "localhost"

答案 4 :(得分:0)

在Windows Server 2012上为我解决的问题,其中Elasticsearch 7.1.1在C:\ ProgramData \ Elastic \ Elasticsearch \ config \ elasticsearch.yml中添加以下配置:

http.host: 0.0.0.0