在實現(xiàn)系統(tǒng)的自動化時,可能沒有任何方法可以確定全部服務(wù)器是否都正確配置了某一個系統(tǒng)。如果部署一個審核系統(tǒng),那么它就可以執(zhí)行一個自動化過程,確定某個屬性(如配置文件中的某個設(shè)置)在成百上千個服務(wù)器中是否保持一致。在自動化過程中,審核可能非常簡單,如驗證某一個配置在一組服務(wù)器中的完整性。例如,驗證某一個版本的Apache配置是正確的,而且在所有服務(wù)器上都保持一致,或者一組服務(wù)器都使用了一個相同的配置文件。事實上,即使部署了高級配置管理框架,有一些東西仍然會發(fā)生變化,不能保持同步,因此使用一種方法去驗證服務(wù)器、應(yīng)用程序和配置的狀態(tài),仍然是自動化過程的重要組成部分;如果基礎(chǔ)架構(gòu)出現(xiàn)了問題,那么一定要再次檢查基礎(chǔ)架構(gòu)的各個組件。
定要注意,不同的配置管理或自動化框架會采用不同的方式去審核一個基礎(chǔ)架構(gòu)或多個服務(wù)器、操作系統(tǒng)、應(yīng)用程序及其配置參數(shù)。通常,審核一個Web基礎(chǔ)架構(gòu)的所有方面需要耗費大量的時間,但是與其當(dāng)出現(xiàn)問題時才考慮必須審核哪些東西,不如想好哪些是不能不審核的。假如,生產(chǎn)網(wǎng)站出現(xiàn)了一個嚴重問題?赡苓@個網(wǎng)站每月的用戶訪問量可達上百萬次,每年能夠產(chǎn)生50萬美元的收益。當(dāng)召集所有人開會時關(guān)鍵是要確定出現(xiàn)了什么問題,以及如何解決這個問題。這時,問題可能就是由于應(yīng)用程序代碼的版本不一致而引起的。大多數(shù)編程語言都會在應(yīng)用程序的二進制文件中使用一種配置清單文件來確定Web服務(wù)器或應(yīng)用服務(wù)器中所部署的應(yīng)用程序版本。
現(xiàn)在,一個中等規(guī)模的網(wǎng)站基礎(chǔ)架構(gòu)就可能包含50-1000Web服務(wù)器和應(yīng)用服務(wù)器。其中包含了大量的操作系統(tǒng)、應(yīng)用程序、配置文件和參數(shù),這時我們要逐一排查,才能確定可能導(dǎo)致問題和影響網(wǎng)站訪問體驗的方面。
此刻應(yīng)該使用審核軟件來確定哪些服務(wù)器出現(xiàn)了問題。在該例中,某個應(yīng)用程序二進制文件的版本不一致性是問題的根源。下一步就是確定哪一些Web服務(wù)器或應(yīng)用服務(wù)器出現(xiàn)了問題,這樣才能確定應(yīng)該從哪里開始解決問題。同樣,一些好的審核框架可以幫我們創(chuàng)建用于修復(fù)當(dāng)前服務(wù)器的補丁包,然后再將它們部署到所有確認出現(xiàn)問題的服務(wù)器上。
審核過程中最難的一步是確定要審核哪些部分。這個過程取決于正在運行的應(yīng)用程序類型、源代碼管理和部分方式、源代碼庫的類型、所使用的編程語言、操作系統(tǒng)及管理方式和業(yè)務(wù)需求。如果一個環(huán)境可以容忍較長的停機時間,例如那些不會產(chǎn)生收益的網(wǎng)站,那么它的審核要求肯定低于那些每小時能產(chǎn)生大量收益的網(wǎng)站。后面一種環(huán)境需要使用一種高度可控和自動化的方法來確定出現(xiàn)問題的位置。
在一個完全虛擬化的環(huán)境中,所有應(yīng)用程序都運行在一種虛擬化平臺上,只要有一個分配框架負責(zé)重新安裝虛擬服務(wù)器和重新部署應(yīng)用程序代碼,我們就沒有必要引入一個復(fù)雜的審核框架,也沒有必要花太多時間去確定發(fā)生問題的位置,除非這個問題總是頻繁地重復(fù)發(fā)生。如果完全重建一個服務(wù)器并部署應(yīng)用程序只需要8~15分鐘,那么就沒有必要去確定這個服務(wù)器所出現(xiàn)的問題。
然而,在一個固定的基礎(chǔ)架構(gòu)或者一個未使用服務(wù)器虛擬化的基礎(chǔ)架構(gòu)中,審核是非常重要的。在這種環(huán)境中,我們無法使用實時快照自動回滾修改,也不能啟動一個完全重建整個服務(wù)器及應(yīng)用程序的過程。
注意即使沒有使用虛擬化技術(shù),有一些配置管理框架仍然能夠保存數(shù)據(jù)庫的修改歷史記錄,并支持實時回滾修改。
與虛擬化環(huán)境相比,固定環(huán)境對于錯誤的容忍度較小,因此它們必須確定需要審核哪些文件、配置和應(yīng)用程序。有一些方法可以解決很大一部分問題,如源代碼管理知識庫,但是它們無法解決由系統(tǒng)級配置變化引起的問題,如安裝內(nèi)核補丁,更新網(wǎng)卡、磁盤控制器的固件和設(shè)備驅(qū)動程序,等等。這些修改通常會產(chǎn)生意想不到的結(jié)果,然后工程師必須自行分析哪些網(wǎng)卡出現(xiàn)了問題,然后才能在所有系統(tǒng)上逐一解決問題。
審核框架有以下優(yōu)點:
尋找一些未知問題;
改進系統(tǒng)與應(yīng)用程序的性能;
幫助Web基礎(chǔ)架構(gòu)從問題恢復(fù),避免出現(xiàn)幾小時甚至幾天的停機時間;
在網(wǎng)站設(shè)計Web基礎(chǔ)架構(gòu)出現(xiàn)問題時,定位那些日志或監(jiān)控系統(tǒng)都無法定位的問題位置。