阿里雲Elasticsearch智慧運維繫統最佳實踐
摘要:
隨著業務的增長與發展,不同的Elasticsearch叢集承擔著多厚多樣的功能需求。尤其是當叢集規模增長、業務龐大時,需要耗費大量的精力運維叢集。阿里雲Elasticsearch研發了一套智慧運維繫統,可通多專家經驗與資料驅動兩個重要抓手幫助使用者運維叢集、提升業務的穩定性。本篇文章將結合運維常見問題展開阿里雲Elasticsearch智慧運維繫統最佳實踐的介紹。
一、診斷叢集異常
最壞的情況,Elasticsearch叢集(後簡稱ES叢集)崩潰,無法正常承擔各項業務。導致ES叢集崩潰的大多數原因是master節點、資料節點的宕機,而出現這些情況絕不是“空穴來風”,智慧運維繫統要幫助使用者做的便是“有跡可尋”,從而“有則改之,無則加勉”。
Case 1:節點負載過高,導致節點失聯
以ES叢集的資料節點與master節點為例,當有任何一個節點負載過高,都可能導致單節點宕機從而挑戰叢集的可用性。而通過系統自動與使用者手動觸發的方式,智慧運維繫統可幫助使用者監測過去一段時間內節點負載情況,若存在危險,則提示使用者原因與解決方案,幫助使用者提前獲知、拯救叢集於崩潰邊緣。

Case 2 : 索引副本丟失,資料可靠性受損
索引的副本一方面是保證資料的可靠性,保證在資料丟失的狀態下依舊可以恢復如初,一方面副本數的增加可提高查詢的效能。在儲存空間佔用過滿時,極有可能導致索引副本丟失,檢查副本的存在狀態,可幫助使用者提高資料的可靠性。在叢集重啟的過程中,只有在副本數量完整時才能保證服務的持續進行。

Case 3:資料寫入失敗,叢集壓力過大
在寫操作進行的過程中,可能因叢集壓力,堆積過多的讀寫任務,而對於使用者來說可能會產生所有寫入均返回失敗的誤區。如果在此情況下繼續增加寫入,則可能會引起叢集的崩潰。通過推薦使用者呼叫執行緒池檢視實際成功、失敗任務情況,使用分批寫入的方式解決寫入堆積困境,給叢集減壓。
二、提升叢集效能
如何在固定配置的情況下更大程度發揮叢集可用效能,是使用者最關心的問題。從Elasticsearch內部邏輯與架構,資料節點是任務載體與執行依託,shard是索引與搜尋的主要承擔者,副本是提升效能的重要抓手,分批寫入與防止稀疏是必備方式。如何提升叢集效能,智慧運維繫統從資料節點負載、shard合理性以及使用者操作規範三個面入手,幫助使用者挖掘叢集能力。
Case 1:資料節點抓偏離,防止單節點瓶頸
在各資料節點負載均衡的條件下,效能會趨向於最優的實踐。如果發生單節點負載過高,與其他節點產生較大差異,則高負載節點可能成為“拖油瓶”,拉低整體叢集資料節點任務執行,甚至存在脫離叢集的風險。通過檢測資料節點間的負載偏離情況,能引導使用者均衡負載,提升效能的同時保障穩定性。

Case 2:shard、segment合理性評估,升效能調負載
不同的ES叢集應用場景對效能承載著不同的需求。索引的載體就是shard,搜尋結果的返回也是多個shard共同的返回結果。Shard數與節點間的負載均衡、查詢效能和儲存空間利用均有著非常重要的關係。智慧運維可讀取使用者索引shard、節點shard,並檢測是否因索引segment過多導致碎片化,引發離線資料寫入過慢,從而提示使用者在適當的時間執行段合併操作,從而提升離線資料的寫入速度。幫助推薦使用者最佳的shard指定情況、在合適的時機執行段合併,從而均衡負載、提升效能、節省空間。


Case 3:規範操作方式,保證狀態合理
在保證index:type=1:1的狀態時,能有效防止稀疏資料的產生,從type個數診斷科可幫助使用者合理化設定,輔以禁用dynamic對映自定義對映型別、別名的日常使用以及使用分批(bulk)合理操作的基本方式,幫助使用者規範化、便捷化操作,加之叢集狀態頻繁變更的監測,可提示使用者減少讀寫,避免對叢集造成更大的壓力,引發更大的風險。


總結:
綜上,是智慧運維繫統在診斷叢集異常與提升叢集效能作出的檢測、析因、建議的主要實踐。輔之以叢集狀態走勢的監測圖,從各個狀態診斷項的個數變化,向用戶展示最近時間段內的叢集整體情況,從而全域性檢視,並增強知識提取、常見問題歸納的統計。
不同的ES叢集在使用智慧運維繫統時會有不同的診斷結果,在ES叢集變更的過程中,智慧運維繫統可持續跟進,給出使用者ES叢集各個狀態的異常探測、風險規避與調優推薦,從而幫助使用者合理化、科學化、便捷化運維叢集。
更多資訊歡迎訪問:link