阿里巴巴統一運維智能化平台演進之路

阿里巴巴统一运维智能化平台演进之路

講師簡介

楊乾坤

2012年加入阿里,先後在阿里巴巴技術保障部、技術架構、搜索事業部任職,現任職於阿里巴巴計算平臺事業部,主要負責大數據相關的運維和運維平臺的開發。

前言

我今天分享的主題是《阿里巴巴實時計算平臺運維架構演進》。一共分四個部分:

  1. 實時計算平臺的運維挑戰

  2. 統一的運維自動化平臺

  3. 主動出擊,消除隱患

  4. 走向智能化

實時計算平臺的運維挑戰

阿里巴巴统一运维智能化平台演进之路

大家知道最近兩年隨著AlphaGo的興起,算法成為各個公司,如阿里巴巴、騰訊重金投入的場景。實時計算平臺包括實時計算、流計算。

它在搜索、推薦、廣告、監控方面,對於實時的反饋效果的提升有非常大的幫助。實時計算最近兩年火起來,其面臨著與在線服務和離線計算不一樣的一些挑戰。

在去年雙十一時,阿里的實時計算平臺服務了20多個BU、有1K多的 Job、近萬臺機器,其計算峰值達到了4.72億QPS,大家在雙十一當天看到的阿里巴巴對外提供不斷滾動的大屏,其計算峰值達到1.8億QPS。

阿里巴巴统一运维智能化平台演进之路

關於實時計算、離線計算和在線服務的差異。離線計算對 SLA 的要求不高,分鐘甚至小時的延時都是可以接受的。

實時計算就要求必須達到秒級,不得出現一分鐘卡頓的情況。大家比較熟悉的在線服務必須是毫秒級或者微秒級的要求。

針對不同的情況,容災方式也不一樣。在線服務需要有異地雙備或者多地單元化部署,保證能隨時互切。對於實時計算,它只會針對個別核心業務做雙備,大部分業務只有一個運行實例。

離線計算幾乎沒有雙備。針對這種容災方式造成資源利用率的不同。在線服務要保障隨時互切,資源利用率,比如CPU不能超過40%。

實時計算和離線計算對資源利用率有更高的要求,必須達到70%-80%以上,甚至達到90%以上。

阿里巴巴统一运维智能化平台演进之路

現在實時計算面臨幾個挑戰:

  • 第一,集群異構情況。我們的機器每年在更新換代,今年的機器和去年的機器相比,CPU和內存的提升,會導致集群機型的異構;

  • 第二,熱點的情況。在離線計算的挑戰不大,可以接受一個小時或者幾分鐘的延時。對於實時計算來說,一旦出現熱點,必須能夠馬上進行實時自動化處理,否則會影響整個服務;

  • 第三,軟硬件故障導致服務的可用性;

  • 第四,資源利用率的提升對於穩定性的挑戰非常大。實時計算和離線計算對於資源利用率的要求幾乎一致,要達到80-90%的利用率。

統一的運維自動化平臺

阿里巴巴统一运维智能化平台演进之路
阿里巴巴统一运维智能化平台演进之路

這是阿里巴巴實時計算的平臺和運維架構的情況。

最下層是運行環境的管理,我們主要通過阿里自研的IDC系統以及大數據平臺自己做的代碼系統,做物理機和Docker的硬件管理,包括硬件的運行。往上一層對應存儲層、調度層、引擎。

我們的存儲主要有HDFS、HBase、Pangu。在調度層主要是Yarn和我們自研的Fuxi。在引擎層是阿里巴巴基於開源的Blink打造的引擎。

在運行層的管理,我們通過 Aquila 做了管理。Aquila 是我們基於社區開源做的企業版服務。之所以叫Aquila,因為類似像Hadoop、HBase等,是以動物的形象展現給大家。Aquila是我們在網上搜索到的非洲野生動物園,我們想通過Aquila 把類似Hadoop、Blink 的生態系統,將其全部管理起來。

