為什麼我的 Amazon OpenSearch Service 叢集處於紅色或黃色狀態?
我的 Amazon OpenSearch Service 叢集處於紅色或黃色的叢集狀態。
簡短描述
OpenSearch Service 主控台中的監控索引標籤會顯示叢集中運作狀態最不良的索引狀態。顯示紅色狀態的叢集狀態並不表示您的叢集已關閉。此狀態表示至少有一個主碎片及其複本不會分配到節點。如果叢集狀態顯示黃色狀態,則所有索引的主碎片都已分配到叢集中的節點。但是,一個或多個複本碎片沒有分配到任何節點。
**注意:**在您先解決紅色叢集狀態之前,請勿重新設定域。如果您嘗試在域處於紅色叢集狀態時重新設定,可能會卡在「處理中」狀態。如需有關叢集卡在「處理中」狀態的詳細資訊,請參閱為什麼我的 OpenSearch Service 域卡在「處理中」狀態?
您的叢集可能會因為下列原因進入紅色狀態:
- 多個資料節點故障
- 為索引使用損毀或紅色碎片
- 高 JVM 記憶體壓力或 CPU 使用率
- 磁碟空間不足或磁碟歪斜
- 未指派的碎片沒有複本碎片
**注意:**在某些情況下,您可能可以刪除然後從自動快照還原索引,以解決紅色叢集狀態。
由於下列原因,您的叢集可能會進入黃色運作狀態:
- 建立新索引
- 沒有足夠的節點可分配給碎片或磁碟歪斜
- 高 JVM 記憶體壓力
- 單一節點故障
- 超過碎片分配重試次數上限
- 複本碎片的數量大於資料節點的數量
- 由於重新定位資料碎片,正在進行藍色或綠色部署
注意:如果您的黃色叢集狀態無法自行解決,您可以透過更新索引設定或手動重新路由未指派的碎片來解決狀態。如果您的黃色叢集狀態無法自行解決,請識別並疑難排解根本原因。若要避免出現黃色叢集狀態,請套用叢集運作狀態最佳實務。
解決方法
識別未指派碎片的原因
若要識別未指派的碎片,請執行下列步驟:
1. 列出未指派的碎片:
$ curl -XGET 'domain-endpoint/_cat/shards?h=index,shard,prirep,state,unassigned.reason' | grep UNASSIGNED
2. 擷取為什麼未指派該碎片的詳細資訊:
$ curl -XGET 'domain-endpoint/_cluster/allocation/explain?pretty' -H 'Content-Type:application/json' -d' { "index": "<index name>", "shard": <shardId>, "primary": <true or false> }
3. (選用) 對於紅色叢集狀態,請刪除有問題的索引,識別並解決根本原因:
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 域中儲存空間不足問題?
嚴重的磁碟歪斜也可能導致某些資料節點的儲存空間不足問題。如果您決定重新分配任何碎片,碎片可能會在碎片分發期間變為未指派。若要解決此問題,請參閱如何重新平衡 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 指標來確認節點故障。如需有關識別節點故障的詳細資訊,請參閱故障的叢集節點。
**注意:**同樣的,最佳實務是為每個索引指派一個複本碎片,或使用專用的主節點並啟動區域感知。如需詳細資訊,請參閱 Elasticsearch 網站上的處理故障。
超過重試次數上限
在 OpenSearch Service 中,您的叢集不得超過碎片分配的時間限制上限 (5,000 毫秒) 或重試次數 (5 次)。如果叢集已達到最大閾值,則必須手動觸發碎片分配。若要手動觸發碎片分配,請停用再重新啟用索引的複本碎片。
叢集上的組態變更也會觸發碎片分配。有關碎片分配的詳細資訊,請參閱 Elasticsearch 網站上的每個碎片都應當有個去處。
**注意:**如果叢集的工作負載繁重,手動觸發碎片分配並不是最佳實務。如果從索引移除所有複本,則索引必須僅依賴主碎片。當節點故障時,您的叢集會進入紅色運作狀態,因為主碎片保持未指派。
若要停用複本碎片,請將 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 使用率,並確保它們未超過設定的閾值。如需詳細資訊,請參閱建議的 CloudWatch 警示和叢集指標。
- 確保所有主碎片都有複本碎片,以防止節點故障。
如需詳細資訊,請參閱 Amazon OpenSearch Service 操作最佳實務。
相關內容
- 已提問 10 個月前lg...
- 已提問 1 年前lg...
- 已提問 9 個月前lg...
- 已提問 9 個月前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 9 個月前