DataNode内のシャード再配置時の動作対象について

・ElasticsearchはDataNode内のディスク使用率が以下の閾値を超えると保管しているシャードを別のNodeに再配置しようと働きかけます。

cluster.routing.allocation.disk.watermark.high

その際に以下の基準があるかご存じでしょうか。

  • DataNode内のどのシャードが再配置の対象となるのか
  • どのNodeが再配置先の対象となるのか

ディスクベースのシャード割り当て|弾力性検索ガイド [7.0] |エラスティック (elastic.co)

@takumi.yoshikawa さん、

ver 8.2.1 のコードを見てみました。

  • どのシャードが再配置の対象となるのか

BalancedShardsAllocator.moveShards で実装されています。各データノードごとに均等にシャード存在可否の判断ができるような順序で判断するようです。例: node1 (s1, s2), node2 (s3, s4), node3 (s5) の場合、 s1, s3, s5, s2, s4 の順でチェックするイメージ。各ノードごとのシャード順はそのノードにシャードが配置された順です。

  • どの Node が再配置先の対象となるのか

クラスタ内のデータノードで均等にシャードを担当するように振り分けます。 BalancedShardsAllocator で実装しています。WeightFunction で weight の小さいデータノード順に、配置可能かをチェックして配置可能であればそのデータノードを利用します。空きディスク、データティアなどそれぞれの観点でチェックする複数の AllocationDecider で配置可能か確認します。全ての AllocationDecider で配置可能となった最も weight の少ないデータノードを利用します。WeightFunction はそのノードが保持しているシャードの個数をもとに計算しています。すなわち、担当シャード数の一番少ないノードです。

1 Like

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

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