如何使用 ISM 來管理 Amazon OpenSearch Service 的儲存空間不足?

3 分的閱讀內容
0

我的 Amazon OpenSearch Service 叢集的儲存空間不足。

簡短描述

索引狀態管理 (ISM) 允許您將例行任務自動化,然後將它們套用至 OpenSearch Service 中的索引和索引模式。透過 ISM,您可以定義自訂管理政策,協助維護磁碟空間不足等問題。例如,您可以使用變換操作和 ISM 政策,根據索引大小等條件,自動刪除舊索引。當現有索引符合定義的條件時,變換操作會將目標變換至新索引。

若要使用變換等操作建立索引模式的 ISM 政策,請執行下列步驟:

1.    設定您的變換索引。

2.    建立 ISM 政策。

3.    將政策附加至索引。

4.    新增範本。

在您將政策附加至索引之後,索引會開始初始化,然後轉換成不同狀態,直到變換操作完成為止。如需變換操作的詳細資訊,請參閱 Open Distro for OpenSearch 網站上的變換

解決方法

設定您的變換索引

建立索引格式與索引模式相符的索引和別名:

^.*-\d+$

重要事項:請務必正確設定變換別名。否則,您會收到錯誤訊息。

在下列範例中,會建立 "test-index-000001",並填入數個文件。由於此範例使用變換索引,所以索引格式必須符合該模式。

PUT test-index-000001/_doc/1
{
  "user": "testuser",
  "post_date": "2020-05-08T14:12:12",
  "message": "ISM testing"
}

變換索引需要指向最新索引的別名。這意味著您必須使用以下查詢建立一個別名 ("test-index"):

POST /_aliases
{
  "actions": [
    {
      "add": {
        "index": "test-index-000001",
        "alias": "test-index"
      }
    }
  ]
}

注意:如果 ISM 政策中包含變換操作,您必須包含變換別名。如需詳細資訊,請參閱為什麼 ISM 政策中的變換索引動作會在 Amazon OpenSearch Service 中一直失敗?

建立 ISM 政策

在 OpenSearch 儀表板中,選擇索引管理索引標籤,然後為變換操作建立 ISM 政策。

例如:

變換為暖狀態

{
  "policy": {
    "policy_id": "Roll_over_policy",
    "description": "A test policy. DO NOT USE FOR PRODUCTION!",
    "schema_version": 1,
    "error_notification": null,
    "default_state": "hot",
    "states": [
      {
        "name": "hot",
        "actions": [
          {
            "rollover": {
              "min_size": "10mb"
            }
          }
        ],
        "transitions": [
          {
            "state_name": "warm"
          }
        ]
      },
      {
        "name": "warm",
        "actions": [
          {
            "replica_count": {
              "number_of_replicas": 2
            }
          }
        ],
        "transitions": []
      }
    ]
  }
}

在此 ISM 政策中,有兩個已定義的狀態:「熱」和「暖」。 預設情況下,您的索引處於「熱」狀態。一旦索引大小達到 10 MB,並建立新的變換索引,就會轉換為「暖」狀態。在「暖」狀態下,您可以對索引執行各種動作,例如將複本計數變更為兩個或執行 force_merge 操作。

數天後變換以刪除

{
  "policy": {
    "policy_id": "Roll_over_policy",
    "description": "A test policy. DO NOT USE FOR PRODUCTION!",
    "schema_version": 1,
    "error_notification": null,
    "default_state": "hot",
    "states": [
      {
        "name": "hot",
        "actions": [
          {
            "rollover": {
              "min_size": "10mb"
            }
          }
        ],
        "transitions": [
          {
            "state_name": "delete",
            "conditions": {
              "min_index_age": "30d"
            }
          }
        ]
      },
      {
        "name": "delete",
        "actions": [
          {
            "delete": {}
          }
        ],
        "transitions": []
      }
    ]
  }
}

在此 ISM 政策中,有兩個已定義的狀態:「熱」和「刪除」。預設情況下,索引處於「熱」狀態。索引達到 10 MB 之後,就會建立新的變換索引。30 天後,索引會轉換為「刪除」狀態,並刪除該索引。

