ディスク不足の他の役割ノードを修正する

Elasticsearchは、データの保存やクラスターの調整以外の機能を実行するために専用ノードを使用できます。たとえば、機械学習です。これらのノードの1つ以上がスペース不足になっている場合、機能するために十分なディスクスペースがあることを確認する必要があります。 ヘルスAPI が、マスターではなくデータを含まないノードがスペース不足であると報告した場合、このノードのディスク容量を増やす必要があります。

  • 1. Elastic Cloudコンソールにログインします。
  • 2. Elasticsearchサービスパネルで、デプロイメント名に対応するManage deployment列の下にあるギアをクリックします。
  • 3. Actions > Edit deploymentに移動し、診断にリストされている役割に応じてCoordinating instancesまたはMachine Learning 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,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,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,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
  4. });
  5. console.log(response);

コンソール

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

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

コンソール-結果

  1. name node.role disk.used_percent disk.used disk.avail disk.total
  2. instance-0000000000 l 85.31 3.4gb 500mb 4gb
  • 3. 望ましい状況は、ディスク使用量を関連する閾値、私たちの例では90%未満にすることです。すぐに閾値を超えないように、いくつかの余裕を持たせることを検討してください。新しいノードが準備できていると仮定して、このノードをクラスターに追加します。
  • 4. 新しいノードがクラスターに参加したことを確認します:

Python

  1. resp = client.cat.nodes(
  2. v=True,
  3. h="name,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,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,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
  4. });
  5. console.log(response);

コンソール

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

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

コンソール-結果

  1. name node.role disk.used_percent disk.used disk.avail disk.total
  2. instance-0000000000 l 85.31 3.4gb 500mb 4gb
  3. instance-0000000001 l 41.31 3.4gb 4.5gb 8gb
  • 5. これで、ディスクスペース不足のインスタンスを削除できます。