How To SetUp Distributed System With ES

Hi,

I have test & running ES basically.
Now I want to know how to setup it distributed, I try to google but don't
find any article about this.
So I post here my question.

  1. Currently, I setup 2 node for testing.
    Node #1 & Node#2, two are enable to hold data & be Master.

    At Java Client, I connect to it:

    • TransportClient transport = new TransportClient(settings);
      transport.addTransportAddress(new
      InetSocketTransportAddress(IP#1, Port#1));
      transport.addTransportAddress(new
      InetSocketTransportAddress(IP#2, Port#2));
      My ideal is let the Client decide where to index & searching. I assume
      that ES Java API auto do it when one of 2 node is busy.
      So if I have n Node, It would be fine for my system.

Is it true ? Or Java API client ALWAYS use the IP#1:Port#1 ? And
only use IP#2:Port#2 when IP#1:Port#1 die ? (Backup server)

  1. I read the config and find this document:

  2. You want this node to never become a master node, only to hold data.

This will be the "workhorse" of your cluster.

2. You want this node to only serve as a master: to not store any data and

to have free resources. This will be the "coordinator" of your cluster.

3. You want this node to be neither master nor data node, but

to act as a "search load balancer" (fetching data from nodes,

aggregating results, etc.)

I think it is useful for me to setup a distributed system but I am
confused about search load balancer.
What does it mean & its role in cluster topology ?

At this time, I would setup a cluster topology like this:

  • 3 Computer as WorkHose. (let say ES#1,ES#2,ES#3)
  • 1 Computer as Coordinator. (let say ES#0)

I have a Web & Thrift server to communicate with ES#0 (for Indexing &
Searching purpose).

Is it fine enough ?

Thank and Best Regards.

Sang Dang.

--