天天看點

阿裡雲Elasticsearch日志增強版介紹

本文由阿裡雲社群直播整理而來。

講師:

洪陽,阿裡雲産品專家

和阿裡雲技術專家,志宸

全鍊路雲上Elasticsearch——阿裡雲Elasticsearch一站式雲托管服務

到今天為止我們在雲上已經有Elasticsearch、Kibana、Logstash和Beats, 生态下的全部開源的元件。同時,相較于開源的ELK生态下的元件和功能來說,還提供了其他的自研插件,或者是增強型的,或者是基于核心的優化能力,來保證大家在使用ElasticStack這個生态内的功能時有更好的體驗,更強的穩定性和更高的性能,更讓大家覺得滿意的成本效益。

其中包括向量檢索日志增強版的核心,阿裡達摩院提供的中文分詞器,跟Elastic的官方所簽約戰略合作所得到這個X-pack的商業插件,基于雲端的容災能力,幫助提升es叢集運維效率的智能運維功能,可視化的運維視窗,以及Kibana的一些插件,比如說Query builder的插件或者打标的插件。

阿裡雲Elasticsearch日志增強版介紹

今天這個話題主要是聊一聊我們日志場景下的這個增強版核心的一些功能和特性。

阿裡雲Elasticsearch日志增強版介紹

01.日志場景的“痛心處” ——日志場景中用ELK哪些問題要人命?

阿裡雲Elasticsearch日志增強版介紹

日志場景是大家在使用ELK過程中,比較多的一個場景,讓我們來看一下它有哪些痛點問題。

天下烏鴉一般黑 ——大家的痛點都是趨同的

這裡羅列了大家常會遇到的幾個問題:

阿裡雲Elasticsearch日志增強版介紹

第一個是高并發的寫入,在日志場景中通常會有非常大的寫入,而Elasticsearch在寫入過程中,需要寫入主分片又會同步到備份片,并且在這個過程中還會去寫這個trace log之類的,開銷比較大,通常它在支援這個高并發寫入的時候,對于機器CPU和l/O的開銷是比較高的;

第二個是存儲成本比較高,日志場景中通常會涉及到海量資料庫,通常我們遇到的都是TB級起步,甚至有些會到達PB級。同時在這麼大資料量的前提下,除了寫入主分片之外,還需要保留一份副本,那麼這個時候它的存儲成本壓力就更加大了。

第三個是這個時序分析性能差的問題,因為es的查詢是按所有的segment都會去查,做比較大範圍的range時,和比較複雜的聚合時,它的查詢範圍太大,性能瓶頸就會突顯出來。

第四個是時常會遇到可伸縮性的問題,因為日志通常随着業務的變化會有峰值、均值、谷值,它們之間的差異是非常大的。通常我們需要為了支援這個峰值流量,把機器堆的非常多,但是低峰值的時候,就會造成很嚴重的資源浪費,是以,解決可伸縮性的問題也是日常比較大的課題。

流量“峰值”vs流量“低谷” ——要麼資源不夠,要麼資源浪費 我要如何優化叢集配置

下面我們來看一個伸縮性案例。我們有一個使用者,早高峰兩小時的查詢和寫入是其他時間段的5倍,造成了大部分的時間資源浪費的情況,并且該使用者的資料量非常大,是以在正常的情況下去做彈性擴縮容會存在資料遷移慢的問題,就沒有辦法去有效的實施,并且包含了副本,存儲成本和高并發的寫入都會存在問題。

阿裡雲Elasticsearch日志增強版介紹

為了解決使用者場景上述提到的這些痛點問題,我們做了es核心的增強版,專門針對日常場景進行成本和穩定性的這個優化。

02.日志“大殺器”技術解讀 ——增強版Es技術解讀

阿裡雲Elasticsearch日志增強版介紹

通過計算速度分離來解決使用者的這個痛點問題,分離的前提是所有結點的存儲都基于NFS的共享存儲。

計算存儲分離架構 ——核心技術剖析
阿裡雲Elasticsearch日志增強版介紹

我們可以看到,資料流的寫入請求,會先寫到主分片,寫入到共享存儲,然後nrt segment會拷貝到臨時目錄,那麼主和備去讀的就不同了。主讀的是commit segment a和nrt segment b,副本讀的就是a和b’。計算存儲分離的核心思想其實就是下圖右邊列的這五個點:

第一點是最重要的,索引分片一寫多讀。資料隻會保留一份,存儲成本和寫入成本會更加低,寫入性能就會大大的提高。

第二點是依賴雲存儲保證資料的可靠性。CPI的底層具備了三副本的備援機制,對于業務是透明的,是以能夠保證資料不丢,并且阿裡雲針對極端情況下,也會有分鐘級的OSS自動備份機制,能提供資料的備份,進一步保證資料的可靠性。

