Spec-Zone.ru › Elasticsearch 8
›Elasticsearch Guide [8.17] ›Устранение неполадок

Решение проблемы с узлами ролей, которые заполнили диск

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

  1. Войдите в консоль Elastic Cloud.
  2. На панели Сервис Elasticsearch нажмите на шестеренку в колонке, соответствующей имени вашей развертывания.
  3. Перейдите к Actions > Edit deployment, а затем к разделу Coordinating instances или Machine Learning instances в зависимости от ролей, указанных в диагностике:

    Increase disk capacity of other nodes
  4. Выберите конфигурацию емкости, большую, чем предварительно выбранная, из раскрывающегося списка и нажмите save. Дождитесь применения плана, и проблема должна быть решена.

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

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

    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. Следующий шаг — узнать текущее использование дискового пространства. Это позволит рассчитать, сколько дополнительного места требуется. В приведенном ниже примере для наглядности показан только узел машинного обучения:

    resp = client.cat.nodes(
        v=True,
        h="name,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
    )
    print(resp)
    response = client.cat.nodes(
      v: true,
      h: 'name,node.role,disk.used_percent,disk.used,disk.avail,disk.total'
    )
    puts response
    const response = await client.cat.nodes({
      v: "true",
      h: "name,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
    });
    console.log(response);
    GET /_cat/nodes?v&h=name,node.role,disk.used_percent,disk.used,disk.avail,disk.total

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

    name                node.role disk.used_percent disk.used disk.avail disk.total
    instance-0000000000     l                 85.31    3.4gb     500mb       4gb
  3. Целесообразно снизить использование дискового пространства ниже соответствующего порога, в нашем случае ниже 90%. Подумайте о добавлении некоторого запаса, чтобы вскоре не превысить порог. Предполагая, что у вас готов новый узел, добавьте этот узел в кластер.
  4. Проверьте, присоединился ли новый узел к кластеру:

    resp = client.cat.nodes(
        v=True,
        h="name,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
    )
    print(resp)
    response = client.cat.nodes(
      v: true,
      h: 'name,node.role,disk.used_percent,disk.used,disk.avail,disk.total'
    )
    puts response
    const response = await client.cat.nodes({
      v: "true",
      h: "name,node.role,disk.used_percent,disk.used,disk.avail,disk.total",
    });
    console.log(response);
    GET /_cat/nodes?v&h=name,node.role,disk.used_percent,disk.used,disk.avail,disk.total

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

    name                node.role disk.used_percent disk.used disk.avail disk.total
    instance-0000000000     l                 85.31    3.4gb     500mb       4gb
    instance-0000000001     l                 41.31    3.4gb     4.5gb       8gb
  5. Теперь вы можете удалить экземпляр, у которого закончилось место на диске.

© 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/fix-other-node-out-of-disk.html

Spec-Zone.ru

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