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ì)此我們采用了樂(lè)觀鎖的方式解決這個(gè)問(wèn)題,防止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,不過(guò)ks只是用來(lái)引導(dǎo),沒(méi)有其他功能,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)線開(kāi)機(jī)就可以自動(dòng)安裝。解放生產(chǎn)力,減少IDC駐場(chǎng)人員和運(yùn)維人員成本。
主要功能如下:
1.自動(dòng)配置RAID,支持多種RAID配置
2.支持多種分區(qū)模式
3.自動(dòng)向CMDB申請(qǐng)IP資源和主機(jī)名并配置IP,支持多種BOND設(shè)置
4.根據(jù)需要做固件驅(qū)動(dòng)升級(jí)
5.支持拷機(jī),對(duì)IO/NET/DISK/CPU進(jìn)行壓測(cè)(剛購(gòu)買來(lái)的機(jī)器做,發(fā)現(xiàn)有問(wèn)題的機(jī)器)
6.支持高并發(fā)裝機(jī),可以并發(fā)安裝100臺(tái)物理機(jī),全部裝完只需幾分鐘
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)線開(kāi)機(jī)就可以自動(dòng)安裝。也可以提前在CMDB算好機(jī)器的位置,服務(wù)器到貨后按照指定的位置上架。
圖 7 裝機(jī)過(guò)程
2.4 拷機(jī)
拷機(jī)的意思就是對(duì)硬件做健康檢查,具體是對(duì)服務(wù)器的CPU、MEM、DISK、網(wǎng)卡等進(jìn)行壓測(cè),發(fā)現(xiàn)其中有問(wèn)題的機(jī)器。為啥要有這個(gè)功能,其實(shí)我們是踩過(guò)硬件方面的坑的。總結(jié)下來(lái)硬件問(wèn)題有兩種,一種是比較明顯問(wèn)題的硬件,一種是看似沒(méi)問(wèn)題,但在高并發(fā)滿負(fù)荷運(yùn)行下出現(xiàn)抽風(fēng)情況硬件。
前一種問(wèn)題容易發(fā)現(xiàn),但如果完全相信廠商沒(méi)有做基本檢測(cè)也會(huì)掉到坑里,比如有批采購(gòu)的服務(wù)器中發(fā)現(xiàn)有一臺(tái)的內(nèi)存不一樣,買的128G內(nèi)存實(shí)際是160G內(nèi)存,多了兩塊內(nèi)存條,真是哭笑不得。這可不是什么好事情,萬(wàn)一是少兩塊內(nèi)存條呢?
對(duì)于第二類問(wèn)題用一般手段就很難發(fā)現(xiàn)了,需要長(zhǎng)時(shí)間壓測(cè)分析數(shù)據(jù)才能發(fā)現(xiàn)其中的問(wèn)題,而且有時(shí)候跟操作系統(tǒng)、部署的服務(wù)有關(guān)。但一旦出現(xiàn)問(wèn)題,排查起來(lái)異常艱難,耗時(shí)耗力。記得印象深刻的是tair超時(shí)問(wèn)題的排查,當(dāng)時(shí)出現(xiàn)了tair超時(shí)抖動(dòng)的情況,百萬(wàn)分之幾的出現(xiàn)率,在每天幾億次調(diào)用量的環(huán)境下,這是不能忍受的,問(wèn)題發(fā)現(xiàn)是由于支付等關(guān)鍵業(yè)務(wù)放的開(kāi)發(fā)對(duì)中間件團(tuán)隊(duì)的投訴。最后CTO召集中間件、測(cè)試部門(mén)、云產(chǎn)品支撐部、業(yè)務(wù)方開(kāi)發(fā)多方組成聯(lián)合調(diào)查組,經(jīng)過(guò)近幾周的排查終于發(fā)現(xiàn)是硬件CPU的問(wèn)題。
另一個(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)大問(wèn)題,萬(wàn)一趕上促銷的時(shí)候爆發(fā)出了呢?后果不敢想像。當(dāng)然如果業(yè)務(wù)量不大的情況下可以不用Care,因?yàn)橹歇?jiǎng)概率實(shí)在是太低了,但如果業(yè)務(wù)量大的情況下真的要重視了,因?yàn)槟柖筛嬖V我們不要存在僥幸心理。
有過(guò)兩次吃虧的經(jīng)歷,我們就著手從源頭發(fā)現(xiàn)問(wèn)題,防止有問(wèn)題的機(jī)器流入到生產(chǎn)環(huán)境,源頭當(dāng)然是服務(wù)器上架裝機(jī)了,自然而然這個(gè)任務(wù)放到了裝機(jī)系統(tǒng)做。首先我們選擇對(duì)CPU、內(nèi)存、網(wǎng)卡、磁盤(pán)作為壓測(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)卡、磁盤(pán)四個(gè)維度進(jìn)行展示,發(fā)現(xiàn)有問(wèn)題的機(jī)器。