When do we need dedicated coordinating node?

Hi everyone, we're currenty facing an issue when we want to deploy our elasticstack deployment.

I'm just wondering when do we need dedicated coordinating node, because as i search across elasticsearch documentation there's no document that states it. What is the best practice for this, as i can remember elasticsearch assign coordinating roles to every node on the cluster.

Thanks!

Dedicated coordinating only nodes are generally not required and I have seen very large cluster work very well without them. They can help take some load off data nodes but whether that is beneficial is probably very use case specific, so it is hard to provide any general guidance. If you are running a lot of ingest pipelines it may be beneficial to set up dedicated coordinating/ingest nodes to which all indexing traffic is routed, but that is not dedicated coordinating only nodes.

Hi @Christian_Dahlqvist thanks for your replies!

I see. Now that you mentioned it, Imagine i have an elasticsearch cluster and only want to expose 1 node's ip, namely the coordinating node's ip to handle HTTP request from applications and not wanting to expose all of our nodes. Is that an issue?

if so from the application side, do there need to be any config changes if I add a new node to the elastic cluster?

You can choose to only expose some nodes to clients, but these do not necessarily need to be dedicated coordinating only nodes. Only exposing 1 node is however a bad practice as the exposed node would become a single point of failure. Sometimes a load balancer is placed in front of the cluster in order to expose a single IP but still allow multiple nodes to serve requests and achieve high availability.

So just exposing some nodes to clients e.g filebeat, and elastic cluster will rebalance the load automatically? if so, if i want to add for example new data node to the cluster, i must change the config for all filebeat client or not?

Sometimes a load balancer is placed in front of the cluster in order to expose a single IP but still allow multiple nodes to serve requests and achieve high availability.

I think this approarch is not very common on elasticsearch deployment right? because its add another layer of request before reach ES cluster; Does elasticsearch need requires a separate load balancer? What's your opinion about this

Elasticsearch does need an external load balancer but it is sometimes used. If you want to direct large number of clients directly to a reasonable number of nodes that may be a good use of coordinating only nodes (or dedicated ingest nodes).