為什麼我的 Amazon OpenSearch Service 叢集處於紅色或黃色狀態?
我的 Amazon OpenSearch Service 叢集處於紅色或黃色的叢集狀態。
簡短描述
OpenSearch Service 主控台中的監控索引標籤會顯示叢集中運作狀態最不良的索引狀態。顯示紅色狀態的叢集狀態並不表示您的叢集已關閉。此狀態表示至少有一個主碎片及其複本不會分配到節點。如果叢集狀態顯示黃色狀態,則所有索引的主碎片都已分配到叢集中的節點。但是,一個或多個複本碎片沒有分配到任何節點。
**注意:**在您先解決紅色叢集狀態之前,請勿重新設定網域。如果您嘗試在網域處於紅色叢集狀態時重新設定,可能會卡在「處理中」狀態。如需有關叢集卡在「處理中」狀態的詳細資訊,請參閱為什麼我的 Amazon OpenSearch Service 網域卡在「處理中」狀態?
有關叢集可以輸入紅色狀態的原因,請參閱 Red cluster status。
**注意:**在某些情況下,您可能可以刪除然後從自動快照還原索引,以解決紅色叢集狀態。
有關叢集可以輸入黃色狀態的原因,請參閱 Yellow cluster status。
注意:如果您的黃色叢集狀態無法自行解決,您可以透過更新索引設定或手動重新路由未指派的碎片來解決狀態。如果您的黃色叢集狀態無法自行解決,請識別並疑難排解根本原因。若要避免出現黃色叢集狀態,請套用叢集運作狀態最佳實務。
解決方法
識別未指派碎片的原因
您可以使用 AWS Systems Manager Automation 執行手冊或手動 curl 命令來識別未指派碎片的原因。
使用自動化執行手冊
前往 AWS Systems Manager 主控台的 AWSSupport-TroubleshootOpenSearchRedYellowCluster。然後,遵循以下步驟設定自動化。
**使用 curl 命令 **
若要識別未指派的碎片,請執行下列步驟:
-
列出未指派的碎片:
$ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED
-
擷取為什麼未指派該碎片的詳細資訊:
$ curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d'{ "index": "<index name>", "shard": <shardId>, "primary": <true or false> }
-
(選用) 對於紅色叢集狀態,請刪除有問題的索引,識別並解決根本原因:
curl -XDELETE 'domain-endpoint/<index names>'
-
然後,識別可用的快照並從快照還原索引:
curl -XGET 'domain-endpoint/_snapshot?pretty'
對於黃色叢集狀態,請解決根本原因,以便指派碎片。
疑難排解紅色或黃色叢集狀態
沒有足夠的節點可分配給碎片
複本碎片不會指派給與其主碎片相同的節點。具有複本碎片的單一節點叢集始終以黃色叢集狀態初始化。單一節點叢集會以這種方式初始化,是因為 OpenSearch Service 沒有其他可用的節點可以指派複本。
對於 OpenSearch Service 7.x 版及更新版本,cluster.max_shards_per_node 設定還有一個預設限制為 "1,000"。最佳實務是維持 cluster.max_shards_per_node 設定為預設值 "1,000"。如果您設定碎片分配篩選條件來控制 OpenSearch Service 如何分配碎片,則碎片可能會因為篩選後沒有足夠的節點而變為未指派。若要避免此節點短缺,請增加您的節點數量。確認每個主碎片的複本數量小於資料節點的數量。您也可以減少複本碎片的數量。如需詳細資訊,請參閱調整 OpenSearch Service 域大小和 OpenSearch Service 碎片分配解密。
磁碟空間不足或磁碟歪斜
如果磁碟空間不足,您的叢集可能進入紅色或黃色運作狀態。OpenSearch Service 必須有足夠的磁碟空間來容納碎片,才能分發碎片。
若要檢查叢集中每個節點有多少可用儲存空間,請使用下列語法:
$ curl domain-endpoint/_cat/allocation?v
如需有關儲存空間問題的詳細資訊,請參閱如何疑難排解 OpenSearch Service 域中儲存空間不足問題?
嚴重的磁碟歪斜也可能導致某些資料節點的儲存空間不足問題。如果您決定重新分配任何碎片,碎片可能會在碎片分發時變為未指派。若要解決此問題,請參閱如何重新平衡 Amazon OpenSearch Service 叢集中不均勻的碎片分佈?
以磁碟為基礎的碎片分配設定也可能導致碎片未指派。例如,如果 cluster.routing.allocation.disk.watermark.low 指標設定為 50 GB,則指定的磁碟空間數量必須可用於碎片分配。
若要檢查現有的以磁碟為基礎的碎片分配設定,請使用下列語法:
$ curl -XGET domain-endpoint/_cluster/settings?include_defaults=true&flat_settings=true
若要解決磁碟空間問題,請考慮下列方法:
- 刪除黃色和紅色叢集的任何不需要的索引。
- 刪除紅色叢集的紅色索引
- 縱向擴展 EBS 磁碟區。
- 新增更多資料節點。
**注意:**請勿在叢集處於紅色運作狀態時對其進行任何組態變更。如果您嘗試在網域處於紅色叢集狀態時重新設定,可能會卡在「處理中」狀態。
高 JVM 記憶體壓力
每個碎片分配都會使用 CPU、堆積空間以及磁碟和網路資源。持續的高程度 JVM 記憶體壓力可能會導致碎片分配失敗。例如,如果 JVM 記憶體壓力超過 95%,則會啟動記憶體父斷路器。然後分配執行緒就會取消,導致碎片未指派。
若要解決此問題,請先降低 JVM 記憶體壓力程度。在您的 JVM 記憶體壓力降低之後,請考慮下列額外提示,讓叢集恢復綠色運作狀態:
- 將預設碎片重試值增加到 "5" 或更高。
- 停用再啟用複本碎片。
- 手動重試未指派的碎片。
用於增加重試值的範例 API:
PUT <index-name>/_settings{ "index.allocation.max_retries" : <value> }
如需有關降低 JVM 記憶體壓力的詳細資訊,請參閱如何為 OpenSearch Service 叢集上的 JVM 記憶體壓力過高進行疑難排解?
節點故障
當叢集遇到節點故障時,分配給該節點的碎片會變為未指派。當指定索引沒有可用的複本碎片時,即使單一節點故障也可能導致紅色運作狀態。使用兩個複本碎片和多可用區域部署來保護叢集免受硬體故障造成資料遺失。
如果您所有的索引都有複本碎片,則單一節點故障可能會導致叢集暫時進入黃色運作狀態。如果您的叢集暫時進入黃色運作狀態,則 OpenSearch Service 會在節點再次運作良好時自動復原。或者,當碎片指派給新節點時,OpenSearch Service 即可復原。
檢查您的 Amazon CloudWatch 指標以確認節點故障。如需有關識別節點故障的詳細資訊,請參閱 Failed cluster nodes。
**注意:**同樣的,最佳實務是為每個索引指派一個複本碎片,或使用專用的主節點並啟動區域感知。如需詳細資訊,請參閱 Elasticsearch 網站上的處理故障。
超過重試次數上限
在 OpenSearch Service 中,您的叢集不得超過碎片分配的時間限制上限 (5,000 毫秒) 或重試次數 (5 次)。如果叢集已達到最大閾值,則必須手動啟動碎片分配。若要手動啟動碎片分配,請停用再重新啟用索引的複本碎片。
叢集上的組態變更也會啟動碎片分配。有關碎片分配的詳細資訊,請參閱 Elasticsearch 網站上的 Every shard deserves a home。
**注意:**如果叢集的工作負載繁重,手動啟動碎片分配並不是最佳實務。如果從索引移除所有複本,則索引必須僅依賴主碎片。當節點故障時,您的叢集會進入紅色運作狀態,因為主碎片保持未指派。
若要停用複本碎片,請將 number_of_replicas 的值更新為 "0":
$ curl -XPUT 'domain-endpoint/<indexname>/_settings' -H 'Content-Type: application/json' -d'{ "index" : { "number_of_replicas" : 0 } }
此外,請檢查以確認 index.auto_expand_replicas 設定為 "false"。當叢集恢復綠色狀態時,您可以將 index.number_of_replicas 的值設定回所需的值,以啟動複本碎片的分配。如果碎片分配成功,則您的叢集將進入綠色運作狀態。
叢集運作狀態最佳實務
若要解決黃色或紅色叢集狀態,請考慮下列最佳實務:
- 為 AutomatedSnapshotFailure 設定建議的 Amazon CloudWatch 警示。有了警示,當叢集進入紅色狀態時,您可以確保具備可用的快照來復原索引。
- 如果您的叢集處於持續繁重的工作負載下,請擴展叢集。如需有關擴充叢集的詳細資訊,請參閱如何向上擴展 OpenSearch Service 網域?
- 監控磁碟使用率、JVM 記憶體壓力和 CPU 使用率,並確保它們未超過設定的閾值。如需詳細資訊,請參閱 Recommended CloudWatch alarms 和 Cluster metrics。
- 確保所有主碎片都有複本碎片,以防止節點故障。
如需詳細資訊,請參閱 Amazon OpenSearch Service 操作最佳實務。
相關內容
- 已提問 1 年前lg...
- 已提問 1 年前lg...
- 已提問 2 個月前lg...
- 已提問 2 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前