1. 程式人生 > >運維 如何選擇最合適的伺服器方案(一):伺服器硬體配置

運維 如何選擇最合適的伺服器方案(一):伺服器硬體配置

我們拋開 租用伺服器還是自行購買伺服器進行託管的問題,在這篇文章裡,我們討論的是無論租用或託管都要面臨的一個問題,那就是選擇伺服器的硬體配置。因為上帝不會給你一臺伺服器來滿足所有需求,解決所有的問題。尤其是我們身處在這樣一個飛速變化的時代,當你還在為最新款最強勁的CPU乍舌不已的時候,Intel、AMD卻已經在密謀下一次洗劫你錢包的時機了,其實,他們早已經將未來10年的CPU演進道路設計妥當,布好一個又一個的坑在等著你跳進去,簡直就像陰謀一般。沒錯,這一切就是陰謀!

不成功的伺服器選擇會給企業帶來很多運營問題:如果不經認真仔細的評估,輕率的選擇一臺效能超級強勁讓你高枕無憂但價格昂貴的伺服器,毫無疑問會帶來成本上的極大浪費;但如果一味為了省錢,而選擇一臺很容易成為計算瓶頸,或沒有充分考慮冗餘措施的伺服器,就會極大影響業務的執行,客戶投訴網站速度超慢,硬碟出現故障導致資料丟失,因為這些,你從此沒有了美好的睡眠,每日提心吊膽,更要命的是,公司因此丟失了幾十萬元的訂單。

你需要從不同的角度來決定選擇一臺什麼樣的伺服器,找到滿足技術需要、業務發展和成本控制之間的最佳平衡點,為了做到這一點,絕對還是需要一點智慧。51IDC將在下面為大家介紹一些易於理解,儘可能全面的建議,並幫助你做出決定。

先不要急於決定需要怎樣的CPU,幾個硬碟,幾個G記憶體,需要多少兆頻寬這樣的問題,那些是我們最後需要得到的答案。在這之前,先一起梳理幾個問題。在下面,我們列出了一些“多少”或“什麼樣”的問題,拿起你的筆或在Windows記事本里新建一個檔案,嘗試根據下面四個問題來評估自己的需求:

伺服器執行什麼應用?

需要支援多少使用者訪問?

需要多大空間來儲存資料?

我的業務有多重要?

1 伺服器執行什麼應用?這是首先需要考慮的問題,在這裡你要根據伺服器的應用型別,也就是用途,來決定伺服器的效能、容量和可靠性需求。我們按照前端伺服器+應用程式伺服器+資料伺服器的常見基礎架構來討論:

1.1 Web前端:正常情況下,我們認為大多數Web前端伺服器(Front-end)對伺服器的要求不大,例如靜態Web伺服器、動態Web伺服器、圖片伺服器等等,因為在現有的技術框架中,我們有很多方案可以解決前端伺服器的效能擴充套件和可靠性問題,例如LVS、Nginx反向代理、硬體負載均衡(F5,A10,Radware)等。甚至在很多訪問量不高(幾百個使用者同時線上)的應用中,51IDC的經典酷睿伺服器就可以滿足需求。

1.2應用伺服器:由於承擔了計算和功能實現,我們需要為基於Web架構的應用程式伺服器(Application Server)選擇足夠快的伺服器,另外應用程式伺服器可能需要用大量的記憶體,尤其是基於Windows基礎架構的Ruby,Python,Java伺服器。這一類伺服器至少需要使用單路至強的配置。對於可靠性的問題,如果你的架構中只有一臺應用伺服器,那肯定需要這臺伺服器足夠可靠,RAID絕對是不能忽視的選項。但如果有兩臺或更多的應用伺服器,並設計了負載均衡機制,具有冗餘功能,那我們則不必將每臺伺服器武裝到底。

1.3 特殊的應用:除了作為Web架構中的應用程式伺服器之外,如果你的伺服器是用來處理流媒體視訊編碼、伺服器虛擬化、媒體伺服器(Asterisk之類),或者作為遊戲伺服器(邏輯、地圖、聊天)執行,則同樣對CPU和記憶體需求比較高,我們至少要考慮單路至強的伺服器。其中伺服器虛擬化對儲存的可靠性的要求都非常高,因為一個籃子裡有十幾個雞蛋,籃子一定要足夠牢靠才是。

1.4公共服務:我們指的是郵件伺服器、檔案伺服器、DNS伺服器、域控伺服器這類伺服器。通常情況我們會部署兩臺DNS伺服器作為互相備份,域控主伺服器也會擁有一臺備份伺服器(專用的或非專用的),所以對於可靠性,無需達到苛刻的地步。至於郵件伺服器,至少需要具備足夠的硬體可靠性和容量大小,這主要是為了對郵件資料負責,因為很多使用者沒有儲存和歸檔郵件資料的習慣,當他們重灌系統後,總會依賴重新下載伺服器上的資料。至於效能問題,我們認為需要評估使用者數量才能決定。

