一、 自動(dòng)化理念做好自動(dòng)化運(yùn)維在我看來是有兩個(gè)重要抓手:流程和工具,做好這兩點(diǎn)基本就可以將自動(dòng)化運(yùn)維順暢跑起來??偨Y(jié)起來是:流程梳理好,工具是手段。 我們都知道羅馬不是一天建成的,所以我們?cè)诮ㄔO(shè)運(yùn)維自動(dòng)化平臺(tái)時(shí)也要遵循循序漸進(jìn)的原則,但大方向要清楚,互聯(lián)網(wǎng)講究敏捷開發(fā),好產(chǎn)品是不斷迭代出來的。 放一張藍(lán)圖,朝著目標(biāo)前進(jìn)! 二、 自動(dòng)化實(shí)踐我挑選了幾個(gè)典型產(chǎn)品給大家做分享。 1. CMDB1.1 CMDB的意義——降低運(yùn)維管理成本現(xiàn)在很多公司互聯(lián)網(wǎng)公司不惜投入重金建設(shè)自己的CMDB,那為什么要這樣做呢?早期的各個(gè)團(tuán)隊(duì)維護(hù)自己的數(shù)據(jù)已經(jīng)很穩(wěn)定而且比較靈活,引入CMDB及ITIL的概念,不但會(huì)打破原有的操作習(xí)慣,而且在系統(tǒng)建設(shè)初期會(huì)有大量的數(shù)據(jù)導(dǎo)入和使用習(xí)慣切換成本。我覺得這其實(shí)是權(quán)衡現(xiàn)金系統(tǒng)理念的成本和收益問題。公司早期的各個(gè)團(tuán)隊(duì)維護(hù)自己數(shù)據(jù),可以較好的滿足業(yè)務(wù)需求,但當(dāng)數(shù)據(jù)量越來越大,業(yè)務(wù)越來越復(fù)雜,數(shù)據(jù)管理成本是急速上升的。這時(shí)候在使用傳統(tǒng)的運(yùn)維數(shù)據(jù)管理方式,恐怕很難支持業(yè)務(wù)發(fā)展。 1.2 CMDB定位國(guó)美云對(duì)CMDB的定位是數(shù)據(jù)中心運(yùn)維數(shù)據(jù)庫(kù)。運(yùn)維公共配置信息存放在CMDB,其他子系統(tǒng)維護(hù)特定業(yè)務(wù)數(shù)據(jù),但與CMDB信息有強(qiáng)關(guān)聯(lián)。 1.3 CMDB建設(shè)CMDB數(shù)據(jù)來源主要分兩種,人工錄入和自動(dòng)發(fā)現(xiàn)。 從存儲(chǔ)數(shù)據(jù)來看,包括以下方面: 主機(jī)數(shù)據(jù)建設(shè) 主機(jī)管理模塊,用戶可以通過綜合搜索功能快速快速查詢相關(guān)信息,具備服務(wù)器、網(wǎng)絡(luò)設(shè)備錄入和自動(dòng)發(fā)現(xiàn)功能。 應(yīng)用數(shù)據(jù)建設(shè) 建立服務(wù)樹,確立人——應(yīng)用——機(jī)器的關(guān)系,將人和項(xiàng)目進(jìn)行關(guān)聯(lián),項(xiàng)目與資源關(guān)聯(lián)。 資源數(shù)據(jù)建設(shè) 包括網(wǎng)段管理、機(jī)房管理、應(yīng)用管理、機(jī)型管理,從IDC、機(jī)柜到服務(wù)器、網(wǎng)絡(luò)設(shè)備等硬件信息再到網(wǎng)段、IP、操作系統(tǒng)等軟件層次都納入cmdb統(tǒng)一管理,以此作為云平臺(tái)的數(shù)據(jù)中心,做到數(shù)據(jù)一致性,并對(duì)外提供數(shù)據(jù)服務(wù) 。 IDC 機(jī)柜視圖: 1.4 數(shù)據(jù)消費(fèi)數(shù)據(jù)消費(fèi)是CMDB最大的價(jià)值所在,CMDB的目的不是為了建立大而統(tǒng)一的數(shù)據(jù)倉(cāng)庫(kù),而是如何將收集來的數(shù)據(jù)進(jìn)行消費(fèi),并在消費(fèi)的過程中逐步完善數(shù)據(jù)。以下是一些實(shí)踐應(yīng)用:
1.5 問題與挑戰(zhàn)1.5.1 數(shù)據(jù)準(zhǔn)確性維護(hù),數(shù)據(jù)的非正常變更 相信人or相信程序? 可以說數(shù)據(jù)準(zhǔn)確性是CMDB的最大難題,如何提高數(shù)據(jù)的準(zhǔn)確性呢?有效的方法就是通過自動(dòng)檢測(cè)和人工審核,另外還需要建立一些標(biāo)準(zhǔn),比如運(yùn)維標(biāo)準(zhǔn)來禁止非標(biāo)操作。 對(duì)于很容易判斷對(duì)錯(cuò)的數(shù)據(jù)來說,檢測(cè)腳本可以自動(dòng)訂正數(shù)據(jù),比如宿主機(jī)上資源剩余量。有些則需要人工確認(rèn)后才可以更改的,比如IP的探測(cè),有些IP被不守規(guī)矩的人配置了但沒在CMDB標(biāo)志,探測(cè)到IP通后需要人工介入才知道具體是哪個(gè)應(yīng)用使用。 1.5.2 性能挑戰(zhàn) 作為一個(gè)數(shù)據(jù)中心,應(yīng)對(duì)各種各樣數(shù)據(jù)請(qǐng)求是基本功,有些請(qǐng)求比較簡(jiǎn)單,有些查詢要求比較高,比如監(jiān)控系統(tǒng),當(dāng)CMDB中的應(yīng)用和機(jī)器變化都要及時(shí)推送給監(jiān)控系統(tǒng),還有一些經(jīng)常查詢的數(shù)據(jù),可以放到Redis中以減輕CMDB的壓力。 CMDB作為數(shù)據(jù)中心,除了提供查詢數(shù)據(jù)還有分配數(shù)據(jù)的能力,比如IP地址的分配,這時(shí)要充分考慮高并發(fā)的情況。對(duì)此我們采用了樂觀鎖的方式解決這個(gè)問題,防止IP地址被重復(fù)分配。 1.5.3 其他數(shù)據(jù)處理方式 除了以上的提到的數(shù)據(jù)類型,有一些數(shù)據(jù)需要周期跑的,還有一些數(shù)據(jù)是需要延遲投遞的,當(dāng)然你可以在系統(tǒng)本身做定時(shí)器去做,但當(dāng)任務(wù)量多的時(shí)候?qū)ο到y(tǒng)壓力也比較大。對(duì)此我們推薦放到MQ中,或者使用Beantalked,Beantalked相比MQ更側(cè)重于任務(wù)的分發(fā)。 2. 自動(dòng)裝機(jī)系統(tǒng)2.1 技術(shù)簡(jiǎn)介技術(shù)方案:PXE RAMOS 中間還有ks,不過ks只是用來引導(dǎo),沒有其他功能,ramos是定制的,還需要修改initrd.img文件,替換其中的init腳本和預(yù)裝一些命令和內(nèi)核模塊。Ramos是運(yùn)行在內(nèi)存的操作系統(tǒng),里面放置了一系列裝機(jī)腳本,可以做任何事情,新功能只需要擴(kuò)展腳本即可。 2.2 功能介紹目標(biāo): 只需要提供服務(wù)器序列號(hào)和位置,插上電源和網(wǎng)線開機(jī)就可以自動(dòng)安裝。解放生產(chǎn)力,減少IDC駐場(chǎng)人員和運(yùn)維人員成本。 主要功能如下:
2.3 上架流程服務(wù)器下單后,在服務(wù)器還未發(fā)貨之前,供應(yīng)商提供機(jī)器詳細(xì)信息,并錄入到資產(chǎn)系統(tǒng)。SA對(duì)服務(wù)器進(jìn)行規(guī)劃,服務(wù)器發(fā)到IDC后,供應(yīng)商按照區(qū)域上架相應(yīng)機(jī)型,掃描機(jī)器的機(jī)柜U位即可,并上傳CMDB系統(tǒng),插上電源和網(wǎng)線開機(jī)就可以自動(dòng)安裝。也可以提前在CMDB算好機(jī)器的位置,服務(wù)器到貨后按照指定的位置上架。 2.4 拷機(jī)拷機(jī)的意思就是對(duì)硬件做健康檢查,具體是對(duì)服務(wù)器的CPU、MEM、DISK、網(wǎng)卡等進(jìn)行壓測(cè),發(fā)現(xiàn)其中有問題的機(jī)器。為啥要有這個(gè)功能,其實(shí)我們是踩過硬件方面的坑的??偨Y(jié)下來硬件問題有兩種,一種是比較明顯問題的硬件,一種是看似沒問題,但在高并發(fā)滿負(fù)荷運(yùn)行下出現(xiàn)抽風(fēng)情況硬件。 前一種問題容易發(fā)現(xiàn),但如果完全相信廠商沒有做基本檢測(cè)也會(huì)掉到坑里,比如有批采購(gòu)的服務(wù)器中發(fā)現(xiàn)有一臺(tái)的內(nèi)存不一樣,買的128G內(nèi)存實(shí)際是160G內(nèi)存,多了兩塊內(nèi)存條,真是哭笑不得。這可不是什么好事情,萬一是少兩塊內(nèi)存條呢? 對(duì)于第二類問題用一般手段就很難發(fā)現(xiàn)了,需要長(zhǎng)時(shí)間壓測(cè)分析數(shù)據(jù)才能發(fā)現(xiàn)其中的問題,而且有時(shí)候跟操作系統(tǒng)、部署的服務(wù)有關(guān)。但一旦出現(xiàn)問題,排查起來異常艱難,耗時(shí)耗力。記得印象深刻的是tair超時(shí)問題的排查,當(dāng)時(shí)出現(xiàn)了tair超時(shí)抖動(dòng)的情況,百萬分之幾的出現(xiàn)率,在每天幾億次調(diào)用量的環(huán)境下,這是不能忍受的,問題發(fā)現(xiàn)是由于支付等關(guān)鍵業(yè)務(wù)放的開發(fā)對(duì)中間件團(tuán)隊(duì)的投訴。最后CTO召集中間件、測(cè)試部門、云產(chǎn)品支撐部、業(yè)務(wù)方開發(fā)多方組成聯(lián)合調(diào)查組,經(jīng)過近幾周的排查終于發(fā)現(xiàn)是硬件CPU的問題。 另一個(gè)例子是DBA發(fā)現(xiàn)IO抖動(dòng)(某時(shí)間點(diǎn)IOPS急劇下降到接近0)導(dǎo)致數(shù)據(jù)庫(kù)壓力陡增的案列。這些我們稱之為毛刺現(xiàn)象,出現(xiàn)這種情況需要及時(shí)排查處理的,不然后續(xù)會(huì)出現(xiàn)大問題,萬一趕上促銷的時(shí)候爆發(fā)出了呢?后果不敢想像。當(dāng)然如果業(yè)務(wù)量不大的情況下可以不用Care,因?yàn)橹歇?jiǎng)概率實(shí)在是太低了,但如果業(yè)務(wù)量大的情況下真的要重視了,因?yàn)槟柖筛嬖V我們不要存在僥幸心理。 有過兩次吃虧的經(jīng)歷,我們就著手從源頭發(fā)現(xiàn)問題,防止有問題的機(jī)器流入到生產(chǎn)環(huán)境,源頭當(dāng)然是服務(wù)器上架裝機(jī)了,自然而然這個(gè)任務(wù)放到了裝機(jī)系統(tǒng)做。首先我們選擇對(duì)CPU、內(nèi)存、網(wǎng)卡、磁盤作為壓測(cè)對(duì)象,并分別準(zhǔn)備相應(yīng)的壓測(cè)腳本,最后嵌入到裝機(jī)里,并在裝機(jī)系統(tǒng)打Tag,裝機(jī)時(shí)選擇這個(gè)Tag就會(huì)執(zhí)行拷機(jī)動(dòng)作,最后把數(shù)據(jù)上傳到CMDB進(jìn)行數(shù)據(jù)展示。CMDB對(duì)數(shù)據(jù)進(jìn)行匯聚,從CPU、內(nèi)存、網(wǎng)卡、磁盤四個(gè)維度進(jìn)行展示,發(fā)現(xiàn)有問題的機(jī)器。 以磁盤為例我們使用FIO工具進(jìn)行壓測(cè),并對(duì)數(shù)據(jù)繪圖展示: 場(chǎng)景1:raid0模式下 場(chǎng)景2:no-raid模式 場(chǎng)景3:raid0模式下 升級(jí)firmware 延遲情況 2.5 推進(jìn)標(biāo)準(zhǔn)化建設(shè)在自動(dòng)裝機(jī)系統(tǒng)推進(jìn)過程中,我們也推動(dòng)了一些標(biāo)準(zhǔn)化建設(shè),主要是網(wǎng)絡(luò)和運(yùn)維方面的標(biāo)準(zhǔn)化。網(wǎng)絡(luò)方面主要是IDC網(wǎng)段的分布要提前規(guī)劃好,交換機(jī)的分配、設(shè)置,網(wǎng)線的分配要標(biāo)準(zhǔn)化。運(yùn)維方面標(biāo)準(zhǔn)化包括機(jī)柜的劃分(我們分為大數(shù)據(jù)、DB、計(jì)算三種類型機(jī)器),機(jī)型配置的標(biāo)準(zhǔn)、raid的標(biāo)準(zhǔn)、bond的標(biāo)準(zhǔn)都做了規(guī)范。在這樣清晰的劃分下,裝機(jī)上架自動(dòng)化變不再是困難的事情。 3. 負(fù)載均衡管理系統(tǒng)3.1 技術(shù)方案
3.2 推廣,現(xiàn)有負(fù)載均衡規(guī)則遷移到系統(tǒng)Lvs、Nginx轉(zhuǎn)發(fā)規(guī)則從手工寫的配置文件遷移到系統(tǒng)中是一件非常繁雜且量大的工作,而且最重要的是做好測(cè)試驗(yàn)證,讓用戶無感知。如果要完成這個(gè)工作,需要運(yùn)維、配管人員、測(cè)試人員以及部分開發(fā)一同協(xié)作才能完成。如果沒有很好的理由是很難調(diào)動(dòng)其他部門積極配合你的,對(duì)此我們借助灰度發(fā)布的項(xiàng)目順利的實(shí)施了這項(xiàng)工作?;叶劝l(fā)布項(xiàng)目是為了讓發(fā)布能夠白天發(fā)而不影響業(yè)務(wù),以減少整個(gè)CTO部門人員的加班為目標(biāo)設(shè)立的,對(duì)每個(gè)團(tuán)隊(duì)都是有利的,當(dāng)然別人也會(huì)鼎力支持了。最后我們分四次在夜晚加班完成了整個(gè)遷移工作,做到了無縫遷移。 3.3 灰度發(fā)布負(fù)載均衡最好的應(yīng)用場(chǎng)景在灰度發(fā)布中,聯(lián)動(dòng)CMDB、部署系統(tǒng)一起實(shí)現(xiàn)灰度發(fā)布。 主要有以下特點(diǎn):
4. 運(yùn)維未來發(fā)展方向的思考4.1 成本中心向利潤(rùn)中心轉(zhuǎn)變對(duì)于大型的集團(tuán)來說,特別是比較傳統(tǒng)的企業(yè)來說,受之前的IT技術(shù)能力限制往往是各個(gè)子公司建立一套IT系統(tǒng),容易產(chǎn)生資源孤島。對(duì)此的策略是集中技術(shù),集中資源建立統(tǒng)一的資源池。除了對(duì)內(nèi)采取降低成本的手段外,還需要對(duì)外走出去,將集團(tuán)內(nèi)的技術(shù)能力對(duì)外輸出。 4.2 運(yùn)維是基本功,運(yùn)營(yíng)是高要求支持服務(wù)好內(nèi)部客戶,保障IT系統(tǒng)穩(wěn)定運(yùn)行不出故障是基本要求,在這方面各種技術(shù)也是不斷發(fā)展,架構(gòu)部斷演進(jìn),從最初的All In One的小型機(jī),到分布式架構(gòu)再到多AZ,異地雙活、多活架構(gòu),已經(jīng)發(fā)展到一個(gè)比較穩(wěn)定的階段,基本上能滿足中小型企業(yè)的IT需求了。在此基礎(chǔ)上對(duì)我們運(yùn)維人員更多的要求是向運(yùn)營(yíng)好IT系統(tǒng)轉(zhuǎn)變,如何更好的挖掘數(shù)據(jù),不斷的降低資產(chǎn)、人力等各種成本是我們需要思考的地方。對(duì)此,我們也有自己的一些實(shí)踐。 資源利用率的提升: 目標(biāo):挖掘設(shè)備使用能力,最大限度壓榨服務(wù)器的性能,為公司領(lǐng)導(dǎo)和運(yùn)營(yíng)負(fù)責(zé)人提供快速查看服務(wù)器資源使用情況,為此我們提供了資源使用率APP。 APP主要有以下功能:
技術(shù)方案: 通過對(duì)監(jiān)控系統(tǒng)(open-falcon)監(jiān)控?cái)?shù)據(jù)的采集、計(jì)算,通過預(yù)設(shè)的CPU、IO、網(wǎng)絡(luò)流量等衡量條件,判斷機(jī)器是否達(dá)標(biāo)。對(duì)集群整體計(jì)算達(dá)標(biāo)率。 5. 結(jié)尾以上是這些年我在運(yùn)維自動(dòng)化方面的一些實(shí)踐和思考。除了上面介紹到的,我還在監(jiān)控系統(tǒng)、發(fā)布系統(tǒng)、kubernetes等很多產(chǎn)品上有一些經(jīng)驗(yàn)。另外這兩年比較火的人工智,我們也嘗試和運(yùn)維做結(jié)合,實(shí)現(xiàn)AIOPS,比如磁盤故障預(yù)測(cè),根據(jù)大量磁盤的歷史監(jiān)控?cái)?shù)據(jù)進(jìn)行學(xué)習(xí),對(duì)現(xiàn)有的磁盤進(jìn)行故障預(yù)測(cè),并能做一些簡(jiǎn)單的修復(fù)工作,我們已經(jīng)嘗試在做。再比如,在流量調(diào)度方面也可以通過機(jī)器學(xué)習(xí)達(dá)到提前調(diào)度。由于篇幅有限,這里就不一一贅述,后續(xù)有機(jī)會(huì)還希望和大家做做分享交流。 整體而言隨著互聯(lián)網(wǎng)的不斷發(fā)展,運(yùn)維開發(fā)人員也要不斷用新技術(shù)武裝自己,技術(shù)不論好壞,只要是適合公司業(yè)務(wù)的,能提升公司效率,就值得我們?nèi)ド罹浚硗膺\(yùn)維開發(fā)人員應(yīng)該更多的去了解業(yè)務(wù),這樣才有利于做出更多助力業(yè)務(wù)快速發(fā)展的產(chǎn)品。 作者簡(jiǎn)介:閆振凱,目前就職國(guó)美云,擔(dān)任平臺(tái)開發(fā)經(jīng)理,曾就職阿里云、平安?;ヂ?lián)網(wǎng)運(yùn)維開發(fā)老兵。 |
|