跳至內容

如何解決 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 政策可根據索引大小等條件,自動刪除索引。接著,當現有索引符合定義條件時,使用輪換操作將目標移至新索引。

下列 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 的操作最佳實務

為什麼我的 OpenSearch Service 叢集處於紅色或黃色狀態?

AWS 官方已更新 9 個月前