Облачная платформаAdvanced

Разделение хранилища и вычислений с использованием ISM

Язык статьи: Русский
Показать оригинал
Страница переведена автоматически и может содержать неточности. Рекомендуем сверяться с английской версией.

В сценариях аналитики журналов и мониторинга затраты на хранение исторических данных со временем накапливаются. Однако большинство «холодных» данных запрашивается лишь изредка для аудита или обратного отслеживания. Хранение таких данных на дорогих локальных SSD в течение длительных периодов не имеет экономического смысла. Чтобы сбалансировать затраты на хранение с требованиями длительного удержания, CSS предоставляет функцию разделения хранилища и вычислений для кластеров OpenSearch. При настройке политики управления состоянием индекса (ISM) в сочетании с заморозкой индекса можно автоматически перемещать подходящие индексы с локальных SSD в объектное хранилище с более низкой стоимостью. Данные остаются доступными для поиска, хотя задержка запросов может увеличиться.

Решение

В этой теме описывается, как настроить политику ISM для разделения хранилища и вычислений.

  • Hot phase: Данные хранятся на высокопроизводительных локальных дисках для поддержки операций чтения и записи с высокой конкурентностью.
  • Warm phase: Индекс заморожен, а данные выгружаются в OBS. На локальных дисках сохраняются только необходимые метаданные, а запросы направляются непосредственно в OBS. (Первоначальные запросы могут иметь более высокую задержку, но последующие запросы могут ускоряться за счёт использования кэша.)
  • Delete phase: По истечении периода удержания данных индекс автоматически удаляется для освобождения места в хранилище.

В этом примере для кластера OpenSearch создаётся политика ISM. Согласно этой политике, вновь созданный индекс автоматически замораживается через три дня, данные выгружаются в OBS; и удаляется через семь дней.

Рисунок 1 Разделение хранилища и вычислений


Ограничения

Только кластеры OpenSearch 1.3.6 и 2.19.0 поддерживают разделённое хранилище и вычисления.

Настройка политики ISM

  1. Войдите в OpenSearch Dashboards и перейдите на страницу выполнения команд.
    1. Войдите в консоль управления CSS.
    2. В панели навигации слева выберите Clusters > OpenSearch.
    3. В списке кластеров найдите целевой кластер и нажмите Dashboards в столбце Operation, чтобы войти в OpenSearch Dashboards.
    4. В левой панели навигации выберите Dev Tools.

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

  2. Определите политику ISM и свяжите её с шаблоном индекса, чтобы автоматизировать разделение хранения и вычислений для новых индексов, создаваемых с использованием этого шаблона.

    Например, создайте политику с именем hot_warm_policy. Согласно этой политике, вновь созданный индекс автоматически замораживается через три дня, при этом данные выгружаются в OBS; и полностью удаляется через семь дней. Свяжите политику с шаблоном индекса, чтобы новые индексы, имя которых начинается с data, автоматически наследовали эту политику.

    PUT _plugins/_ism/policies/hot_warm_policy
    {
    "policy": {
    "description": "hot warm delete workflow",
    "error_notification": null,
    "default_state": "hot",
    "states": [
    {
    "name": "hot",
    "actions": [],
    "transitions": [
    {
    "state_name": "warm",
    "conditions": {
    "min_index_age": "3d"
    }
    }
    ]
    },
    {
    "name": "warm",
    "actions": [
    {
    "freeze_low_cost": {} // Freeze the index.
    }
    ],
    "transitions": [
    {
    "state_name": "delete",
    "conditions": {
    "min_index_age": "7d"
    }
    }
    ]
    },
    {
    "name": "delete",
    "actions": [
    {
    "delete": {}
    }
    ],
    "transitions": []
    }
    ],
    "ism_template": { // Associate with an index template.
    "index_patterns": [
    "data*"
    ],
    "priority": 100
    }
    }
    }
  3. Запишите данные в индекс.

    Например, создайте индекс с именем data-2022-06-06 и записывайте данные в него пакетами.

    POST data-2022-06-06/_bulk
    {"index":{}}
    {"name":"name1"}
    {"index":{}}
    {"name":"name2"}
    {"index":{}}
    {"name":"name3"}
    {"index":{}}
    {"name":"name4"}
    {"index":{}}
    {"name":"name5"}
    {"index":{}}
    {"name":"name6"}

    Индекс автоматически применит политику ISM hot_warm_policy.

  4. Запросите данные и проверьте, автоматически ли применена политика ISM.
    1. Через три дня после создания индекса запросите список замороженных индексов и проверьте, были ли индексы, созданные три дня назад, заморожены.
      GET _cat/freeze_indices?s=i&v

      Если возвращённый результат содержит data-2022-06-06, индекс был выгружен в OBS.

      health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
      green open data-2022-06-06 x8ab5NX6T3Ox_xoGUanogQ 1 1 6 0 7.6kb 3.8kb
    2. Через семь дней после создания индекса запросите список индексов и проверьте, были ли индексы, созданные семь дней назад, удалены.
      GET /_cat/indices?expand_wildcards=open,closed

      Если возвращённый результат не содержит data-2022-06-06, индекс был удалён.