# Elasticsearch cluster deployment topology

**URL:** <https://discuss.elastic.co/t/elasticsearch-cluster-deployment-topology/12492>\
**Category:** Elasticsearch\
**Created:** [June 20, 2013, 8:44am UTC](https://discuss.elastic.co/t/elasticsearch-cluster-deployment-topology/12492 "2013-06-20T08:44:34Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![imdhmd](https://avatars.discourse-cdn.com/v4/letter/i/d07c76/32.png) [@imdhmd](https://discuss.elastic.co/u/imdhmd)\
**Post date:** [June 20, 2013, 8:44am UTC](https://discuss.elastic.co/t/elasticsearch-cluster-deployment-topology/12492/1 "2013-06-20T08:44:34Z")

</div>

Following is the diagram representing the deployment topology that we are  
contemplating to follow in production:

[https://lh5.googleusercontent.com/-tbhAqDcOGKU/UcK92HCKpoI/AAAAAAAAAUY/IDerEXrka5c/s1600/es-arch.png](https://lh5.googleusercontent.com/-tbhAqDcOGKU/UcK92HCKpoI/AAAAAAAAAUY/IDerEXrka5c/s1600/es-arch.png)

Zookeeper is used for master discovery and election for the whole ES cluster  
Nginx will act as a proxy and use round-robin to select between the two  
http elasticsearch nodes. Following is a part of nginx configuration:

> upstream elasticsearch {  
> 192.168.10.23:9200;  
> 192.168.10.56:9200;  
> }  
> server {  
> listen 80;  
> server\_name localhost;  
> location / {  
> proxy\_pass [http://elasticsearch](http://elasticsearch);  
> proxy\_redirect off;  
> proxy\_set\_header X-Real-IP $remote\_addr;  
> proxy\_set\_header X-Forwarded-For $proxy\_add\_x\_forwarded\_for;  
> proxy\_set\_header Host $http\_host;  
> proxy\_read\_timeout 300s;  
> proxy\_buffering off;  
> }  
> }

My questions:

- Do you see any obvious flaw in the setup?
- Do you suggest any alterations?

Our primary concern is good load balancing. We are not worried too much  
about failover as of now.

Thanks

--  
You received this message because you are subscribed to the Google Groups "elasticsearch" group.  
To unsubscribe from this group and stop receiving emails from it, send an email to [elasticsearch+unsubscribe@googlegroups.com](mailto:elasticsearch+unsubscribe@googlegroups.com).  
For more options, visit [https://groups.google.com/groups/opt\_out](https://groups.google.com/groups/opt_out).

---

<div class="post-metadata">

**Author:** ![jprante](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/jprante/32/44941_2.png) [@jprante](https://discuss.elastic.co/u/jprante)\
**Post date:** [June 20, 2013, 12:20pm UTC](https://discuss.elastic.co/t/elasticsearch-cluster-deployment-topology/12492/2 "2013-06-20T12:20:25Z")

</div>

Zen discovery or unicast is all you need for node discovery/setup.

Internally, Elasticsearch distributes index and search load  
automatically between all the nodes of a cluster, no matter the node you  
connect your client to. Requests that can not be handled by one node are  
forwarded to another node. What you do is just connecting to one or the  
other node. That's fine and will work, as long as both nodes are up. But  
you could also connect to just one node and save the effort, and you  
will still have load balancing.

Jörg

--  
You received this message because you are subscribed to the Google Groups "elasticsearch" group.  
To unsubscribe from this group and stop receiving emails from it, send an email to [elasticsearch+unsubscribe@googlegroups.com](mailto:elasticsearch+unsubscribe@googlegroups.com).  
For more options, visit [https://groups.google.com/groups/opt\_out](https://groups.google.com/groups/opt_out).

---

<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:** [July 6, 2017, 2:30am UTC](https://discuss.elastic.co/t/elasticsearch-cluster-deployment-topology/12492/3 "2017-07-06T02:30:13Z")

</div>