1.5資料庫:我們最後討論的應用,也是要求最高,最重要的伺服器。無論你使用的是MySQL、SQLServer還是Oralce,一般情況下,我們認為它需要足夠快的CPU,足夠大的記憶體,足夠穩定可靠的硬體。單路至強CPU/4GB記憶體/Raid1絕對是入門配置。關於準確的配置我們需要再討論業務需求後才能作決定。

2 伺服器需要支援多少使用者訪問?伺服器肯定是為了提供某種服務,而使用這些服務的使用者同樣是我們必須考慮的因素,有幾個具體的問題你需要做出評估:

有多少註冊使用者?正常情況下有多少使用者會同時線上訪問?每天同時線上訪問的最高峰值大概是多少?

這些問題,對我們決定採用什麼樣的CPU,多大的記憶體有著至關重要的影響。51IDC建議你的技術人員和業務部門坐在一起來討論這幾個問題,最後甚至需要按照特定的技術模型和演算法,將這些數字轉化為一些更具體的技術數字,例如併發多少個連線(很多時候,使用者數與連線數不是一個概念)。同時,你還要對未來的使用者增長做一個儘可能準確的預測和規劃,你的伺服器需要支援越來越多的使用者。

3需要多大空間來儲存資料?我們需要從兩個角度來計算這個問題,一個角度是有哪些類別的資料,包括:作業系統本身佔用的空間、安裝應用程式所需要的空間、應用程式所產生的資料、資料庫、日誌檔案、郵件資料等等,如果是Web2.0類的網站,你還要計算每個使用者的儲存空間;另一個角度是從時間軸來考慮,這些資料每天都在增長,你至少要為未來1年(我們建議2~3年)的資料增長做個準確的測算,這可能仍然需要你的軟體開發人員和業務人員一起提供足夠的資訊。最後你仍然需要為計算出來的數字結果乘1.5左右的係數,方便維護的時候做各種資料備份和檔案轉移操作。

4我的業務有多重要:你需要根據自身的業務領域,來遵循一些要求,我們在下面舉幾個簡單的例子,幫助你理解這些伺服器對可靠性、資料完整性等方面的要求:

4.1 如果你的伺服器用來執行一個WordPress部落格,與朋友們分享觀點。那麼我相信,一臺酷睿伺服器,1G記憶體外加一塊160GB的硬碟就足夠了。就算伺服器出現了一點硬體故障,導致幾個小時甚至一兩天不能提供訪問,生活會照常繼續,天也不會塌下來。

4.2 如果你的伺服器用來作為測試平臺,那麼就不會如生產環境那樣,對可靠性有極高的要求,你所需要的可能只是做好例行的資料備份,伺服器宕機後,能有個人在今天把問題解決掉就OK了

4.3如果你是一個電子商務公司,伺服器正在執行電子商務網站平臺,那麼請一定要像重視女朋友一樣重視伺服器,當硬體發生故障而導致宕機,你需要對以下危言聳聽的後果做好心理準備:投訴電話被打爆、顧客大量流失、顧客要求退款、市場推廣費用打水漂、員工無事可幹,公司運營陷入癱瘓、資料丟失(這是最痛苦最災難的結果,我們經歷了太多這樣的案例,它甚至會導致一個公司就此消亡)

在這裡,我們其實只需要簡單討論你的業務對伺服器硬體可靠性的要求。換言之,如果你覺得業務不能承擔硬碟損壞帶來的停機或資料丟失風險,那麼一定要選擇一個合適的Raid卡,對於冗餘電源問題,道理一樣。(全面解決這個問題,不單考慮單個伺服器的硬體,還需要結合系統架構的規劃設計和運維管理來分析,這部分我們將單獨撰寫文章來討論。)

轉載:http://blog.51cto.com/sopace/1422520

在完成以上問題後,我們接下來就可以決定這些具體選項:

選擇什麼CPU?

回憶一下上面”伺服器執行什麼應用?“和 “需要支援多少使用者訪問?”兩個問題的答案,這將幫助我們來選擇合適的CPU。毫無疑問,CPU的主頻越高,其效能也更高;兩個CPU要比一個CPU來得更爽,至強肯定比酷睿更生猛。但我們究竟需要選擇怎樣的CPU?我們在這裡為你提供一些常見情況下的建議:

1 如果你的業務剛剛起步,預算不是很充足,建議你選擇一款經典酷睿伺服器,畢竟51IDC的E5300伺服器最便宜只需要450塊錢一個月。而且,以後你可以根據業務發展情況,隨時升級到更高配置的伺服器。

2 如果你需要在一臺伺服器同時執行多種應用服務,例如.Net+Exchange+SQLServer,那麼一個單路至強(例如X3330)或新一代酷睿I3/I7(雙核四執行緒)將是最佳的選擇。雖然從技術角度,這不是一個好主意,但至少能夠幫你節約一大筆成本。

