Best Configuration for 3 Node Cluster

Hi,
I have a 3 node cluster. I want to know what would be the best configuration of elasticsearch.

Following is my hardware capability :

  1. Server1 - 16GB RAM , 94GB Disk space
  2. Server2 - 16GB RAM, 94GB Disk space
  3. Server3 - 8GB RAM, 19GB Disk space ( Kibana installed on this)

I have set the ES_HEAP_SIZE to 8GB on first 2 servers and 4GB on the third server.

Kindly let me know the best configuration.

Thanks,
RK

I my opinion, you should use Server3 as Master server only and don't use it as a data node.

I have configured Server3 as Master only Node, then My Cluster health shows RED.

Please suggest the best possible combination.

Thanks,
RK

That's probably because you had data shards with no replicas on that node, and now when that node is data-only the shards aren't available anymore. Make it a data node again to get your green status back, add one replicas for those indexes, then make it a master-only node.

For a three-node cluster I think master-only nodes are rather wasteful, and with a single master you have a single point of failure for the cluster.

1 Like

Thanks for the suggestion !!

We are aiming at highest availability of the service/data, so we are bound to go with at-least 2 master nodes.

I have made the following changes and the cluster state is now green.

Server1 : 
    node.master : true
    node.data : true

Server2:
    node.master : true
    node.data : true

Server3:    (Fact that this server has the least RAM and disk space)
    node.data : true

I think this is the best possible configuration. More suggestions/comments are welcome :slight_smile:

Thanks,
RK

I would consider having the nodes on the two more powerful servers hold data and be master eligible. As you will be running Kibana in addition to Elasticsearch on the least powerful server it may make sense to make it be master eligible (you always want to have 3 master eligible nodes) but not hold data.

3 Likes

I tried making the least powerful server master eligible, but not hold data by setting

node.master: true
node.data: false

but then, if i see the ES cluster health, it is yellow with below stats.

Would these stats denote an healthy Elasticsearch cluster ?

Thanks,
RK

Yellow means that all data is available but that not all replicas have been allocated. If you have no more than one replica for these shards it should be possible to allocate all shards since you have two data nodes. The logs might contain clues about why it refuses to allocate the remaining shards. I believe there's also an explain API that tells you why or why not ES makes its shard allocations.

1 Like

There was some older data on the Server3 (least powerful server). So i deleted all the data and then restarted all of the ES instances. Now everything seems fine.

Thanks for your support and time !! :slight_smile:

Regards,
RK