I have a cluster of 3 ElasticSearch nodes running on AWS EC2. These nodes are setup using OpsWorks/Chef. My intent is to design this cluster to be very resilient and elast
You're quite right to want to design for 'failover', and in AWS, here's how I recommend you do it.
1) Limit the nodes in your cluster that can be elected master. For the rest, set node.client: true. Base your choice of how many master electable nodes you have on how many you want available for failover.
2) Create an ELB that includes only the master electable nodes.
3) In Route 53, create a CNAME for your cluster, with the value set to the DNS name of your ELB.