Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
如何使用 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?
相关信息
