ES1.7.5 - Help with multiple ES instances joined by tribe: publish host settings?


#1

I'm trying to join multiple local clusters together using a tribe. I'd appreciate any help you can offer!

Here's the setup:

  • Three physical hosts -- all running ES 1.7.5
  • Two independent clusters, each running two instances of elasticsearch on the same host (for a total of 4 instances)
    Each one only talks to itsself and serves requests over an nginx server
  • One tribe node intended to join the two independent clusters together.

"Visually"

[C1] : [I0:master] <-> [I1:data]
[C2] : [I0:master] <-> [I1:data]
[C3] : TRIBE <-> { [C1] [C2] }

The problem:
My publish host defaults to localhost for the clusters, as it is not communicating to other machines. When I configure the tribe node, however, it needs to be able to update state on that node. But I've been reading that additional publish_host settings are ignored. If I specify the tribe node as the publish host, the local instances of each local cluster no longer communicate with each other.

How can I enable local communication between ES instances (needed to make use of memory) and at the same time communicate with the tribe?

Thank you for your ideas.


#2

The best solution a colleague has proposed so far here is to use non-local IPs for all communication, including between multiple instances on the same host. While I think this works, there is a security implications (sure, we can throw up a firewall, but why listen at all?) of using an external IP when it isn't needed.

Does anyone have a better idea here?


(system) #3