摘要:我加入了騰訊,騰訊企業(yè)文化很好,經(jīng)常會(huì)有很多小組活動(dòng)部門活動(dòng)什么的,但是做運(yùn)維很苦。所以,年的時(shí)候我們幾個(gè)騰訊的同事一同創(chuàng)業(yè),希望把我們的想法和經(jīng)驗(yàn)?zāi)軌騻鬟f出來(lái)。這里我列出了騰訊互聯(lián)網(wǎng)運(yùn)維團(tuán)隊(duì)所經(jīng)歷的三個(gè)階段。
精彩觀點(diǎn)搶鮮看本文是數(shù)人云深圳技術(shù)分享課上優(yōu)維科技聯(lián)合創(chuàng)始人彭鯉航的演講實(shí)錄,演講主題是《運(yùn)維自動(dòng)化實(shí)踐》。
實(shí)現(xiàn)運(yùn)維自動(dòng)化閉環(huán),最主要就是配置管理、狀態(tài)管理和變更管理能力。
治大國(guó)如烹小蝦,我們來(lái)類比餐廳老板,看如何實(shí)現(xiàn)炒菜的自動(dòng)化:
首先,我要知道我的廚房里到底有些什么東西是可用的,比如備了哪些菜,有那些工具,這些就是配置管理。
此外,我要讓系統(tǒng)幫我去做菜,是炒、是燉還是煮?是加水、加油還是加火,這些都是變更管理的能力。
最后,系統(tǒng)還需要能夠知道我炒的菜目前是一個(gè)什么樣的情況,有幾分熟,溫度有沒有太高,油是不是太少什么的。這些就是狀態(tài)管理的能力。
不管是什么樣的自動(dòng)化系統(tǒng),實(shí)現(xiàn)本質(zhì)就是這三個(gè)能力的閉環(huán)。
正文我結(jié)合自己在運(yùn)維方面的一些工作經(jīng)驗(yàn),介紹一下怎么樣去設(shè)計(jì)和建設(shè)一套完整的運(yùn)維系統(tǒng)以便支持分布式架構(gòu)的系統(tǒng)。
首先簡(jiǎn)單自我介紹下,本人從事運(yùn)維相關(guān)的工作有很長(zhǎng)一段時(shí)間了,應(yīng)該有十幾年了吧。
我的第一份工作是做系統(tǒng)集成,期間建過網(wǎng)絡(luò)、建過機(jī)房、爬過天花、搬過服務(wù)器,感覺全是各種體育鍛煉,鍛煉出來(lái)的身體正好就是干運(yùn)維的料子。因?yàn)檫\(yùn)維首先得有體力搬得起服務(wù)器。
印象中我搬過最重的服務(wù)器是 IBM的RS6000,應(yīng)該有個(gè)幾百斤吧,一個(gè)人根本扛不動(dòng),四個(gè)人搬都非常吃力。我原來(lái)身體好的時(shí)候能做一百多個(gè)俯臥撐,自從不搬服務(wù)器了,現(xiàn)在估計(jì)30個(gè)都做不動(dòng)了。
2006我加入了騰訊,騰訊企業(yè)文化很好,經(jīng)常會(huì)有很多小組活動(dòng)、部門活動(dòng)什么的,但是做運(yùn)維很苦。經(jīng)常在外面玩得時(shí)候,人剛到電話就過來(lái)了。
有一段時(shí)間我專門負(fù)責(zé)值班優(yōu)化,承包了所有的告警處理,那時(shí)候每天晚上要起來(lái)四五次處理故障,一個(gè)故障最少也要搞個(gè)半個(gè)多小時(shí)到一個(gè)小時(shí),當(dāng)時(shí)一直覺得這事只熬過來(lái)別的事情就應(yīng)該都是小菜一碟了。
雖然當(dāng)我有小孩之后,才發(fā)現(xiàn)原來(lái)還有比干運(yùn)維更辛苦的事情的。
都說運(yùn)維苦,但其實(shí)只要干好了,也可以是非??鞓泛陀谐删透械摹榱俗屵\(yùn)維都干得比較快樂。
所以,2015年的時(shí)候我們幾個(gè)騰訊的同事一同創(chuàng)業(yè),希望把我們的想法和經(jīng)驗(yàn)?zāi)軌騻鬟f出來(lái)。通過推動(dòng)和幫助各個(gè)企業(yè)進(jìn)行運(yùn)維平臺(tái)的建設(shè),來(lái)解放運(yùn)維的壓力,幫助運(yùn)維進(jìn)行轉(zhuǎn)型,并形成運(yùn)維技術(shù)的企業(yè)競(jìng)爭(zhēng)力。
1、運(yùn)維的趨勢(shì)與挑戰(zhàn)先說說目前的運(yùn)維的一些變化。
首先,從運(yùn)維的職能來(lái)看。只要干好一件事就可以,那就是讓我們管的機(jī)器,或者業(yè)務(wù)能夠一直正常運(yùn)行,只要它不故障,基本就沒有運(yùn)維的事了。
但如果出了異常,不管什么事都會(huì)有我們的責(zé)任,這就是運(yùn)維。
為了做好運(yùn)維,需要關(guān)注的事情很多很廣。從能力維度來(lái)看,我們需要關(guān)注運(yùn)營(yíng)產(chǎn)品的質(zhì)量,效率成本。從產(chǎn)品的生命周期過程來(lái)看,我們需要關(guān)注發(fā)布前、發(fā)布中和發(fā)布后的整個(gè)過程。
其次,從運(yùn)維服務(wù)的發(fā)展趨勢(shì)來(lái)看。很多年前我們經(jīng)常非常會(huì)YY一下,我們?cè)隍v訊所做的運(yùn)維優(yōu)化和支持是不是可以打包成服務(wù)或解決方案去支持商業(yè)用戶,當(dāng)年覺得是異想天開。
但隨著云計(jì)算的出現(xiàn),大家可以看到,現(xiàn)在上面已經(jīng)有很多的服務(wù),其實(shí)就運(yùn)維所做的優(yōu)化和提供的服務(wù)。運(yùn)維的價(jià)值不斷地從內(nèi)部向外去傳遞。運(yùn)維能力的建設(shè)也越來(lái)越受到企業(yè)的重視。
最后,來(lái)看看運(yùn)維能力的發(fā)展趨勢(shì)。這里我列出了騰訊互聯(lián)網(wǎng)運(yùn)維團(tuán)隊(duì)所經(jīng)歷的三個(gè)階段。
最早的時(shí)候運(yùn)維只要關(guān)注各種底層的東西,如服務(wù)器、網(wǎng)絡(luò)、交換機(jī)等,把安排的事情干完就可以。
但隨著你業(yè)務(wù)規(guī)模做大,需要做的事情就沒那么簡(jiǎn)單,不但要把事情做了,還得做得快,做得好,這就需要有能力平臺(tái)的積累。
通過運(yùn)維平臺(tái),一方面是把我們好的、正確的經(jīng)驗(yàn)積累下來(lái),二是能夠通過平臺(tái)把我們的工作變得更可靠、更高效。
當(dāng)平臺(tái)建設(shè)達(dá)到一定的水平之后,就進(jìn)入到了第三個(gè)階段,即數(shù)據(jù)分析和云計(jì)算的階段,在目前大數(shù)據(jù)分析能力快速發(fā)展的情況下,數(shù)據(jù)的價(jià)值不斷地被大家發(fā)現(xiàn)和有效利用。
運(yùn)維作為數(shù)據(jù)的直接管理人,我們可以在數(shù)據(jù)的層面上去挖掘很多的價(jià)值,尤其是在服務(wù)優(yōu)化和成本優(yōu)化等方面,運(yùn)維可以通過把有價(jià)值的數(shù)據(jù)實(shí)時(shí)采集和分析出來(lái),并反饋給研發(fā)、產(chǎn)品團(tuán)隊(duì),來(lái)推動(dòng)產(chǎn)品的不斷優(yōu)化。
從這個(gè)角度來(lái)看,這里有很多的挑戰(zhàn),比如說云計(jì)算帶來(lái)的一些新技術(shù),對(duì)人能力的要求。這些不同的新開源組件,新的技術(shù),新的方法,都會(huì)對(duì)傳統(tǒng)的運(yùn)維工作帶來(lái)變革的要求。
甚至今天主題提的分布式存儲(chǔ),分布式架構(gòu),各種新的架構(gòu)方案和技術(shù)的流程也對(duì)運(yùn)維工作帶來(lái)很多沖擊,這些都是需要我們?nèi)ッ鎸?duì),去變革的。
舉個(gè)例子,我剛到騰訊的時(shí)候,騰訊有一個(gè)很奇怪的面試官,叫通道委員會(huì)。他反復(fù)問我什么是ITIL,那個(gè)時(shí)候完全不懂,大家做運(yùn)維的應(yīng)該沒有人不熟悉這個(gè)東西了。以前流行通過ITIL,通過流程的理念來(lái)管理IT系統(tǒng)。
這東西雖然有用,但運(yùn)維來(lái)說非常的煩人,它會(huì)設(shè)定沒多的門檻和流程,其實(shí)這里面很多是不科學(xué)的。
比如,我們以前要求做故障單管理,故障修復(fù)完一定要關(guān)閉故障單,我故障早都已經(jīng)恢復(fù)完了,但系統(tǒng)總是記錄我忘記結(jié)單,處理超時(shí)。為了關(guān)閉事件單,我就需要浪費(fèi)額外 的時(shí)間去登陸系統(tǒng),去手工關(guān)閉流程。
這種時(shí)間上的浪費(fèi),當(dāng)你維護(hù)的系統(tǒng)變大的時(shí)候,效率的損失就邊得很可怕了。所以ITIL的管理理念現(xiàn)在已經(jīng)不流行了。
現(xiàn)在大家都講DEVOPS,提研發(fā)、測(cè)試和運(yùn)維的協(xié)同。以前ITIL講分工,發(fā)布就是運(yùn)維的責(zé)任,現(xiàn)在DEVOPS強(qiáng)調(diào)協(xié)同,發(fā)布就都讓研發(fā)去做了。
這樣很合理,因?yàn)槌绦虬l(fā)布這事你讓運(yùn)維去負(fù)責(zé),其實(shí)大部分情況下出了問題運(yùn)維根本識(shí)別不出來(lái),你說別人寫的代碼到底有沒有問題我怎么知道,真出了問題,耽誤了時(shí)間,最后事情還是得交由開發(fā)來(lái)定位和處理。
而DEVOPS重視的就是高效,整個(gè)團(tuán)隊(duì)協(xié)同去處理這個(gè)事情,什么樣的模式或什么樣的人去做這個(gè)事情會(huì)變得更高效,誰(shuí)就是第一責(zé)任人,我們就讓他去負(fù)責(zé),這樣團(tuán)隊(duì)的流轉(zhuǎn)就更高效和科學(xué)了。這是理念上的一些變革。
對(duì)應(yīng)這些變革,運(yùn)維人員的能力要求也有所變化。以前我們搬搬服務(wù)器,寫個(gè)腳本什么的就可以了。但是隨著技術(shù)和管理理念的變化,現(xiàn)在不一樣了,運(yùn)維也要開始寫代碼了,JAVA、PYTHON、C++什么的。
運(yùn)維在公司的角色定位也不太一樣了,以前就只是任務(wù)實(shí)施,現(xiàn)在慢慢朝平臺(tái)建設(shè),甚至朝運(yùn)營(yíng)分析方向轉(zhuǎn)變。我們不但要有能力寫代碼還得有能力和研發(fā)一起討論架構(gòu),和產(chǎn)品進(jìn)行運(yùn)營(yíng)溝通。
真要想把運(yùn)維做好,你要學(xué)的東西太多了。對(duì)于各種新技術(shù)的學(xué)習(xí)、應(yīng)用和融合,如果說每個(gè)公司或每個(gè)運(yùn)維都要去重頭開始琢磨,那成本會(huì)非常大,對(duì)人的要求也會(huì)非常高。
2、平臺(tái)建設(shè)理念剛才提了很多挑戰(zhàn)和趨勢(shì),總的來(lái)說,如果我們要去做一個(gè)運(yùn)維平臺(tái),去解決運(yùn)維遇到的這些問題和挑戰(zhàn),我們要怎么做,怎么樣才能夠把運(yùn)維的能力通過平臺(tái)去不斷地提升?
我這里給了一些自己的想法,這些也是我們?cè)隍v訊這么些年積累下來(lái)的經(jīng)驗(yàn)。
首先想講的是平臺(tái)建設(shè)的理念。很多時(shí)候做事情時(shí),事情背后的理念往往會(huì)比做事情的方法會(huì)更重要,不知道大家認(rèn)不認(rèn)同這一點(diǎn)。
技術(shù)人員特別容易陷進(jìn)一個(gè)誤區(qū),我要做一個(gè)事情,只要關(guān)注最新潮的方法和手段,背后的一些背景和因果全部都不管。
就比方說有些技術(shù)人員,他們喜歡用Markdown來(lái)寫文檔,但他們就從來(lái)不考慮寫出來(lái)的東西商務(wù)人員該怎么使用,結(jié)果我們公司的所有商務(wù)也得學(xué)用Markdown。在公司內(nèi)部也許這種妥協(xié)是容易的,但放到市場(chǎng)環(huán)境下這種妥協(xié)就不現(xiàn)實(shí)了。
所以我覺得在建設(shè)運(yùn)維平臺(tái)之前,有必要先溝通一些成功的經(jīng)驗(yàn)和方法輪。
任何公司想要建設(shè)它自己的運(yùn)維平臺(tái)都會(huì)是一個(gè)龐大并復(fù)雜的系統(tǒng)工程。這里面牽涉到方方面面。很多人往往在設(shè)計(jì)的時(shí)候會(huì)希望一步到位。
比如,希望要一步到位,希望直接就設(shè)計(jì)一個(gè)能力非常全面的平臺(tái),這個(gè)平臺(tái)要包含所有需要的功能,要把權(quán)限管理好,要把安全控制住,要把穩(wěn)定性做高、要把用戶體驗(yàn)做精。
這種情況下,平臺(tái)的建設(shè)就會(huì)很難,建設(shè)的周期也會(huì)非常的長(zhǎng),很多情況下項(xiàng)目可能還沒有建設(shè)完成,需求就已經(jīng)變了,項(xiàng)目也就爛尾了。
其實(shí),我們應(yīng)該考慮先從0到1,然后再?gòu)?做到N。先考慮把核心最迫切的功能功能先快速實(shí)現(xiàn),只有用起來(lái)才是好平臺(tái)。簡(jiǎn)單的功能可以先實(shí)現(xiàn),再不斷地慢慢再完善,不斷地豐富它的功能,這樣過程中的平臺(tái)收益才會(huì)最大化。
第二,標(biāo)準(zhǔn)先行。做過運(yùn)維的人都知道,我要管理的事情非常多,環(huán)境會(huì)非常復(fù)雜。當(dāng)我們推行標(biāo)準(zhǔn)化的時(shí)候,它帶來(lái)的最大好處是降低平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)的難度。
標(biāo)準(zhǔn)化能力和系統(tǒng)建設(shè)能力是一個(gè)翹翹板。我們?cè)跇I(yè)務(wù)架構(gòu)標(biāo)準(zhǔn)化方面做得好一點(diǎn),那么系統(tǒng)建設(shè)的復(fù)雜度就低一點(diǎn)。
比如說,如果我們的運(yùn)維標(biāo)準(zhǔn)化做得較差,我們有10種不同的硬件,每種配置都不一樣,上面操作系統(tǒng)也不一樣,這種情況下我們的平臺(tái)就需要做不同系統(tǒng)和環(huán)境做兼容性,系統(tǒng)實(shí)施成本就非常的高了。
標(biāo)準(zhǔn)化先行,這樣系統(tǒng)的建設(shè)復(fù)雜度和難度都會(huì)相應(yīng)降低。
第三,快速嘗試。復(fù)雜系統(tǒng)的設(shè)計(jì)和建設(shè)都是非常難的,而且對(duì)于沒做過的東西,其實(shí)很多方面在一開始的時(shí)候跟本想不清楚,也想不明白,這種情況下,應(yīng)該先簡(jiǎn)單一點(diǎn)快速實(shí)現(xiàn)DEMO原型,而不是停留在反復(fù)的討論和設(shè)計(jì)。
只要系統(tǒng)在應(yīng)用環(huán)境中跑一陣子,很快你就會(huì)發(fā)現(xiàn)問題和找到相應(yīng)對(duì)策的。
第四,接受不完美。騰訊現(xiàn)在自動(dòng)化運(yùn)維平臺(tái)對(duì)外有兩個(gè)品牌,織云和藍(lán)鯨,而我剛好在兩個(gè)團(tuán)隊(duì)都待過,也都經(jīng)歷了兩個(gè)平臺(tái)的建設(shè)和成長(zhǎng)。
比如織云平臺(tái)的建設(shè),最早是從打包規(guī)范的推廣開始。早期的平臺(tái)只是一個(gè)簡(jiǎn)單的腳本工具平臺(tái),之后才逐漸補(bǔ)充了一此管理功能,如Web管理,組件管理,包發(fā)布、配置發(fā)布等,最后才逐漸建成面向全業(yè)務(wù)管理和調(diào)度的織云平臺(tái)。
這里一定是個(gè)逐步完善、逐步演進(jìn)的過程。騰訊也有很多一開始就規(guī)劃得很大的項(xiàng)目,現(xiàn)在看起來(lái),基本上這些大項(xiàng)目都死光了。所以,這里在設(shè)計(jì)和建設(shè)中,大家都要能夠接受或是忍受不完美。
對(duì)技術(shù)人員來(lái)說,這點(diǎn)也許會(huì)有點(diǎn)困難吧。記得上次參加GOPS全球運(yùn)維大會(huì)的時(shí)候大眾點(diǎn)評(píng)的一個(gè)講師提到一點(diǎn)很有道理:
我們?cè)诿鎸?duì)不完美的平臺(tái)時(shí),要知道沒有任何一個(gè)平臺(tái)是完美的,也沒有任何一個(gè)技術(shù)是完美的。但我們決策用不用它的時(shí)候,可以評(píng)估,如果我用它,它帶來(lái)的好處、優(yōu)點(diǎn)比缺點(diǎn)更多,那這個(gè)平臺(tái)和技術(shù)就是有價(jià)值的。
第五,業(yè)務(wù)導(dǎo)向。建成的平臺(tái)能否發(fā)揮作重就看我們的推廣能力,這里實(shí)際也是有一些技巧的。任何一個(gè)新的東西,任何一個(gè)新的技術(shù)、在推廣的時(shí)間其實(shí)都會(huì)遇到阻力。
就騰訊內(nèi)部的平臺(tái)推廣經(jīng)驗(yàn)來(lái)看,最有效的手段就是先找一些比較配合的團(tuán)隊(duì)、或是重點(diǎn)的業(yè)務(wù),這些團(tuán)隊(duì)和業(yè)務(wù)相對(duì)的資源也比較豐富。當(dāng)我們快速完成了這些試點(diǎn)業(yè)務(wù)的推廣,就能夠在公司內(nèi)部建立業(yè)務(wù)標(biāo)桿,并形成影響力和口碑。
當(dāng)建立了業(yè)務(wù)標(biāo)桿之后,后面的業(yè)務(wù)再去推動(dòng)就會(huì)容易很多了。所以,過程中平臺(tái)快速的上線,盡快輸出成效,是非常重要的。
3、平臺(tái)建設(shè)實(shí)踐講完方法論,現(xiàn)在回到具體的系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)。我們應(yīng)該如何來(lái)設(shè)計(jì)這個(gè)運(yùn)維平吧呢?作為一個(gè)完整的運(yùn)維平臺(tái),一定要考慮形成運(yùn)維管理能力的閉環(huán),并逐步實(shí)現(xiàn)自動(dòng)化。
如何才能實(shí)現(xiàn)運(yùn)維的自動(dòng)化閉環(huán)呢?最主要就是掌握配置管理、狀態(tài)管理和變更管理能力。
運(yùn)維的自動(dòng)化大家可能不太好理解,我舉個(gè)簡(jiǎn)單的例子。比如我是餐廳老板,我希望實(shí)現(xiàn)炒菜的自動(dòng)化。那要怎么實(shí)現(xiàn)呢?其實(shí)非常簡(jiǎn)單:
首先,我要知道我的廚房里到底有些什么東西是可用的,比如備了哪些菜,有那些工具,這些就是配置管理。
此外,我要讓系統(tǒng)幫我去做菜,是炒、是燉還是煮?是加水、加油還是加火,這些都是變更管理的能力。
最后,系統(tǒng)還需要能夠知道我炒的菜目前是一個(gè)什么樣的情況,有幾分熟,溫度有沒有太高,油是不是太少什么的。這些就是狀態(tài)管理的能力。
不管是什么樣的自動(dòng)化系統(tǒng),實(shí)現(xiàn)本質(zhì)就是這三個(gè)能力的閉環(huán)。
對(duì)于運(yùn)維平臺(tái)來(lái)說,我們通過配置管理能務(wù)來(lái)收采和管理所有的系統(tǒng)資源,通過狀態(tài)管理能力實(shí)時(shí)的監(jiān)控資源的運(yùn)行情況,最后再根據(jù)監(jiān)控的結(jié)果來(lái)對(duì)現(xiàn)多的資源進(jìn)行變更和調(diào)度。
能力閉環(huán)實(shí)現(xiàn)了,自動(dòng)化能力也就實(shí)現(xiàn)了。
在運(yùn)維平臺(tái)的設(shè)計(jì)實(shí)現(xiàn)上。我里有一張PPT,大家應(yīng)該經(jīng)常能夠在老王的演講中看得到。
為了實(shí)現(xiàn)一個(gè)完整的平臺(tái)能力,我們需要對(duì)整個(gè)平臺(tái)進(jìn)行分層設(shè)計(jì),最底層是各種硬件和資源的管理平臺(tái),它能夠抽象地去管理各種物理資源和邏輯資源,和這些資源自身有關(guān)的管理能力也都會(huì)放在這一層。
再往上是通用能力層,這一層實(shí)際上是把運(yùn)維所負(fù)責(zé)的常規(guī)服務(wù)都實(shí)現(xiàn)成為系統(tǒng)能力。 比如運(yùn)維日常的配置管理、域名管理、文件管理等。
通過第二層的平臺(tái)把運(yùn)維的工作全部服務(wù)化,而這里服務(wù)化的核心就是把日常手工工作都進(jìn)行系統(tǒng)封裝,變成服務(wù)接口。這種服務(wù)接口可以供外部的服務(wù)或更上層的系統(tǒng)進(jìn)行調(diào)用和擴(kuò)展。
當(dāng)運(yùn)維系統(tǒng)的服務(wù)能力構(gòu)建成熟,我們就可以上更上層構(gòu)建基礎(chǔ)能力平臺(tái),比如說用于管理交付的持續(xù)交付平臺(tái),用于管理服務(wù)狀態(tài)的智能監(jiān)控平臺(tái)等。
當(dāng)這些基礎(chǔ)能力平臺(tái)完成后,最后我們可以開始建設(shè)各種向向業(yè)務(wù)場(chǎng)景的精細(xì)化管理平臺(tái)。比如:
我們希望能夠提升產(chǎn)品服務(wù)質(zhì)量,我們可以建設(shè)相應(yīng)的業(yè)務(wù)可用性分析平臺(tái);
我們希望降低產(chǎn)品成本,我們可以建設(shè)相應(yīng)的容量?jī)?yōu)化平臺(tái);
我們希望提升變更效率,我們可以建設(shè)相應(yīng)的設(shè)備擴(kuò)容調(diào)度平臺(tái)等等。
從這里可以看到平臺(tái)的分層設(shè)計(jì),一定是從去場(chǎng)景化的基礎(chǔ)能力開始向場(chǎng)景化的服務(wù)能力延伸,所以我們的系統(tǒng)建設(shè)步驟也應(yīng)該遵循這個(gè)規(guī)律。
進(jìn)一步展開運(yùn)維平臺(tái)的實(shí)現(xiàn),現(xiàn)在讓我們來(lái)看一下每一個(gè)模塊的重要功能和設(shè)計(jì)挑戰(zhàn)。
4、配置管理平臺(tái)介紹首先說說CMDB配置管理。其實(shí)配置管理這個(gè)東西非常簡(jiǎn)單,不管什么樣規(guī)模的公司,肯定都會(huì)有自己的配置管理的系統(tǒng)或是辦法。最簡(jiǎn)單的配置管理,它其實(shí)就是一個(gè)excel文檔。
如果復(fù)雜一點(diǎn),我們可以搭建一個(gè)數(shù)據(jù)庫(kù),它一樣也可以實(shí)現(xiàn)CMDB的功能。但是如果真正要把這個(gè)東西做好,要考慮的問題就比較多了。
比如說,傳統(tǒng)的ITIL理念是非常重視CMDB的,但它把所有精力都集中在硬件資源的管理,如機(jī)房、機(jī)柜、交換機(jī)、網(wǎng)絡(luò),這些層面的東西。ITIL下的CMDB會(huì)把這些東西管理得很好。
但就運(yùn)維所維護(hù)的業(yè)務(wù)來(lái)說,這些信息只有其中的一個(gè)很小的一部分,而且它們對(duì)業(yè)務(wù)自動(dòng)化運(yùn)維所能夠提供的價(jià)值其實(shí)是非常低的。因?yàn)檫@些硬件信息不管管理得再怎么精細(xì),在具體操作的層面還是需要依賴人來(lái)進(jìn)行操作。
相反,在應(yīng)用程序的層面,我們可以做的事情就很多。如果能力到位了,我們甚至可以實(shí)現(xiàn)故障自愈、自動(dòng)調(diào)度、彈性計(jì)算等高級(jí)的自動(dòng)化能力。而這些能力,需要我們的CMDB能夠關(guān)注和管理面向業(yè)務(wù)的配置信息。
比如說我業(yè)務(wù)資源是什么樣的,我的程序是什么樣的,我的應(yīng)用是什么樣的,我的權(quán)限是什么樣的,我的流程,我的策略是什么,這些東西是非常有價(jià)值的。
只有把這些東西全面管理起來(lái),才能夠真正去驅(qū)動(dòng)整個(gè)業(yè)務(wù)的自動(dòng)化流程。舉個(gè)例子,比如說常規(guī)的一些磁盤空間告警,我要想實(shí)現(xiàn)故障治愈,首先我得有明確的處理策略。
比如每一臺(tái)機(jī)器對(duì)應(yīng)的磁盤空間清理策略是什么,而這些是需要在CMDB中管理起來(lái)的。當(dāng)出現(xiàn)任何異常的時(shí)候,我們的自動(dòng)化系統(tǒng)直接到CMDB里查詢相應(yīng)的策略,就可以實(shí)時(shí)針對(duì)不同的業(yè)務(wù)去實(shí)現(xiàn)自動(dòng)恢復(fù)。
除了業(yè)務(wù)信息的管理,CMDB設(shè)計(jì)還需要考慮到數(shù)據(jù)模型的管理能力,即怎么樣去支持和實(shí)現(xiàn)靈活的數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)。
我們要管理的數(shù)據(jù)不會(huì)都象EXCEL一樣簡(jiǎn)單,相反在真正的業(yè)務(wù)環(huán)境中,一定會(huì)是多層的關(guān)聯(lián)數(shù)據(jù)結(jié)構(gòu)。而且這個(gè)數(shù)據(jù)結(jié)果也不可能就是一成不變的,它一定會(huì)在業(yè)務(wù)運(yùn)營(yíng)的過程中需要進(jìn)行動(dòng)態(tài)的調(diào)整和修正。
這種情況下,我們的CMDB就需要考慮到存儲(chǔ)可靈活性和可擴(kuò)展性。我們需要實(shí)現(xiàn)可配置、可定義,并支持分級(jí)數(shù)據(jù)模型的配置,這些都是建設(shè)CMDB時(shí)候考慮的事情。
CMDB這里最后要講講配置信息的維護(hù),做過運(yùn)維的人應(yīng)該都會(huì)有同感,配置信息的維護(hù)是非常討厭這的事情。
騰訊在早期的時(shí)候,配置信息也都是手工維護(hù)的,如果我們進(jìn)行了服務(wù)器的上、下線,事后一定要記得登陸系統(tǒng)去手工更新信息,不然其他人再進(jìn)行操作就會(huì)出錯(cuò)。時(shí)間久了信息的失去價(jià)值了。
所以我們以前的做法公司會(huì)考慮配置準(zhǔn)確性,也即一段時(shí)間運(yùn)動(dòng)一次,人工的去修正信息。
更好的方法,應(yīng)該是要去做信息的自動(dòng)發(fā)現(xiàn)和自動(dòng)更新。怎么實(shí)現(xiàn)呢?
一方面這里我們可以做CMDB的探針,它直接去采集設(shè)備上的狀態(tài)和信息,實(shí)時(shí)的上報(bào)回CMDB并更新。
另一方面可以提供接口和外圍的管理系統(tǒng)對(duì)接,當(dāng)每一次變更結(jié)束了以后,都通過接口把變更的信息實(shí)時(shí)回寫和更新CMDB,以止實(shí)現(xiàn)信息的自動(dòng)維護(hù)。
關(guān)于變更管理平臺(tái)的實(shí)現(xiàn)。這里可以考慮分階段的實(shí)現(xiàn)方案。對(duì)于一些基礎(chǔ)比較差的團(tuán)隊(duì)來(lái)說,要想一步到位是非常困難的,而且如果能力沒有達(dá)到一定的水平,有一些自動(dòng)化能力也不一定可以用得起來(lái)。
這里需要建設(shè)根據(jù)團(tuán)隊(duì)的技術(shù)實(shí)力,選擇合適的節(jié)奏分階段進(jìn)行建設(shè)。
建議先從腳本平臺(tái)開始,先實(shí)現(xiàn)最基礎(chǔ)的作業(yè)管理能力,之后再實(shí)現(xiàn)業(yè)務(wù)管理和流程管理能力。
作業(yè)管理也可以理解為腳本管理。實(shí)現(xiàn)自動(dòng)化最簡(jiǎn)單的辦法,其實(shí)就是編寫腳本。每個(gè)公司的運(yùn)維團(tuán)隊(duì)都一定會(huì)有些積累的腳本。這些都是運(yùn)維人員最寶貴的資產(chǎn)。
所以在變更管理平臺(tái)建設(shè)的過程中,我們應(yīng)該首先考慮把這些資產(chǎn)的價(jià)值發(fā)揮出來(lái)。
通過實(shí)現(xiàn)作業(yè)管理平臺(tái),來(lái)提供統(tǒng)一的可視化腳本管理能力,它一方面能夠通過分享和復(fù)用來(lái)降低腳本開發(fā)的成本,另一方面也可以實(shí)現(xiàn)集中控制,并保證操作的可靠性。騰訊目前的藍(lán)鯨平臺(tái),其實(shí)本質(zhì)上就是一個(gè)作業(yè)管理平臺(tái)。
如果團(tuán)隊(duì)能力更強(qiáng)一點(diǎn),就可以開始考慮實(shí)現(xiàn)業(yè)務(wù)管理能力。通過腳本來(lái)實(shí)現(xiàn)自動(dòng)化雖然比較簡(jiǎn)單,但面對(duì)業(yè)務(wù)管理的場(chǎng)景時(shí),我們就會(huì)發(fā)現(xiàn)即使是一個(gè)簡(jiǎn)單的業(yè)務(wù),都會(huì)需要大量的腳本才有可能夠把業(yè)務(wù)的關(guān)聯(lián)環(huán)境維護(hù)好。
這種情況下,我們需要考慮集成的業(yè)務(wù)管理能力,需要把業(yè)務(wù)通用的維護(hù)手段和管理方法封裝成通用的平臺(tái)功能:
比如業(yè)務(wù)發(fā)布后的進(jìn)程守護(hù)、日志清理、啟動(dòng)初始化;
再比如業(yè)務(wù)本身的版本管理、集群管理、實(shí)例管理、回滾管理等等。
這樣做最大的好處是把業(yè)務(wù)維護(hù)的復(fù)雜度封裝在平臺(tái)內(nèi)部,對(duì)外只需要關(guān)注到一些通和的服務(wù)接口即可。
變更管理的第三個(gè)階段是流程和調(diào)度管理。
當(dāng)我們把所需要的各種原子操作和業(yè)務(wù)管理能力都實(shí)現(xiàn)之后,那么我們就可以考慮實(shí)現(xiàn)最終的自動(dòng)化流程和調(diào)度管理能力。
比如我們希望實(shí)現(xiàn)放牛式的服務(wù)器管理,服務(wù)器掛了可以直接把服務(wù)器殺掉而不影響業(yè)務(wù)。這時(shí)需要流程化的自動(dòng)管理能力,它不但需要和資源池交互調(diào)動(dòng)新設(shè)備,而且還要和業(yè)務(wù)管理平臺(tái)交互,把業(yè)務(wù)實(shí)例發(fā)布上去。
隨即還要調(diào)動(dòng)自動(dòng)化測(cè)試能力,檢測(cè)一下新上的服務(wù)器是不是好的,并加載灰度上線的邏輯,把服務(wù)器慢慢上線到運(yùn)營(yíng)環(huán)境中去。
整個(gè)復(fù)雜的過程不但需要把各種基礎(chǔ)工具和平臺(tái)組織起來(lái),還需要根據(jù)接口和各個(gè)不同的系統(tǒng)進(jìn)行交互,并根據(jù)交互的結(jié)果進(jìn)行工具和后續(xù)流程的決策。
分階段的變更管理平臺(tái)建設(shè),可以有效的降低平臺(tái)建設(shè)的啟動(dòng)成本,并且不同的平臺(tái)能力也可以較好的適配企業(yè)不同團(tuán)隊(duì)在IT能力發(fā)展過程中所處于的不同階段的需求。
6、狀態(tài)管理平臺(tái)介紹對(duì)于狀態(tài)管理平臺(tái)。說得簡(jiǎn)單一點(diǎn)就是監(jiān)控平臺(tái)。對(duì)運(yùn)維自動(dòng)化來(lái)說,監(jiān)控平臺(tái)是一個(gè)最主要的活動(dòng)觸發(fā)源。如果我不知道業(yè)務(wù)運(yùn)行的狀態(tài),不知道業(yè)務(wù)有沒有異常,那么自動(dòng)化也就無(wú)法發(fā)揮它應(yīng)有的價(jià)值。
一個(gè)好的監(jiān)控系統(tǒng)需要能夠?qū)崿F(xiàn)端到端的監(jiān)控。
目前市面上有很多開源的監(jiān)控組件,但基本都是單一緯度的監(jiān)控,比如主機(jī)監(jiān)控或是日志監(jiān)控的產(chǎn)品。
但真正做過運(yùn)維的人都應(yīng)該清楚,現(xiàn)網(wǎng)中出現(xiàn)的很多故障都并沒有那么簡(jiǎn)單,大部分情況下,這種單一唯獨(dú)的監(jiān)控都沒有辦法很好的覆蓋業(yè)務(wù)的監(jiān)控需求。
比如:我們希望關(guān)注業(yè)務(wù)的運(yùn)行情況,而采用了CPU的監(jiān)控,它雖然可以發(fā)現(xiàn)到CPU的異常。但對(duì)于程序有否有BUG就無(wú)能為力了。所以一個(gè)全面的監(jiān)控體系一定是需要考慮端到端的監(jiān)控能力。
每一個(gè)系統(tǒng)的最終用戶都一定是人,所以我們可以從用戶的角度,模擬用戶的訪問路徑,從而實(shí)現(xiàn)一個(gè)全面的端到端監(jiān)控能力。
我們可以把用戶請(qǐng)求過程中所經(jīng)過的節(jié)點(diǎn)和鏈路全部監(jiān)控起來(lái)。再通過綜合的分析和匯聚,從而有效果的掌握業(yè)務(wù)的運(yùn)行狀態(tài),并及時(shí)發(fā)現(xiàn)異常。
具體實(shí)現(xiàn)時(shí),我們可以從最底層的基礎(chǔ)網(wǎng)絡(luò)和鏈路逐步往上是應(yīng)用服務(wù)器、應(yīng)用組件、組件請(qǐng)求、服務(wù)質(zhì)量、到最上層的業(yè)務(wù)狀態(tài)實(shí)現(xiàn)全部的監(jiān)控覆蓋。
在監(jiān)控的通道上,目前有兩種主流的方式。一種是外部的探測(cè),別一種是內(nèi)部的主要采集和上報(bào)。
內(nèi)部采集方式,我們需要在服務(wù)器上部署監(jiān)控的的探針,它會(huì)根據(jù)需要定時(shí)的去檢查業(yè)務(wù)的運(yùn)行狀態(tài),并收集有價(jià)值的日志信息。
由于不同業(yè)務(wù)所需要的采集邏輯和收集的信息都不一樣,所以監(jiān)控的探針需要設(shè)計(jì)成一種插件化的模式,以便支持不同業(yè)務(wù)的靈活擴(kuò)展。
對(duì)于外部探測(cè)的監(jiān)控模式,一般的實(shí)現(xiàn)是在業(yè)務(wù)生產(chǎn)系統(tǒng)的外部尋找合適的探測(cè)節(jié)點(diǎn),如公網(wǎng)上的服務(wù)器或外網(wǎng)CDN上的緩存節(jié)點(diǎn)。通過這些節(jié)點(diǎn)的訪問,我們可以模擬用戶的訪問路徑,并還原用戶的鏈路質(zhì)量對(duì)業(yè)務(wù)的影響。
對(duì)于比較強(qiáng)的團(tuán)隊(duì)來(lái)說,我們?cè)诮ㄔO(shè)監(jiān)控系統(tǒng)時(shí),可以同時(shí)考慮集成兩種不同的監(jiān)控通道能力,并實(shí)現(xiàn)監(jiān)控能力的互補(bǔ)。
監(jiān)控能力對(duì)于自動(dòng)平臺(tái)來(lái)說,最大的價(jià)值是能夠完成事件的觸發(fā)。也即實(shí)現(xiàn)從數(shù)據(jù)發(fā)現(xiàn)、分析、定位、到問題解決的閉環(huán)。
通過這個(gè)閉環(huán)我們可以構(gòu)建各種故障的自愈能力。通過及時(shí)的發(fā)現(xiàn)異常,快速的恢復(fù),能夠有效的提升業(yè)務(wù)的可用性和質(zhì)量。
舉個(gè)實(shí)例的例子:當(dāng)系統(tǒng)發(fā)現(xiàn)機(jī)器的CPU有異常的時(shí)候,需要對(duì) CPU高負(fù)載進(jìn)行故障干預(yù)和恢復(fù),這種情況下我怎么做?
我們可以取到告警的信息,告警里會(huì)告訴我這臺(tái)機(jī)器的IP地址和告警的值;
通過IP,可以從CMDB中查一下這個(gè)機(jī)器屬于哪個(gè)業(yè)務(wù),再根據(jù)業(yè)務(wù)信息可以查詢到同業(yè)務(wù)下還有那些機(jī)器;
然后我們通過同業(yè)務(wù)的IP地址把其它機(jī)器的當(dāng)前CPU值都查詢出來(lái),得出的平均值再去和告警的CPU值來(lái)對(duì)比;
最后判斷出是否需要系統(tǒng)干預(yù)。如果需要修復(fù),系統(tǒng)會(huì)根據(jù)告警的IP地址到CMDB中去查詢相應(yīng)的恢復(fù)策略,再進(jìn)行處理。
通過這種靈活和完整的驗(yàn)證處理閉環(huán),我們就可以構(gòu)建出各種可靠的自動(dòng)故障恢復(fù)策略。
最后,讓我們?cè)賮?lái)總結(jié)一下之前提到一些方法論。
先是標(biāo)準(zhǔn)先行、小步快跑、容忍缺陷、業(yè)務(wù)導(dǎo)向。
對(duì)于復(fù)雜的運(yùn)維系統(tǒng),不要貪大求全,關(guān)鍵是先構(gòu)建出配置管理、狀態(tài)管理和變更管理的能力閉環(huán)。
我們可以先從標(biāo)準(zhǔn)化開始,通過推動(dòng)標(biāo)準(zhǔn)化來(lái)降低運(yùn)維系統(tǒng)的設(shè)計(jì)和實(shí)施復(fù)雜度,然后才是具體的系統(tǒng)實(shí)現(xiàn)。
第一步是配置管理,最簡(jiǎn)單的配置管理可以先從搭建一個(gè)MySQL開始。
之后的變更管理,可以先梳理運(yùn)維常用的腳本,形成團(tuán)隊(duì)的腳本庫(kù)或的操作標(biāo)準(zhǔn)。
監(jiān)控能力的建設(shè)可以依賴外部的開源組件,也可以通過運(yùn)維腳本加CRONTAB來(lái)實(shí)現(xiàn)。
從最簡(jiǎn)單的平臺(tái),逐步積累標(biāo)準(zhǔn)化和服務(wù)化能力,等大家形成標(biāo)準(zhǔn)化和服務(wù)化的意識(shí)和習(xí)慣了,之后再逐步完善和豐富運(yùn)維系統(tǒng)的能力。
對(duì)于運(yùn)維自動(dòng)化管理平臺(tái)來(lái)說,不管具體的實(shí)現(xiàn)手段是什么,只要我們能夠覆蓋之前所介紹的領(lǐng)域,能夠滿足業(yè)務(wù)的需求,那么這個(gè)平臺(tái)就一定會(huì)非常的有生命力,非常的有價(jià)值。
以上這些就是我對(duì)運(yùn)維自動(dòng)化平臺(tái)建設(shè)和經(jīng)驗(yàn)和理解,謝謝大家。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/7977.html
摘要:月日,首期沙龍海量運(yùn)維實(shí)踐大曝光在騰訊大廈圓滿舉行。織云高效的實(shí)踐是,它是以運(yùn)維標(biāo)準(zhǔn)化為基石,以為核心的自動(dòng)化運(yùn)維平臺(tái)。 作者丨周小軍,騰訊SNG資深運(yùn)維工程師,負(fù)責(zé)社交產(chǎn)品分布式存儲(chǔ)的運(yùn)維及團(tuán)隊(duì)管理工作。對(duì)互聯(lián)網(wǎng)網(wǎng)站架構(gòu)、數(shù)據(jù)中心、云計(jì)算及自動(dòng)化運(yùn)維等領(lǐng)域有深入研究和理解。 12月16日,首期沙龍海量運(yùn)維實(shí)踐大曝光在騰訊大廈圓滿舉行。沙龍出品人騰訊運(yùn)維技術(shù)總監(jiān)、復(fù)旦大學(xué)客座講師、De...
摘要:導(dǎo)讀阿里巴巴轉(zhuǎn)型之后,運(yùn)維平臺(tái)是如何建設(shè)的阿里巴巴高級(jí)技術(shù)專家陳喻結(jié)合運(yùn)維自身的理解,業(yè)務(wù)場(chǎng)景的分析和業(yè)界方法論的一些思考,得出來(lái)一些最佳實(shí)踐分享給大家。實(shí)施效果嘉賓介紹陳喻亞松,阿里巴巴高級(jí)技術(shù)專家。 導(dǎo)讀:阿里巴巴DevOps轉(zhuǎn)型之后,運(yùn)維平臺(tái)是如何建設(shè)的?阿里巴巴高級(jí)技術(shù)專家陳喻結(jié)合運(yùn)維自身的理解,業(yè)務(wù)場(chǎng)景的分析和業(yè)界方法論的一些思考,得出來(lái)一些最佳實(shí)踐分享給大家。 前言 我是這...
摘要:只有當(dāng)超時(shí)故障扇區(qū)等明確故障項(xiàng)出現(xiàn)后,兩者關(guān)聯(lián)才確診硬盤故障,否則只是隔離觀察,不報(bào)修。如果存在進(jìn)程住時(shí)間超過分鐘,我們認(rèn)為這個(gè)硬盤故障的影響面已擴(kuò)大到了整機(jī),需要進(jìn)行重啟消除影響。 隨著阿里大數(shù)據(jù)產(chǎn)品業(yè)務(wù)的增長(zhǎng),服務(wù)器數(shù)量不斷增多,IT運(yùn)維壓力也成比例增大。各種軟、硬件故障而造成的業(yè)務(wù)中斷,成為穩(wěn)定性影響的重要因素之一。本文詳細(xì)解讀阿里如何實(shí)現(xiàn)硬件故障預(yù)測(cè)、服務(wù)器自動(dòng)下線、服務(wù)自愈以...
閱讀 1245·2023-04-25 20:31
閱讀 3747·2021-10-14 09:42
閱讀 1526·2021-09-22 16:06
閱讀 2717·2021-09-10 10:50
閱讀 3557·2021-09-07 10:19
閱讀 1806·2019-08-30 15:53
閱讀 1194·2019-08-29 15:13
閱讀 2843·2019-08-29 13:20