分享Windows系統(tǒng)運維秘訣
Windows系統(tǒng)是一款由美國微軟公司開發(fā)的窗口化操作系統(tǒng)。采用了GUI圖形化操作模式,比起從前的指令操作系統(tǒng)如DOS更為人性化。Windows操作系統(tǒng)是目前世界上使用最廣泛的操作系統(tǒng)。而Windows系統(tǒng)的運維又是怎樣的呢?本文章將為大家介紹Windows系統(tǒng)運維秘訣?! ?/P>
Google的秘訣是正確的——“為變化而設(shè)計”?!白兓本褪遣坏貌徊渴鹦碌能浖?,升級現(xiàn)有的軟件,進(jìn)行擴展,設(shè)備損壞,以及人員流動等。
每一件事情都是在尋找平衡點。你也許會認(rèn)為把你的系統(tǒng)和某個操作系統(tǒng)或某個Linux發(fā)行版牢牢地綁定在一起是一個好主意,但事實上這跟把它們完全隔離一樣糟。如果實在有必要,你可以進(jìn)行分層,并使用一點間接性。
這并不意味著你的系統(tǒng)必須是平臺無關(guān)的。其實我們的目的很簡單:一變二,二變二十,一個系統(tǒng)必須可以應(yīng)對各種突發(fā)事件。也就是說,如果一個系統(tǒng)管理員被公共汽車撞了,你有應(yīng)對的方案!如果掛載的硬盤出現(xiàn)故障了,你有應(yīng)對的方案!如果某些人運行了rm -rf /,你也有應(yīng)對的方案!增量的進(jìn)行變更。記得安全更新,以及保持內(nèi)容更新。
使用自動的,可重復(fù)的構(gòu)建過程
不要手動構(gòu)建任何東西。如果你一定需要手動構(gòu)建,那么就做兩遍,在做第二遍的時候把用到所有的命令都提取出來。
下面這一點十分重要:將新硬件上線到生產(chǎn)環(huán)境的過程不應(yīng)該超過15分鐘,而且這個過程必須足夠簡單。否則,當(dāng)一個服務(wù)器出現(xiàn)故障,而沒有人知道如何更換它的時候,你就該倒霉了。
下面這一條是普世真理:這個世界上不存在“一次性”的服務(wù)器構(gòu)建。即使你的服務(wù)器只需要構(gòu)建一次,但只要你構(gòu)建過一次,就一定會有第二次。比如,當(dāng)它損壞的時候,或者你必須進(jìn)行一次重大的升級才能讓它在在接下來的兩年時間里更加穩(wěn)定的時候。
測試,檢查新構(gòu)建好的服務(wù)器。這應(yīng)該是比較容易的,因為你的構(gòu)建過程都是自動化的,對吧!
腳本化的構(gòu)建,意味著從某個Linux發(fā)行版的V3升級到V4應(yīng)該是很快的。安裝
V4,對腳本進(jìn)行測試。如果有問題,參考文檔并修復(fù)它,直到它可以再次正常工作。這最多應(yīng)該是一個星期的工作,而不是一個長達(dá)一年的浩大工程(因為那時,剛剛完成的V5已經(jīng)發(fā)布了!)
使用冗余
容易重新構(gòu)建,并不意味著你可以忽視冗余。跳轉(zhuǎn)盒,郵件服務(wù)器,計費網(wǎng)關(guān),等等。如果其中的一半掛掉了卻并不造成客戶的宕機,生活將會變得更加簡單。
按照以上方針來做的話,當(dāng)某個設(shè)備在凌晨3點出現(xiàn)故障的時候,你可以“以后再處理那個出現(xiàn)故障的設(shè)備!”,把冗余的機器先替換上去。
下面這一條是個聊勝于無的解決方案:Rsync。DRBD也許也不是一個完美的解決方案,但是它可以提供令人稱奇的服務(wù)。(參考閱讀:DRBD筆記,DRBD實例1,DRBD實例2)
使用備份
備份是個嚴(yán)肅的話題。使用硬盤,燒錄磁帶。壓縮它們,移動它們,并行地運行。對每一樣?xùn)|西進(jìn)行備份!
如果你的構(gòu)建過程是自動的,整個過程都可以被備份。如果到目前為止的幾條你都做到了,那么一個真正的“災(zāi)難恢復(fù)”計劃也許并不是那么遙不可及的
監(jiān)控正確的東西
監(jiān)控你能監(jiān)控的所有東西,而且要用正確的方法來進(jìn)行監(jiān)控。如果你的NFS服務(wù)器掛掉了,不要讓你的監(jiān)控工具發(fā)送1000條警報。如果對你的系統(tǒng)來說,超時的警報沒有什么實際意義,那就別讓它發(fā)。要針對各種具體的情況進(jìn)行成功性測試:是的,這個服務(wù)可以進(jìn)行一個新的TCP連接,它甚至可以響應(yīng),但是它還記得它要做什么工作嗎?
如果你有500個Web服務(wù)器,其中一個掛掉了,你可能不必馬上知道這個情況。但是,如果負(fù)載均衡器沒有把這臺機子踢出去,導(dǎo)致錯誤報告出現(xiàn)在了用戶的屏幕上,那么你必須知道這個情況!
有關(guān)數(shù)據(jù)圖形化,歷史數(shù)據(jù)
圖形的作用是讓趨勢可視化。歷史數(shù)據(jù)的作用是讓你對數(shù)據(jù)進(jìn)行精確的分析。不要把這兩者混為一談!對圖形進(jìn)行目測,很容易獲得錯誤的數(shù)值。許多站點都使用rrd類型的系統(tǒng)或其他的數(shù)據(jù)聚合系統(tǒng),此類系統(tǒng)按照時間對數(shù)據(jù)進(jìn)行平均化處理,然后保存在存儲空間中。這不僅僅是難以閱讀的問題:這根本是錯誤的!
如果你要瀏覽數(shù)百張圖才能精確地對一個問題進(jìn)行定位,那真是糟透了。想要找出極值?請使用腳本提取數(shù)據(jù)。
如果你必須使用圖形來解決問題,盡量把各種高級的概念整合到一個單一的頁面中,然后讓這個頁面鏈接到擁有具體信息的子頁面中。如果你在數(shù)據(jù)庫負(fù)載中可以看到一個峰值,你可以點擊這個頁面對那些數(shù)據(jù)庫進(jìn)行概覽,然后找到那一兩臺可疑的機器。基本的理念是盡快地縮小范圍,盡可能的減少猜測。
日志記錄,使用多個數(shù)據(jù)流
無論是獨立工作還是與開發(fā)部門合作,都要把盡可能多的有用的信息記錄到日志中。無論是分析之后再保存,還是直接扔進(jìn)數(shù)據(jù)庫中生成報告,這些都無所謂。信息終歸是有用的。
有用的例子:頁面呈現(xiàn)時間(哪個頁面?哪個設(shè)備?),面向用戶的錯誤,數(shù)據(jù)庫和內(nèi)部服務(wù)錯誤,帶寬使用率等。
建立圖表,報告,并對產(chǎn)生的歷史數(shù)據(jù)進(jìn)行比較。
報告是十分重要的。每周或每天對你的基礎(chǔ)設(shè)施變更進(jìn)行匯總。
數(shù)據(jù)存儲方式,數(shù)據(jù)庫
誠然,數(shù)據(jù)庫運維是一套完整而獨立的知識體系。但是有時,你不能把一切都丟給你的DBA。
擁有多個冗余的數(shù)據(jù)庫會給你帶來很多好處。對于一個龐大的Oracle實例來說,從前,很多運維工作需要好幾個小時的關(guān)機維護(hù)時間;而現(xiàn)在,完全可以在服務(wù)運行的同時進(jìn)行。MySQL和數(shù)據(jù)庫復(fù)制功能是一件奇妙的事情。
和DBA們一起努力,盡量為可能會發(fā)生問題的數(shù)據(jù)庫爭取到最好的硬件。RAID 10,大量的RAM,高速硬盤,乃至于強悍的RAM磁盤和SSD。運維人員對提供商要貨比三家,這樣可以減輕DBA對硬件的恐懼。從長遠(yuǎn)來看,找出哪個品牌的硬件更加優(yōu)秀會節(jié)省大量的資金。
數(shù)據(jù)庫配置一直在改變?,F(xiàn)在出現(xiàn)了HiveDB,MySQL Proxy,DPM這些軟件。我們絕對應(yīng)該對巨大的數(shù)據(jù)集進(jìn)行分割。我們也可以考慮一下像starling和Gearman這樣具有一定創(chuàng)新性的軟件。了解一下這些軟件的用途,同時,了解一下并不是一切東西都要保存在一個數(shù)據(jù)庫中的。
善用你的過濾器!如果這些數(shù)據(jù)很重要,應(yīng)該對它們進(jìn)行備份!單片的NFS服務(wù)器的快照很奇妙,它并不是一個備份!
可以慮一下替代的解決方案。MogileFS現(xiàn)在變得越來越好了(參考閱讀:分布式文件系統(tǒng)試用比較)。實際上,還有其他類似的項目可以免費(或廉價)地維護(hù)大量的存儲文件。類似的系統(tǒng)基本上都是是為youtube.com、archive.org等站點而開發(fā)的。我們最終會讓廉價的NFS過濾器成為標(biāo)準(zhǔn)!
#p#
多一些橫向擴展,少一些縱向擴展
橫向擴展是我們應(yīng)該走的路。應(yīng)該使用常規(guī)的(即:可用的,價格適中的,標(biāo)準(zhǔn)的。而不是特便宜的!)硬件,然后和大家一起努力,確保各方面都可以進(jìn)行橫向擴展。
橫向擴展從兩臺機子開始。另外,進(jìn)行冗余的時候也會涉及到橫向擴展。
盡可能的橫向擴展,但是不要傻乎乎的擴展。在MySQL復(fù)制中有一個經(jīng)典的白癡擴展的例子:使用一個master對很多個slave。所有的slave必須完成全部的寫入,而寫入次數(shù)是與讀取次數(shù)成比例增加的(大多數(shù)應(yīng)用都是這樣)。也就是說,你添加的slave越多,通過添加slave擴展的資源就越少。
留意一下替代的解決方案。按照用戶或區(qū)域?qū)Χ鄠€數(shù)據(jù)庫進(jìn)行劃分,同時避免增加過多的slave。實際上,有許多種方法可以達(dá)到這個目的。
一切都可能擴展!路由器,交換機,負(fù)載均衡器,Web服務(wù)器,數(shù)據(jù)庫,等等。
記得縱向擴展嗎?以前那些邪惡的大型機們有很多核,很多IO板,配備了非常昂貴的存儲設(shè)備。而現(xiàn)在,多核這個概念開始蔓延了。
RAM是廉價的。
將以上兩點合并起來,這意味著你只需要再次合并服務(wù)就可以了。這兒有一個負(fù)載均衡器,那兒有一個Web服務(wù)器……如果一個應(yīng)用程序可以使用許多個CPU(比如apache),那么這是完美的。如果它不能(比如memcached),那么你最終可能會由于離散的服務(wù)太多而浪費掉大量的可用資源。
作業(yè)系統(tǒng)(job systems)也許可以填補這個鴻溝。哪里的核心的越多,哪里的工作線程就越多。
緩存
對于開發(fā)者和系統(tǒng)運維人員來說,緩存可是個好東西,值得大力發(fā)展!的確,它是不可思議的。它是與眾不同的。有時你可能必須要為它做一個權(quán)衡。有效地使用緩存可以讓系統(tǒng)的整體性能提升10倍之多。對于你當(dāng)前的系統(tǒng)來說,這是一個巨大的“放大鏡”,并且,它的成本在總成本中只占很小的一部分。
Memcached。它可以為服務(wù)提供緩存,讓數(shù)據(jù)庫結(jié)構(gòu)非標(biāo)準(zhǔn)化(這可以提升性能!),對squid緩存進(jìn)行優(yōu)化,甚至可以提高操作系統(tǒng)緩存的利用率。
測試它,玩弄它,并打破它。使用緩存會帶來新的問題。要做好準(zhǔn)備。
讓工作異步化
可以使用Starling, Gearman, The Schwartz等工具。作業(yè)系統(tǒng)可以給應(yīng)用程序提供更多的靈活性。工作線程可以一次性地產(chǎn)生出來,也可以是持久的(載入緩存數(shù)據(jù),準(zhǔn)備數(shù)據(jù)等)。它們可以在不同的硬件上,它們的地理位置也可以不同。它們既可以是同步的,也可以是異步的。
維護(hù)這些東西是一個運維人員的問題。使用它們既是開發(fā)者的問題也是運維人員的問題。
當(dāng)用戶點擊“給我所有的朋友發(fā)送郵件”的時候,把這個工作列入計劃,然后馬上說:“OK,已經(jīng)完成了!你的朋友馬上會收到你的郵件!”——通過異步化的方式來處理這個工作。
作業(yè)系統(tǒng)是銜接各個服務(wù)的一個場所。博客投遞-〉IM通知,定期計費-〉收費服務(wù),網(wǎng)關(guān)認(rèn)證等。
容易擴展。在請求進(jìn)入的地方會有一些瓶頸,所有的工作線程必須要做的事情就是“拉”。這個是相對于HTTP中大量推/拉的狀態(tài)而言的。
安全和巡查
一定要安裝安全更新!這十分重要!有很多瘋狂的網(wǎng)絡(luò)專家致力于在盡可能短的時間內(nèi)給你提供這些更新。不要因為你害怕改變而讓他們白白地付出勞動。
安全性也是分層的。明白你能確保什么,以及不能做什么。MySQL有密碼訪問機制,并不意味著可以允許直接通過互聯(lián)網(wǎng)來訪問它。
在SSH上禁用密碼。使用經(jīng)過加密的passphrase密鑰來進(jìn)行身份驗證。遠(yuǎn)程的用戶無法猜出你的私有密鑰。他們必須從你這里才能得到它。把它保管好。做好這點,就沒必要在防火墻中關(guān)閉你的SSH端口了。
搞清楚你的應(yīng)用程序是如何工作的,它具體需要做些什么,并相應(yīng)的進(jìn)行調(diào)整。比如說,如果你的應(yīng)用當(dāng)中,只有付費頁面和Twitter投遞服務(wù)是需要連接外部互聯(lián)網(wǎng)的,那么就把它們做成工作線程。將這部分工作線程放在特定的設(shè)備中,讓它們只能訪問特定的主機。這可以神不知鬼不覺地把你的網(wǎng)絡(luò)的其余部分保護(hù)起來。
對于PHP站點來說,以上這些建議尤其重要,但是在其他地方,它們也可以發(fā)揮作用。如果有人要入侵,那么多半是通過你的應(yīng)用。即使有人從前門入侵了系統(tǒng),也要讓他們花費很大精力才能進(jìn)入保險箱。你需要確保的是他們無法將數(shù)據(jù)帶走或上傳至別的什么服務(wù)器上。
除了這些具體的建議之外,你還應(yīng)該多讀一些資料。自己判斷,自己動手測試。如果你不知道一個安全模型是如何工作的,一時半會兒可能問題不大,但是這就會導(dǎo)致你不知道它的限制在哪里,甚至于無法判斷它是否在工作。
基于測試,理論,攻擊樹的安全機制是不會在背后給你一刀的。當(dāng)人們構(gòu)想出模糊的安全模型的時候我也很喜歡它,但是像我這樣的普通人都可以把它弄的支離破碎。
盡可能地進(jìn)行巡查!登錄,退出,以及使用的命令都要進(jìn)行審查。對面向外部服務(wù)的所有訪問,包括所有在請求中指定的參數(shù),都要進(jìn)行審查。對于你的應(yīng)用程序來說,找出極值,然后徹底禁止輸入超出范圍的值。做你能做的所有事情,讓數(shù)據(jù)以可追溯的方式工作。
如果你懷疑某些東西可能會被破壞,應(yīng)該采取適當(dāng)?shù)念A(yù)防措施,最好懂得一點計算機取證方面的知識(或者聘請一個專門從事這項業(yè)務(wù)的公司)。通過移除可疑的網(wǎng)絡(luò)訪問來做出響應(yīng),通過一系列的控制臺或直接通過終端來檢查整個系統(tǒng)。在已經(jīng)被破壞的機器上,避免使用任何的服務(wù),配置文件,或數(shù)據(jù)。很多人都是“清除了一個木馬”,但是不知道它是怎么進(jìn)來的——這樣并不算真正地清除了這個木馬。
如果你有安全團隊,取證專家,或其他人手,那么你盡量不要接觸那臺機器,把它隔離起來。這意味著不要重新啟動它來“清除一些奇怪的進(jìn)程”。他們需要這些證據(jù)。如果你必須這么做,就去做吧,但是要記得把系統(tǒng)徹底地清理干凈,打上所有的安全更新,盡量搞清楚他們是否已經(jīng)破壞了重要的數(shù)據(jù)。做你能做的所有事情。
安全實際上是一種權(quán)衡。如果你做錯了,開發(fā)者和用戶們都會“揭竿而起”:他們會找到一些方法來繞過安全機制。如果他們可以繞過它,那說明你的工作并沒有做好。如果他們不能繞過它,那么他們也許會放棄,然后離開。
緊抓訪問控制。這意味著運維人員必須要為已經(jīng)鎖上門的“房間”提供一些窗戶。不讓開發(fā)人員進(jìn)入生產(chǎn)環(huán)境,意味著他們必須抹黑解決難題。你的確不能讓開發(fā)者們直接對服務(wù)進(jìn)行修改,但是你可以提供日志工具和調(diào)試工具等等。對于各種產(chǎn)品來說,這些都是成功的秘訣。
以上總結(jié)了幾點Windows系統(tǒng)運維秘訣,掌握了這些大家就能熟練操作Windows系統(tǒng)。并且Windows系統(tǒng)會更好的服務(wù)于你的工作生活中。
【編輯推薦】
- 微軟調(diào)查影響Windows系統(tǒng)內(nèi)核漏洞
- Windows系統(tǒng)編程(原書第4版)
- windows系統(tǒng)下知道DB2端口號的“妙招”
- Windows系統(tǒng)巧用Rundll32卸載的3個小竅門
- 微軟Windows系統(tǒng)的七類安全漏洞