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

dro*_*bot 8 azure elasticsearch windows2012

我已将Elastic Search 2.3.0设置为具有Windows Server 2012 R2的Azure VM中的服务.我可以使用来自服务器内的弹性搜索实例

http://localhost:9200
Run Code Online (Sandbox Code Playgroud)

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

我试过了什么?

  • 仅用于测试我已在虚拟网络外部使用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
Run Code Online (Sandbox Code Playgroud)

Val*_*Val 23

从ES 2.0开始,elasticsearch进程仅绑定到localhost,这解释了为什么您可以从内部而不是从外部查询ES.

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

network.host: 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

  • 请尝试使用值0. (2认同)

小智 7

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

tail -f /var/log/elasticsearch/NODE.log
Run Code Online (Sandbox Code Playgroud)

我看到了这个:

 [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
Run Code Online (Sandbox Code Playgroud)

解:

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

discovery.seed_hosts: ["127.0.0.1", "[::1]"]
Run Code Online (Sandbox Code Playgroud)

做完了