Управление репликами индексов ISM с помощью шаблонов

У меня есть автономный экземпляр с Opensearch для целей тестирования, я хочу, чтобы он был легким и чистым, поэтому я использую ISM для удаления индексов старше x дней.

Я заметил, что по умолчанию Opensearch создает индекс управления (.opensearch-ism-config) с репликой «1».

Поскольку я использую автономный экземпляр (это просто тестирование, меня не беспокоит избыточность, высокая доступность или что-то в этом роде) и я хочу сохранить свой кластер с зеленым статусом, я решил, что хочу, чтобы эти индексы имели реплику " 0".

Для этого я создал шаблон, в котором я установил реплику «0» для этих индексов:

      {
  "order" : 100,
  "version" : 1,
  "index_patterns" : [".opensearch-ism-*"],
  "settings" : {
    "index": {
      "number_of_shards" : "1",
      "number_of_replicas": 0
    }
  }
}

После PUT я начинаю использовать ISM, чтобы индекс управления ISM создавался после того, как этот шаблон находится на узле Opensearch.

Я наблюдаю, что все индексы управления из ISM генерируются с помощью реплики «1», поэтому шаблон игнорируется.

Я могу установить для реплики значение «0», обновив настройки индекса после создания, но это не идеальный сценарий, поскольку индекс ISM меняется и время от времени генерируются новые.

Есть ли способ, чтобы индексы ISM автоматически применяли реплику «0»?

1 ответ

Я столкнулся с этой же проблемой при переходе с Elasticsearch 6 на OpenSearch. В Elasticsearch я привык к тому, что шаблоны индексов аддитивны. Например, в Elasticsearch 6 я мог бы сделать что-то вроде этого:

Создайте шаблон индекса для настройки псевдонима смены ILM.

      PUT _template/a_descriptive_template_name-ilm
{
    "settings": {
        "index.lifecycle.name": "an_efficient_ilm_policy",
        "index.lifecycle.rollover_alias": "a_descriptive_index_name-ilm"
    },
    "order": 10,
    "index_patterns": [
        "a_descriptive_index_name-ilm-*"
    ]
}

Создайте шаблон индекса для настройки параметров сегмента индекса.

      PUT _template/a_common_template_name
{
    "settings": {
        "number_of_shards": 2,
        "number_of_replicas": 1
    },
    "order": 5,
    "index_patterns": [
        "a_descriptive_index_name-ilm-*"
    ]
}

Создайте начальный индекс

      PUT a_descriptive_index_name-ilm-000001
{
    "aliases": {
        "a_descriptive_index_name-ilm": {
            "is_write_index": true
        }
    }
}

Проверьте настройки

      GET a_descriptive_index_name-ilm-000001
{
  "a_descriptive_index_name-ilm-000001" : {
    "aliases" : {
      "a_descriptive_index_name-ilm" : {
        "is_write_index" : true
      }
    },
    "mappings" : { },
    "settings" : {
      "index" : {
        "lifecycle" : {
          "name" : "an_efficient_ilm_policy",
          "rollover_alias" : "a_descriptive_index_name-ilm"
        },
        "number_of_shards" : "2",
        "provided_name" : "a_descriptive_index_name-ilm-000001",
        "creation_date" : "1692853100041",
        "number_of_replicas" : "1",
        "uuid" : "AJ3OiRaXRj2cVCvuKlUWgg",
        "version" : {
          "created" : "6081299"
        }
      }
    }
  }
}

Когда я попытался применить ту же технику в Opensearch 2.3, я заметил, что она не работает так, как я ожидал . Шаблон с более высоким приоритетом полностью перезаписал настройки шаблона с более низким приоритетом, даже если не было перекрывающихся настроек. В приведенном ниже примере, где я делаю то же самое, что и Elasticsearch (но использую другие команды для OpenSearch), вы увидите, что аддитивное поведение больше не поддерживается:

