不成功的服務器選擇會(huì)給企業帶來(lái)很(hěn)多運營問題:如果不經認真仔細的評估,輕率的選擇一台性能(néng)超級強勁讓你(nǐ)高(gāo)枕無憂但(dàn)價格昂貴的服務器,毫無疑問會(huì)帶來(lái)成本上(shàng)的極大(dà)浪費;但(dàn)如果一味爲了(le)省錢(qián),而選擇一台很(hěn)容易成爲計(jì)算(suàn)瓶頸,或沒有充分考慮冗餘措施的服務器,就會(huì)極大(dà)影...
你(nǐ)需要從(cóng)不同的角度來(lái)決定選擇一台什(shén)麽樣的服務器,找到(dào)滿足技術需要、業務發展和(hé)成本控制之間的最佳平衡點,爲了(le)做到(dào)這(zhè)一點,絕對(duì)還是需要一點智慧。我們将在下(xià)面爲大(dà)家介紹一些(xiē)易于理(lǐ)解,盡可能(néng)全面的建議(yì),并幫助你(nǐ)做出決定。
先不要急于決定需要怎樣的CPU,幾個硬盤,幾個G内存,需要多少兆帶寬這(zhè)樣的問題,那些(xiē)是我們最後需要得到(dào)的答(dá)案。在這(zhè)之前,先一起梳理(lǐ)幾個問題。在下(xià)面,我們列出了(le)一些(xiē)“多少”或“什(shén)麽樣”的問題,拿起你(nǐ)的筆(bǐ)或在Windows記事(shì)本裏新建一個文(wén)件,嘗試根據下(xià)面四個問題來(lái)評估自(zì)己的需求:
● 服務器運行什(shén)麽應用(yòng)?
● 需要支持多少用(yòng)戶訪問?
● 需要多大(dà)空(kōng)間來(lái)存儲數據?
● 我的業務有多重要?
1,服務器運行什(shén)麽應用(yòng)?這(zhè)是首先需要考慮的問題,在這(zhè)裏你(nǐ)要根據服務器的應用(yòng)類型,也(yě)就是用(yòng)途,來(lái)決定服務器的性能(néng)、容量和(hé)可靠性需求。我們按照前端服務器+應用(yòng)程序服務器+數據服務器的常見基礎架構來(lái)讨論:
1.1 Web前端:正常情況下(xià),我們認爲大(dà)多數Web前端服務器(Front-end)對(duì)服務器的要求不大(dà),例如靜态Web服務器、動态Web服務器、圖片服務器等等,因爲在現(xiàn)有的技術框架中,我們有很(hěn)多方案可以解決前端服務器的性能(néng)擴展和(hé)可靠性問題,例如LVS、Nginx反向代理(lǐ)、硬件負載均衡(F5,A10,Radware)等。
1.2 應用(yòng)服務器:由于承擔了(le)計(jì)算(suàn)和(hé)功能(néng)實現(xiàn),我們需要爲基于Web架構的應用(yòng)程序服務器(Application Server)選擇足夠快(kuài)的服務器,另外(wài)應用(yòng)程序服務器可能(néng)需要用(yòng)大(dà)量的内存,尤其是基于Windows基礎架構的Ruby,Python,Java服務器。這(zhè)一類服務器至少需要使用(yòng)單路至強的配置。對(duì)于可靠性的問題,如果你(nǐ)的架構中隻有一台應用(yòng)服務器,那肯定需要這(zhè)台服務器足夠可靠,RAID絕對(duì)是不能(néng)忽視(shì)的選項。但(dàn)如果有兩台或更多的應用(yòng)服務器,并設計(jì)了(le)負載均衡機制,具有冗餘功能(néng),那我們則不必将每台服務器武裝到(dào)底。
1.3 特殊的應用(yòng):除了(le)作(zuò)爲Web架構中的應用(yòng)程序服務器之外(wài),如果你(nǐ)的服務器是用(yòng)來(lái)處理(lǐ)流媒體視(shì)頻編碼、服務器虛拟化、媒體服務器(Asterisk之類),或者作(zuò)爲遊戲服務器(邏輯、地圖、聊天)運行,則同樣對(duì)CPU和(hé)内存需求比較高(gāo),我們至少要考慮單路至強的服務器。其中服務器虛拟化對(duì)存儲的可靠性的要求都非常高(gāo),因爲一個籃子裏有十幾個雞蛋,籃子一定要足夠牢靠才是。
1.4公共服務:我們指的是郵件服務器、文(wén)件服務器、DNS服務器、域控服務器這(zhè)類服務器。通常情況我們會(huì)部署兩台DNS服務器作(zuò)爲互相備份,域控主服務器也(yě)會(huì)擁有一台備份服務器(專用(yòng)的或非專用(yòng)的),所以對(duì)于可靠性,無需達到(dào)苛刻的地步。至于郵件服務器,至少需要具備足夠的硬件可靠性和(hé)容量大(dà)小(xiǎo),這(zhè)主要是爲了(le)對(duì)郵件數據負責,因爲很(hěn)多用(yòng)戶沒有保存和(hé)歸檔郵件數據的習慣,當他(tā)們重裝系統後,總會(huì)依賴重新下(xià)載服務器上(shàng)的數據。至于性能(néng)問題,我們認爲需要評估用(yòng)戶數量才能(néng)決定。
1.5數據庫:我們最後讨論的應用(yòng),也(yě)是要求最高(gāo),最重要的服務器。無論你(nǐ)使用(yòng)的是MySQL、SQLServer還是Oralce,一般情況下(xià),我們認爲它需要足夠快(kuài)的CPU,足夠大(dà)的内存,足夠穩定可靠的硬件。單路至強CPU/4GB内存/Raid1絕對(duì)是入門(mén)配置。關于準确的配置我們需要再讨論業務需求後才能(néng)作(zuò)決定。
2 ,服務器需要支持多少用(yòng)戶訪問?服務器肯定是爲了(le)提供某種服務,而使用(yòng)這(zhè)些(xiē)服務的用(yòng)戶同樣是我們必須考慮的因素,有幾個具體的問題你(nǐ)需要做出評估:
有多少注冊用(yòng)戶?正常情況下(xià)有多少用(yòng)戶會(huì)同時(shí)在線訪問?每天同時(shí)在線訪問的最高(gāo)峰值大(dà)概是多少?
這(zhè)些(xiē)問題,對(duì)我們決定采用(yòng)什(shén)麽樣的CPU,多大(dà)的内存有着至關重要的影響。建議(yì)你(nǐ)的技術人員和(hé)業務部門(mén)坐(zuò)在一起來(lái)讨論這(zhè)幾個問題,最後甚至需要按照特定的技術模型和(hé)算(suàn)法,将這(zhè)些(xiē)數字轉化爲一些(xiē)更具體的技術數字,例如并發多少個連接(很(hěn)多時(shí)候,用(yòng)戶數與連接數不是一個概念)。同時(shí),你(nǐ)還要對(duì)未來(lái)的用(yòng)戶增長做一個盡可能(néng)準确的預測和(hé)規劃,你(nǐ)的服務器需要支持越來(lái)越多的用(yòng)戶。
3,需要多大(dà)空(kōng)間來(lái)存儲數據?我們需要從(cóng)兩個角度來(lái)計(jì)算(suàn)這(zhè)個問題,一個角度是有哪些(xiē)類别的數據,包括:操作(zuò)系統本身占用(yòng)的空(kōng)間、安裝應用(yòng)程序所需要的空(kōng)間、應用(yòng)程序所産生的數據、數據庫、日志文(wén)件、郵件數據等等,如果是Web2.0類的網站(zhàn),你(nǐ)還要計(jì)算(suàn)每個用(yòng)戶的存儲空(kōng)間;另一個角度是從(cóng)時(shí)間軸來(lái)考慮,這(zhè)些(xiē)數據每天都在增長,你(nǐ)至少要爲未來(lái)1年(我們建議(yì)2~3年)的數據增長做個準确的測算(suàn),這(zhè)可能(néng)仍然需要你(nǐ)的軟件開(kāi)發人員和(hé)業務人員一起提供足夠的信息。最後你(nǐ)仍然需要爲計(jì)算(suàn)出來(lái)的數字結果乘1.5左右的系數,方便維護的時(shí)候做各種數據備份和(hé)文(wén)件轉移操作(zuò)。
4,我的業務有多重要:你(nǐ)需要根據自(zì)身的業務領域,來(lái)遵循一些(xiē)要求,我們在下(xià)面舉幾個簡單的例子,幫助你(nǐ)理(lǐ)解這(zhè)些(xiē)服務器對(duì)可靠性、數據完整性等方面的要求:
4.1 如果你(nǐ)的服務器用(yòng)來(lái)運行一個WordPress博客,與朋友們分享觀點。那麽我相信,一台酷睿服務器,1G内存外(wài)加一塊160GB的硬盤就足夠了(le)。就算(suàn)服務器出現(xiàn)了(le)一點硬件故障,導緻幾個小(xiǎo)時(shí)甚至一兩天不能(néng)提供訪問,生活會(huì)照常繼續,天也(yě)不會(huì)塌下(xià)來(lái)。
4.2 如果你(nǐ)的服務器用(yòng)來(lái)作(zuò)爲測試平台,那麽就不會(huì)如生産環境那樣,對(duì)可靠性有極高(gāo)的要求,你(nǐ)所需要的可能(néng)隻是做好(hǎo)例行的數據備份,服務器宕機後,能(néng)有個人在今天把問題解決掉就OK了(le)
4.3如果你(nǐ)是一個電子商務公司,服務器正在運行電子商務網站(zhàn)平台,那麽請(qǐng)一定要像重視(shì)女朋友一樣重視(shì)服務器,當硬件發生故障而導緻宕機,你(nǐ)需要對(duì)以下(xià)危言聳聽的後果做好(hǎo)心理(lǐ)準備:投訴電話(huà)被打爆、顧客大(dà)量流失、顧客要求退款、市場推廣費用(yòng)打水(shuǐ)漂、員工(gōng)無事(shì)可幹,公司運營陷入癱瘓、數據丢失(這(zhè)是最痛苦最災難的結果,我們經曆了(le)太多這(zhè)樣的案例,它甚至會(huì)導緻一個公司就此消亡)
在這(zhè)裏,我們其實隻需要簡單讨論你(nǐ)的業務對(duì)服務器硬件可靠性的要求。換言之,如果你(nǐ)覺得業務不能(néng)承擔硬盤損壞帶來(lái)的停機或數據丢失風(fēng)險,那麽一定要選擇一個合适的Raid卡,對(duì)于冗餘電源問題,道(dào)理(lǐ)一樣。(全面解決這(zhè)個問題,不單考慮單個服務器的硬件,還需要結合系統架構的規劃設計(jì)和(hé)運維管理(lǐ)來(lái)分析,這(zhè)部分我們将單獨撰寫文(wén)章來(lái)讨論。)
在完成以上(shàng)問題後,我們接下(xià)來(lái)就可以決定這(zhè)些(xiē)具體選項:
選擇什(shén)麽CPU?
回憶一下(xià)上(shàng)面”服務器運行什(shén)麽應用(yòng)?“和(hé) “需要支持多少用(yòng)戶訪問?”兩個問題的答(dá)案,這(zhè)将幫助我們來(lái)選擇合 适的CPU。毫無疑問,CPU的主頻越高(gāo),其性能(néng)也(yě)更高(gāo);兩個CPU要比一個CPU來(lái)得更爽,至強肯定比酷睿更生 猛。但(dàn)我們究竟需要選擇怎樣的CPU?我們在這(zhè)裏爲你(nǐ)提供一些(xiē)常見情況下(xià)的建議(yì):
1)如果你(nǐ)的業務剛剛起步,預算(suàn)不是很(hěn)充足,建議(yì)你(nǐ)選擇一款經典酷睿服務器,畢竟51IDC的E5300服務器最便宜隻需要450塊錢(qián)一個月。而且,以後你(nǐ)可以根據業務發展情況,随時(shí)升級到(dào)更高(gāo)配置的服務器。
2 )如果你(nǐ)需要在一台服務器同時(shí)運行多種應用(yòng)服務,例如.Net+Exchange+SQLServer,那麽一個單路至強(例如X3330)或新一代酷睿I3/I7(雙核四線程)将是最佳的選擇。雖然從(cóng)技術角度,這(zhè)不是一個好(hǎo)主意,但(dàn)至少能(néng)夠幫你(nǐ)節約一大(dà)筆(bǐ)成本。
3)如果你(nǐ)的服務器運行SQLServer、MySQL或者Oracle,而且目前有幾百個用(yòng)戶同時(shí)在線,未來(lái)還會(huì)不斷增長,那麽你(nǐ)至少應該選擇安裝一個E5504(或更高(gāo)主頻)的至強服務器。當半年後負載越來(lái)越大(dà)的時(shí)候,可以選擇增加一個CPU。
4)如果你(nǐ)需要一台遊戲服務器,那麽我們建議(yì)你(nǐ)選擇一台單路或雙路的至強服務器。
5)需要注意的是,使用(yòng)雙路CPU需要應用(yòng)程序的支持,如果應用(yòng)程序本身沒有對(duì)雙路CPU進行代碼優化,就不會(huì)帶來(lái)性能(néng)的顯著提升,而且将造成投資的極大(dà)浪費。
需要多大(dà)的内存?
同樣,”服務器運行什(shén)麽應用(yòng)?“和(hé) “需要支持多少用(yòng)戶訪問?”兩個問題的答(dá)案,也(yě)将幫助我們來(lái)選擇合适的内存容量。相比于CPU,我們更認爲内存(RAM)是影響性能(néng)的最關鍵因素。因爲在相當多正在運行的服務器中,我們發現(xiàn)CPU利用(yòng)率一般都在10%~30%之間,甚至更低(dī)。但(dàn)我們發現(xiàn)由于内存容量不夠而導緻服務器運行緩慢的案例比比皆是,如果服務器不能(néng)分配足夠的内存給應用(yòng)程序,應用(yòng)程序就需要通過緩慢的硬盤接口來(lái)交換讀寫數據,這(zhè)将導緻網站(zhàn)慢的令人無法接受。内存大(dà)小(xiǎo)主要取決于服務器的用(yòng)戶數量,當然也(yě)和(hé)應用(yòng)軟件對(duì)内存的最低(dī)需求和(hé)内存管理(lǐ)機制有關系,所以,最好(hǎo)由你(nǐ)的程序員或軟件開(kāi)發商給你(nǐ)最佳的内存配置建議(yì)。我們同樣在下(xià)面給出了(le)一些(xiē)常見應用(yòng)環境下(xià)的内存配置建議(yì):
1)無論是Windows下(xià)的IIS還是Linux下(xià)的Apache,一般情況下(xià)Web前端服務器不需要配置特别高(gāo)的内存,尤其是在集群架構中,1GB-2GB就已足夠。隻有當幾千個并發用(yòng)戶,并運行動态腳本的時(shí)候,我們才會(huì)考慮使用(yòng)4GB或更高(gāo)的内存。
2)對(duì)于運行Tomcat、Resin、WebLogic、Websphere或.Net這(zhè)樣的應用(yòng)服務器,2GB内存應該是基準配置。更準确數字需要根據用(yòng)戶數量和(hé)技術架構來(lái)确定。
3) 數據庫服務器的内存由數據庫實例的數量、表大(dà)小(xiǎo)、索引、用(yòng)戶數來(lái)決定,一般建議(yì)配置4GB以上(shàng)的内存,我們甚至在很(hěn)多的客戶案例中使用(yòng)了(le)24GB到(dào)48GB的内存。
4)諸如Imail、Notes、Exchange這(zhè)樣的郵件服務器對(duì)内存的要求也(yě)并不高(gāo),1GB-2GB就可以滿足了(le)。
5)對(duì)于一台文(wén)件服務器,1GB内存可能(néng)就足夠了(le)。
6)還有一些(xiē)特殊的服務器,我們需要爲之配置盡可能(néng)高(gāo)的内存容量,包括Squid,Varnish這(zhè)樣的緩存服務器,和(hé)Memcached Server。
事(shì)實上(shàng),上(shàng)面的數字已經足夠慷慨,由于内存技術的不斷進化和(hé)價格不斷降低(dī),我們才得以近乎奢侈的讨論4G、8G、16GB這(zhè)些(xiē)曾經不可想象的内存容量。早在2000年的時(shí)候,我面對(duì)的大(dà)多數服務器都是256MB、512MB内存,1GB已經算(suàn)是高(gāo)配,而那時(shí)同樣也(yě)需要滿足大(dà)量用(yòng)戶的訪問。所以,除了(le)花(huā)錢(qián)購買内存來(lái)滿足應用(yòng)程序的貪婪之外(wài),系統優化和(hé)内存管理(lǐ)仍然是我們需要重視(shì)的問題。
需要怎樣的硬盤存儲系統?
硬盤存儲系統的選擇和(hé)配置是整個服務器系統裏最爲複雜(zá)的一部分,我們需要考慮硬盤的數量、容量、接口類型、轉速、緩存大(dà)小(xiǎo),以及是否需要Raid卡,Raid卡的型号和(hé)Raid級别等問題。甚至在一些(xiē)高(gāo)可靠性高(gāo)性能(néng)的應用(yòng)環境中,我們還需要考慮使用(yòng)怎樣的外(wài)部存儲系統(SAN、NAS或DAS)。
網卡的問題
如果你(nǐ)的基礎架構是多服務器環境,而且服務器之間有大(dà)量的數據交換,那麽我們建議(yì)你(nǐ)爲每台服務器配置兩個或更多的網卡,一個用(yòng)來(lái)對(duì)外(wài)提供服務,另一個用(yòng)來(lái)做内部數據交換。如果你(nǐ)對(duì)安全的要求特别高(gāo),我們甚至可以單獨安裝一個用(yòng)于系統管理(lǐ)和(hé)日常維護的網卡。
至于網卡端口的速率問題,這(zhè)主要取決于你(nǐ)對(duì)帶寬流量的評估。大(dà)多數情況下(xià),百兆網卡足夠用(yòng)來(lái)對(duì)外(wài)提供服務,而内部數據交換建議(yì)使用(yòng)千兆網卡。但(dàn)話(huà)說回來(lái),除了(le)經典酷睿服務器之外(wài),我們現(xiàn)在很(hěn)難找到(dào)百兆接口的服務器主闆了(le)。
還有一種情況需要注意,某些(xiē)數據備份服務(Managed Backup Service),則需要一塊單獨的網卡連接到(dào)專有的數據備份網絡中,進行每天的數據備份,這(zhè)會(huì)帶來(lái)幾個好(hǎo)處:不會(huì)占用(yòng)寶貴的外(wài)網帶寬、保證數據傳輸的安全、提供快(kuài)速的數據備份速度。
我們非常希望這(zhè)篇文(wén)章能(néng)夠幫助你(nǐ)爲服務器選擇合适的硬件配置,如果你(nǐ)閱讀後發現(xiàn)有不正确的地方,請(qǐng)在評論中指出來(lái),我們會(huì)及時(shí)更新并感謝(xiè)你(nǐ)的熱情指正。