# DataNodeの稼働中にレプリカ数の設定を変更した際の挙動について

**URL:** https://discuss.elastic.co/t/datanode/305761
**Category:** 日本語による質問・議論はこちら
**Created:** [May 27, 2022, 1:23am UTC](https://discuss.elastic.co/t/datanode/305761 "2022-05-27T01:23:14Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![takumi.yoshikawa](https://avatars.discourse-cdn.com/v4/letter/t/a8b319/32.png) [@takumi.yoshikawa](https://discuss.elastic.co/u/takumi.yoshikawa)
#### Post date: [May 27, 2022, 1:23am UTC](https://discuss.elastic.co/t/datanode/305761/1 "2022-05-27T01:23:14Z")

</div>

Elasticsearch のDataNodeが稼働中にレプリカ数の設定を変更した際の挙動についてご教授いただけないでしょうか

＜実現したいこと＞

AWS上に以下の構成でDataNodeを作成した際に、レプリカ数を2個に設定しています。  
Elasticsearch のバージョンは7.10です。

AZ：3つ  
Node：6台

3つの各AZにはNodeの数が均等になるように2台ずつ配置されています。  
また、３つの各AZには「プライマリ」「レプリカ1」「レプリカ2」のそれぞれシャードが被らないように割り当てられています。

この状態でNode台数を5台に減らした際にレプリカ数の設定を1に減らして「プライマリ」「レプリカ1」のみのシャードとしたいです。  
レプリカ数の設定変更を実施するタイミングは6台から5台に減らした際にすべてのシャードが復旧したことを確認してから実施します。

＜解決したいこと＞

「レプリカ2」がまだ生きている状態でレプリカ数の設定を1に変更した際、残っている「レプリカ2」についてはどうなるのでしょうか。

想定：  
・レプリカ数の設定を反映したタイミングで削除される  
・レプリカ2は削除されないが、今後プライマリが更新された際はレプリカ1のみ更新される  
・設定反映時点で存在するレプリカ2については設定反映前と変わりなく動作する（設定反映後は新しいプライマリが作成されてもレプリカ2は作成されない）

---

<div class="post-metadata">

### Author: ![Tomo\_M](https://avatars.discourse-cdn.com/v4/letter/t/848f3c/32.png) [@Tomo\_M](https://discuss.elastic.co/u/Tomo_M)
#### Post date: [May 27, 2022, 3:10am UTC](https://discuss.elastic.co/t/datanode/305761/2 "2022-05-27T03:10:52Z")

</div>

レプリカ数はインデックスごとに設定できるかと思いますが、「レプリカ数の設定を1に変更」とは全てのインデックスについて[Update index settings API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html)を用いて、index.number\_of\_replicasを1に変更する、ということでしょうか。最後の「新しいプライマリが作成されても」という部分がよく分かりませんでした。既存のインデックスのプライマリシャード数は増やせなかったと思います。

---

<div class="post-metadata">

### Author: ![takumi.yoshikawa](https://avatars.discourse-cdn.com/v4/letter/t/a8b319/32.png) [@takumi.yoshikawa](https://discuss.elastic.co/u/takumi.yoshikawa)
#### Post date: [May 27, 2022, 5:38am UTC](https://discuss.elastic.co/t/datanode/305761/3 "2022-05-27T05:38:08Z")

</div>

ご回答をありがとうございます。

> 「レプリカ数の設定を1に変更」とは全てのインデックスについて[Update index settings API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html)を用いて、index.number\_of\_replicasを1に変更する、ということでしょうか。

こちらについてはその操作でレプリカ数を設定する認識で間違いありません。

> 最後の「新しいプライマリが作成されても」という部分がよく分かりませんでした。既存のインデックスのプライマリシャード数は増やせなかったと思います。

説明不足で申し訳ございません、こちらは新しく追加されたインデックスに対してシャード分割した際のプライマリシャードのことを指しております。

---

<div class="post-metadata">

### Author: ![Tomo\_M](https://avatars.discourse-cdn.com/v4/letter/t/848f3c/32.png) [@Tomo\_M](https://discuss.elastic.co/u/Tomo_M)
#### Post date: [May 30, 2022, 2:14am UTC](https://discuss.elastic.co/t/datanode/305761/4 "2022-05-30T02:14:38Z")

</div>

ディスクが空くまでは多少のタイムラグがあるかもしれませんが、基本的にはnumber\_of\_replica=1に変更した時点で（その情報がレプリカ2を持つノードに届く前に、そのノードがクラスターから切断されるなどの特殊な状況を除いて）、利用不能になるのではないかと思います。例えばnumber\_of\_replica=1に変更した後でプライマリ＋レプリカ1に障害が生じた場合に、削除済みのレプリカ2からの復元は厳しいのではないでしょうか。明記されている箇所は見つけられなかったので、厳密に知りたいのであればサポートなどに問い合わせた方が良さそうです。

新たにnumber\_of\_replica=1で作成したインデックスについては、レプリカ2は作成されないと思います。プライマリシャード数を増やす場合は、新しいインデックスへreindex操作を行うことになると思いますので、新たなインデックスを作る場合と同じです。

---

<div class="post-metadata">

### Author: ![takumi.yoshikawa](https://avatars.discourse-cdn.com/v4/letter/t/a8b319/32.png) [@takumi.yoshikawa](https://discuss.elastic.co/u/takumi.yoshikawa)
#### Post date: [May 30, 2022, 8:28am UTC](https://discuss.elastic.co/t/datanode/305761/5 "2022-05-30T08:28:33Z")

</div>

ご回答をありがとうございました。

---

<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: [June 27, 2022, 8:29am UTC](https://discuss.elastic.co/t/datanode/305761/6 "2022-06-27T08:29:18Z")

</div>

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