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