第三點是狀态與索引分離。

第四點是通過IO fence機制來保證資料一緻性。

第五點是記憶體實體複制降低主備的可見延遲,主備可見延遲叢分鐘級降到毫秒級。

日志場景的“棘手”問題 ——使用者痛點分析

基于上述的架構大家可能會産生的一些疑問,副本在不寫實時索引的情況下怎麼保證資料的時效性呢?其實我們為了解決這個問題,設計了實體複制的狀态機,利用lucene架構實作了主副之間的資料同步。主shard在refresh期間會生成全量meta快照。第二點是segment merge完成後,大的merge後的segment不會去做這segment同步,會直接把它fsync到共享存儲來避免一個大檔案的拷貝。第三個是主備延遲可效性在通過一系列的優化之後達到了毫秒級。

03.能力堪比“大宗師”——日志增強版vs純開源版本

阿裡雲Elasticsearch日志增強版介紹

想必大家剛才聽完上述介紹之後,對于阿裡雲增強日志場景下增強版的elastic search核心有了一定的了解。為了友善進一步的了解,日志場景增強版的核心和純開源的版本去做一個對比。為了友善大家了解,我們用真實的案例基于售價和一些性能名額來給大家一個相對來說直覺點的概念。

同樣性能比價格 ——來源于真實的POC資料
阿裡雲Elasticsearch日志增強版介紹

下面說的這兩個場景案例其實都是來源于真實的POC的相關資料,第一個是我們同樣的性能要求,或者說同樣的一個性能表現,來橫向對比一下價格。這個資料是來源于真實的我們的客戶資料,要求是希望Elasticsearch叢集的吞吐,寫入存儲是500M Bps,寫入量是450000 docs/s。基于這樣要求,分别用純開源的Elastic search版本和阿裡雲日場景增強版的Elastic search做了一個配置規劃。用純開源,其實是用25台16c 64GB的高配機器,增強版用12台就夠了。同樣配置50TB存儲媒體,配置不同的協調節點,純開源是五台,增強版是三台,專有節點機器數比較少,是以專有節點的數量和配置也不用那麼高。是以相對來說純開源版本基于阿裡雲Elastic search,大概價格是15萬一個月,阿裡雲日志場景的增強版es的原價是11萬一個月,最近會有一個年末的折扣活動,折扣活動之後大概就是69000多一個月,相對于用原價作比較我們節約的費用其實是非常可觀的。

同樣需求比ROI ——來源于真實的POC資料
阿裡雲Elasticsearch日志增強版介紹

另外一個也是一個客戶的真實場景,類似的需求,我們來對比一下ROI。客戶這固定預算是受限的不超過5萬,他希望能夠做資料容災,資料量大,我們幫他規劃了這個基于開源的Elasticsearch叢集配置跟阿裡雲日志場景下的增強版的叢集配置。大家可以看到左和右的不同,性能方面經過實測,基于純開源版本的配置,費用已經到49000,跟增強版的配置相比其費用折扣後隻需要28000,性能是要優越于純開源版本的,并發寫入場景下等。性能更優越,成本更便宜。

過人之處有哪些 ——内修心法,外練強力

總結來說,阿裡雲基于日志場景,對于Elasticsearch做了優化之後,有哪些過人之處呢?主要就是三點:

阿裡雲Elasticsearch日志增強版介紹

第一點就是我們存儲的成本節約百分之百,大家回顧去想一想,上文提到的,多個replica映射主shard跟主shard映射同一份實體存儲媒體,是以一旦有replica之後并且replica越多,節約的成本會越高,如果replica是1相當于砍了一半,replica是2成本節約了2/3,是以我們存儲的成本是大大降低的,并且支援更大的記憶體磁盤比。因為對記憶體的限制,是以其實記憶體磁盤比是相對來說比較固化,如果你的磁盤比記憶體高太多,比如說64GB的記憶體配一個幾十TB的磁盤,這個磁盤是用不掉的,在正常的這個開源的es核心裡,增強版會有更多的記憶體磁盤比。

第二點,是寫入性能會有大大提升,實際壓測使用性能相對于開源提升至少100%,在計算上避免了實體寫副本的多次CPU或者是IO的開銷來節約了資源,來提升了寫入的性能。

