系統(tǒng)運維秘訣:Git,招聘與軟硬件選擇(實踐篇)
原創(chuàng)【51CTO精選譯文】編者按:本文是SixApart的MySQL DBA,Dormando在2008年總結(jié)的一套運維秘訣。編者前日看到Google系統(tǒng)管理員Tom Limoncelli在Everything Sysadmin上推薦這篇文章,并表示這篇文章的內(nèi)容在今天仍然適用。閱讀之下,發(fā)現(xiàn)的確是篇難得的好文章,有大量的經(jīng)驗分享,總結(jié)的十分全面?,F(xiàn)在51CTO系統(tǒng)頻道特將本文全文翻譯過來,當(dāng)作給各位運維讀者們的2011新年禮物。以下為正文。
在運維管理的過程中,我發(fā)現(xiàn)了很多有價值的秘訣,本文是這些秘訣的一個總結(jié)。雖然這些秘訣可能比較“唯心”,但是我還是把它們總結(jié)出來了,相信它們會對你有幫助的。
Dormando的運維秘訣分成以下三大篇:
實踐篇
現(xiàn)在就修復(fù)它,而不是以后再修復(fù)它
◆如果一個Web服務(wù)器處于脫機(jī)狀態(tài),不要擔(dān)心,因為你應(yīng)該有10個備用的!
◆在一周中,專門挑出一天來“清理門戶”。更換掉所有存在故障的硬件。在歡度周末之前,確保一切都是完好無損的。
◆如果令人討厭的小問題突然發(fā)生了,在早上要做的***件事情就是***性的修復(fù)它們。日志塞滿磁盤的情況在上周發(fā)生了兩次?明天再說吧!如果總是這樣,這些問題會堆積起來……
◆如果你的構(gòu)建過程是自動化的,充分利用這個優(yōu)勢來修復(fù)一些你可以馬上修復(fù)的問題,或許也可以批量進(jìn)行修復(fù)。
讓每一件事情都自動化
◆人們無法(輕易地)搞亂腳本化的任務(wù)。
◆從第二次開始自動化。如果***次你必須手工來做一件事情,那么把你做的事情寫入一個腳本。
◆帶注釋的腳本是***的文檔。與其把如何安裝一些東西的方法詳細(xì)地寫到長達(dá)20頁文檔中,還不如編寫一個可以自解釋的腳本。
◆腳本可以被放到自動化的構(gòu)建過程中。如果要更接近這個目標(biāo),應(yīng)該把一些經(jīng)常做的事情都應(yīng)該變成“零時間”的任務(wù)。
只進(jìn)行必要的變更
◆只做小規(guī)模的,獨立的變更。
◆如果不是必須改變,那么就保持原樣。
◆這也意味著你必須搞清楚什么時候才應(yīng)該進(jìn)行變更。找出什么東西是必須要進(jìn)行變更的,然后對它進(jìn)行升級,把它拿出來,讓它標(biāo)準(zhǔn)化。
Design for change
◆這里的Design for change(編輯注:技術(shù)篇的***條也是Design for change)針對個人的成長。朝快速解決問題大師的方向努力吧。
◆如果快速解決問題比較困難,那么你可以學(xué)習(xí)一些基礎(chǔ)知識,做出一張清晰的升級路線圖。雖然你的新郵件系統(tǒng)也許并不是你夢想中的、帶有強(qiáng)大反垃圾郵件功能的巨大系統(tǒng);但是架設(shè)兩臺配置干凈的postfix郵件服務(wù)器會比你想象中的效果還要好。
◆大家都傾向于把未完成的項目放在那里置之不理。這是你要避免的。
盡快地把更新的內(nèi)容投入實踐
◆一般來說,運維工作就是要讓代碼更好地運行。并行化,建立起回滾重啟機(jī)制。
◆運行內(nèi)容包括軟件更新,安全補丁,配置變更。
◆使用puppet,cfengine以及你需要的任何工具對配置進(jìn)行控制。讓它干凈,簡潔,并且容易操作。
◆文件數(shù)量越少越好。如果只是為了推出一個新的數(shù)據(jù)庫就要在20個文件中分別添加一行,那么你的方法一定是錯誤的。創(chuàng)建簡單的模板,不要重復(fù)編輯需要手工編輯的數(shù)據(jù)。
規(guī)范化,堅持按照規(guī)范來行事
◆OS的規(guī)范,httpd的規(guī)范,數(shù)據(jù)庫的規(guī)范,打包系統(tǒng)的規(guī)范。
◆堅持按照這些規(guī)范來行事。對一些方法進(jìn)行調(diào)整和改進(jìn),讓它變得更有意義。
◆永遠(yuǎn)不要緊抓著主版本不放。如果你的產(chǎn)品功能還沒有***性地凍結(jié),你就必須要按照規(guī)范繼續(xù)向前推進(jìn),把過去的一些事情都拋在腦后。
◆按照規(guī)范來做的事情越多,你的工具可以發(fā)揮作用的場合就會越多。用于支持其他運維領(lǐng)域的軟件包越多,可以適應(yīng)的場景也越多。
文檔化
◆把流程文檔化
◆把產(chǎn)品文檔化
◆不要讓文檔出現(xiàn)冗余。如果一個腳本的幫助文檔很長,可以進(jìn)行引用。好的文檔是一個持續(xù)改進(jìn)的過程,它要一直保持準(zhǔn)確。
◆把文檔和代碼,perldoc,pydoc等聯(lián)系起來。
◆過期的文檔是有害的。留出一些時間來更新它們。當(dāng)新的員工遇到問題的時候,和新的員工坐下來一起更新文檔。
◆適當(dāng)?shù)厥褂脝栴}跟蹤系統(tǒng)(issue tracking)。為操作歷史保留文檔是十分重要的,以避免為了某個DNS故障的重現(xiàn)去騷擾他人。
使用源代碼控制工具
◆使用git或者mercurial。避免使用SVN。
◆把配置文件、腳本等各種東西都放到源代碼控制工具中管理起來。
◆為代碼遷出提供各種入口。
◆保持遷出的嚴(yán)謹(jǐn)性,精準(zhǔn)性和可控制性。禁止提交無法進(jìn)行審核的變更。應(yīng)該提交的變更應(yīng)該是不用源代碼控制工具也能容易地進(jìn)行測試的(在虛擬機(jī)環(huán)境下,可以直接在一個單獨的測試機(jī)器上進(jìn)行測試)。
招聘
◆區(qū)分出固執(zhí)的人和精明的人
◆不要避免聘請“老前輩”。某個領(lǐng)域的“老前輩”可能已經(jīng)跟不上技術(shù)變革的腳步,以至于你可能不想聘請他們。但是,總是要有幾個“超級巨星”來壓住陣腳的。
◆不要避免聘請新手。我認(rèn)識的很多人都是從一個真正的新手開始的(包括我自己!實際上,我認(rèn)為我自己一直是一個新手)。經(jīng)過這個階段以后,他們會迅速地成長起來。現(xiàn)在正是確立職業(yè)生涯的時候。我相信我們中的絕大多數(shù)人都是這樣的。當(dāng)然,不包括那些不學(xué)習(xí)的人,沒有積極性的人,或者入錯行的人。
避免提供商鎖入,同時和你的提供商保持良好的關(guān)系
◆購買專有硬件的主要劣勢是提供商鎖入,你不得不總是使用這個提供商的產(chǎn)品。這可能是一個特殊的SAN,NAS,也可能是特殊用途的隨設(shè)備存儲,備份系統(tǒng)等等(51CTO推薦閱讀:別把雞蛋放在一個籃子里)。盡量避免發(fā)生這種事情。如果你完全按照上面的設(shè)計建議來行事,那么應(yīng)該可以很快地在不同的平臺上搭建起測試環(huán)境。然后,你可以進(jìn)行硬件評估,自由地進(jìn)行選擇。
◆如果所有東西都很深奧,都很不明朗,都還沒有經(jīng)過文檔化,并且直接依賴于專有的負(fù)載均衡器……那么***別用,因為用了你就不自由。
◆對你最終選擇的提供商好一點。如果你每一次采購都在價格方面把他們逼到墻角,那么你只能得到一些垃圾硬件了。
◆有時候數(shù)據(jù)中心有很多潛在的可用資源。盡量把一些免費的遠(yuǎn)程協(xié)助服務(wù)寫到合同里,比如就更換硬盤驅(qū)動器,提供商的出貨/RMA條款,以及一些基礎(chǔ)硬件的安裝等方面的細(xì)則進(jìn)行談判。我有一個機(jī)架的設(shè)備,其安裝上架的過程我們的人完全沒有操心……真的很不錯。
給開源一個機(jī)會
◆nginx,mongrel,lighttpd,apache,perlbal,mogilefs,memcached,squid,OpenBGPD,PF,IPTables,LVS,MySQL,Postgres,等等。在你選擇可信、可靠、昂貴的專有安裝程序以前,給開源一個機(jī)會。你會發(fā)現(xiàn)使用開源軟件意味著可以自己添加插件,擴(kuò)展,代碼修復(fù)補丁,或者你可以把一些自己無法實現(xiàn)的功能外包出去。在我看來,開源軟件是很可靠的,它們通常比巨大負(fù)載之下的大型的,昂貴的硬件更可靠。
◆“一分錢一分貨”這種思想是一個徹底的謊言。如果你無法讓開源軟件為你工作,需要協(xié)助,你可以找一個提供商。如果你的團(tuán)隊既睿智又積極主動,這些小伙子們想要搞清楚他們的基礎(chǔ)設(shè)施是如何工作的,那么你一定無法抵擋來自于GPL或BSD系統(tǒng)的誘惑。
◆MySQL和Postgres都不錯。如果你要使用它們,可以權(quán)衡一下利弊。沒有什么東西會在晚上從你的衣櫥里爬出來“吃”掉你的數(shù)據(jù)。與經(jīng)過測試的、穩(wěn)定的冗余master<->slave MySQL集群實例相比,其實龐大的、處于脫機(jī)狀態(tài)的Oracle實例更容易把事情搞的一團(tuán)糟。
◆關(guān)于LAMP架構(gòu)的文章數(shù)不勝數(shù)。無數(shù)知名網(wǎng)站、ISP、甚至企業(yè)現(xiàn)在都在使用開源軟件。給開源一個機(jī)會。最糟糕的結(jié)果也不過是浪費一些時間,而***從你那些心驚膽戰(zhàn)的提供商們那里獲得一些不錯的報價。
【51CTO.com譯稿,轉(zhuǎn)載請注明原文作譯者和出處。】
原文:http://dormando.livejournal.com/484577.html
【編輯推薦】