簡體   English   中英

AWS Elasticsearch 集群磁盤空間在數據實例之間不平衡

[英]AWS Elasticsearch cluster disk space not balanced across data instances

背景

我有一個 AWS 托管的 Elascsearch v6.0 集群,它有 14 個數據實例。

它具有基於時間的索引,如data-2010-01 , ... , data-2020-01

問題

實例之間的可用存儲空間非常不平衡,我可以在 AWS 控制台中看到:

在此處輸入圖片說明

我注意到每次 AWS 服務通過藍綠部署運行時,這種分布都會發生變化。 當集群設置更改或 AWS 發布更新時會發生這種情況。

有時,藍綠色會導致其中一個實例完全耗盡空間。 發生這種情況時,AWS 服務會啟動另一個藍綠色,這會在不影響客戶的情況下解決問題。 (不過它確實對我的心率有影響!)

分片大小

我們索引的分片大小為 GB 大小,但低於 Elasticsearch 建議50GB 不過,分片大小確實因索引而異。 我們的許多舊索引只有少數文檔。

AWS 平衡算法不能很好地平衡,每次都會導致不同的結果是出乎意料的。

我的問題是算法如何選擇將哪些分片分配給哪個實例,我可以自己解決這種不平衡嗎?

我向 AWS 支持提出了這個問題,他們能夠給我一個很好的答案,所以我想我會在這里為其他人分享總結。

簡而言之:

  • AWS Elasticsearch 根據分片數量而不是分片大小分配分片,因此如果可以,請保持分片大小平衡。
  • 如果您將集群配置為分布在3 個可用區,請使您的數據實例數被 3 整除

我的情況

我的 14 個實例中的每一個都獲得了~100 shards而不是每個~100 GB

請記住,我有很多相對空的索引。 這轉化為小分片和大分片的混合,當 AWS Elasticsearch(無意中)將大量大分片分配給一個實例時,這會導致不平衡。

由於我將集群設置為分布在 3 個可用區並且我的數據實例數 (14) 不能被 3 整除,這進一步惡化了這種情況。

將我的數據實例數增加到 15(或減少到 12)解決了這個問題。

來自多可用區上的 AWS Elasticsearch 文檔

為避免出現這些可能使單個節點緊張並影響性能的情況,如果您計划每個索引有兩個或更多副本,我們建議您選擇實例計數為 3 的倍數。

進一步改進

除了可用區問題之外,我建議保持索引大小平衡,以便 AWS 算法更容易使用。

就我而言,我可以合並舊索引,例如data-2019-01 ... data-2019-12 -> data-2019

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM