系統(tǒng)運(yùn)維秘訣:變化,監(jiān)控,擴(kuò)展(技術(shù)篇)(3) |
發(fā)布時(shí)間: 2012/5/28 10:19:31 |
多一些橫向擴(kuò)展,少一些縱向擴(kuò)展 ◆橫向擴(kuò)展是我們應(yīng)該走的路。應(yīng)該使用常規(guī)的(即:可用的,價(jià)格適中的,標(biāo)準(zhǔn)的。而不是特便宜的。┯布,然后和大家一起努力,確保各方面都可以進(jìn)行橫向擴(kuò)展。 ◆橫向擴(kuò)展從兩臺(tái)機(jī)子開(kāi)始。另外,進(jìn)行冗余的時(shí)候也會(huì)涉及到橫向擴(kuò)展。 ◆盡可能的橫向擴(kuò)展,但是不要傻乎乎的擴(kuò)展。在MySQL復(fù)制中有一個(gè)經(jīng)典的白癡擴(kuò)展的例子:使用一個(gè)master對(duì)很多個(gè)slave。所有的 slave必須完成全部的寫(xiě)入,而寫(xiě)入次數(shù)是與讀取次數(shù)成比例增加的(大多數(shù)應(yīng)用都是這樣)。也就是說(shuō),你添加的slave越多,通過(guò)添加slave擴(kuò)展的資源就越少。 ◆留意一下替代的解決方案。按照用戶或區(qū)域?qū)Χ鄠(gè)數(shù)據(jù)庫(kù)進(jìn)行劃分,同時(shí)避免增加過(guò)多的slave。實(shí)際上,有許多種方法可以達(dá)到這個(gè)目的。 ◆一切都可能擴(kuò)展!路由器,交換機(jī),負(fù)載均衡器,Web服務(wù)器,數(shù)據(jù)庫(kù),等等。 ◆記得縱向擴(kuò)展嗎?以前那些邪惡的大型機(jī)們有很多核,很多IO板,配備了非常昂貴的存儲(chǔ)設(shè)備。而現(xiàn)在,多核這個(gè)概念開(kāi)始蔓延了。 ◆RAM是廉價(jià)的。 ◆將以上兩點(diǎn)合并起來(lái),這意味著你只需要再次合并服務(wù)就可以了。這兒有一個(gè)負(fù)載均衡器,那兒有一個(gè)Web服務(wù)器……如果一個(gè)應(yīng)用程序可以使用許多個(gè) CPU(比如apache),那么這是完美的。如果它不能(比如memcached),那么你最終可能會(huì)由于離散的服務(wù)太多而浪費(fèi)掉大量的可用資源。 ◆作業(yè)系統(tǒng)(job systems)也許可以填補(bǔ)這個(gè)鴻溝。哪里的核心的越多,哪里的工作線程就越多。 緩存 ◆對(duì)于開(kāi)發(fā)者和系統(tǒng)運(yùn)維人員來(lái)說(shuō),緩存可是個(gè)好東西,值得大力發(fā)展!的確,它是不可思議的。它是與眾不同的。有時(shí)你可能必須要為它做一個(gè)權(quán)衡。有效地使用緩存可以讓系統(tǒng)的整體性能提升10倍之多。對(duì)于你當(dāng)前的系統(tǒng)來(lái)說(shuō),這是一個(gè)巨大的“放大鏡”,并且,它的成本在總成本中只占很小的一部分。 ◆Memcached。它可以為服務(wù)提供緩存,讓數(shù)據(jù)庫(kù)結(jié)構(gòu)非標(biāo)準(zhǔn)化(這可以提升性能。瑢(duì)squid緩存進(jìn)行優(yōu)化,甚至可以提高操作系統(tǒng)緩存的利用率。 ◆測(cè)試它,玩弄它,并打破它。使用緩存會(huì)帶來(lái)新的問(wèn)題。要做好準(zhǔn)備。 讓工作異步化 ◆可以使用Starling, Gearman, The Schwartz等工具。作業(yè)系統(tǒng)可以給應(yīng)用程序提供更多的靈活性。工作線程可以一次性地產(chǎn)生出來(lái),也可以是持久的(載入緩存數(shù)據(jù),準(zhǔn)備數(shù)據(jù)等)。它們可以在不同的硬件上,它們的地理位置也可以不同。它們既可以是同步的,也可以是異步的。 ◆維護(hù)這些東西是一個(gè)運(yùn)維人員的問(wèn)題。使用它們既是開(kāi)發(fā)者的問(wèn)題也是運(yùn)維人員的問(wèn)題。 ◆當(dāng)用戶點(diǎn)擊“給我所有的朋友發(fā)送郵件”的時(shí)候,把這個(gè)工作列入計(jì)劃,然后馬上說(shuō):“OK,已經(jīng)完成了!你的朋友馬上會(huì)收到你的郵件!”——通過(guò)異步化的方式來(lái)處理這個(gè)工作。 ◆作業(yè)系統(tǒng)是銜接各個(gè)服務(wù)的一個(gè)場(chǎng)所。博客投遞-〉IM通知,定期計(jì)費(fèi)-〉收費(fèi)服務(wù),網(wǎng)關(guān)認(rèn)證等。 ◆容易擴(kuò)展。在請(qǐng)求進(jìn)入的地方會(huì)有一些瓶頸,所有的工作線程必須要做的事情就是“拉”。這個(gè)是相對(duì)于HTTP中大量推/拉的狀態(tài)而言的。 安全和巡查 ◆一定要安裝安全更新!這十分重要!有很多瘋狂的網(wǎng)絡(luò)專家致力于在盡可能短的時(shí)間內(nèi)給你提供這些更新。不要因?yàn)槟愫ε赂淖兌屗麄儼装椎馗冻鰟趧?dòng)。 ◆安全性也是分層的。明白你能確保什么,以及不能做什么。MySQL有密碼訪問(wèn)機(jī)制,并不意味著可以允許直接通過(guò)互聯(lián)網(wǎng)來(lái)訪問(wèn)它。 ◆在SSH上禁用密碼。使用經(jīng)過(guò)加密的passphrase密鑰來(lái)進(jìn)行身份驗(yàn)證。遠(yuǎn)程的用戶無(wú)法猜出你的私有密鑰。他們必須從你這里才能得到它。把它保管好。做好這點(diǎn),就沒(méi)必要在防火墻中關(guān)閉你的SSH端口了。 ◆搞清楚你的應(yīng)用程序是如何工作的,它具體需要做些什么,并相應(yīng)的進(jìn)行調(diào)整。比如說(shuō),如果你的應(yīng)用當(dāng)中,只有付費(fèi)頁(yè)面和Twitter投遞服務(wù)是需要連接外部互聯(lián)網(wǎng)的,那么就把它們做成工作線程。將這部分工作線程放在特定的設(shè)備中,讓它們只能訪問(wèn)特定的主機(jī)。這可以神不知鬼不覺(jué)地把你的網(wǎng)絡(luò)的其余部分保護(hù)起來(lái)。 ◆對(duì)于PHP站點(diǎn)來(lái)說(shuō),以上這些建議尤其重要,但是在其他地方,它們也可以發(fā)揮作用。如果有人要入侵,那么多半是通過(guò)你的應(yīng)用。即使有人從前門(mén)入侵了系統(tǒng),也要讓他們花費(fèi)很大精力才能進(jìn)入保險(xiǎn)箱。你需要確保的是他們無(wú)法將數(shù)據(jù)帶走或上傳至別的什么服務(wù)器上。 ◆除了這些具體的建議之外,你還應(yīng)該多讀一些資料。自己判斷,自己動(dòng)手測(cè)試。如果你不知道一個(gè)安全模型是如何工作的,一時(shí)半會(huì)兒可能問(wèn)題不大,但是這就會(huì)導(dǎo)致你不知道它的限制在哪里,甚至于無(wú)法判斷它是否在工作。 ◆基于測(cè)試,理論,攻擊樹(shù)的安全機(jī)制是不會(huì)在背后給你一刀的。當(dāng)人們構(gòu)想出模糊的安全模型的時(shí)候我也很喜歡它,但是像我這樣的普通人都可以把它弄的支離破碎。 ◆盡可能地進(jìn)行巡查!登錄,退出,以及使用的命令都要進(jìn)行審查。對(duì)面向外部服務(wù)的所有訪問(wèn),包括所有在請(qǐng)求中指定的參數(shù),都要進(jìn)行審查。對(duì)于你的應(yīng)用程序來(lái)說(shuō),找出極值,然后徹底禁止輸入超出范圍的值。做你能做的所有事情,讓數(shù)據(jù)以可追溯的方式工作。 ◆如果你懷疑某些東西可能會(huì)被破壞,應(yīng)該采取適當(dāng)?shù)念A(yù)防措施,最好懂得一點(diǎn)計(jì)算機(jī)取證方面的知識(shí)(或者聘請(qǐng)一個(gè)專門(mén)從事這項(xiàng)業(yè)務(wù)的公司)。通過(guò)移除可疑的網(wǎng)絡(luò)訪問(wèn)來(lái)做出響應(yīng),通過(guò)一系列的控制臺(tái)或直接通過(guò)終端來(lái)檢查整個(gè)系統(tǒng)。在已經(jīng)被破壞的機(jī)器上,避免使用任何的服務(wù),配置文件,或數(shù)據(jù)。很多人都是 “清除了一個(gè)木馬”,但是不知道它是怎么進(jìn)來(lái)的——這樣并不算真正地清除了這個(gè)木馬。 ◆如果你有安全團(tuán)隊(duì),取證專家,或其他人手,那么你盡量不要接觸那臺(tái)機(jī)器,把它隔離起來(lái)。這意味著不要重新啟動(dòng)它來(lái)“清除一些奇怪的進(jìn)程”。他們需要這些證據(jù)。如果你必須這么做,就去做吧,但是要記得把系統(tǒng)徹底地清理干凈,打上所有的安全更新,盡量搞清楚他們是否已經(jīng)破壞了重要的數(shù)據(jù)。做你能做的所有事情。 ◆安全實(shí)際上是一種權(quán)衡。如果你做錯(cuò)了,開(kāi)發(fā)者和用戶們都會(huì)“揭竿而起”:他們會(huì)找到一些方法來(lái)繞過(guò)安全機(jī)制。如果他們可以繞過(guò)它,那說(shuō)明你的工作并沒(méi)有做好。如果他們不能繞過(guò)它,那么他們也許會(huì)放棄,然后離開(kāi)。 ◆緊抓訪問(wèn)控制。這意味著運(yùn)維人員必須要為已經(jīng)鎖上門(mén)的“房間”提供一些窗戶。不讓開(kāi)發(fā)人員進(jìn)入生產(chǎn)環(huán)境,意味著他們必須抹黑解決難題。你的確不能讓開(kāi)發(fā)者們直接對(duì)服務(wù)進(jìn)行修改,但是你可以提供日志工具和調(diào)試工具等等。對(duì)于各種產(chǎn)品來(lái)說(shuō),這些都是成功的秘訣。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |