文档首页/ 云搜索服务 CSS/ 用户指南/ 使用OpenSearch搜索数据/ 管理OpenSearch集群索引策略/ 通过索引生命周期管理实现OpenSearch集群存算分离
更新时间:2024-11-20 GMT+08:00

通过索引生命周期管理实现OpenSearch集群存算分离

方案概述

CSS支持存算分离,即将索引冻结到OBS来降低冷数据的存储成本。本文介绍如何使用索引生命周期管理,在特定的时间自动冻结索引,实现存算分离。

本案例通过配置生命周期策略,实现索引在创建3天后,自动被冻结,数据转储到OBS中;当索引创建7天后,删除该索引。

图1 存算分离

前提条件

  • CSS集群处于可用状态。
  • 使用OpenSearch 1.3.6版本的集群。

通过索引生命周期管理实现存算分离

  1. 登录云搜索服务管理控制台。
  2. 在左侧导航栏,选择对应的集群类型,进入集群列表页面。
  3. 在集群列表页面中,单击集群操作列的“Kibana”登录OpenSearch Dashboards页面。
  4. 在OpenSearch Dashboards的左侧导航中选择“Dev Tools”,进入命令执行页面。
  5. 创建生命周期策略“hot_warm_policy”。

    策略定义:当索引创建3天后,自动调用冻结索引API将数据转储到OBS;索引创建7天后,删除该索引。

    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": {}
              }
            ],
            "transitions": [
              {
                "state_name": "delete",
                "conditions": {
                  "min_index_age": "7d"
                }
              }
            ]
          },
          {
            "name": "delete",
            "actions": [
              {
                "delete": {}
              }
            ],
            "transitions": []
          }
        ],
        "ism_template": {
          "index_patterns": [
            "data*"
          ],
          "priority": 100
        }
      }
    }
  6. 新建索引模板“template_hot_warm”。

    模板定义:新建的所有“data”开头的索引会自动关联上生命周期策略“hot_warm_policy”。

    PUT _template/template_hot_warm
    {
      "index_patterns": "data*",
      "settings": {
        "number_of_replicas": 5,
        "number_of_shards": 1,
        "index.plugins.index_state_management.policy_id": "hot_warm_policy"
      },
      "mappings": {
        "properties": {
          "name": {
            "type": "text"
          }
        }
      }
    }
    表1 参数说明

    参数

    说明

    number_of_shards

    索引分片数

    number_of_replicas

    索引分片副本数

    index.plugins.index_state_management.policy_id

    生命周期的策略名

  7. 新建一个索引“data-2022-06-06”,该索引会自动应用索引模板“template_hot_warm”,并通过索引模板的配置与生命周期策略“hot_warm_policy”相关联,实现索引在创建3天后冻结,7天后删除。
    POST data-2022-06-06/_bulk
    {"index":{}}
    {"name":"name1"}
    {"index":{}}
    {"name":"name2"}
    {"index":{}}
    {"name":"name3"}
    {"index":{}}
    {"name":"name4"}
    {"index":{}}
    {"name":"name5"}
    {"index":{}}
    {"name":"name6"}
  8. 查询数据,确认数据是否实现自动存算分离。
    • 在索引创建三天后查看冻结的索引:
      GET _cat/freeze_indices?s=i&v

      正常情况下会显示3天以前的索引已经被冻结:

      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
    • 在索引创建7天后,查看索引情况,正常情况下7天以前的索引已经被删除。