阿里巴巴的開發平臺目前主要是StreamCompute 和 Porsche。

StreamCompute已經在阿里雲公開對外輸出,如果大家對實時計算感興趣,可以到阿里雲的官網做試用或者採購。

最上面一層實時計算支撐整個阿里的業務,包括搜索、推薦、廣告、大屏。整個的開發和應用層是通過阿里計算平臺事業部開發的 Tesla 系統做業務的管理和運營。以上是目前阿里實時計算的平臺架構和運維體系。

阿里巴巴统一运维智能化平台演进之路

DAM 主要做的包括四部分:

  • 硬件檢查。

  • 故障預測。我們依賴很多底層算法及大數據相關的技術。

  • 故障修復。機器自動化故障處理,自動化的提交報修單,囊括提報修單、現場維修、重新交付。

  • 硬件運營。對於底層硬件運營情況的展示,包括資源利用率、機器上線情況,同時另一部分的工作是做多種機型故障率、維修時長等運營工作,可以幫助我們發現每種機型或者同機型不同廠商之間的硬件故障率,對我們後續硬件的採購產生影響。

阿里巴巴统一运维智能化平台演进之路

Aquila,目標是把Aquila從工具到產品的升級。我們需要提供對運維自動化有幫助的能力,包括以下幾點:

  • 運維操作百屏化;

  • 服務統一的運維規範和模式;

  • 可持續集成能力;

  • 對自動化操作的支持能力。它能提供完整的API供外部接口做調用,支持自動化的操作。

阿里巴巴统一运维智能化平台演进之路

Aquila:概念和功能需求的劃分為以下幾點:

  • 第一,Stack管理。一組特定版本的服務集合,它本身有版本的概念,比如1.0-1.1中間的差異可以是其中某一個 Service 版本的變化或者多個Service版本的變化,通過Stack管理來做整個集群的升級管理。

  • 第二,配置管理。我們面對的是集群管理異構的情況,所以它必須支持機器配置分組管理。配置代碼化,通過Git管理,有版本概念,支持Review和回滾。

  • 第三,自動化方案。一是要支持完善的API,能夠做自動化的擴容,機器從故障預測、下線、機器修復和重新上線的自動化流程;二是支持服務的自動拉起和維持,現在集群會出現一些異常,它要保證隨時把停掉的進程拉起來。

  • 第四,是通用接口。

阿里巴巴统一运维智能化平台演进之路

Aquila設計和實現。其底層依賴DB,Server層包括幾部分,一是Heartbeat Handler,它負責和Agent通信;FSM是狀態機的管理。在Aquila裡,各種服務的管理是通過狀態機進行的。

Action Manager、Coordinator、Stage Pianner 負責從請求到生成對應的操作流程。 Agent和Server通信方式是由Agent主動發起,Server 端的命令下發、監控是通過 Heartbeat respond 方式完成,包括 Agent 監控的信息、動作執行情況,全部以主動向Server彙報的方式進行。

阿里巴巴统一运维智能化平台演进之路

相比於開源社區,Aquila提供以下優勢:

  • 服務更穩定

  1. 支持Server的HA架構,保障server的高可用。開源社區【英文】是單點服務,包括DB、Server。我們在此之上做了一個改造,就是HA的架構。保證我在一個Server掛掉的情況下,不影響整個集群的操作。

  2. DB採用阿里雲數據庫,能夠保證數據的安全性。

  3. 增加配置Review流程。該流程可以保證我們的配置經過對應的開發、QA,做Review後的配置,才能分發到整個集群裡。

  4. Bugfix達到100+。

阿里巴巴统一运维智能化平台演进之路

這是我們改造後HA的情況。我們的後臺是RDS,RDS可以在出現故障的情況下做無縫遷移。在Server端,我們支持兩個Server,這兩個 Server 通過Zookeeper 保證一致性,保證只有一臺 Server 在運行狀態,另一臺準備狀態。

