Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Устранение неполадок ›Устранение проблемы с узлами данных, выходящими за пределы дискового пространства

Уменьшение использования дискового пространства узлами данных

Для уменьшения использования дискового пространства в вашем кластере без потери данных можно попробовать уменьшить количество реплик индексов.

Уменьшение количества реплик индекса может потенциально снизить производительность поиска и избыточность данных. Однако это быстро позволит кластеру "перевести дух" до внедрения более постоянного решения.

Используйте Kibana

  1. Войдите в консоль Elastic Cloud.
  2. На панели Служба Elasticsearch нажмите имя вашего развертывания.

    Если имя вашего развертывания отключено, ваши экземпляры Kibana могут быть неисправны. В этом случае обратитесь в службу поддержки Elastic Support. Если ваше развертывание не включает Kibana, вам необходимо сначала его включить.

  3. Откройте меню навигации справа от логотипа Elastic в левом верхнем углу и перейдите к Stack Management > Index Management.
  4. В списке всех ваших индексов дважды щелкните столбец Replicas, чтобы отсортировать индексы по количеству реплик, начиная с индекса с наибольшим количеством реплик. Просмотрите индексы и по одному выбирайте индекс с наименьшей важностью и большим количеством реплик.

    Уменьшение количества реплик индекса может потенциально снизить производительность поиска и избыточность данных.

  5. Для каждого выбранного индекса нажмите на его имя, а затем на появившейся панели нажмите Edit settings, уменьшите значение index.number_of_replicas до желаемого значения и нажмите Save.

    Reducing replicas
  6. Продолжайте этот процесс до тех пор, пока кластер снова не станет стабильным.

Чтобы оценить, сколько реплик необходимо удалить, сначала необходимо оценить количество дискового пространства, которое необходимо освободить.

  1. Сначала извлеките соответствующие пороговые значения диска, которые укажут, сколько места следует освободить. Соответствующие пороговые значения — это верхний предел для всех уровней, кроме замороженного, и пороговое значение затопления для замороженного уровня. Следующий пример демонстрирует недостаток дискового пространства на уровне «hot», поэтому мы извлечем только верхний предел:

    resp = client.cluster.get_settings(
        include_defaults=True,
        filter_path="*.cluster.routing.allocation.disk.watermark.high*",
    )
    print(resp)
    response = client.cluster.get_settings(
      include_defaults: true,
      filter_path: '*.cluster.routing.allocation.disk.watermark.high*'
    )
    puts response
    const response = await client.cluster.getSettings({
      include_defaults: "true",
      filter_path: "*.cluster.routing.allocation.disk.watermark.high*",
    });
    console.log(response);
    GET _cluster/settings?include_defaults&filter_path=*.cluster.routing.allocation.disk.watermark.high*

    Ответ будет выглядеть так:

    {
      "defaults": {
        "cluster": {
          "routing": {
            "allocation": {
              "disk": {
                "watermark": {
                  "high": "90%",
                  "high.max_headroom": "150GB"
                }
              }
            }
          }
        }
      }
    }

    Это означает, что для решения проблемы нехватки дискового пространства необходимо либо снизить использование дискового пространства ниже 90 %, либо иметь более 150 ГБ свободного пространства. Подробнее о работе этого порога см. здесь.

  2. Следующий шаг — определить текущее использование дискового пространства; это укажет, сколько места необходимо освободить. Для простоты в нашем примере один узел, но вы можете применить то же самое ко всем узлам, которые превышают соответствующий порог.
  3. resp = client.cat.allocation(
        v=True,
        s="disk.avail",
        h="node,disk.percent,disk.avail,disk.total,disk.used,disk.indices,shards",
    )
    print(resp)
    response = client.cat.allocation(
      v: true,
      s: 'disk.avail',
      h: 'node,disk.percent,disk.avail,disk.total,disk.used,disk.indices,shards'
    )
    puts response
    const response = await client.cat.allocation({
      v: "true",
      s: "disk.avail",
      h: "node,disk.percent,disk.avail,disk.total,disk.used,disk.indices,shards",
    });
    console.log(response);
    GET _cat/allocation?v&s=disk.avail&h=node,disk.percent,disk.avail,disk.total,disk.used,disk.indices,shards

    Ответ будет выглядеть так:

    node                disk.percent disk.avail disk.total disk.used disk.indices shards
    instance-0000000000           91     4.6gb       35gb    31.1gb       29.9gb    111
  4. Настройка верхнего предела использования дискового пространства указывает на то, что использование дискового пространства необходимо снизить ниже 90 %. Рассмотрите возможность добавления некоторого запаса, чтобы узел не превысил порог в ближайшем будущем. В этом примере освободим примерно 7 ГБ.
  5. Следующим шагом является перечисление всех индексов и выбор, какие реплики уменьшать.

    Следующая команда упорядочивает индексы по убыванию количества реплик и размера первичного хранилища. Мы делаем это, чтобы помочь вам выбрать, какие реплики уменьшать, исходя из предположения, что чем больше у вас реплик, тем меньше риск при удалении копии, и чем больше реплика, тем больше места будет освобождено. Это не учитывает какие-либо функциональные требования, поэтому, пожалуйста, рассматривайте это лишь как рекомендацию.

    resp = client.cat.indices(
        v=True,
        s="rep:desc,pri.store.size:desc",
        h="health,index,pri,rep,store.size,pri.store.size",
    )
    print(resp)
    response = client.cat.indices(
      v: true,
      s: 'rep:desc,pri.store.size:desc',
      h: 'health,index,pri,rep,store.size,pri.store.size'
    )
    puts response
    const response = await client.cat.indices({
      v: "true",
      s: "rep:desc,pri.store.size:desc",
      h: "health,index,pri,rep,store.size,pri.store.size",
    });
    console.log(response);
    GET _cat/indices?v&s=rep:desc,pri.store.size:desc&h=health,index,pri,rep,store.size,pri.store.size

    Ответ будет выглядеть так:

    health index                                                      pri rep store.size pri.store.size
    green  my_index                                                     2   3      9.9gb          3.3gb
    green  my_other_index                                               2   3      1.8gb        470.3mb
    green  search-products                                              2   3    278.5kb         69.6kb
    green  logs-000001                                                  1   0      7.7gb          7.7gb
  6. В списке выше мы видим, что если мы уменьшим количество реплик до 1 для индексов my_index и my_other_index, мы освободим необходимое дисковое пространство. Нет необходимости уменьшать реплики search-products и logs-000001, так как у них нет реплик. Уменьшите реплики одного или нескольких индексов с помощью API обновления настроек индекса:

    Уменьшение количества реплик индекса может потенциально снизить производительность поиска и избыточность данных.

    resp = client.indices.put_settings(
        index="my_index,my_other_index",
        settings={
            "index.number_of_replicas": 1
        },
    )
    print(resp)
    response = client.indices.put_settings(
      index: 'my_index,my_other_index',
      body: {
        'index.number_of_replicas' => 1
      }
    )
    puts response
    const response = await client.indices.putSettings({
      index: "my_index,my_other_index",
      settings: {
        "index.number_of_replicas": 1,
      },
    });
    console.log(response);
    PUT my_index,my_other_index/_settings
    {
      "index.number_of_replicas": 1
    }

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/decrease-disk-usage-data-node.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API