UPYUN 創(chuàng)業(yè)于2005 年,當(dāng)時(shí)服務(wù)器使用的網(wǎng)卡還是Marvell的芯片,要通過自定義內(nèi)核和驅(qū)動(dòng)源代碼做編譯才能驅(qū)動(dòng)起來。而十年后在運(yùn)維方面已經(jīng)產(chǎn)生了翻天覆地的變化,本文系統(tǒng)地總結(jié)了 UPYUN 的云運(yùn)維的野蠻成長、踩過的坑以及現(xiàn)階段的狀況。
運(yùn)維的藝術(shù)
運(yùn)維的藝術(shù)是彈性。首先,從無到有,這非常重要。無論運(yùn)維做得多厲害,只是前面的“1”之后,加上多少“0”而已。從無到有很困難,但它是可以實(shí)現(xiàn)的,全力以赴去做,增長會(huì)很迅猛。
運(yùn)維總共有幾條線呢?
-
一是部署。由少到多,這是一種機(jī)器的控制方法;
-
二是從小到大。當(dāng)服務(wù)器的數(shù)量達(dá)到有多少屏都看不全的時(shí)候,監(jiān)控的手段就變得非常重要。這時(shí)候有一種方法是白盒運(yùn)維;
一家公司從小到大,不可能一口吃成胖子。第一階段的重點(diǎn)是可用,第二階段著重把現(xiàn)有的技術(shù)用好,第三階段就要讓它變得更好用。
隨著業(yè)務(wù)增長越來越快,客戶的要求越來越高。在UPYUN 的架構(gòu)里面有了非常深入的應(yīng)用,做了二次開發(fā)。當(dāng)服務(wù)器數(shù)量越來越多,運(yùn)維自動(dòng)化越來越快的時(shí)候,如果監(jiān)控做不上去,很容易失控。因此運(yùn)維的技術(shù)彈性可控,是很好的方式。
架構(gòu)是計(jì)劃出來的,不是設(shè)計(jì)出來的,在不同的時(shí)間和階段,要用不同的方法實(shí)現(xiàn)目標(biāo)。并不是發(fā)展得越快越好,而是要接地氣。
運(yùn)維的法寶
運(yùn)維的法寶是三位一體。其一是運(yùn)維自動(dòng)化和流程化,方法有很多種。原來我做的是車載,既然要做到12兆,里面不可能有拍攝,一個(gè)拍攝的包沒三、四十兆做不到。目標(biāo)是一樣的,一定要會(huì)用工具,把容易出錯(cuò)的事情用腳本規(guī)范好。
其二是監(jiān)控常態(tài)化,及時(shí)報(bào)警及隔離,觸發(fā)補(bǔ)救措施。事故不可能無緣無故的發(fā)生,肯定是之前的工作留下了什么隱患,需要及時(shí)查清。要對(duì)異常采取及時(shí)的處理,UPYUN 使用第一人稱的腳本做監(jiān)控,發(fā)生異常狀況它就會(huì)出來匯報(bào)。
最明顯的是DDos攻擊,總是事后才發(fā)現(xiàn),因?yàn)榱髁看蜻^來,最先感知的應(yīng)該是網(wǎng)卡。針對(duì)這點(diǎn),UPYUN用腳本捕捉網(wǎng)卡的異常上升流量,可以接收到它“臨死前”發(fā)出的警報(bào),運(yùn)維人員就可以根據(jù)這個(gè)及時(shí)把受攻擊的節(jié)點(diǎn)摘掉。
其三是性能可視化,運(yùn)維要對(duì)自己的業(yè)務(wù)負(fù)責(zé),提供連續(xù)的健康度報(bào)表,以爭取資源。因?yàn)檫\(yùn)維需要拿到機(jī)器或足夠的硬件,否則工作很難進(jìn)行。當(dāng)運(yùn)維和老板或是上級(jí)講技術(shù)點(diǎn)時(shí),如果他們聽不懂,就可以把報(bào)表拿給他們看。這就是性能可視化的一個(gè)重要的意義。
方向比努力更重要,流程比補(bǔ)位更重要,方法比拼命更重要。在2015年,UPYUN 都在做流程的改進(jìn),之前太粗放了。
部署自動(dòng)化
部署自動(dòng)化的三個(gè)要素:應(yīng)用、網(wǎng)絡(luò)、硬件+系統(tǒng)。第一期時(shí)UPYUN用awk、sed、bash,第二期換成了Ansible+playbook,第三期開始使用cmdb+Ansible。發(fā)布流程之前很不規(guī)范。比如運(yùn)維需要cmdb+Ansible的結(jié)合,但發(fā)現(xiàn)還沒做,怎么辦呢?就可以用定時(shí)定點(diǎn)的方式規(guī)定好星期三做發(fā)布、星期二做測(cè)試。屆時(shí)大家去一個(gè)會(huì)議室,事先設(shè)定好,屆時(shí)開始觀察。星期五繼續(xù)觀察,發(fā)現(xiàn)有問題就回退。
這些只是中間過程,因?yàn)檫\(yùn)維知道我要做什么。定下目標(biāo)之后,中間的過程就可以很好的控制。起初UPYUN和H3C做對(duì)接,購買它的設(shè)備,它提供技術(shù)解決方案,F(xiàn)在做到BFD,有多個(gè)數(shù)據(jù)中心,可以用光纖做互通。
現(xiàn)在UPYUN 不僅有兩根裸纖,還有八個(gè)口。UPYUN從北京、中山等數(shù)據(jù)中心做最近路徑的選擇。國內(nèi)的中轉(zhuǎn)機(jī)房,像電信、聯(lián)通和移動(dòng),對(duì)于堆迭、靜態(tài)聚合,云存儲(chǔ)是內(nèi)網(wǎng)做冷存儲(chǔ),公司跟交換機(jī)做堆迭,因而吞吐量有保證,交換機(jī)也可以備份。
隨著體量越來越大,UPYUN從IDC拿到的籌碼也就更大,比如2G的保底量,他們給UPYUN起三層,無論在抗攻擊能力、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)上,有更大的靈活度。拿到 A 輪融資以后,UPYUN的第一件事,就是把網(wǎng)絡(luò)設(shè)備升級(jí)成萬兆交換機(jī)。因?yàn)榍懊嬗蠰OVS,可以做擴(kuò)展擴(kuò)容。而如果網(wǎng)絡(luò)無法擴(kuò)容,要擴(kuò)這個(gè)點(diǎn)的話,業(yè)務(wù)就必須切掉。因此跟機(jī)房談一個(gè)萬兆口甚至是兩個(gè)萬兆口時(shí),必須網(wǎng)絡(luò)先行。硬件直接跳到嵌入式小系統(tǒng),當(dāng)機(jī)器只有一塊盤的時(shí)候,把它從五變到六,機(jī)器就必須下架。
如果用小系統(tǒng)就會(huì)發(fā)現(xiàn),這里有兩種介質(zhì):U盤和磁盤。如果要升級(jí)系統(tǒng),UPYUN可以把系統(tǒng)切到小系統(tǒng),對(duì)磁盤做操作系統(tǒng)的寫入,前后不超過三分鐘。UPYUN 現(xiàn)在可以做到上千臺(tái)的機(jī)器從來不在公司出現(xiàn),直接把系統(tǒng)寄到生產(chǎn)線,在生產(chǎn)線上把U盤插上去,從生產(chǎn)線連接到機(jī)房,機(jī)房人員插線后,UPYUN 的運(yùn)維團(tuán)隊(duì)就可以進(jìn)行遠(yuǎn)程控制。
這是最基本的系統(tǒng),它不會(huì)將UPYUN的敏感數(shù)據(jù)帶進(jìn)去。否則的話,這么多CDN機(jī)器發(fā)到公司,要解包、安裝系統(tǒng)、測(cè)試等,運(yùn)維會(huì)忙不過來的。在部署自動(dòng)化方面,UPYUN有完善的工具和流程。
如今,很多大會(huì)都在談運(yùn)維自動(dòng)化,這跟企業(yè)的系統(tǒng)架構(gòu)設(shè)計(jì)緊密相關(guān)。當(dāng)運(yùn)維在架構(gòu)上保證降級(jí)后,很多事情需要推動(dòng)開發(fā)來做,開發(fā)部門要配合你降低維度。不久之前,UPYUN 就曾經(jīng)做過一次降級(jí),還是相當(dāng)成功的。
監(jiān)控常態(tài)化
監(jiān)控常態(tài)化,這其中包含了很多的經(jīng)驗(yàn)教訓(xùn)。監(jiān)控要素不全面,監(jiān)控性能跟不上是比較大的問題。通過總結(jié)經(jīng)驗(yàn),UPYUN發(fā)現(xiàn)zabbix當(dāng)采集了1000+多臺(tái)服務(wù)器的各種監(jiān)控指標(biāo)后,性能就跟不上了。
監(jiān)控要分等級(jí)。100臺(tái)可以靠肉眼監(jiān)控,100至1000臺(tái)就需要用Zabbix 和第一人稱報(bào)警。UPYUN 有自己的業(yè)務(wù)監(jiān)控,還有全國節(jié)點(diǎn)分布圖,UPYUN 有大約3000多臺(tái)服務(wù)器,就把數(shù)據(jù)做匯總,進(jìn)行數(shù)據(jù)可視化的處理,成功實(shí)現(xiàn)帶寬質(zhì)量圖、ELK數(shù)據(jù)分析、小米監(jiān)控。UPYUN 對(duì)小米監(jiān)控的部分功能進(jìn)行了二次開發(fā),現(xiàn)在它的整體性能要比Zabbix好很多。
此外,還有UPYUN自行開發(fā)的“狗眼”監(jiān)控系統(tǒng)。它能夠監(jiān)測(cè)到每一個(gè)子系統(tǒng)的響應(yīng)速度。包含全國節(jié)點(diǎn)帶寬圖,它用紅色、綠色、藍(lán)色進(jìn)行狀態(tài)標(biāo)記,還可以顯示各節(jié)點(diǎn)的服務(wù)器數(shù)量。UPYUN“雙十一”入駐蘑菇街時(shí),就可以通過該系統(tǒng)看到所有機(jī)房的實(shí)時(shí)數(shù)據(jù)監(jiān)控。其實(shí),監(jiān)控策略很簡單:每天盯三個(gè)最慢的機(jī)房,逐個(gè)排查原因,這是做SLA的保證。
今年上半年,運(yùn)維團(tuán)隊(duì)的口號(hào)是“發(fā)現(xiàn)問題比客戶及時(shí)”,但可惜一直做不到。這是因?yàn)榭蛻羰?4小時(shí)在線上,每次都是客戶比我們快,這讓人很苦惱。而在用了ELK的日志大數(shù)據(jù)分析后,UPYUN 很多時(shí)候就可以做到先于客戶發(fā)現(xiàn)了。
性能可視化
關(guān)于性能可視化,現(xiàn)在可以做到在緩存軟件上做Nginx+lua。我們同時(shí)用兩個(gè),其中一個(gè)負(fù)責(zé)SSD,ATS可以做到秒級(jí)重啟,上面有LVS做負(fù)載均衡。運(yùn)維不能保證這個(gè)集群里ATS同一時(shí)間存取,但如果內(nèi)容泄露過多,就得強(qiáng)制重啟。因此UPYUN 現(xiàn)在招了兩個(gè)專職人員研究ATS源代碼。另外,UPYUN 自研了擁塞算法。第三方提供的算法可用性很低,但是它們的內(nèi)核在UPYUN升級(jí)很快,Linux的代理升級(jí)要與應(yīng)用程序一樣快,而內(nèi)核的升級(jí)會(huì)提升性能。
2015年5月份左右,UPYUN 開始關(guān)注Mesos+Docker,之前一直選擇OpenStack主要是出于節(jié)約成本的考慮。而在發(fā)現(xiàn)Docker很好用后,團(tuán)隊(duì)開始集中精力研究Docker。ELK可以做很多事情,可以看到低于100毫秒、300毫秒、500毫秒、1000毫秒,有4xx、5xx的比例,數(shù)據(jù)報(bào)表一點(diǎn)點(diǎn)小波動(dòng)都可以看到差異。UPYUN曾經(jīng)做過測(cè)試,沒使用優(yōu)化內(nèi)核算法和使用了新的hybla擁塞算法,從3.18的內(nèi)核升到4.1的內(nèi)核,數(shù)據(jù)會(huì)有提升。Kernel要自己把握,3.18到4.1的時(shí)候,我們?cè)?jīng)遇到過一個(gè)問題:內(nèi)網(wǎng)做TCP的時(shí)候做大包調(diào)整很爽。但放到外圍CDN的時(shí)候,4.0出現(xiàn)了Bug。4.0的內(nèi)核在因特爾1000的網(wǎng)卡雙向組合的時(shí)候會(huì)無響應(yīng),而3.18的內(nèi)核接入就沒問題。它的好處顯而易見,但一定要把握度。
運(yùn)維的煩惱
作為運(yùn)維人員,會(huì)有很多煩惱。第一點(diǎn),運(yùn)維很多時(shí)候都要扮演“接盤俠”和“背鍋俠”的角色,因?yàn)楣疽幸粋(gè)人出來承擔(dān)責(zé)任。如果運(yùn)維能夠在這個(gè)壓力下解決問題,獲得老板認(rèn)可,那你就是合格的。
另一點(diǎn)是頻繁申請(qǐng)和更換資源。現(xiàn)在OpenStack和Docker都有這方面需求。Ansible和Mesos也很實(shí)用,現(xiàn)在幾千臺(tái)服務(wù)器都有Docker。第三是監(jiān)控不到位,這點(diǎn)可以用ELK和Hadoop來解決。第四是消除單點(diǎn),這一塊可以借助LVS+Haproxy。在硬件方面,雙電源、雙電力、多運(yùn)營商、雙交換機(jī)、雙機(jī)柜、多機(jī)房這些配置,需要根據(jù)業(yè)務(wù)不同的發(fā)展階段做權(quán)衡,來進(jìn)行選擇。
運(yùn)維的指導(dǎo)思路
運(yùn)維的指導(dǎo)思路。首先是與人無關(guān):要將機(jī)器負(fù)載均衡做得滾瓜爛熟。用腳本、Playbook做機(jī)器生成,跟人無關(guān)。其二是與己無關(guān):要舍得把東西交出去給下屬做,自己不斷學(xué)習(xí)新的東西。第三是與狀態(tài)無關(guān):運(yùn)維要做無狀態(tài)和擴(kuò)展性,有些程序員很喜歡有狀態(tài),這就要考驗(yàn)?zāi)、工程師和CTO的能力,推動(dòng)程序員去做。最后一點(diǎn)是與數(shù)量無關(guān):要做部署的恒定,運(yùn)維話語權(quán)的增長,很多時(shí)候是在業(yè)務(wù)突飛猛進(jìn)時(shí),運(yùn)維成本仍保持不變,自己在老板心中的威信就會(huì)提升。
運(yùn)維的修煉
關(guān)于運(yùn)維的修煉。首先是要閑下來,多掌握技術(shù);其次是走出去,多參加活動(dòng),多互相學(xué)習(xí)、交叉分享;第三是多問為什么,學(xué)思結(jié)合,掌握更多信息,學(xué)以致用。而自己講的東西要深入淺出,所有人都聽得懂。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:云運(yùn)維的啟示與架構(gòu)設(shè)計(jì)
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/10839720014.html