# Setup high availability env using elasticsearch cluster

**URL:** <https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994>\
**Category:** Elasticsearch\
**Created:** [April 20, 2017, 7:05am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994 "2017-04-20T07:05:49Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Newbie111985](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/newbie111985/32/17561_2.png) [@Newbie111985](https://discuss.elastic.co/u/Newbie111985)\
**Post date:** [April 20, 2017, 7:05am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/1 "2017-04-20T07:05:49Z")

</div>

I want to setup an elasticsearch cluster consisting of 3 nodes. Each node is master eligible and can contain the data. I also need to achieve high availability with this elastic search cluster. Hence would like to know which load balancer should be used and what are the configurations required?  
Thanks in advance.

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [April 20, 2017, 7:47am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/2 "2017-04-20T07:47:05Z")

</div>

> [@Newbie111985](#):
>
> Hence would like to know which load balancer should be used and what are the configurations required?

Depends, we don't really suggest particular things. Pick something you like and use it! 🙂

---

<div class="post-metadata">

**Author:** ![Newbie111985](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/newbie111985/32/17561_2.png) [@Newbie111985](https://discuss.elastic.co/u/Newbie111985)\
**Post date:** [April 20, 2017, 8:59am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/3 "2017-04-20T08:59:43Z")

</div>

I really don't know hot to setup HA env suing elasticsearch. Can you point me to any link or documentation which describes how to do this?

---

<div class="post-metadata">

**Author:** ![warkolm](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/warkolm/32/39224_2.png) [@warkolm](https://discuss.elastic.co/u/warkolm)\
**Post date:** [April 20, 2017, 9:02am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/4 "2017-04-20T09:02:31Z")

</div>

Have a read of [https://www.elastic.co/guide/en/elasticsearch/guide/current/deploy.html](https://www.elastic.co/guide/en/elasticsearch/guide/current/deploy.html)

---

<div class="post-metadata">

**Author:** ![Newbie111985](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/newbie111985/32/17561_2.png) [@Newbie111985](https://discuss.elastic.co/u/Newbie111985)\
**Post date:** [April 20, 2017, 9:10am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/5 "2017-04-20T09:10:51Z")

</div>

Thanks. I have gone through this documentation. But it does not talk about how to deploy ES in high availability configuration. Basically, my requirement is as follows:  
I have a ES cluster with 3 nodes i.e., node1, node2 and node3.  
All nodes are master eligible and can contains data (shards).  
Currently, in my application I am using node1's IP to communicate with ES. Hence if node1 goes down, my application cannot communicate to ES even though node2 and node3 is running (because my app communicates using node1 IP). How to solve this problem?

---

<div class="post-metadata">

**Author:** ![A\_B](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/a_b/32/17104_2.png) [@A\_B](https://discuss.elastic.co/u/A_B)\
**Post date:** [April 20, 2017, 10:33am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/6 "2017-04-20T10:33:45Z")

</div>

I see two solutions

1. You make your application a bit "smarter" so you can give it an array of ES nodes like you can do for Logstash or Filebeat [https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-hosts](https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-hosts)
2. Use your own loadbalancer in front of ES. What OS are you running?

Cheers,  
AB

---

<div class="post-metadata">

**Author:** ![Newbie111985](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/newbie111985/32/17561_2.png) [@Newbie111985](https://discuss.elastic.co/u/Newbie111985)\
**Post date:** [April 20, 2017, 10:38am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/7 "2017-04-20T10:38:44Z")

</div>

Thanks for your reply.  
I am using Oracle Enterprise Linux 6, 64-bit.  
I need to create a connection to ES before using it in my application. Currently, I specify node1's host:port as I mentioned earlier. But if node1 goes down, my application cannot query from ES. How can I solve this?

---

<div class="post-metadata">

**Author:** ![A\_B](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/a_b/32/17104_2.png) [@A\_B](https://discuss.elastic.co/u/A_B)\
**Post date:** [April 20, 2017, 11:58am UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/8 "2017-04-20T11:58:56Z")

</div>

Is it only read access you need or do you write to ES as well?

Possible solutions would be haproxy, keepalived or even just a nginx vhost with several upstreams.

---

<div class="post-metadata">

**Author:** ![weibin.wu](https://avatars.discourse-cdn.com/v4/letter/w/4491bb/32.png) [@weibin.wu](https://discuss.elastic.co/u/weibin.wu)\
**Post date:** [April 20, 2017, 12:03pm UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/9 "2017-04-20T12:03:58Z")

</div>

Install keepalive in all ur node and generste a virtual ip. Then ur query should go to the virtual ip

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [May 18, 2017, 12:06pm UTC](https://discuss.elastic.co/t/setup-high-availability-env-using-elasticsearch-cluster/82994/10 "2017-05-18T12:06:40Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
