リバランスが途中で停止する現象について


(Yuji Kumada) #1

お世話になっております。

掲題の件について、ご教授いただければと思います。

ノード復旧の際のリバランスの挙動について、

[2016-xx-xx 09:19:11,906][INFO ][cluster.routing.allocation.decider] [data_nodeA] low disk watermark [15%] exceeded on [XXXXXXXXXXXXXXX][data_nodeB] free: 34.6gb[11.9%], replicas will not be assigned to this node

上記のログより、5日以上リバランスが停止し、
Elasticsearchの再起動をトリガーに再度リバランスが再開される、という現象が発生しております。

また、停止している間、上記ログのみが出力され続けていた状況です。

Elasticsearchのバージョンは1.4.1を使用しています。

よろしくお願いいたします。


(Jun Ohtani) #2

ディスクの使用量を元にシャードの廃止を停止する機能が働いているためです。
こちらを参照してください。https://www.elastic.co/guide/en/elasticsearch/reference/1.4/index-modules-allocation.html#disk


(Yuji Kumada) #3

大谷様

迅速なご回答ありがとうございます。
また、お礼が遅れ大変失礼いたしました。

調査したところ上記の「リバランス再開のトリガー」の部分の理解が誤っておりました。

今回の望む動作として
Elasticsearchの再起動を行いたく、再起動後にクラスタヘルスをgreenのまま維持したいです。

行った手順は以下の通りです。

①curl -XPOST 'localhost:9200/index/_close'
②settings変更
③curl -XPOST 'localhost:9200/index/_open'
④Elasticserch設定変更
⑤リバランスOFF
⑥再起動

⑤のリバランスOFFにて、
{"cluster.routing.allocation.enable":"none"}}'
{"cluster.routing.allocation.disable_allocation": true}}';
を設定することにより、シャードの移動(リバランス)は発生しない認識でしたが、今回再起動後にリバランスが発生しクラスタヘルスがyellowとなりました。

調査、検証したところ、リバランス発生のトリガーとなっていたのが、

③のindexopenの手順のタイミングであることがわかりました。

しかしながら、同一のクラスタにて再現しようと試しましたが一度リバランスが完了したクラスタでは同一の現象は再現しません。

リバランスの発生契機等、index close index openにてなぜリバランスが発生するのか。

たびたび申し訳ございませんが。ご教授ください。
よろしくお願いいたします。


(Jun Ohtani) #4

Elasticsearchは、shardの数をクラスタの内部で均等になるようにバランスを保つようになっています。
インデックスのcloseやopenを行うことで、openされているshardの数が不均等になったのではないかと。
なので、closeする前にリバランスOFFにするのが良いかと。


(Yuji Kumada) #5

大谷様

お世話になっております。
ご回答ありがとうございます。

ご指導いただいた内容にて手順を検討してみます。

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


(system) #6