第三點,所有的邏輯存儲與實體存儲不是一一映射的,在做擴縮容的時候,不需要實際意義上去搬遷每一個資料節點裡面的資料,可以做到秒級的彈性擴縮容。這個在真實場景下面是對大家很有幫助的,舉一個簡單的例子,業務上面有一些波峰波谷很明顯的業務場景,遊戲、直播、類似于餐飲等的固定周期,晚上是高峰,寒暑假是高峰,或者是飯點的時候是高峰,大量的日志寫入會給叢集非常大的壓力,平時日志寫入量不大,叢集壓力沒有多少,空閑了很多。正常來說呢,大家可能會滿足峰值的壓力會預留些機器,在平時時間段其實資源是浪費的,阿裡雲日志增強版就非常好去解決了這個問題。到了峰值的時候快速把機身彈起來,然後峰值過了把資源釋放,回到我均值情況下和叢集配置的份額和水位,很大一部分錢都是可以被節約下來的,這個是從成本的角度去考慮,幫助大家節省了非常多的費用上的消耗,開源版Elasticsearch完不成的事情,阿裡雲日志增強版可以去做。

接下來介紹一下最佳的用武之地,最佳場景,什麼時候這個日場景的增強版核心可以被用到呢,或者說大家這個時候就選它,會有比較好的ROI,就是投入産出比。

04.最佳用武之地 ——日志增強版應用場景

阿裡雲Elasticsearch日志增強版介紹

首先第一個就是有非常多日志的時候,基于之前的介紹日志量大,并發寫入的性能會高,日志量很大,用副本的時候存儲會更便宜等,這些都基于一個原則,就是我不願意為這麼大的日志量支付非常高額的存儲成本,以及支撐并發寫入時資源上的消耗成本,是以海量日志的時候大家可以去選擇它,TB級10TB 100TB甚至更多;

第二個是增量日志的并發寫入性能要求很高的時候,比如說峰值寫入100000dos時,如果大家現在正在用開源的ELK去搭建自己的監控運維或者是日志系統的時候,都會有這樣的痛點,一旦并發量上去,叢集的負載均衡是很麻煩的,很容易被打爆,很容易叢集就飄紅了,這個是很危險的;

第三個是對于資料有一定容災要求的時候,副本數,至少是一點的時候,如果沒有這個副本的時候,我隻是存了一份資料,那這個時候其實存儲成本開銷可能還是比普通的ssd還是貴點,但一旦有副本,那就是100%存儲費用的降低。

什麼時候應該用? ——阿裡雲專家推薦
阿裡雲Elasticsearch日志增強版介紹

介紹完這個比較寬泛的概念之再用一個真實的案例給大家去介紹。大家都知道阿裡雲其有很多條業務線,舉一個阿裡雲内部有搜尋業務線的真實案例。搜尋會有很多集團内的客戶,集團外的客戶,甚至有搜尋之外的産品,或者說認為他是客戶,就是業務線,他們會去使用各種各樣的底層服務,那我們會對他們做一系列的監控,就是各種各樣的底層服務會有各種各樣的複雜的Metric,做大量的聚合,做dashboard,保證這些業務不受影響。做monitor,相伴而生的就一定會有告警了,這樣的一套監控和報警的平台,内部網監控和告警的平台底層所使用的就是量身定制的日志場景下的增強版的es核心。

下圖是其中一個叢集的解讀,Metric Beats采集大量的資料,通過Gateway向Elasticsearch叢集去發送,大概寫入量是40w docs/s,一些資料是熱資料,一些資料是冷資料,不能把所有的資料全都放到同樣的配置,出于成本的角度考慮,做冷熱切分的配置,為了資料容災将資料定時自動快照到OSS裡面,這套服務在阿裡雲内部已經正在使用,對外提供一模一樣的能力供大家去選擇。大概盤算一下,用開源的Elasticsearch做同樣的事情,它的費用是一倍之多,費用至少是節約了50%,不僅是存儲更便宜,持續Metric場景為了聚合的效率更高阿裡雲的核心也做了優化。基于開源的,為了達到性能,要去做更多的data log備援,保證記憶體跟CPU的性能是足夠的。

最佳實踐案例 ——真實客戶案例
阿裡雲Elasticsearch日志增強版介紹

05.年末大促 ——日志增強版的新使用者折扣

阿裡雲Elasticsearch日志增強版介紹

最後給大家介紹增強版對于我們新客戶是有折扣的,從2020年的1月1日開始到3月31日結束,首月年付六折,三個月有75的折扣,今年的1月上旬推出,Metric Beats等一系列服務,在經過授權的前提下把這些Beats一鍵裝載到您的ecs裡面,采集一些esc裡面的metric,與Logstash配合使用的話,Logstash2核4G首月是免費試用的,我們一直會有這個1核2G首月免費的試用活動,感興趣的朋友們可以去體驗一下阿裡雲Elasticsearch,到底有什麼過人之處。