為何我的 Amazon OpenSearch Service 節點當機?

上次更新日期:2021 年 7 月 30 日

我的 Amazon OpenSearch Service (Amazon Elasticsearch Service 的後繼者) 叢集中的其中一個節點已關閉。為什麼節點失敗,怎樣才能防止這種情況再次發生?

簡短描述

每個 OpenSearch Service 節點都在獨立的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上執行。故障的節點是沒有回應來自其他節點的活動訊號的執行個體。活動訊號是定期信號,用於監控叢集中的資料節點的可用性。

以下是叢集節點故障的常見原因:

  • 高 Java 虛擬機器 (JVM) 記憶體壓力
  • 硬體故障

解決方案

檢查故障的節點

1.    開啟 OpenSearch Service 主控台

2.    選擇您的 OpenSearch Service 網域的名稱。

3.    選擇 Cluster health (叢集運作狀態) 標籤,然後選擇 Nodes (節點) 指標。如果節點數少於您為叢集設定的數目,則表示節點已關閉。

注意:在變更叢集組態或服務的任何例行維護期間,節點指標可能不準確。這是預期的行為。

識別和疑難排解高 JVM 記憶體壓力

JVM 記憶體壓力是指用於 OpenSearch Service 叢集中所有資料節點的 Java 堆積百分比。高 JVM 記憶體壓力可能會導致高 CPU 使用率和其他叢集效能問題。

JVM 記憶體壓力取決於以下因素:

  • 叢集上的資料量與資源量成比例。
  • 叢集上的查詢負載。

以下是 JVM 記憶體壓力增加時會發生的情況:

  • 在 75%:OpenSearch Service 會觸發並行標記清除 (CMS) 記憶體回收器。CMS 回收器會與其他程序一起執行,將暫停和中斷降至最低。注意:OpenSearch Service 會將數個記憶體回收指標發佈至 Amazon CloudWatch。這些指標可協助您監控 JVM 記憶體用量。如需詳細資訊,請參閱使用 Amazon CloudWatch 監控叢集指標
  • 75% 以上:如果 CMS 回收器無法回收足夠的記憶體且用量保持在 75% 以上,則 OpenSearch Service JVM 會嘗試釋放記憶體。OpenSearch Service JVM 也會嘗試透過減慢或停止處理程序來防止 JVM OutOfMemoryError (OOM) 例外狀況。
  • 如果 JVM 繼續增長並且空間未回收,則 OpenSearch Service JVM 將停止嘗試配置記憶體的處理程序。如果重要處理程序已停止,一或多個叢集節點可能會失敗。這是將 CPU 使用率保持在 80% 以下的最佳實務。

若要防止高 JVM 記憶體壓力,請遵循以下最佳實務:

  • 避免大範圍查詢,例如萬用字元查詢。
  • 避免同時傳送大量請求。
  • 確保您具有適當數量的碎片。如需索引策略的詳細資訊,請參閱選擇碎片數目
  • 確保您的碎片在節點之間均勻分配。
  • 避免對文字欄位進行彙總。這有助於防止欄位資料增加。您擁有的欄位資料越多,就會耗用更多堆積空間。使用 GET _cluster/stats API 操作來檢查欄位資料。如需詳細資訊,請參閱 Elasticsearch 網站上的 fielddata
  • 如果您必須對文字欄位進行彙總,請將映射類型變更為關鍵字。如果 JVM 記憶體壓力過高,請使用以下 API 操作來清除欄位資料快取:POST /index_name/_cache/clear (索引層級快取) 和 POST */_cache/clear (叢集層級快取)。
    注意:清除快取可能會中斷進行中的查詢。

識別並疑難排解硬體故障問題

有時硬體故障可能會影響叢集節點的可用性。若要限制潛在硬體故障的影響,請檢查以下項目:

  • 確保叢集中有多個節點。 單一節點叢集可成為單一故障點。您無法使用複本碎片來備份您的資料,因為主碎片和複本碎片無法分配給相同節點。如果節點關閉,您可以從快照還原資料。如需有關快照的詳細資訊,請參閱在 Amazon OpenSearch Service 中建立索引快照。請注意,您無法復原在最後一個快照中尚未擷取的任何資料。如需詳細資訊,請參閱調整 OpenSeach Service 網域的大小建立和管理 OpenSearch Service 網域
  • 確保您至少有一個複本。 如果沒有任何複本碎片,多節點叢集仍然可能會發生資料遺失。
  • 啟用區域意識。 啟用區域意識後,OpenSearch Service 會在多個可用區域中啟動資料節點。OpenSearch Service 會嘗試將主碎片及其相應複本碎片分配至不同的區域。如果一個節點或可用區域發生故障,您的資料仍然可用。如需詳細資訊,請參閱設定多可用區域網域