3如果你的伺服器執行SQLServer、MySQL或者Oracle,而且目前有幾百個使用者同時線上,未來還會不斷增長,那麼你至少應該選擇安裝一個E5504(或更高主頻)的至強伺服器。當半年後負載越來越大的時候,可以選擇增加一個CPU。

4 如果你需要一臺遊戲伺服器,那麼我們建議你選擇一臺單路或雙路的至強伺服器。

5需要注意的是,使用雙路CPU需要應用程式的支援,如果應用程式本身沒有對雙路CPU進行程式碼優化,就不會帶來效能的顯著提升,而且將造成投資的極大浪費。

需要多大的記憶體?

同樣,”伺服器執行什麼應用?“和 “需要支援多少使用者訪問?”兩個問題的答案,也將幫助我們來選擇合適的記憶體容量。相比於CPU,我們更認為記憶體(RAM)是影響效能的最關鍵因素。因為在相當多正在執行的伺服器中,我們發現CPU利用率一般都在10%~30%之間,甚至更低。但我們發現由於記憶體容量不夠而導致伺服器執行緩慢的案例比比皆是,如果伺服器不能分配足夠的記憶體給應用程式,應用程式就需要通過緩慢的硬碟介面來交換讀寫資料,這將導致網站慢的令人無法接受。記憶體大小主要取決於伺服器的使用者數量,當然也和應用軟體對記憶體的最低需求和記憶體管理機制有關係,所以,最好由你的程式設計師或軟體開發商給你最佳的記憶體配置建議。我們同樣在下面給出了一些常見應用環境下的記憶體配置建議:

1無論是Windows下的IIS還是Linux下的Apache,一般情況下Web前端伺服器不需要配置特別高的記憶體,尤其是在叢集架構中,1GB-2GB就已足夠。只有當幾千個併發使用者,並執行動態指令碼的時候,我們才會考慮使用4GB或更高的記憶體。

2對於執行Tomcat、Resin、WebLogic、Websphere或.Net這樣的應用伺服器,2GB記憶體應該是基準配置。更準確數字需要根據使用者數量和技術架構來確定。

3 資料庫伺服器的記憶體由資料庫例項的數量、表大小、索引、使用者數來決定,一般建議配置4GB以上的記憶體,我們甚至在很多的客戶案例中使用了24GB到48GB的記憶體。

4諸如Imail、Notes、Exchange這樣的郵件伺服器對記憶體的要求也並不高,1GB-2GB就可以滿足了。

5對於一臺檔案伺服器,1GB記憶體可能就足夠了。

6還有一些特殊的伺服器,我們需要為之配置儘可能高的記憶體容量,包括Squid,Varnish這樣的快取伺服器,和Memcached Server。

事實上,上面的數字已經足夠慷慨,由於記憶體技術的不斷進化和價格不斷降低,我們才得以近乎奢侈的討論4G、8G、16GB這些曾經不可想象的記憶體容量。早在2000年的時候,我面對的大多數伺服器都是256MB、512MB記憶體,1GB已經算是高配,而那時同樣也需要滿足大量使用者的訪問。所以,除了花錢購買記憶體來滿足應用程式的貪婪之外,系統優化和記憶體管理仍然是我們需要重視的問題。

需要怎樣的硬碟儲存系統?

硬碟儲存系統的選擇和配置是整個伺服器系統裡最為複雜的一部分,我們需要考慮硬碟的數量、容量、介面型別、轉速、快取大小,以及是否需要Raid卡,Raid卡的型號和Raid級別等問題。甚至在一些高可靠性高效能的應用環境中,我們還需要考慮使用怎樣的外部儲存系統(SAN、NAS或DAS)。下面的圖表可以幫助我們順利地決定硬碟系統的相關問題。



網絡卡的問題

如果你的基礎架構是多伺服器環境,而且伺服器之間有大量的資料交換,那麼我們建議你為每臺伺服器配置兩個或更多的網絡卡,一個用來對外提供服務,另一個用來做內部資料交換。如果你對安全的要求特別高,我們甚至可以單獨安裝一個用於系統管理和日常維護的網絡卡。

至於網絡卡埠的速率問題,這主要取決於你對頻寬流量的評估。大多數情況下,百兆網絡卡足夠用來對外提供服務,而內部資料交換建議使用千兆網絡卡。但話說回來,除了經典酷睿伺服器之外,我們現在很難找到百兆介面的伺服器主機板了。

還有一種情況需要注意,如果你選擇51IDC的資料備份服務(Managed Backup Service),則需要一塊單獨的網絡卡連線到專有的資料備份網路中,進行每天的資料備份,這會帶來幾個好處:不會佔用寶貴的外網頻寬、保證資料傳輸的安全、提供快速的資料備份速度。