運(yùn)維是數(shù)據(jù)中心生命周期中持續(xù)時(shí)間最長的一部分,隨著數(shù)據(jù)中心建設(shè)規(guī)模和復(fù)雜度的增加,運(yùn)維的工作變得更加繁瑣。在運(yùn)維的工作中,有相當(dāng)大部分工作都是重復(fù)性的指令行操作。所以,不少的運(yùn)維工程師研究出不少提升工作效率方法,減少人力成本,這就是腳本。將一些重復(fù)性的、邏輯關(guān)系明確的操作工作通過腳本下發(fā)來完成,這樣可節(jié)省很大一部分人力,同時(shí)還能避免人為操作的失誤,這就是腳本的力量。在運(yùn)維的工作中,腳本正扮演者越來越重要的角色。
腳本語言代表了簡單,快速,易重用的開發(fā)。不需要編譯可以直接執(zhí)行。不需要管理內(nèi)存。腳本語言易于理解,越往后的開發(fā)將越來越簡單,復(fù)雜的東西將被丟掉。開發(fā)將越來越能利于普通人使用,這是一種必然的發(fā)展趨勢。運(yùn)維工程師經(jīng)常重復(fù)性做一個(gè)變更,他就會(huì)想寫個(gè)腳本自動(dòng)完成,久而久之輸出越來越多個(gè)執(zhí)行腳本,當(dāng)要進(jìn)行變更時(shí),找到對應(yīng)的變更腳本自動(dòng)執(zhí)行即可,不僅效率極高,而且不會(huì)變錯(cuò)。當(dāng)然,數(shù)據(jù)中心是不斷更新變化的,腳本也要隨之更新,不然執(zhí)行起來就會(huì)犯錯(cuò),一旦錯(cuò)誤的腳本執(zhí)行起來,結(jié)果就不好預(yù)測了,往往比人工破壞力更大,所以設(shè)計(jì)腳本的人一定要對數(shù)據(jù)中心系統(tǒng)相當(dāng)了解,或者將腳本已經(jīng)在模擬測試環(huán)境中反復(fù)驗(yàn)證沒問題后,才能在承載業(yè)務(wù)的數(shù)據(jù)中心系統(tǒng)上運(yùn)行。
腳本的種類也多,數(shù)據(jù)中心里常用的腳本有:監(jiān)控腳本(監(jiān)控運(yùn)行設(shè)備的各種狀態(tài))、備份腳本(備份數(shù)據(jù)庫、設(shè)備配置)、部署腳本(游戲環(huán)境安裝腳本、設(shè)備新業(yè)務(wù)部署、系統(tǒng)初始化腳本)、業(yè)務(wù)腳本(游戲日志合并腳本、查詢數(shù)據(jù)庫腳本)等等,不同種類的腳本可以使用相同的腳本語言,相同種類的腳本也可以使用不同種類的腳本語言,這完全取決于運(yùn)維人員的技能水平,使用哪種腳本語言得心應(yīng)手。一個(gè)數(shù)據(jù)中心規(guī)模越大,承載的業(yè)務(wù)種類越多,腳本也就越復(fù)雜。不同的數(shù)據(jù)中心,使用的腳本差異會(huì)相當(dāng)大,相互之間可借鑒性不大,所以一個(gè)數(shù)據(jù)中心的腳本基本都是一部數(shù)據(jù)中心成長史的縮影,腳本的種類和內(nèi)容會(huì)隨著數(shù)據(jù)中心的運(yùn)行不斷增加,不斷完善,是數(shù)據(jù)中心運(yùn)維最為寶貴的經(jīng)驗(yàn)。
腳本語言的涵蓋范圍也較廣,我們知道服務(wù)器和網(wǎng)絡(luò)設(shè)備基本都是命令行交互方式操作,這種方式執(zhí)行效率高,受到廣泛使用,這種方式為腳本的部署提供了天然土壤。早期的腳本有命令行復(fù)制的方式,將需要執(zhí)行的腳本命令放在記事本中,當(dāng)需要執(zhí)行時(shí),將這些腳本命令直接到設(shè)備上拷貝粘貼執(zhí)行即可,直到現(xiàn)在很多的網(wǎng)絡(luò)變更方案,還是采用這種傳統(tǒng)方式執(zhí)行。一旦發(fā)現(xiàn)問題,可以立即停止拷貝,進(jìn)行命令刪除操作進(jìn)行回退。在監(jiān)控中,我們常用TCL腳本或Shell腳本采集一些設(shè)備的運(yùn)行狀態(tài)和信息,將這些信息收集起來進(jìn)行顯示和分析,一旦出現(xiàn)異常可以及時(shí)告警,或者故障隔離。這類腳本往往有強(qiáng)烈的先后依賴關(guān)系,對顯示信息也有判斷。比如:通過腳本采集所有運(yùn)行設(shè)備的CPU占用率,這樣就要周期性地通過腳本登錄到所有設(shè)備,收集CPU占用率的信息進(jìn)行紀(jì)錄,同時(shí)將采集的數(shù)據(jù)與預(yù)先設(shè)定好的閾值進(jìn)行對比,如果有不符合的給出警示。通過腳本可以將數(shù)據(jù)中心里的所有運(yùn)行指標(biāo)監(jiān)控起來,這就是自動(dòng)化運(yùn)維的重要部分。到了如今,perl,python,ruby,javascript等腳本語言開始走入人們的視線,這些腳本語言可以對數(shù)據(jù)中心設(shè)備進(jìn)行二次開發(fā)。這些腳本語言都是基于Linux實(shí)現(xiàn),Shell腳本是實(shí)現(xiàn)Linux系統(tǒng)自動(dòng)管理以及自動(dòng)化運(yùn)維所必備的工具,Linux底層以及基礎(chǔ)應(yīng)用軟件的核心大都涉及Linux腳本內(nèi)容。Perl比Shell強(qiáng)大很多,在2010年以前很流行,但它的語法靈活、復(fù)雜,不容易讀,團(tuán)隊(duì)協(xié)作困難,使得這個(gè)腳本語言早早消亡。Python是近幾年非常流行的語言,它不但可以用于腳本程序開發(fā),也可以實(shí)現(xiàn)Web程序開發(fā),要知道知乎、豆瓣、YouTube都是用Python開發(fā),Python語言優(yōu)勢在于開發(fā)復(fù)雜的運(yùn)維軟件、Web頁面管理工具和Web業(yè)務(wù)開發(fā),對于一鍵自動(dòng)化安裝、優(yōu)化,監(jiān)控報(bào)警腳本,軟件啟動(dòng)腳本,日志分析腳本等運(yùn)維監(jiān)控類的功能,使用Shell腳本更加順手,開發(fā)會(huì)更簡單、更快速。Ruby是日本開發(fā)的,還不錯(cuò),風(fēng)格跟Python有點(diǎn)像,因?yàn)閞uby onrails出了名,國外用的比較多,國內(nèi)沒戲,Python已經(jīng)把它的想象空間都占死了。
由此可見,從數(shù)據(jù)中心變更、擴(kuò)容、業(yè)務(wù)部署、監(jiān)控、故障恢復(fù)、二次開發(fā)等方面都有腳本的身影,腳本質(zhì)量的高低體現(xiàn)了一個(gè)數(shù)據(jù)中心的運(yùn)維水平,是通向自動(dòng)化運(yùn)維的必要條件。我們常說要做自動(dòng)化運(yùn)維,很多程度上要靠腳本來打天下,通過各種復(fù)雜的運(yùn)行腳本,采集運(yùn)行狀態(tài)和信息,及時(shí)發(fā)現(xiàn)隱患,出了問題也能及時(shí)收集定位,高級的腳本可以通過采集故障時(shí)的設(shè)備信息做故障診斷,根據(jù)之前存儲(chǔ)的各種可能故障現(xiàn)場,來執(zhí)行其對應(yīng)的已經(jīng)設(shè)計(jì)好的恢復(fù)操作腳本,從而實(shí)現(xiàn)自動(dòng)化處理故障并恢復(fù)業(yè)務(wù)的能力。在數(shù)據(jù)中心里,腳本無處不在,所有的地方都體現(xiàn)出了腳本的力量。一個(gè)數(shù)據(jù)中心運(yùn)維技術(shù)人員,只有將腳本玩好,才能成為真正的運(yùn)維專家。數(shù)據(jù)中心部署腳本的目的,就是要提升運(yùn)維生產(chǎn)力,提升運(yùn)維效率,降低人為失誤。通過腳本技術(shù),把運(yùn)維的能力沉淀到運(yùn)維的技術(shù)平臺(tái)上,讓周邊所有人和系統(tǒng)依賴腳本運(yùn)維能力,而不是依賴運(yùn)維的人。
版權(quán)聲明:本文為企業(yè)網(wǎng)D1Net原創(chuàng),轉(zhuǎn)載需注明出處為:企業(yè)網(wǎng)D1Net,如果不注明出處,企業(yè)網(wǎng)D1Net將保留追究其法律責(zé)任的權(quán)利。