Управление репликами индексов 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 (и любые другие необходимые настройки/сопоставления), есть два варианта.
- Объедините все настройки/сопоставления и конфигурацию ISM в один шаблон индекса (или один шаблон индекса для каждого шаблона индекса).
- [ Лучшее решение ] Используйте функцию шаблонов индексов 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"
}
}
}
}
}