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

Переключение между горячими и холодными данными

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

В кластере OpenSearch переключение между горячим и холодным хранением данных означает распределение данных по узлам с разными стандартами производительности в зависимости от температуры данных (то есть того, как часто к ним обращаются). Цель — достичь оптимальных затрат на хранение и производительности запросов.

  • Горячие данные: часто запрашиваемые данные, требующие низкой задержки, хранятся на высокопроизводительном оборудовании (например, SSD), чтобы обеспечить быструю запись и выполнение запросов.
  • Холодные данные: редко запрашиваемые данные, хранилище с оптимизированными затратами (например, HDD).

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

Как работает функция

Figure 1 Как работает переключение холодного/горячего хранилища


Ключевой момент — распределять хранение данных индекса по меткам узлов и политикам распределения индексов.

  • Метки узлов:
    • Узел данных (hot): По умолчанию хранит данные в реальном времени (горячие данные) и поддерживает запросы чтения/записи с высокой конкурентностью.
    • Узел холодных данных (cold): Хранит исторические данные (холодные данные). Узлы холодных данных используют менее дорогое оборудование и обеспечивают более низкую производительность запросов по сравнению с обычными узлами данных.
  • Распределение индексов: Вы можете настроить шаблоны индексов или напрямую указать имена индексов, чтобы распределять конкретные индексы по узлам данных или узлам холодных данных.

Процедура: Включите узлы холодных данных и настройте шаблон индекса или конкретные параметры индекса для распределения хранения данных индекса. Кластер автоматически распределяет данные в соответствии с вашими настройками.

Caution

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

Переключение между горячим и холодным хранилищем

  1. Проверьте, включены ли cold data nodes в целевом кластере.

    1. Войдите в консоль управления CSS.
    2. В navigation pane слева выберите Clusters > OpenSearch.
    3. В списке кластеров нажмите имя целевого кластера. Появится страница информации о кластере.
    4. На вкладке Overview проверьте, содержит ли область Node Information информацию о cold data node.
      • Если присутствует информация о cold data nodes, кластер имеет cold data nodes. Перейдите к следующему шагу.
      • Если нет, у кластера нет cold data nodes. Добавьте cold data nodes для кластера и затем перейдите к следующему шагу. Подробности о том, как добавить cold data nodes, см. Adding New Node Types.

  2. Войдите в OpenSearch Dashboards.

    1. На странице информации о кластере нажмите Dashboards в правом верхнем углу, чтобы войти в OpenSearch Dashboards.
    2. В левом navigation pane выберите Dev Tools.

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

  3. В OpenSearch Dashboards настройте политики распределения индексов.

    Вы можете настроить шаблоны индексов или напрямую указать имена индексов для распределения конкретных индексов на data nodes или cold data nodes.

    • Настройка шаблона индекса

      Настройте шаблон индекса для распределения соответствующих индексов на cold или hot data nodes. Например, выполните следующую команду, чтобы задать шаблон, сохраняющий вновь созданные индексы, имя которых начинается с myindex, на cold data nodes:

      PUT _template/{template_name}
      {
      "order": 1,
      "index_patterns": "myindex*",
      "settings": {
      "refresh_interval": "30s",
      "number_of_shards": "3",
      "number_of_replicas": "0",
      "routing.allocation.require.box_type": "cold"
      }
      }

      Таблица 1 Ключевые параметры

      Параметр

      Тип

      Описание

      index_patterns

      String

      Определяет шаблон соответствия имени индекса.

      Символ подстановки (*) может использоваться для соответствия нескольким индексам. Например, myindex* указывает все индексы, имя которых начинается с myindex.

      routing.allocation.require.box_type

      String

      Указывает тип узла данных для размещения шардов.

      Значение может быть:

      • cold: Шарды размещаются на холодных узлах данных.
      • hot: Шарды размещаются на обычных узлах данных.

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

    • Настройка конкретных индексов

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

      PUT {index_name}/_settings
      {
      "index.routing.allocation.require.box_type": "cold"
      }
      Table 2Описание параметра

      Параметр

      Тип

      Описание

      index_name

      String

      Указывает один или несколько индексов.

      • Один индекс: введите имя индекса, например, my_index.
      • Несколько индексов: введите несколько имен индексов и используйте запятую (,) для их разделения, например, my_index1,my_index2.
      • Подстановочный символ: используйте подстановочный символ (*) для сопоставления нескольких индексов. Например, myindex* указывает все индексы, имя которых начинается с myindex.

      routing.allocation.require.box_type

      String

      Указывает тип узла данных для размещения шардов.

      Значение может быть:

      • cold: Шарды размещаются на узлах данных cold.
      • hot: Шарды размещаются на обычных узлах данных.

      Если этот параметр не указан, шарды будут равномерно и случайно распределены между узлами данных cold и hot.

  4. Проверьте переключение между хранилищем hot и cold.

    Выполните следующую команду для проверки распределения шардов индекса:

    GET _cat/shards/{index_name}?v

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

    Как показано на следующей схеме, все шарды индекса myindex хранятся на узле данных cold css-e668-ess-cold-esn-1-1.

    index shard prirep state docs store ip node
    myindex 1 p STARTED 14085446 17.8gb 192.168.91.188 css-e668-ess- cold -esn-1-1
    myindex 2 p STARTED 14094005 17.9gb 192.168.91.188 css-e668-ess- cold -esn-1-1
    myindex 0 p STARTED 14094742 17.8gb 192.168.91.188 css-e668-ess- cold -esn-1-1

  5. Откатить конфигурацию переключения cold-hot.

    Чтобы отменить конфигурацию переключения cold-hot, выполните следующую команду:

    PUT {index_name}/_settings
    {
    "index.routing.allocation.require.box_type": null
    }

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

Связанные операции

  • Вы можете масштабировать узлы данных cold, добавляя или удаляя узлы или их ёмкость хранения, либо динамически добавляя узлы данных cold. Подробнее см. Managing Cluster Changes.
  • Если в вашем кластере отсутствуют узлы данных cold, но вы хотите сократить затраты на хранение, можно попробовать использовать раздельное хранение и вычисления. Подробнее см. Configuring Decoupled Storage and Compute.