Agent的通信類似Hadoop的工作方式,當它向其中一臺Server發起通信受阻情況下,它會主動去另一臺做重試。通過這樣的方式來保障Aquila的高可用。

阿里巴巴统一运维智能化平台演进之路

這是改造後的配置管理情況。我們通過Aquila WebUI或Json IDE發起配置變更,我們的配置保存在Git上。不管你是通過Aquila WebUI還是Json IDE,都會生成Review Borad。

這個Review是通過Facebook提供的開源工具來做,它已經集成到阿里的系統上。生成Review後,我們可以通過對應的開發和QA Review後,才可能進到Git。

只有進入Git才有可能被Aquila Server接受,下發到計算平臺的集群裡。大家看到的不是特別大或者特別複雜的改造,這對於生產環境來說,是一個非常重要,而且是必須要做的事情。

  • Aquila優勢:管理更高效。我們做了很多管理上的改造,讓整個集群的管理變得更高效。

  1. Stack的管理。我們對Stack依賴管理重新設計,整體更加簡潔。我們原來會做得【英文】非常複雜,1.0有一個基礎,1.1某一個服務做了改動,其他的都會改為對1.0的依賴。這對於整個服務管理非常複雜,我們要對其中一個服務做操作上的改動,所有的Stack1.0、1.1要重新升級。改造後,Stack1.1-1.0的依賴類似拷貝的過程,從1.0-1.1做升級,對應做版本變更、操作變更,使整個依賴變得更加簡潔,對於我們的操作更加友好。

  2. 比較大的改動是我們的集群管理,支持多集群管理功能。Aquila Server的部署是一個比較複雜的過程,包括它的依賴情況。我們在此情況下做了多集群管理功能,一臺Aquila可以管理整個生產的多個集群。

  3. 我們增加配置導入導出的流程,方便我們做新集群部署,我們所有已經Review好的配置可以從GitLab上直接導入集群,做配置的複用,直接配置新集群。

  4. 支持機器自動註冊和服務自動部署,支持Docker服務自動部署。這是針對阿里現在的大環境做的,阿里在做統一調度系統,阿里所有的業務都要進容器。我們如何做服務擴容,我們要向一層調度,申請一部分資源。它反饋給我們的是Docker容器。我們做自動註冊服務,Docker只要把Aquila拉起來,我可以通過Server中的配置自動把服務拉起。

  5. 流程優化達到30+,包括部署嚮導、Batch升級、Rack信息導入等。

阿里巴巴统一运维智能化平台演进之路

這是服務自動註冊和拉起的情況。Tesla是我們的大數據業務運營管理平臺,它可以探測我們集群的水位情況,水位是否超過我們預定的80%,如果超過,我們可以主動向阿里資源管理一層調度平臺 Sigma做資源申請。

申請下發後,如果Sigma可以滿足我們的資源申請,它會主動把容器拉起來交給我們。

我們拉起時做了一個動作,把對應的 Aquila Agent 拉起來。拉起來後,Aquila agent 會自動向 Server 做彙報,完成彙報後,Aquila Server 可以根據自己在服務端的配置,比如針對Docker需要部署的服務有哪些,它屬於哪些配置分組。

在這種情況下,Aquila Server 會下發部署和配置更新的命令,把 Agent 和容器內的服務部署好後,向 Sigma 返回,Sigma 知曉情況後,會向運營管理平臺做最後的確認。完成從水位檢測到資源擴容的整個自動化流程。

阿里巴巴统一运维智能化平台演进之路
  • Aquila的優勢:服務接入更開放。

  1. Stack 和 Server 做打包分離,加快 Stack的迭代,讓服務接入更方便。

  2. 我們對 Service 的 Meta 文件進行拆分,將版本信息、操作信息、依賴信息分離,Stack升級更加靈活。如果我們要對服務做操作方面的改造或者升級,它不需要專門做Stack的升級便能完成。

  3. 我們支持更靈活的安裝方式和源,如Rpm、Tar、Git、Oss等。

