# 本番環境でのshardとreplica数について

**URL:** https://discuss.elastic.co/t/shard-replica/141128
**Category:** 日本語による質問・議論はこちら
**Created:** [July 23, 2018, 9:32am UTC](https://discuss.elastic.co/t/shard-replica/141128 "2018-07-23T09:32:05Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![mukai](https://avatars.discourse-cdn.com/v4/letter/m/f08c70/32.png) [@mukai](https://discuss.elastic.co/u/mukai)
#### Post date: [July 23, 2018, 9:32am UTC](https://discuss.elastic.co/t/shard-replica/141128/1 "2018-07-23T09:32:06Z")

</div>

システム本番環境でのシャード(shard)数とレプリカ(replica)数を決める必要があるのですが、参考になるドキュメントやベストプラクティスはありますか？

(1) サーバ構成  
3ノード構成  
※当システムの集約(Terms Aggregation)時は誤差が発生してはいけないので、shard数は1にした方が良い？。

> **[Terms Aggregationで正確な結果を取得するには - Qiita](https://qiita.com/arenahito/items/f1a3a3551491ac51f390)**
>
> \# はじめに
> ElasticsearchのTerms Aggregationをを使用すると、集計結果の上位n件とかをサックリと取得できます。取得できるのですが、基本的にTerms Aggregationで取得できるのは「おおよそ」の値...

(2) 今回決めたい設定  
"settings" : {  
"number\_of\_shards" : ◯,  
"number\_of\_replicas" : ◯  
}

---

<div class="post-metadata">

### Author: ![r4-keisuke](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/r4-keisuke/32/9268_2.png) [@r4-keisuke](https://discuss.elastic.co/u/r4-keisuke)
#### Post date: [July 24, 2018, 2:20am UTC](https://discuss.elastic.co/t/shard-replica/141128/2 "2018-07-24T02:20:45Z")

</div>

はじめましてー

shard数はデータの容量等によって異なるので、利用される目的などによって設定する必要がありますね。  
shard毎に行われる処理が結構あるので、あんまり分散してしまうと良くはなさそうですし。

replicaは演算の分散と万が一のときにためだと思うので、そこも目的次第って感じでしょうね。。。

Diskの容量が確保できて、3nodesであれば2replicasでの問題ないのではないかと思います。

あまり役に立つ回答じゃなくて申し訳ないですが、ご参考までに！

---

<div class="post-metadata">

### Author: ![mnozawa](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mnozawa/32/15091_2.png) [@mnozawa](https://discuss.elastic.co/u/mnozawa)
#### Post date: [July 25, 2018, 1:31am UTC](https://discuss.elastic.co/t/shard-replica/141128/3 "2018-07-25T01:31:17Z")

</div>

terms aggregationの誤差はsizeおよびshard\_sizeの設定により抑制/解消することができます。  
[https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#\_shard\_size\_3](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_shard_size_3)

要するに全documentを集計対象に含めることができれば誤差はなくなります。  
number\_of\_shards:1としてしまうと3ノードのうち1ノードでしか集計をできなくなるので誤差なく集計できるdocument数は逆に小さくなります。誤差を許さないのが重要な要件であれば、資源を無駄なく使うため、number\_of\_shards:3(もしくは3の倍数)とするのが良いと思います。

本番運用に載せるのであれば、number\_of\_replicasは1以上にするのが基本です。replicaが1あれば、1ノードの障害に耐えられます。dedicated master nodeを置かない場合、2ノードに障害が起きるとクラスタを保てなくなるため、耐障害性の観点からはnumber\_of\_replicasを2以上にする動機は小さいです。  
replicaを増やすことでreadの性能が上がる場合もあるので、3以上のreplicaが無駄ということはありません。性能試験をしながら調整することになるかと思います。

shardとreplica、毎回悩みます。  
結局は「ケースバイケース」で永遠のテーマ的なところありますね。

---

<div class="post-metadata">

### Author: ![st1t](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/st1t/32/9188_2.png) [@st1t](https://discuss.elastic.co/u/st1t)
#### Post date: [July 25, 2018, 4:34am UTC](https://discuss.elastic.co/t/shard-replica/141128/4 "2018-07-25T04:34:23Z")

</div>

Shardの数に関してはこのブログが参考になるかなと思います 😃

> **[How many shards should I have in my Elasticsearch cluster?
	  	 | Elastic](https://www.elastic.co/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster)**
>
> Elasticsearch is a very versatile platform, that supports a variety of use cases, and provides great flexibility around data organisation and replication strategies. This flexibility can however somet...

スケール全般に関してはこの辺りが良いかと思います。  
[https://www.elastic.co/guide/en/elasticsearch/guide/master/scale.html](https://www.elastic.co/guide/en/elasticsearch/guide/master/scale.html)

---

<div class="post-metadata">

### Author: ![mukai](https://avatars.discourse-cdn.com/v4/letter/m/f08c70/32.png) [@mukai](https://discuss.elastic.co/u/mukai)
#### Post date: [July 30, 2018, 3:34am UTC](https://discuss.elastic.co/t/shard-replica/141128/5 "2018-07-30T03:34:50Z")

</div>

沢山のアドバイスとリンクを教えて頂き、ありがとうございます。

shard数は3 (事前に実際に誤差なく集計できることを確認する)、replica数は1 (容量が余りそうなら増やす？)をベースに検討いたします。

> How many shards should I have in my Elasticsearch cluster? | Elastic  
> [How many shards should I have in my Elasticsearch cluster? | Elastic Blog](https://www.elastic.co/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster)

また、上記ブログの記載もとても参考になりました。  
ブログに書かれていた下記の内容も参考にshard, replica数を検討させて頂きます。

1. 1shardサイズの上限は50GB。
2. 期間単位(年・月)でのindexの分割は大切。(shard, replica数の変更に容易に対応可。)
3. index数とmappingサイズのバランスが大切。
4. shardサイズは数GB～数十GB、時系列データのshardサイズは20GB～40GBが一般的。(小さすぎるshardはパフォーマンス低下につながる)
5. 小さすぎるshardは「Force Merge API」を使って、shard数を減らす。
6. 1ノードの最大shard数はメモリ量に比例する。メモリ1GB辺り最大20～25shard、16GB辺り最大320～400shardまで持てる。(shard数は余裕を持ったほうが、パフォーマンスは向上する。)
7. 本番データと複数クエリで実際に試して、適切な最大shardサイズを決めるのが良い。

---

<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: [August 27, 2018, 3:34am UTC](https://discuss.elastic.co/t/shard-replica/141128/6 "2018-08-27T03:34:57Z")

</div>

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