如何使用 ISM 来管理 Amazon OpenSearch Service 存储空间不足问题?
我的 Amazon OpenSearch Service 集群的存储空间不足。
简短描述
索引状态管理 (ISM) 允许您自动执行例行任务,然后将其应用于 OpenSearch Service 中的索引和索引模式。借助 ISM,您可以定义自定义管理策略,帮助您维护诸如磁盘空间不足等问题。例如,您可以使用 rollover 操作和 ISM 策略根据索引大小等条件自动删除旧索引。当现有索引满足定义的条件时,rollover 操作会将目标翻转到新索引。
要使用诸如 rollover 之类的操作为索引模式创建 ISM 策略,请执行以下步骤:
1.设置您的 rollover 索引。
2.创建 ISM 策略。
3.将策略附加到索引。
4.添加模板。
将策略附加到索引后,您的索引开始初始化,然后转换到不同的状态,直到 rollover 操作完成。有关 rollover 操作的详细信息,请参阅 Open Distro for OpenSearch 网站上的 rollover 操作。
解决方法
设置您的 rollover 索引
创建索引格式与索引模式匹配的索引和别名:
^.*-\d+$
**重要事项:**确保正确配置您的 rollover 别名。否则,您会收到错误消息。
在以下示例中,创建了“test-index-000001”,并填充了多个文档。由于此示例使用 rollover 索引,因此索引格式必须与模式相匹配。
PUT test-index-000001/_doc/1 { "user": "testuser", "post_date": "2020-05-08T14:12:12", "message": "ISM testing" }
rollover 索引需要一个指向最新索引的别名。这意味着您必须使用以下查询创建别名(“test-index”):
POST /_aliases { "actions": [ { "add": { "index": "test-index-000001", "alias": "test-index" } } ] }
**注意:**如果 ISM 策略中包含 rollover 操作,则必须包括 rollover 别名。有关详细信息,请参阅为什么我的 ISM 策略中的 rollover 索引操作在 Amazon OpenSearch Service 中总是失败?
创建 ISM 策略
在 OpenSearch Dashboards 中,选择索引管理选项卡,然后为 rollover 操作创建 ISM 策略。
例如:
翻转到 warm 状态
{ "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 策略中,有两种已定义的状态:“hot”和“warm”。 默认情况下,您的索引处于“hot”状态。一旦索引大小达到 10 MB,并且创建了新的 rollover 索引,索引就会转换到“warm”状态。在“warm”状态下,您可以对索引执行各种操作,例如将副本数更改为 2 或执行 force_merge 操作。
几天后翻转到 delete
{ "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 策略中,有两种已定义的状态:“hot”和“delete”。默认情况下,索引处于“hot”状态。索引达到 10 MB 后,将创建新的 rollover 索引。然后,30 天后,索引转换到“delete”状态,并且索引会被删除。
将策略附加到索引
要将您的 ISM 策略附加到索引,请执行以下步骤:
1.从 OpenSearch Service 控制台打开 OpenSearch Dashboards。您可以在 OpenSearch Service 控制台的域摘要中找到 OpenSearch Dashboards 的链接。
2.选择索引管理选项卡。
3.选择要附加 ISM 策略的目标索引(例如:“test-index-000001”)。
4.选择应用策略。
5.(可选)如果您的策略指定了任何需要别名的操作,请提供别名,然后选择应用。您的索引会出现在策略管理的索引列表下方。
更新现有索引的策略
**注意:**现有策略中的任何更新都不会自动应用于现有索引,必须将相同策略重新应用到索引。
要将您的 ISM 策略重新应用到任何现有索引,请执行以下步骤:
1.从 OpenSearch Service 控制台打开 OpenSearch Dashboards。
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 } } }
在此示例中,explain 索引 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 Dashboards 索引管理选项卡的托管索引部分下。
ISM 策略状态
将 ISM 策略附加到索引时,索引会进入“正在初始化”状态。从“正在初始化”状态开始,索引会进入策略中定义的“默认”状态。此“正在初始化”操作以及每个后续操作可能需要 30 到 48 分钟。ISM 利用这段时间执行策略操作,然后检查是否存在任何情况,并将索引转换到不同状态。此外,还添加了 0-60% 的随机抖动,以确保不会同时出现来自所有索引的活动激增。
**注意:**对于 rollover 操作,在索引翻转、转换到“warm”状态并且副本数量更新之后,索引会变为“complete”。
如果您使用的是 ISM 策略并且索引未正确迁移,请检查 ISM 的状态。
要检查特定索引的迁移状态,请使用以下语法:
GET _ultrawarm/migration/<put_index_name_here>/_status
要获取所有索引的摘要迁移情况,请使用以下语法:
GET _ultrawarm/migration/_status?
相关信息
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前