如何使用 ISM 來管理 Amazon OpenSearch Service 的儲存空間不足?
我的 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?
相關資訊
相關內容
- 已提問 9 個月前lg...
- 已提問 1 年前lg...
- 已提問 2 年前lg...
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前