阿里巴巴统一运维智能化平台演进之路
  • Aquila優勢:性能更高。我們在性能方面做了很多的改造,目前從 Aquila 社區看到,單集群支持2500+機器。現在我們通過對數據庫表結構的優化及Host管理優化,單集群可以支持 5000+ 機器和單 Server 支持 50+ 集群。其他性能優化 20+,包括鎖優化、事件管理優化及前端框架的優化。從整個平臺看來,有了 Aquila後,我們可以依賴這個產品做很多自動化的工作。

阿里巴巴统一运维智能化平台演进之路

這是Tesla在業務運營層面的,統一的大數據運營平臺,包括業務中心、平臺運營和工具服務。

阿里巴巴统一运维智能化平台演进之路

運維運營平臺提供分站開發框架、資源整合相關管理、運維數據化的支撐、智能分析工具,它的功能涵蓋業務中心、服務管控、平臺運營、工具服務、運營中心和運籌優化。

從運維/運營業務場景來看,它提供故障處理場景、監控分析場景、變更保障場景和值班、大促的場景。Tesla 面向的客戶包括業務開發、一線運維、IDC、財務,它涵蓋資源賬單情況。

主動出擊,消除隱患

阿里巴巴统一运维智能化平台演进之路阿里巴巴统一运维智能化平台演进之路

這是我們在此平臺上做的自動化保障。對於實時計算平臺來說,機器出現故障,影響業務後再進行處理有比較大的風險。

我們通過引入DAM做硬件預測,在預測到故障時,主動通過 Aquila 完成服務的下線,把機器交還給 DAM,做硬件自愈,自愈完成後重新加入到集群中,形成一個完整的閉環。現在在運營工作中,我們不再需要主動做硬件故障管理的工作。

阿里巴巴统一运维智能化平台演进之路

資源自動化擴容,Tesla 探測資源水位,在水位緊張的情況下啟動向 Sigma 的資源申請。通過容器做自動註冊,完成服務部署,最後加入集群,進行調度作業。

走向智能化

阿里巴巴统一运维智能化平台演进之路阿里巴巴统一运维智能化平台演进之路

我們現在在做智能化的探索,實時計算對故障的要求比較敏感,我們在做異常分析。可以看到 Metrics 是時間序列的數據,像 ETS、EWMA 做預測,通過Sigma 做模型的生成。在模型生成中有參數是通過深度學習的方法,不停的做校驗。

下面是無監督機器學習的過程,包括特徵工程、基於密度和樹做LOF、DBSCAN,通過異常報警和人工反饋情況調整參數。

具體場景是機器熱點分析,我們通過 Metrics 的採集,做密度聚類,最後生成三個結果,一是 PCA 降維後的分組圖,它會歸類哪些機器可以歸到一個分組,另外的是不太正常的狀態;二是數據化的歸一,哪些分組的指標不一樣;三是指標明細,哪些分組發生哪些數據。

阿里巴巴统一运维智能化平台演进之路

這種情況對我們的應用場景,在集群異構的情況下,由於配置的原因,我們難以發現機器積累的問題。比如一臺 64 核 256 G的機器,我在配置資源時出現配置錯誤,如配了10 核 128 G。

我們通過傳統的監控不太容易發現其問題。傳統監控,我們會配置這臺機器的CPU 超過多少,再做報警。

這不太適用我剛才所說的,我們可以通過聚類的分析,發現離群組的情況,它是因為CPU使用過低而被分在不太正常的組裡,我們可以根據分析發現問題。以上是我的分享,謝謝大家!

說明:本文根據 GOPS 2018 深圳站 楊乾坤老師的分享整理而成。

錯過 GOPS 2018 深圳站?GOPS 2018 上海站與您不見不散!

阿里巴巴统一运维智能化平台演进之路

GOPS 2018 上海站 阿里專場精彩議題一覽:

阿里巴巴统一运维智能化平台演进之路

意不意外,精不精彩?


分享到:


相關文章: