大衆點評運維架構詳大揭祕!

今天分享專題大綱如圖所示,從5個方面跟你們一塊兒探討:html

wKioL1WBjfHhWcJHAAQ8NNMCcDw937.jpg

一、點評運維團隊的配置

目前咱們運維分爲4個組,相信跟大部分公司同樣,運維團隊分爲:應用運維、系統運維、運維開發和監控運維,固然還有DBA團隊和安全團隊,這裏就不一一羅列了。整個運維團隊全算上目前是不到40人規模。java

wKioL1WBjgzi4ltuAATbQ9sE12s530.jpg

咱們團隊分工是這樣的:python

  • 應用運維:負責支持線上業務,各自會負責對應的業務線,主要職能是保證線上業務穩定性和同開發共同支撐對應業務,以及線上服務管理和持續優化。nginx

  • 運維開發:幫助運維提高工做效率,開發方便快捷的工具,實現運維平臺化自動化。web

  • 系統運維:負責操做系統定製和優化,IDC管理和機器交付,以及跳板機和帳號信息管理。算法

  • 監控運維:負責發現故障,並第一時間通知相關人員,及時處理簡單故障和啓動降級方案等。docker

二、點評的總體架構

先看下點評的機房狀況。shell

wKiom1WBjHHS8i6rAATfjXwyTGM692.jpg

點評目前是雙機房結構,A機房主跑線上業務,B機房跑測試環境和大數據處理做業,有hadoop集羣、日誌備份、災備降級應用(在建)等。點評目前機房物理機+虛擬機有近萬臺機器。vim

點評的總體架構,仍是跟多數換聯網公司同樣,採用多級分層模式,咱們繼續來詳細看下點評總體架構。後端

wKiom1WBjIXwCWgNAAhDZGLUZfM736.jpg

上面這幅圖基本歸納了點評的總體架構環境:

  • 用戶引導層用的是第三方的智能DNS+CDN。

  • 負載均衡首先是F5作的4層負載均衡 以後是dengine作的7層負載均衡(Dengine是在tengine基礎上作了二次開發)。再日後是varnish作的頁面緩存  以後請求到web端 web端經過內部協議調用service(RPC)。

  • 圖片存儲用的是mogileFS分佈式存儲 。

  • 全部業務,所有有高可用方案,應用所有是至少2臺以上。

  • 固然,具體業務要複雜不少,這裏只是抽象出簡單層面,方便各位同窗理解。

目前,點評運維監控是從4個維度來作的:

  1. 業務層面,如團購業務每秒訪問數,團購券每秒驗券數,每分鐘支付、建立訂單等(cat)。

  2. 應用層面,每一個應用的錯誤數,調用過程,訪問的平均耗時,最大耗時,95線等(cat)。

  3. 系統資源層面:如cpu、內存、swap、磁盤、load、主進程存活等 (zabbix)。

  4. 網絡層面: 如丟包、ping存活、流量、tcp鏈接數等(zabbix cat)。

三、點評運維繫統介紹

wKioL1WBjkqSxSw0AAX6sVpFNBA249.jpg

點評的運維和平臺架構組作了不少實用的工具,這些工具組成了點評的總體運維體系。

目前自動化運維比較熱,但自動化運維我的以爲是一種指導思想,不必硬造概念和生搬硬套。自動化在不少公司百花齊放,各家有各家的玩法。但無論怎麼定義,運維人員都必須從不一樣緯度去面對和解決企業所存在的問題。

點評在這方面,也是摸着石頭過河,咱們的思路是先造零件,再整合,經過零件的打造和之間的整合,慢慢勾勒出一條適合本身的運維自動化框架。

咱們運維的理念是:

  1. 能用程序幹活的,堅定程序化、平臺化;

  2. 能用管理解決的問題,不用技術解決;

  3. 同一個錯誤不能犯三次;

  4. 每次故障,都是學習和提高的機會;

  5. 每一個人都要有產品化思惟,作平臺產品讓開發走自助路線;

  6. 小的,單一的功能,組合起來完成複雜的操做(任務分解);

因此,咱們將本身的理念,融入到本身的做品中,作出了不少工具。

首先總體作個說明,點評運維工具系統彙總:

  • 全方位監控系統:覆蓋業務、應用、網絡、系統等方面,作到任何問題,均可直觀反饋。對不一樣應用等級,作到不一樣監控策略和報警策略。

  • 自動化工具系統:對重複的、容易出錯的、繁瑣的工做盡量工具化,經過小的策略組合,完成大的任務。

  • 配置和管理系統:對於複雜的配置管理,儘量web化、標準化、簡單化,有模板定義,有規範遵循。

  • 記錄和分析系統:對發生的問題和數據作記錄並分析,不斷的總結、完善和提高。

下面就跟你們來一一介紹下:

3.1 全方位監控系統

