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

Миграция фильтров распределения индексов на роли узлов

Если вы сейчас используете настраиваемые атрибуты узлов и фильтры распределения на основе атрибутов для перемещения индексов между уровнями данных в архитектуре «горячий-тёплый-холодный», мы рекомендуем перейти к использованию встроенных ролей узлов и автоматического распределения по уровням данных. Использование ролей узлов позволяет ILM автоматически перемещать индексы между уровнями данных.

Хотя мы рекомендуем полагаться на автоматическое распределение по уровням данных для управления данными в архитектуре «горячий-тёплый-холодный», вы по-прежнему можете использовать фильтры распределения на основе атрибутов для управления распределением фрагментов по другим причинам.

Elasticsearch Service и Elastic Cloud Enterprise могут выполнить миграцию автоматически. Для самообслуживаемых развертываний вам необходимо вручную обновить свою конфигурацию, политики ILM и индексы, чтобы перейти к использованию ролей узлов.

Автоматическая миграция на роли узлов в Elasticsearch Service или Elastic Cloud Enterprise

Если вы используете атрибуты узлов из шаблона развертывания по умолчанию в Elasticsearch Service или Elastic Cloud Enterprise, вам будет предложено перейти к использованию ролей узлов при:

  • Обновлении до Elasticsearch 7.10 или выше
  • Развертывании уровня данных «тёплый», «холодный» или «замороженный»
  • Включении масштабирования

Эти действия автоматически обновят конфигурацию кластера и политики ILM для использования ролей узлов. Кроме того, обновление до версии 7.14 или выше автоматически обновляет политики ILM при каждом изменении конфигурации вашего развертывания.

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

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

Миграция на роли узлов в самообслуживаемых развертываниях

Чтобы перейти к использованию ролей узлов:

  1. Назначение узлов данных соответствующему уровню данных.
  2. Удаление настроек распределения на основе атрибутов из вашей политики управления жизненным циклом индексов.
  3. Остановка настройки пользовательского атрибута «горячий» для новых индексов.
  4. Обновление существующих индексов, чтобы установить предпочтение уровня.

Назначение узлов данных уровню данных

Настройте соответствующие роли для каждого узла данных, чтобы назначить его одному или нескольким уровням данных: data_hot, data_content, data_warm, data_cold или data_frozen. Узел также может иметь другие роли. По умолчанию новые узлы настраиваются со всеми ролями.

При добавлении уровня данных к развертыванию Elasticsearch Service один или несколько узлов автоматически настраиваются с соответствующей ролью. Чтобы явно изменить роль узла в развертывании Elasticsearch Service, используйте API обновления развертывания. Замените node_type конфигурацию узла на соответствующую node_roles. Например, следующая конфигурация добавляет узел к уровням «горячий» и «контент» и позволяет ему действовать как узел обработки, удалённый и трансформационный узел.

"node_roles": [
  "data_hot",
  "data_content",
  "ingest",
  "remote_cluster_client",
  "transform"
],

Если вы непосредственно управляете своим кластером, настройте соответствующие роли для каждого узла в elasticsearch.yml. Например, следующая настройка назначает узел узлом только для данных на уровнях «горячий» и «контент».

node.roles [ data_hot, data_content ]

Удаление пользовательских настроек распределения из существующих политик ILM

Обновите действие распределения для каждой фазы жизненного цикла, чтобы удалить настройки распределения на основе атрибутов. ILM введет действие миграции в каждую фазу для автоматического перехода индексов между уровнями данных.

Если действие распределения не задаёт количество реплик, удалите действие распределения полностью. (Пустое действие распределения недопустимо.)

Политика должна указать соответствующую фазу для каждого уровня данных в вашей архитектуре. Каждая фаза должна быть присутствовать, чтобы ILM мог ввести действие миграции для перемещения индексов между уровнями данных. Если вам не нужно выполнять никаких других действий, фаза может быть пустой. Например, если вы включили уровни данных «тёплый» и «холодный» для развертывания, ваша политика должна включать фазы «горячий», «тёплый» и «холодный».

Остановка настройки пользовательского атрибута «горячий» для новых индексов

При создании потока данных его первый базовый индекс теперь автоматически назначается узлам data_hot. Аналогично, при непосредственном создании индекса он автоматически назначается узлам data_content.

В развертываниях Elasticsearch Service удалите шаблон индекса cloud-hot-warm-allocation-0, который настраивает атрибут распределения фрагментов «горячий» для всех индексов.

resp = client.indices.delete_template(
    name=".cloud-hot-warm-allocation-0",
)
print(resp)
response = client.indices.delete_template(
  name: '.cloud-hot-warm-allocation-0'
)
puts response
const response = await client.indices.deleteTemplate({
  name: ".cloud-hot-warm-allocation-0",
});
console.log(response);
DELETE _template/.cloud-hot-warm-allocation-0