將政策附加至索引

若要將 ISM 政策附加至索引,請執行下列步驟:

1.    從 OpenSearch Service 主控台開啟 OpenSearch 儀表板。您可以在 OpenSearch Service 主控台的網域摘要中找到 OpenSearch 儀表板的連結。

2.    選擇索引管理索引標籤。

3.    選取您要附加至 ISM 政策的索引 (例如:"test-index-000001")。

4.    選擇套用政策

5.    (選用) 如果您的政策指定任何需要別名的動作,請提供別名,然後選擇套用。您的索引會顯示在政策管理索引清單下。

更新現有索引的政策

**注意:**在現有政策中進行的任何更新都不會自動套用至現有索引,因此需要將相同政策重新套用至索引。

若要將 ISM 政策重新套用至任何現有索引,請執行下列步驟:

1.    從 OpenSearch Service 主控台開啟 OpenSearch 儀表板。

2.    選擇索引管理索引標籤。

3.    從政策管理索引區段中,選擇變更政策

4.    選擇您要套用變更的索引 (例如:"test-index-000001")。

5.    選擇索引的目前狀態。

6.    從選擇新政策區段中,選擇更新政策名稱

7.    (選用) 如果您想要在政策更新後將索引切換至另一個狀態,請選擇在政策生效後將索引切換至下列狀態。然後,從下拉式清單中選擇狀態。

新增範本

將政策附加至特定索引,例如 "test-index-000002",該索引是根據 ISM 政策的結果所建立。使用此附件,索引也會在符合所需條件 (例如索引大小) 後變換。

您可以像這樣建立並使用 ISM 範本

PUT _plugins/_ism/policies/test_policy
{
  "policy": {
    "description": "A test policy. DO NOT USE FOR PRODUCTION!",
    "last_updated_time": 1642027350875,
    "schema_version": 1,
    "error_notification": null,
    "default_state": "hot",
    "states": [
      {
        "name": "hot",
        "actions": [
          {
            "rollover": {
              "min_size": "10mb"
            }
          }
        ],
        "transitions": [
          {
            "state_name": "warm"
          }
        ]
      },
      {
        "name": "warm",
        "actions": [
          {
            "replica_count": {
              "number_of_replicas": 2
            }
          }
        ],
        "transitions": []
      }
    ],
    "ism_template": {
      "index_patterns": [
        "test*"
      ],
      "priority": 100
    }
  }
}

在此範例中,說明索引 API 會驗證您建立的 "test_policy" 範本是否已附加至新建立的索引:

GET _plugins/_ism/explain/test-index-000002
{
  "test-index-000002": {
    "index.plugins.index_state_management.policy_id": "test_policy",
    "index.opendistro.index_state_management.policy_id": "test_policy",
    "index": "test-index-000002",
    "index_uuid": "CZrQ-RzRS8SmiWIuyqFmVg",
    "policy_id": "test_policy",
    "enabled": true
  },
  "total_managed_indices": 1
}

注意: 此索引也會填入 OpenSearch 儀表板索引管理索引標籤的受管索引區段下方。

ISM 政策狀態

當 ISM 政策附加至索引時,索引會進入「初始化」狀態。從「初始化」狀態,索引會移至政策中定義的「預設」狀態。此「初始化」操作以及每個後續操作可能需要 30 到 48 分鐘。ISM 會使用這段時間來執行政策動作,然後檢查是否有任何條件,並將索引轉換為不同的狀態。也會加入 0-60% 的隨機抖動,以確保不會發生同時來自所有索引的活動尖峰。

注意:對於變換操作,索引會在索引變換後成為「完成」、轉換為「暖」狀態,並更新複本計數。

如果您使用 ISM 政策,但索引未正確遷移,請檢查 ISM 的狀態。

若要檢查特定索引的遷移狀態,請使用下列語法:

GET _ultrawarm/migration/<put_index_name_here>/_status

若要取得所有索引的遷移摘要,請使用下列語法:

GET _ultrawarm/migration/_status?

相關資訊

範例政策

AWS 官方
AWS 官方已更新 1 年前