Создайте шаблон индекса для настройки псевдонима смены ISM.

      PUT _index_template/a_descriptive_template_name-ism
{
    "template": {
        "settings": {
            "plugins.index_state_management.rollover_alias": "a_descriptive_index_name-ism"
        }
    },
    "priority": 10,
    "index_patterns": [
        "a_descriptive_index_name-ism-*"
    ]
}

Создайте шаблон индекса для настройки параметров сегмента индекса.

      PUT _index_template/a_common_template_name
{
    "template": {
        "settings": {
          "number_of_shards": 2,
          "number_of_replicas": 1
        }
    },
    "priority": 5,
    "index_patterns": [
        "a_descriptive_index_name-ism-*"
    ]
}

Создайте начальный индекс

      PUT a_descriptive_index_name-ism-000001
{
    "aliases": {
        "a_descriptive_index_name-ism": {
            "is_write_index": true
        }
    }
}

Проверьте настройки

      {
  "a_descriptive_index_name-ism-000001" : {
    "aliases" : {
      "a_descriptive_index_name-ism" : {
        "is_write_index" : true
      }
    },
    "mappings" : { },
    "settings" : {
      "index" : {
        "number_of_shards" : "1",
        "plugins" : {
          "index_state_management" : {
            "rollover_alias" : "a_descriptive_index_name-ism"
          }
        },
        "provided_name" : "a_descriptive_index_name-ism-000001",
        "creation_date" : "1692853523944",
        "number_of_replicas" : "1",
        "uuid" : "ZZSjabAVQACC7m8Xn0uKtA",
        "version" : {
          "created" : "136247827"
        }
      }
    }
  }
}

Как вы можете видеть,"number_of_shards": 2настройка перезаписывается.

Чтобы применить как настройки сегментов, так и настройки ролловера ISM (и любые другие необходимые настройки/сопоставления), есть два варианта.

  1. Объедините все настройки/сопоставления и конфигурацию ISM в один шаблон индекса (или один шаблон индекса для каждого шаблона индекса).
  2. [ Лучшее решение ] Используйте функцию шаблонов индексов OpenSearch Composable , чтобы обеспечить «многослойность» шаблонов.

ОП ответил в более позднем комментарии: « Да, у меня есть другой шаблон индекса» . Чтобы решить этот сценарий, я предлагаю следовать варианту 2.

Вот пример:

Создайте шаблон компонента для настройки параметров сегмента индекса.

      PUT _component_template/shards_component_template
{
      "template": {
        "settings": {
          "number_of_shards": 2,
          "number_of_replicas": 1
        }
    }
}

Создайте шаблон индекса для настройки псевдонима смены ILM, ссылаясь на шаблон компонента.

      PUT _index_template/a_descriptive_template_name-ism
{
    "template": {
        "settings": {
            "plugins.index_state_management.rollover_alias": "a_descriptive_index_name-ism"
        }
    },
    "priority": 10,
    "index_patterns": [
        "a_descriptive_index_name-ism-*"
    ],
    "composed_of": [
        "shards_component_template"
    ]
}

Создайте начальный индекс

      PUT a_descriptive_index_name-ism-000001
{
    "aliases": {
        "a_descriptive_index_name-ism": {
            "is_write_index": true
        }
    }
}

Проверьте настройки

      {
  "a_descriptive_index_name-ism-000001" : {
    "aliases" : {
      "a_descriptive_index_name-ism" : {
        "is_write_index" : true
      }
    },
    "mappings" : { },
    "settings" : {
      "index" : {
        "number_of_shards" : "2",
        "plugins" : {
          "index_state_management" : {
            "rollover_alias" : "a_descriptive_index_name-ism"
          }
        },
        "provided_name" : "a_descriptive_index_name-ism-000001",
        "creation_date" : "1692854275856",
        "number_of_replicas" : "1",
        "uuid" : "SGvVILFsSG-3PdpoCg8Tkw",
        "version" : {
          "created" : "136247827"
        }
      }
    }
  }
}
Другие вопросы по тегам