Zabbix你們應該很是熟悉了,這裏就不作介紹,主要介紹下cat監控。

wKiom1WBjLKTZBxNAAJ-4MXzQDQ844.jpg

  • 業務監控:

這張是cat的應用監控圖表,可直觀從業務角度看出問題,可跟基線的對比,發現問題所在。如圖所示,此時支付遠偏離基線,流量正常,可能後端出了問題。

除了這些,還有建立訂單、支付、首頁訪問、手機訪問等業務數據。

這張圖是從業務角度來監控的。
wKiom1WBjMqgxOdWAAQoJ-JP7JY437.jpg

這張也是從業務層面來監控的,該圖展現的是手機的訪問量趨勢圖,下面包括延遲、成功率、連接類型、運營商等都有明確數據,該監控可全方位覆蓋業務。

wKioL1WBjo-Qgbg6AAJCIg1LATI683.jpg

  • 應用監控:

從業務層面往下,就是應用層面。

應用狀態大盤可清晰表示當前業務組件狀態,若是某個業務不可用,其下面某個應用大量報錯,說明多是該應用致使。

該監控大盤十分清晰明的能展現業務下面的應用狀態,可在某業務或者某域名打不開的時候,第一時間找出源頭。

下圖爲應用報錯大盤,出問題的應用會實時登榜(每秒都會刷新數據),當出現大故障時,運維人員可一眼看出問題;而當多個不一樣業務同時報錯時,則多是公共基礎服務出了問題。

wKiom1WBjPeAC-IhAAKvZmIFiBM957.jpg

再看下圖的這個功能,是Cat最強大的功能,能完整顯示應用之間調用過程,作了什麼事情,請求了那些,用了多長時間,成功率是多少,訪問量是多大,一覽無餘。 Cat幾乎無死角的覆蓋到業務和應用層面的監控,固然還可作網絡等層面監控,總之很是強大。這也是點評的鷹眼系統。

wKioL1WBjr_RwlNKAAhjZSha1bs593.jpg

  • Logscan日誌掃描工具:

wKioL1WBjtbCcJ1BAAQ7oJ-ZNr4083.jpg

Logscan系統,是一套日誌掃描工具,可根據你定義的策略,對日誌內容進行定時掃描,該工具可覆蓋到基於日誌內容的檢測,結合zabbix和cat,實現無死角覆蓋。 好比有一些攻擊的請求,一直遍歷你的url,經過cat、zabbix等都沒法靈活捕獲,有了日誌掃描,即可輕鬆發現。

3.2 自動化工做系統

首先介紹下點評的流程系統-workflow系統

顧名思義workflow是一套流程系統,其核心思想是把線上全部的變動以標準化流程的方式,梳理出來。

咱們遵循一個理念,能用程序跑,就不去人操做。

流程有不一樣狀態的轉化,分別爲發起、審計、執行、驗證等環節。用戶可自行發起本身的需求變動,經過運維審覈,操做(大部分是自動的),驗證。 如擴容、上線、dump內存、封IP等都爲自動化流程。

wKioL1WBjvGgyyKMAAYKe8OzK1E610.jpg

以咱們線上自動化擴容流程爲展現,用戶使用時,須要填寫對應信息,提交後,運維在後臺審覈事後,就徹底自動化擴容,擴容完成會有郵件通知,全程運維不須要登陸服務器操做。(自動化倒不是太複雜的技術難題,經過小的任務組合,設置好策略便可). 幾十臺機器的擴容,運維只需點個審覈經過按鈕,數分鐘而已。

wKiom1WBjVfh5dhCAARJqA54FRI147.jpg

通過長時間的推廣,點評如今98%以上變動都是經過工做流平臺完成的,全部變動所有有記錄,作到出問題時 有法可依,違法可糾。

並且經過流程單的使用頻率,可作數據分析,瞭解哪些操做比較頻繁,可否自動化掉,是否還有優化空間。 這纔是作平臺的意義,以用戶爲導向。

wKioL1WCGv6Bjr3VAAIvudCi5jc534.jpg

流程系統就介紹到這裏,朋友們可關注下其中核心思想。

下面介紹另外一套重量級核心系統:Button系統

Button是一套代碼管理、打包、部署上線系統,開發可徹底自主化進行上傳代碼,自動化測試,打包,預發,灰度上線,所有上線,問題回滾等操做。 全程運維不用幹預,徹底平臺自主化。

wKiom1WCFviRF5VyAASTRjdWYpI724.jpg

點評的運維,除了有些無法自動化的手動配置下,其餘基本都是開發自助。 這就是自動化的威力!

Go平臺系統,是一套運維操做系統,其中包含了不少常規操做、如批量重啓、降級、切換、上下線、狀態檢測等。

