I am trying to setup a production ready self managed Elasticsearch cluster on AWS. The main reason for going self managed is that we want:
- Latest ES version (8.6+)
- Deploy in a specific VPC
- Install custom plugins
We are trying to setup a 3 node cluster which can scale up based on the resource utilisations. We considered using autoscaling groups to achieve this. Getting stuck on the following points:
How to get a cluster url?
Normally we could configure an ALB and have it forward requests to the resource nodes, but from what I understand this is not a great idea for Elasticsearch as ES load balances requests by itself and adding something like an ALB would just be another useless network hop.
Is adding each nodes IP to a Route53 A record a good way? But here due to dns caching we may be sending requests to a node that crashed and has been replaced by another node by the ASG.
What is the best way to achieve this?
It's a continuation of the above question but how is load balancing configured?
I understand that each node acts as a co-ordinator but is it a good idea to bombard all requests to the same node or should the initial requests itself be balanced across all the nodes.
If the requests do need to be load balanced, is it the client's job to do so? If so before making requests should the client connect to a specific node using it's IP?
Again I think it would depend on the choice for the above questions but how should SSL be configured for this cluster?
I understand that this may be a duplicate or there might be resources available online pointing to these answers but was unable to find anything which talked about these things in specifc. Would really appreciate some help here.