跳至内容

如何解决我的 OpenSearch Service 域中的存储空间不足问题?

2 分钟阅读
0

我想解决我的 Amazon OpenSearch Service 域中的存储空间不足问题。

解决方法

您的 OpenSearch Service 域有必须遵守的存储空间要求。如果您的域存储空间不足,则可能会收到“ClusterBlockException”错误。

要解决存储空间不足的问题,请执行以下一项或多项操作。

检查分片是否不平衡

不平衡的分片(磁盘空间偏斜)会导致某些节点的存储空间不足。要解决此问题,请在所有节点间均匀分配分片

要检查集群中每个节点有多少可用存储空间,请运行以下命令:

curl -XGET "aos_endpoint/_cat/allocation?v"

**注意:**将 aos_endpoint 替换为 OpenSearch Service 控制台中列出的端点。

输出示例:

shards | disk.indices | disk.used | disk.avail | disk.total | disk.percent | host         | ip          | node
8    |   989.4kb    |   25.9gb    |   32.4gb   |   58.4gb   |   44         | 192.0.2.0    | 192.0.2.3   | node1
8    |   962.4kb    |   25.9gb    |   32.4gb   |   58.4gb   |   44         | 192.0.2.1    | 192.0.2.4   | node2

在输出中,您可以查看每个节点的磁盘空间指标。OpenSearch Service 在每个 Amazon Elastic Compute Cloud (Amazon EC2) 实例上预留 20 GiB 或 20% 的可用存储空间用于内部操作。前面的 cat/allocation 输出不包括预留存储空间。要查看预留和总数据存储空间,请查看 Amazon CloudWatch 中的 FreeStorageSpace OpenSearch Service 指标

**注意:**由于 cat/allocation 不包括预留数据,因此该值始终低于您在 OpenSearch Service 控制台中看到的存储空间。

增加您的域的 Amazon EBS 卷的大小

如果您的域使用 Amazon Elastic Block Store (Amazon EBS) 卷进行存储,请增加 EBS 卷的大小

如果您无法增加 EBS 卷的大小,请执行以下一项或多项操作来扩展集群:

**注意:**如果您使用 Amazon EC2 I3 实例进行数据存储,请向集群添加节点或纵向扩展您的实例类型。当您扩展实例时,可能会导致蓝绿部署

删除未使用的索引

要减少存储在域中的数据量,请删除未使用的索引或文档,优化旧索引或减少域的副本数量。如果集群的磁盘使用量已经达到最大值,则必须扩展 EBS 卷或节点。

**注意:**如果减少域的副本数量,则容错能力会降低。最佳实践是为每个索引至少配置一个副本。

首先,在您的 Amazon Simple Storage Service (Amazon S3) 存储桶中创建不需要的索引的备份。您可以使用 OpenSearch Service 创建的自动快照来恢复您的实例。然后,从 OpenSearch Service 集群中删除这些索引以释放磁盘空间。

最佳做法是同时创建手动快照。在创建手动备份之前,必须创建手动快照存储库

要检查索引的创建日期,请运行以下命令:

GET _cat/indices?h=h,s,i,id,p,r,dc,dd,ss,creation.date.string&s=creation.date.string:desc

要删除单个索引,请运行以下命令:

DELETE index-name

**注意:**将 index-name 替换为索引名称。

要删除多个索引,请运行以下命令:

DELETE index-pattern

**注意:**将 index-pattern 替换为您的索引模式。

使用 ISM 解决存储空间不足问题

使用索引状态管理 (ISM) 轮换 OpenSearch Service 中的索引。借助 ISM,您可以定义自定义管理策略来缓解磁盘空间不足等问题。例如,使用 ISM 策略根据索引大小等条件自动删除索引。然后,当现有索引满足定义的条件时,使用 rollover 操作将目标移动到新索引。

以下 ISM 策略示例会在 50 分钟后删除索引:

PUT _plugins/_ism/policies/delete_ism_policy  {
    "policy": {
        "policy_id": "delete_ism_policy",
        "description": "A simple default policy that deletes old unused indexes",
        "last_updated_time": 1658834661281,
        "schema_version": 13,
        "error_notification": null,
        "default_state": "example_hot_state",        
        "states": [
            {
                "name": "example_hot_state",
                "actions": [],
                "transitions": [
                    {
                        "state_name": "delete",
                        "conditions": {
                            "min_index_age": "50m"  
                        }
                    }
                ]
            },
            {
                "name": "delete",                    
                "actions": [
                    {
                        "delete": {}
                    }
                ],
                "transitions": []
            }
        ],
        "ism_template": [
            {
                "index_patterns": [                  
                    "sample*"
                ],
                "priority": 100,                    
                "last_updated_time": 1658834436349
            }
        ]
    }
}

**注意:**前面的策略将附加到您添加到策略中的索引模式的所有索引。

要将 ISM 策略附加到索引,请运行以下命令:

POST _plugins/_ism/add/your-index-*  {
     "policy_id": "your_policy_id"
}

**注意:**将 your-index-* 替换为您的索引或索引模式,将 your_policy_id 替换为您的策略 ID。

有关详细信息,请参阅如何使用 ISM 来管理 OpenSearch Service 存储空间不足问题?

使用 CloudWatch 警报来监控存储

要监控集群中的可用存储空间量,请使用 FreeStorageSpace 指标。要在存储空间不足时接收通知,请为 FreeStorageSpace 创建 CloudWatch 警报

有关详细信息,请参阅针对 OpenSearch Service 的建议 CloudWatch 警报

相关信息

OpenSearch Service 的最佳操作实践

为什么我的 Amazon OpenSearch Service 集群处于红色或黄色状态?

AWS 官方已更新 3 个月前