該系統主要是解決運維水平良莠不齊,工具又各有各的用法,好比說批量重啓操做,有用ssh、有用fabric、有本身寫shell腳本的。 乾脆直接統一,進行規範,定義出來操做,經過平臺化進行標準化。 因爲長時間不出問題,偶爾出一下,運維長時間不操做,找個批量重啓腳本還要找半天。 哪些不能自動化的,咱們基本都作到go裏了,在這裏基本都是一鍵式的傻瓜操做了。

wKiom1WCFx2BNuJPAAb_uvfQn_o709.jpg

如今,咱們監控團隊就能夠靈活操做,不須要有多高的技術含量,而且每次操做都有記錄,作好審計和受權。

wKioL1WCGOjhwjcsAAR2pdoyRL0572.jpg

全部後臺基本都是python、shell腳本實現,小的腳本組再整合成任務,這也是咱們的重要理念之一。 對於比較複雜的任務,咱們進行分解,而後用小的,單一的功能,組合起來完成複雜的操做(任務分解)。 其實咱們實現自動化也是這個思路,先造零件,再拼裝。

wKioL1WCGRWgeXe0AAZF1iEbm6c263.jpg

儘管有了puppet,go等工具,但對於一些job做業的管理,也顯得很是吃力,咱們架構組的同窗作出一套任務調度系統。至關於分佈式的crontab,而且有強大的管理端。 徹底自主化管理,只須要定義你須要跑的job,你的策略,就徹底不用管了。會自動去作,而且狀態彙報、監控、等等所有都有記錄,並實現徹底自助化。

wKiom1WCF3jzfFmqAAXU0KD1a5I654.jpgwKioL1WCGUDwEphgAAXTATADQag222.jpg

以上這些系統都很是注重體驗,都有很是詳細的數據統計和分析,每過一段時間,都有人去看,不斷改進和優化,真正作到產品自運營。還有一些自動化系統就不一一介紹了。

3.3 配置和管理系統

先介紹下puppet管理系統,相信很多同窗對puppet語法格式深惡痛絕,而且也領教過一旦改錯形成的故障嚴重性。

並且隨着多人協同工做後,模板和文件命名千奇百怪,沒法識別。

針對這些問題,點評就作了一套管理工具,主要是針對puppet語法進行解析,實現web化管理,並進行規範化約束。

跟go系統同樣的想法,將puppet中模塊進行組合,組合成模塊集(方法集),可方便識別和靈活管理。

wKiom1WCF6LxwXygAAdF-zEUKj0316.jpg

下面展現的是咱們的軟負載均衡管理頁面,該系統是線上SLB的管理系統。 其核心在於把nginx語法經過xml進行解析,實現web化管理,傻瓜式配置,規範化配置,避免誤操做,版本控制,故障回滾等。

wKioL1WCGWXQxBcqAAVhkC32hGc149.jpg

wKiom1WCF9OT_k44AAQDbfPf6Tc921.jpg

點評系統不少,基本上遇到個痛點,都會有人想辦法把痛點解決。

下面就介紹下點評另外一套強大配置系統,lion。

wKiom1WCGdmjB-7IAAY1zp6UzXw384.jpg

Lion是一套應用配置管理系統,點評的全部應用用到的配置,不在本地文本文件存儲,都在一個單獨系統存儲,存儲以key/value的方式存儲。而且也是徹底平臺化,運維負責作好權限控制和審計。開發所有自助。

其核心是用了zookeeper的管理機制,將配置信息保存在 Zookeeper 的某個目錄節點中,而後將全部須要修改的應用機器監控配置信息的狀態,一旦配置信息發生變化,每臺應用機器就會收到 Zookeeper 的通知,而後從 Zookeeper 獲取新的配置信息應用到系統中。

是否是在點評作運維輕鬆不少?各類操做都工具化,自助化,自動化了。那運維還須要作什麼。

3.4 記錄和分析系統

此類系統雖然不怎麼起眼,但對咱們幫助也是特別大的,咱們經過一些系統的數據記錄和分析,發現了很多問題,也解決很多潛在問題,更重要的是,在這個不斷完善總結的過程當中,學習到了不少東西。

這個是咱們故障分析系統,全部的故障都會作記錄,故障結束後都會case by case的進行深刻分析和總結。其實以上不少系統,都是從這些記錄中總結出來的。

wKioL1WCG6Khz9Y5AAIgn8Eo_js630.jpg

該系統爲故障記錄系統,每一個故障都有發生的原因和改進的方案,按期有人review。

運維起來很輕鬆嗎?也不輕鬆,只是工做重點有了轉移,避開了那些重複繁瑣的工做,和開發同窗深度結合,共同注重運營質量和持續優化。

再來看下圖所示是點評的DOM系統,即運營質量管理平臺,該平臺彙總了線上的服務器狀態、應用響應質量、資源利用率、業務故障等全方位的數據彙總平臺。

