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

上次更新日期:2022 年 12 月 21 日

我的 Amazon OpenSearch Service 叢集中的其中一個節點已關閉,我想要避免這種情況發生。

簡短說明

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

叢集節點故障的常見原因有:

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

解決方案

檢查故障的節點

1.    登入 OpenSearch Service 主控台

2.    在導覽窗格的受管理的叢集底下,選擇網域

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

4.    選擇叢集運作狀態標籤,然後選擇節點指標。如果節點數少於您為叢集設定的數目,則節點已關閉。

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

察覺 JVM 記憶體壓力過高的情況並進行疑難排解

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

JVM 記憶體壓力取決於以下狀況:

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

隨著 JVM 記憶體壓力的增加,會發生以下情況:

  • 在 75%:OpenSearch Service 會啟動並行標記清除 (CMS) 垃圾回收器。CMS 回收器會與其他程序一起執行,將暫停和中斷機率降至最低。
    注意:OpenSearch Service 會將數個垃圾回收指標發佈至 Amazon CloudWatch。這些指標可協助您監控 JVM 記憶體用量。如需詳細資訊,請參閱使用 Amazon CloudWatch 監控 OpenSearch 叢集指標
  • 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 (叢集層級快取)。
    注意:清除快取可能會中斷進行中的查詢。

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

有時硬體故障可能會影響叢集節點的可用性。若要限制潛在硬體故障的影響,請考量以下因素:

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