Если вы используете пользовательский шаблон индекса, обновите его, чтобы удалить фильтры распределения на основе атрибутов, которые вы использовали для назначения новых индексов уровню «горячий».

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

Установка предпочтения уровня для существующих индексов

ILM автоматически переводит управляемые индексы через доступные уровни данных, автоматически вводя действие миграции в каждую фазу.

Чтобы позволить ILM переместить существующий управляемый индекс через уровни данных, обновите настройки индекса:

  1. Удалите пользовательский фильтр распределения, установив его в значение null.
  2. Установите предпочтение уровня.

Например, если ваш старый шаблон установил атрибут data в значение hot для распределения фрагментов по уровню «горячий», установите атрибут data в значение null и установите _tier_preference в data_hot.

resp = client.indices.put_settings(
    index="my-index",
    settings={
        "index.routing.allocation.require.data": None,
        "index.routing.allocation.include._tier_preference": "data_hot"
    },
)
print(resp)
response = client.indices.put_settings(
  index: 'my-index',
  body: {
    'index.routing.allocation.require.data' => nil,
    'index.routing.allocation.include._tier_preference' => 'data_hot'
  }
)
puts response
const response = await client.indices.putSettings({
  index: "my-index",
  settings: {
    "index.routing.allocation.require.data": null,
    "index.routing.allocation.include._tier_preference": "data_hot",
  },
});
console.log(response);
PUT my-index/_settings
{
  "index.routing.allocation.require.data": null,
  "index.routing.allocation.include._tier_preference": "data_hot"
}

Для индексов, которые уже перешли за пределы фазы «горячий», предпочтение уровня должно включать соответствующие резервные уровни, чтобы гарантировать, что фрагменты индекса могут быть распределены, если предпочтительный уровень недоступен. Например, укажите уровень «горячий» в качестве резервного для индексов, которые уже находятся на уровне «тёплый».

resp = client.indices.put_settings(
    index="my-index",
    settings={
        "index.routing.allocation.require.data": None,
        "index.routing.allocation.include._tier_preference": "data_warm,data_hot"
    },
)
print(resp)
response = client.indices.put_settings(
  index: 'my-index',
  body: {
    'index.routing.allocation.require.data' => nil,
    'index.routing.allocation.include._tier_preference' => 'data_warm,data_hot'
  }
)
puts response
const response = await client.indices.putSettings({
  index: "my-index",
  settings: {
    "index.routing.allocation.require.data": null,
    "index.routing.allocation.include._tier_preference": "data_warm,data_hot",
  },
});
console.log(response);
PUT my-index/_settings
{
  "index.routing.allocation.require.data": null,
  "index.routing.allocation.include._tier_preference": "data_warm,data_hot"
}

Если индекс уже находится на уровне «холодный», включите уровни «холодный», «тёплый» и «горячий».

Для индексов, у которых настроены как _tier_preference, так и require.data, но _tier_preference устарело (то есть, конфигурация атрибутов узла «холоднее», чем настроенное _tier_preference), для миграции необходимо удалить атрибут require.data и обновить _tier_preference, чтобы отразить правильное тиерирование.

Например, для индекса со следующей конфигурацией маршрутизации:

{
  "index.routing.allocation.require.data": "warm",
  "index.routing.allocation.include._tier_preference": "data_hot"
}

Конфигурация маршрутизации должна быть исправлена следующим образом:

resp = client.indices.put_settings(
    index="my-index",
    settings={
        "index.routing.allocation.require.data": None,
        "index.routing.allocation.include._tier_preference": "data_warm,data_hot"
    },
)
print(resp)
response = client.indices.put_settings(
  index: 'my-index',
  body: {
    'index.routing.allocation.require.data' => nil,
    'index.routing.allocation.include._tier_preference' => 'data_warm,data_hot'
  }
)
puts response
const response = await client.indices.putSettings({
  index: "my-index",
  settings: {
    "index.routing.allocation.require.data": null,
    "index.routing.allocation.include._tier_preference": "data_warm,data_hot",
  },
});
console.log(response);
PUT my-index/_settings
{
  "index.routing.allocation.require.data": null,
  "index.routing.allocation.include._tier_preference": "data_warm,data_hot"
}

Эта ситуация может возникнуть в системе, которая по умолчанию использует уровни данных, например, когда политика ILM, которая использует атрибуты узлов, восстанавливается и переводит управляемые индексы из фазы «горячий» в фазу «тёплый». В этом случае конфигурация атрибутов узла указывает правильный уровень, на котором должен быть распределён индекс.

© 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/migrate-index-allocation-filters.html

Spec-Zone.ru

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