15
votes

Starting from version 2.0 Elasticsearch binds only on the loopback interface by default (_local_ in terms of configuration).

The documentation says that there is a way to switch to another network, for example, _non_loopback_ binds to the first non-loopback interface. It works fine.

But I cannot figure out how do I combine these settings so that Elasticsearch binds on both loopback and non-loopback interfaces simultaneously?

PS. My reason is that I use Logstash on each Elasticsearch instance that connects to it via localhost, but I also want other Elasticsearch instances to see each other to form the cluster...

3
This might be doable using transport profiles but I haven't tried yet.Val
@Val, thank you for the suggestion, but according to the reference transport profiles are only for node-to-node communication... Of course, I can still use non-localhost IP address for Logstash configuration, but it would make configuration maintenance much worse than it is used to be in 1.x.Funbit
@Funbit how do you connect LS to ES?Andrei Stefan
@AndreiStefan Using this: hosts => ["127.0.0.1:9200"] . As I said, I could include ethernet IP here, but I would have to do that for each instance separately.. since Logstash does not support environment/dynamic variables in its configuration.Funbit
@Funbit what protocol are you using with LS? Assuming http (since port 9200)Andrei Stefan

3 Answers

40
votes

For 2.0 you would need to use

network.bind_host: 0
7
votes

As of ElasticSearch 7.x, this configuration has changed yet again. for a simple single node cluster bound to loopback, local and external IPs, you essentially do this:

network.host: [_local_, _site_, _global_]
cluster.initial_master_nodes: node-1

The cluster node setting is explained here while the network host setting is in the documentation here, although it doesn't say how you would assign multiple values to network.host.

2
votes

Go to

'<path_to_elasticsearch>/elasticsearch-2.3.4/config'

Open elasticsearch.yml

Add network.host: 0.0.0.0

Now check which port elasticsearch is using (9200 is default), go to firewall inbound rules and add those ports.