Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Elasticsearch server discovery configuration

I've installed ElasticSearch server, that i'm running by:

$ ./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

How I can configure Java client to connect to this server? I have just:

node.client=true

but, after trying to connect i'm receiving:

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

If i'm configuring java client as:

node.data=false

I'm getting following logs:

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)

As I understood it means that this new node (supposed to be client node) made itself a new master node. And I don't from log that it's found and connect to any other node.

Both server and client are started on same machine. 192.168.1.106:9200 are accessible from browser.

And I can't find any good documentation about discovery config. Where I can read more about ElasticSearch configurations? And how to configure Java client?

like image 990
Igor Artamonov Avatar asked Nov 09 '11 10:11

Igor Artamonov


People also ask

What is Elasticsearch discovery?

Overview. The process known as discovery occurs when an Elasticsearch node starts, restarts or loses contact with the master node for any reason. In those cases, the node needs to contact other nodes in the cluster to find any existing master node or initiate the election of a new master node.

What is discovery seed hosts in Elasticsearch?

Each seed hosts provider yields the IP addresses or hostnames of the seed nodes. If it returns any hostnames then these are resolved to IP addresses using a DNS lookup. If a hostname resolves to multiple IP addresses then Elasticsearch tries to find a seed node at all of these addresses.

Where is the Elasticsearch config file?

Configuration file You can find elasticsearch. yml in /usr/share/elasticsearch/config/elasticsearch. yml (Docker) or /etc/elasticsearch/elasticsearch.

What is Discovery Zen Minimum_master_nodes?

discovery.zen.minimum_master_nodes. 1. Indicates the number of process federation servers that are required for a cluster quorum. The default value of 1 is for single-server environments. For production environments, set the value to the number of process federation servers that required to form a quorum.


2 Answers

The most likely reason for this failure is firewall on your machine that blocks multicast discovery traffic on port 54328. Both client and master are broadcasting on this port during initial discovery and they don't hear back from each other. That's why when you specify node.client=true client node (that cannot be a master) fails with MasterNotDiscoveredException and node with no data elects itself as a master.

like image 133
imotov Avatar answered Sep 26 '22 09:09

imotov


I ran into the same problem and by using IP numbers in the config file resolved it for me.

in /config/elasticsearch.yml

uncomment and change the network.host setting to:

network.host: 127.0.0.1

You can also change this to your machine IP number in ifconfig.

like image 33
Yada Avatar answered Sep 23 '22 09:09

Yada