当前位置:  开发笔记 > 编程语言 > 正文

Elasticsearch服务器发现配置

如何解决《Elasticsearch服务器发现配置》经验,为你挑选了3个好方法。

我安装了ElasticSearch服务器,我正在运行:

$ ./elasticsearch -f
 {0.18.2}[11698]: initializing ...
 loaded [], sites []
 {0.18.2}[11698]: initialized
 {0.18.2}[11698]: starting ...
 bound_address {inet[/0:0:0:0:0:0:0:0:9300]}, publish_address {inet[/192.168.1.106:9300]}
 new_master [Stingray][ocw4qPdmSfWuD9pUxHoN1Q][inet[/192.168.1.106:9300]], reason: zen-disco-join (elected_as_master)
 elasticsearch/ocw4qPdmSfWuD9pUxHoN1Q
 recovered [0] indices into cluster_state
 bound_address {inet[/0:0:0:0:0:0:0:0:9200]}, publish_address {inet[/192.168.1.106:9200]}
 {0.18.2}[11698]: started

如何配置Java客户端连接到此服务器?我刚才:

node.client=true

但是,在尝试连接后我收到了:

org.elasticsearch.discovery.MasterNotDiscoveredException: 
    at org.elasticsearch.action.support.master.TransportMasterNodeOperationAction$3.onTimeout(TransportMasterNodeOperationAction.java:162)

如果我将java客户端配置为:

node.data=false

我得到以下日志:

INFO main node:internalInfo:93 - [Stark, Tony] {0.18.2}[13008]: starting ...
INFO main transport:internalInfo:93 - [Stark, Tony] bound_address {inet[/0:0:0:0:0:0:0:0:9301]}, publish_address {inet[/192.168.1.106:9301]}
INFO elasticsearch[Stark, Tony]clusterService#updateTask-pool-13-thread-1 service:internalInfo:93 - [Stark, Tony] new_master [Stark, Tony][WkNn96hgTkWXRnsR0EOZjA][inet[/192.168.1.106:9301]]{data=false}, reason: zen-disco-join (elected_as_master)

据我所知,这意味着这个新节点(应该是客户端节点)使自己成为一个新的主节点.而且我没有记录它已被发现并连接到任何其他节点.

服务器和客户端都在同一台机器上启动.可以从浏览器访问192.168.1.106:9200.

而且我找不到任何有关发现配置的好文档.我可以在哪里阅读有关ElasticSearch配置的更多信息?以及如何配置Java客户端?



1> imotov..:

导致此故障的最可能原因是您的计算机上的防火墙阻止了端口54328上的多播发现流量.客户端和主服务器在初始发现期间都在此端口上进行广播,并且它们不会相互回复.这就是为什么当你指定node.client = true时,客户端节点(不能是主节点)因MasterNotDiscoveredException而失败,而没有数据的节点选择自己作为主节点.



2> Yada..:

我遇到了同样的问题,在配置文件中使用IP号码解决了它.

在/config/elasticsearch.yml中

取消注释并将network.host设置更改为:

network.host: 127.0.0.1

您也可以在ifconfig中将其更改为您的机器IP号.



3> gjoris..:

我遇到过同样的问题.最后,事实证明我遇到了防火墙问题,我的防火墙(在Ubuntu上)阻止了ElasticSearch的端口.我在Ubuntu上使用默认防火墙,ufw.

所以,为了打开端口,我在终端上运行了这些命令:

sudo ufw allow proto tcp to any port 9200:9400
sudo ufw allow proto tcp to any port 54328

我的集群在9200本地运行,我的所有客户都在9300+上打开.所以,我刚为他们打开了9200-9400的范围.54328用于多播广播.

只是为了完成:我也使用了TransportClient,它可以工作,但是我将我的localhost硬编码到了TransportClient将要处理的地址.对于生产代码来说不是一件好事:-)

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有