wKioL1WCHAvBAZk0AAa0UG48DsE758.jpg

並經過同比和環比,以及平均指標等數據,讓各開發團隊進行平臺化PK,性能差的運維會去推進改進。

wKiom1WCGmvShrV0AAZPMDJnDpk749.jpg

最後一個須要介紹的是雷達系統,該系統是咱們最近在作的,一個比較高大上的項目。

朋友們也感覺到了,咱們系統之多,出問題查起來也比較費時。 很多同窗生產環節也遇到過相似問題,出了問題究竟是什麼鬼?到底哪一塊引發的呢? 結合這個問題,咱們把線上的問題作了個分類,並給了一些策略層面的算法,能快速顯示。 可以讓故障有個上下文的聯繫,如:上線時間、請求數降低、錯誤數增多等,哪一個先出現,哪一個後出現? 固然,這塊功能還在作,目標是實現 出問題的時候,一眼就能從雷達系統定位問題類型和範圍。

wKiom1WCGEmiqkVuAAToYRGqbfM269.jpg

以上向你們演示的就是點評的運維繫統,相信咱們點評的運維思想都在裏面體現了。

運維點評這幾年的發展,主要目標是實現平臺規範化、運維高效化、開發自主化 。

以前也是經過運維root登陸,而後寫腳本批量跑命令的低效運維。也經歷過CMDB系統信息不許確,上線信息錯亂的尷尬局面。也遇到過出了很大問題,運維忙來忙去,找不到rootcase。

好在,經過努力,這些問題如今都有了很大改觀,相信朋友們經過展現的系統,能感受出點評運維的進步。

四、運維踩過的坑和改進的地方

我就這些年,點評運維出的一些case案例,跟你們聊一聊咱們作了哪些具體工做:

  1. 變動不知道誰作的,沒法恢復,變動完也找不到根據,形成重大故障。//以前線上puppet經過vim的管理方式,因爲運維同窗失誤推了一個錯誤配置,致使所有業務不可用1個小時,咱們後面經過規範puppet配置修改並作成工具,進行權限控制,還加了流程系統,進行避免。

  2. 出了問題,開發說代碼沒問題,運維說環境沒問題,該找誰?//咱們後面作了工具,經過DOM和cat系統,可進行深度診斷,基本很容易定位問題所屬。

  3. 執行了個錯誤命令,全線都變動了,致使服務不可用。//咱們經過go系統,進行平常操做梳理,並作成工具,運維90%操做均可經過自動化流程和go平臺完成。大大縮減故障產生率,而且以後進行權限回收。

  4. 出問題了,各類系統翻來查去,沒法快速定位,找不到rootcase。//點評正在作雷達系統,就是將歷史存在的問題,進行復盤,將一些故障類型,進行分級,而後經過策略和算法,在雷達系統上進行掃描,出問題環節可快速第一時間優先顯示。

  5. 運維每天忙成狗,還不出成績,每天被開發吐槽。//點評這兩年徹底扭轉了局勢,如今是運維吊打開發,由於咱們目前,大部分系統都實現了開發自助化,運維被解放出來,開始不斷完善平臺和關注業務運營質量,咱們dom系統是可定製的,運維天天都把各業務的核心指標報表發到各位老大那裏,哪些服務質量差,響應慢,開發都會當即去改。(固然,須要老大們支持)。

五、將來關注的領域和方向

點評也有些前沿的關注點,好比比較熱的Paas技術。

PaaS和雲很熱,還有docker技術,點評也不能掉隊,目前點評有數千個docker的實例在跑線上的業務。

wKioL1WCGgzTxp1DAAVVIpzxBLE754.jpg

wKiom1WCGHTwJJ8tAAKvNdrfX48794.jpg

上圖java都是跑的docker實例

wKioL1WCGjOjMkvbAAUIF_xCGso981.jpg

目前點評Docker這塊可作到10秒內快速部署業務並可響應用戶請求。30秒內可完成一次實例無縫遷移。 我的感受docker技術不在於底層這塊,在於上層管理系統的構造。底層一方面是持續優化,挖掘性能,但更重要的是在策略層和調度層。 如何快速部署、遷移、恢復、降級、擴容等,作好這些還有很多挑戰。

點評這兩年成長不少,但須要走的路也不少,將來關注的點會在多系統的有機整合和新技術的嘗試以及發展,還會更多的關注智能策略層面。

結束語

在最後結束時,感謝各位到場朋友捧場,也感謝點評運維和平臺架構的每一位同事,有了大家,點評運維才走到了今天,咱們共同努力,來創造新時代的運維體系。點評不少系統都是第一次拿出跟你們分享,你們可看一下設計理念和思想。文章內容選自51CTO學院講師馬哥博客,Linux運維架構師成長之路:http://edu.51cto.com/course/course_id-3559.html

相關文章
相關標籤/搜索