# 3 node ES cluster...one node only holds replicas

**URL:** <https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454>\
**Category:** Elasticsearch\
**Created:** [March 3, 2016, 11:36pm UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454 "2016-03-03T23:36:42Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![ehogan](https://avatars.discourse-cdn.com/v4/letter/e/b487fb/32.png) [@ehogan](https://discuss.elastic.co/u/ehogan)\
**Post date:** [March 3, 2016, 11:36pm UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/1 "2016-03-03T23:36:42Z")

</div>

Today I had to restart my cluster to change some configuration settings.

I _think_ I did it the right way... following these instructions:

[https://www.elastic.co/guide/en/elasticsearch/reference/current/restart-upgrade.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/restart-upgrade.html)

However, after I turned shard allocation back on, the third node in my cluster has only replicas, no primary shards....and the second node has primaries only, no replicas. I know that I am still covered if I have a node failure, but I am confused as to why ES would have reallocated my shards in this manner. This is after 3+ hours of being up...and I have a pretty small dataset:

Indices: 54  
Total Shards: 348  
Unassigned Shards: 0  
Documents: 113,476,598  
Data: 128GB  
Uptime: 3 hours  
Version: 2.2.0

Can anyone shed some light on it for this ES newcomer?

Thanks!

-Emmett

---

<div class="post-metadata">

**Author:** ![anhlqn](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/anhlqn/32/5454_2.png) [@anhlqn](https://discuss.elastic.co/u/anhlqn)\
**Post date:** [March 3, 2016, 11:39pm UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/2 "2016-03-03T23:39:05Z")

</div>

I think ES does not balance primary/replica shards evenly among nodes, and that's normal. If you indexing data only to one node, all primary shards may allocated on that node. I saw similar behavior, and there's nothing to worry about.

---

<div class="post-metadata">

**Author:** ![ehogan](https://avatars.discourse-cdn.com/v4/letter/e/b487fb/32.png) [@ehogan](https://discuss.elastic.co/u/ehogan)\
**Post date:** [March 4, 2016, 1:10am UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/3 "2016-03-04T01:10:14Z")

</div>

Ok...I just thought that it was strange that it "chose" to put only replicas on one of the nodes and only primaries on another.

Thanks for the info!

-Emmett

---

<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:** [March 4, 2016, 1:19am UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/4 "2016-03-04T01:19:47Z")

</div>

It's somewhat random. You can force the primaries to be spread out by disabling replicas, letting things reallocate, then adding them back.

---

<div class="post-metadata">

**Author:** ![anhlqn](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/anhlqn/32/5454_2.png) [@anhlqn](https://discuss.elastic.co/u/anhlqn)\
**Post date:** [March 4, 2016, 4:42am UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/5 "2016-03-04T04:42:29Z")

</div>

Hi Mark,

Would indexing be faster if all primary shards locate on the node that receives indexing data?

---

<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:** [March 4, 2016, 5:13am UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/6 "2016-03-04T05:13:07Z")

</div>

Depends 😛  
You might run into contention for example, but unless you are doing massive volumes, it's unlikely.

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [March 4, 2016, 7:47am UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/7 "2016-03-04T07:47:54Z")

</div>

Primary and replica nodes do the same amount of work, so it should not matter.

---

<div class="post-metadata">

**Author:** ![anhlqn](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/anhlqn/32/5454_2.png) [@anhlqn](https://discuss.elastic.co/u/anhlqn)\
**Post date:** [March 4, 2016, 8:32pm UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/8 "2016-03-04T20:32:51Z")

</div>

So when indexing, an index request has to be completed on both primary and replica to be considered a finished request?

---

<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:** [March 4, 2016, 9:03pm UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/9 "2016-03-04T21:03:48Z")

</div>

Yeah, it does.

---

<div class="post-metadata">

**Author:** ![anhlqn](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/anhlqn/32/5454_2.png) [@anhlqn](https://discuss.elastic.co/u/anhlqn)\
**Post date:** [March 4, 2016, 11:59pm UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/10 "2016-03-04T23:59:24Z")

</div>

Thanks

---

<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 5, 2017, 11:11pm UTC](https://discuss.elastic.co/t/3-node-es-cluster-one-node-only-holds-replicas/43454/11 "2017-07-05T23:11:01Z")

</div>


