Coordinating node vs service Lod balancing different backends

Hi All,

I am setting up elasticsearch cluster on k8s using eck operator. we all know that service gets created ( clustername-es-http ) with all the backend endpoints as nodes(master,node etc etc). this behavior is default. However we can change this by routing traffic only to coordinating node which in turn forwards/loadbalances request to other backend nodes. So 2 approaches.

Approach 1: elasticsearch service -> all backend nodes
Approach 2: elasticsearch service -> coordinating node -> backed nodes

  1. what is the benefit of going with 2 approach, as load balancing is already happening in approach-1?

  2. are there any other benefits of going with approach-2?

  3. If approach-2 has more benefits can I apply the same to kibana as well?

Regards,
Purushotham Reddy. K

Hi! Sorry for the late answer.

Approach 2 (dedicated service for coordinating-only nodes) has the advantage of not routing requests to dedicated master nodes, for examples, and not overload them with user-facing requests.
Of course you need a minimum amount of coordinating-only nods to route requests efficiently. If you have a single coordinating-only node then your cluster availability and performance may depend on that single Pod.

If approach-2 has more benefits can I apply the same to kibana as well?

As of today (ECK 1.5.0), this is rather complicated to achieve.
Starting ECK 1.6.0 (soon!), this should be much easier, see Traffic Splitting | Elastic Cloud on Kubernetes [master] | Elastic.