ディスク不足のマスターノードの修正

Elasticsearchは、クラスターを調整するためにマスターノードを使用しています。マスターノードまたはマスターノードの候補がディスクスペース不足の場合、機能するために十分なディスクスペースがあることを確認する必要があります。ヘルスAPIがマスターノードがディスク不足であると報告した場合、マスターノードのディスク容量を増やす必要があります。

  • 1. Elastic Cloudコンソールにログインします。
  • 2. Elasticsearchサービスパネルで、デプロイメント名に対応するManage deployment列の下にあるギアをクリックします。
  • 3. Actions > Edit deploymentに移動し、次にMaster instancesセクションに移動します:
    マスターノードのディスク容量を増やす
  • 4. ドロップダウンメニューから事前選択された容量構成よりも大きいものを選択し、saveをクリックします。プランが適用されるのを待ち、問題が解決されるはずです。

マスターノードのディスク容量を増やすには、すべてのマスターノードをより高いディスク容量のマスターノードに置き換える必要があります。

  • 1. 最初に、どれだけのディスクスペースが必要かを示すディスク閾値を取得します。関連する閾値は高水位線であり、次のコマンドで取得できます:

Python

  1. resp = client.cluster.get_settings(
  2. include_defaults=True,
  3. filter_path="*.cluster.routing.allocation.disk.watermark.high*",
  4. )
  5. print(resp)

Ruby

  1. response = client.cluster.get_settings(
  2. include_defaults: true,
  3. filter_path: '*.cluster.routing.allocation.disk.watermark.high*'
  4. )
  5. puts response

Js

  1. const response = await client.cluster.getSettings({
  2. include_defaults: "true",
  3. filter_path: "*.cluster.routing.allocation.disk.watermark.high*",
  4. });
  5. console.log(response);

コンソール

  1. GET _cluster/settings?include_defaults&filter_path=*.cluster.routing.allocation.disk.watermark.high*

応答は次のようになります:

コンソール-結果

  1. {
  2. "defaults": {
  3. "cluster": {
  4. "routing": {
  5. "allocation": {
  6. "disk": {
  7. "watermark": {
  8. "high": "90%",
  9. "high.max_headroom": "150GB"
  10. }
  11. }
  12. }
  13. }
  14. }
  15. }

上記は、ディスク不足を解決するためには、ディスク使用量を90%未満にするか、150GB以上の空き容量を確保する必要があることを意味します。この閾値の動作については、こちらを参照してください。

  • 2. 次のステップは、現在のディスク使用量を確認することです。これにより、どれだけの追加スペースが必要かを計算できます。以下の例では、可読性のためにマスターノードのみを示します:

Python

  1. resp = client.cat.nodes(
  2. v=True,
  3. h="name,master,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
  4. )
  5. print(resp)

Ruby

  1. response = client.cat.nodes(
  2. v: true,
  3. h: 'name,master,node.role,disk.used_percent,disk.used,disk.avail,disk.total'
  4. )
  5. puts response

Js

  1. const response = await client.cat.nodes({
  2. v: "true",
  3. h: "name,master,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
  4. });
  5. console.log(response);

コンソール

  1. GET /_cat/nodes?v&h=name,master,node.role,disk.used_percent,disk.used,disk.avail,disk.total

応答は次のようになります:

コンソール-結果

  1. name master node.role disk.used_percent disk.used disk.avail disk.total
  2. instance-0000000000 * m 85.31 3.4gb 500mb 4gb
  3. instance-0000000001 * m 50.02 2.1gb 1.9gb 4gb
  4. instance-0000000002 * m 50.02 1.9gb 2.1gb 4gb
  • 3. 望ましい状況は、ディスク使用量を関連する閾値、私たちの例では90%未満にすることです。すぐに閾値を超えないように、いくつかの余裕を持たせることを検討してください。複数のマスターノードがある場合、すべてのマスターノードがこの容量を持つことを確認する必要があります。新しいノードが準備できていると仮定して、各マスターノードに対して次の3つのステップを実行します。
  • 4. マスターノードの1つを停止します。
  • 5. 新しいマスターノードの1つを起動し、クラスターに参加するのを待ちます。これを確認するには:

Python

  1. resp = client.cat.nodes(
  2. v=True,
  3. h="name,master,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
  4. )
  5. print(resp)

Ruby

  1. response = client.cat.nodes(
  2. v: true,
  3. h: 'name,master,node.role,disk.used_percent,disk.used,disk.avail,disk.total'
  4. )
  5. puts response

Js

  1. const response = await client.cat.nodes({
  2. v: "true",
  3. h: "name,master,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
  4. });
  5. console.log(response);

コンソール

  1. GET /_cat/nodes?v&h=name,master,node.role,disk.used_percent,disk.used,disk.avail,disk.total
  • 6. クラスターが初期のマスターノードの数を持っていることを確認した後、すべての初期マスターノードが置き換えられるまで次のノードに進みます。