淘寶開放低耗服務器設計規范

openkk 13年前發布 | 20K 次閱讀 淘寶

淘寶的開源項目一直保持著較快的發展,InfoQ 中文站先后介紹過其開源平臺數據存儲系統 Tair文件系統 TFS 等,最近淘寶又推出了“開源綠色計算項目”,將 CDN 所用的低耗服務器的設計規范(設備主板、機箱和電源、測試報告)對外發布,在技術社區中引起了很好的反響。

眾所周知,淘寶的海量數據處理技術一直受到社區關注和追蹤,淘寶的岑文初在剛剛結束的 QCon 杭州2011大會上就做了名為《Web 請求異步處理和海量數據即時分析在淘寶開放平臺的實踐》的演講,參會者互動積極。其實,淘寶的技術領域已經不限于軟件方面,其在硬件方面做了積極的嘗試。最近推出的“開源綠色計算”項目就是很好的例證。從其項目網站上,可以看出數千臺服務器的能源消耗推動淘寶技術團隊尋找在硬件方面的優化措施:

隨著淘寶用戶數和訪問量的增加,網絡上部署的服務器數量也在不斷的增長。為了保障用戶體驗,淘寶在全網部署了幾十個用于加速的 WebCache 節點,服務器的數量達到數千,其每天消耗的電量非常驚人。在整個淘寶網運營成本中,電消耗成本已占了相當比重并逐年增加。因此,節約服務器用電量,已經成為不得不考慮的問題。最直接的方法,就是在滿足性能要求的前提下,采用比傳統服務器省電的低功耗服務器。定制低功耗服務器,就成為降低能耗的主要方案。 

目前市場上的低功耗服務器,與傳統服務器的主要區別,在于采用了低功耗 CPU。低功耗 CPU 在帶來低功耗的同時,也損失了處理速度。因此,消耗 CPU 資源少的應用,是低功耗服務器首要應用場景。從目前淘寶整個服務器體系看,滿足這一要求的是 CDN web cache 服務器。因此,淘寶網的低功耗服務器的定制實踐,始于 Cache 服務器的應用需求。 

傳統的低功耗處理器,其節省功耗的原理,是在原有高性能處理器的基礎上,通過控制處理器在閑時的主頻和耗電,同時簡化亂序處理的邏輯模塊,來減少不必要的消耗。但受限于原有的高性能架構,整體功耗降低效果并不明顯,特別是在 IO 密集型的業務上。而用于靜態內容加速的 CDN web cache 服務器,主要功能正是對靜態的網頁和圖片進行讀寫操作,屬于 IO 密集型業務。因此,針對 IO 密集型業務,我們需要尋找區別于以往傳統的、更低功耗的處理器及其服務器方案。

據淘寶基礎核心軟件研發負責人章文嵩表示,“淘寶的 CDN 服務絕大部分是圖片流量(訪問對象平均大小為18K 字節),有一點靜態數據和視頻流量,還有一點點動態網頁加速的流量。小圖片的離散訪問在 CDN 中最有挑戰的”。在需求的驅動下,淘寶團隊通過英特爾和美超微等廠商針對 CDN 緩存定制了一款綠色低功耗的服務器,并以此發起了“開源綠色計算”項目。該項目的目標除了更低功耗方面的要求外,還包括高 IO、方便運維等方面的要求;當然最重要的還是該項目面向整個行業開源,便于大家共同參與這個項目。

目前,該項目已經發布了定制服務器的設計規范,包括三個部分:

服務器設備主板設計規范——主板的設計目標是高功效、低成本和易維護,許多在傳統服務器主板上消耗額外功率的的特點都將根據應用服務的要求被裁減掉。

服務器機箱和電源設計規范——基于主板低功耗的設計目標機箱可以進行高密度方面的考慮;而在電源設計方面則需要考慮高密度情況下的用電;同時兩種結合起來后需要考慮整體服務器的散熱問題,以保證服務器的穩定性。

服務器測試報告——在完成了整個服務器的主板設計和機箱設計后,原型機的測試是非常有必要的;而這種測試將基于某種應用進行,這樣就涉及到具體服務器軟件和硬件方面的優化配置,以使得服務器在這種配置下得到最高的性能。

下面我們來看看服務器設計規范中提到的一些核心技術。

主板采用嵌入式處理器, Intel® Atom?D525 (Pineview-D) 雙核,1.8GHz (13W) 處理器, 其特點包括:熱設計功耗(TDP)不超過13瓦;在套片上,首先是32KB 的結構性緩存和24KB 的回寫數據(L1)緩存;Intel® 超線程技術,每個核可配置成2個超線程;在套片上還有2個512KB8通道的二級緩存等。系統管理總線是基于 I2C 的操作原則設計的,它提供一條系統控制和電源相關任務管理的總線。一個系統可以用 SMBus 來傳遞和發送來源于外圍設備的消息,而不用單獨設計控制總線,從而減少了管腳的數量。能夠接受消息也保障了未來的可擴展性。為了節省功耗,主板采用低功耗的網絡控制芯片,2塊 Intel 的82574L 以太網控制芯片。采用12V 的電壓,接口設計成可熱插拔的方式;主板通過一個轉接板連接電源和硬盤。在 Intel 最新的處理器上已經采用了最先進的熱處理技術,因此主板采用的 CPU 可以報告絕對的溫度值(華氏/攝氏)。其基本原理是在 CPU 中植入一個主板能夠讀到的獨立溫度信息。在出廠的時候“溫度門限”或者“溫度容忍范圍”都由廠家設置到 CPU 中,它將作為主板在不同 CPU 溫度條件下采取相應操作(例如:增加 CPU 風扇的速度、觸發過熱報警等)的基線。由于 CPU 有不同的溫度容忍范圍,因此目前的 CPU 能夠將熱容忍范圍發送給主板可以給 CPU 帶來更好的熱管理效果。主板設計應該利用上述 CPU 的熱特性,給處理器分配特定熱條件下的溫度狀態(低、中、高)。這樣可以讓用戶很容易理解 CPU 的溫度狀態,而不是簡單的只顯示溫度的數值(如25℃)。在 BIOS 中設置風扇全速運行可以讓板上的風扇運行在全速(以100%寬度脈沖寬度調制占空比)以提供最好的散熱。全速設置推薦在特殊系統配置或者調試時使用。選擇面向性能的選項,板上的風扇將以70%的初始脈沖寬度調制周期來運行,這樣也可以帶來比較好的散熱效果。面向性能的選項建議在高功耗和高密度的系統中使用。如果選擇平衡的選項,風扇將以50%的初始脈沖寬度調制周期來運行,目的是考慮在散熱和功耗間的平衡。平衡模式選項建議在一般配置的系統中使用。還有一種模式就是節能模式,該模式將以30%的初始脈沖寬度調制周期來運行,這樣可以帶來最好的功效和最大的靜音效果。

機箱采用熱浸鍍鋅板材料,使得其擁有一個獨特的光亮表面。機箱配件設備的安裝只需采用飛利浦的螺絲刀即可簡單完成。作為一個2U 八節點的配置,該款機箱是一個非常獨特的系統。8個系統的板卡放入到一個單獨的機箱內,每塊板卡作為一個獨立的服務器節點系統。每兩個服務器節點系統放置在一個可熱插拔的服務器托盤上,整個機箱共支持4個獨立的服務器托盤,每個托盤可獨立開關機而不影響其他托盤中的系統。另外,承載兩個服務器節點系統的托盤可以進行熱插拔操作,能夠從服務器的后面板抽出;這樣一個兩節點的托盤通過一塊主板上的附加卡與機械的背板連接。機箱支持24塊2.5英寸硬盤的使用。一塊單獨的背板通過綜合各個子系統的信息對機箱系統進行電源控制和風扇速度的控制,同時將三個一組的硬盤與玫瑰節點相連接。因此 RAID 的策略只能應用在同一個節點的三塊硬盤上,而不能進行全部24塊硬盤的 RAID 配置。硬盤通過安裝在硬盤托盤上來簡化硬盤插入和撥出機箱的操作;同時硬盤托架也可以輔助提高系統的空氣流通,使得整個機箱系統更好的散熱。機箱可以插入兩個電源模塊以便可以為系統提供冗余的電源。如果兩個電源中其中任何一個電源失效,另外一個電源會接手所有的用電負荷并且允許系統無中斷繼續工作。電源模塊支持熱插拔;如果只有一個電源失效可以在不關閉系統的情況下進行更換。機箱設計了一個獨特的散熱系統,這個散熱系統有四個8厘米高性能風扇組成。風扇的速度控制可以在 BIOS 里面進行設置,其速度值由系統的溫度決定。四個風扇都直接連接到背板上,但是需要從它們邏輯連接的服務器主板上獲取供電。在2U8的機箱中,每個節點(服務器板卡)控制在機箱中與其處在同一側的風扇。這意味著四個節點將共享兩個風扇。如果對于這四個節點在 BIOS 中的風扇速度設置不同,那么 BIOS 設置速度最高的將作為應用的設置。

CDN 實現網站加速的基本原理在于將緩存節點部署到靠近終端用戶的網絡邊緣,然后將網站的內容緩存在這些邊緣緩存服務器中,然后通過調度將用戶的訪問調度到離用戶最近的網絡邊緣節點,從而使用戶能夠從最近的緩存服務器得到網站的內容,從而實現加速的效果。雖然不同的 CDN 緩存節點的架構有所不同,但是都要考慮整個緩存節點的穩定性、可用性、IO 性能和可擴展能力。開源軟件 LVS、Haproxy 和 Squid 分別承擔四層負載均衡、七層負載均衡和緩存服務的角色。來自于終端用戶的請求首先由 LVS 進行四層的處理,基于后端的連接數將用戶請求調度到后端的 Haproxy;當 Haprxoy 收到 LVS 調度過來的請求后,它將對用戶請求的 URL 進行哈希運算,根據運算的哈希值將用戶的請求調度給后端的 squid;squid 根據請求從本地存儲或者后端的源站獲取用戶請求的內容然后將響應返回給 Haproxy,Haproxy 將該響應的內容直接返回給用戶而不再經過 LVS。考慮到性能 LVS 將單獨部署在一臺服務器設備上,而考慮到穩定性和高可用性整個節點機器將采用兩臺 LVS 服務器設備,互為熱備;而考慮到擴展性 Haproxy 和 Squid 會部署在一臺服務器設備上(對于更低功耗服務器來說 squid 和 harpxoxy 在服務器上基本上是一對一部署的)。更大的存儲空間意味著緩沖服務器能夠緩存更多的內容,這樣就可以減少回源站取內容的概率從而提高了用戶訪問的命中率,進而保證了用戶請求的響應時間。IO 的響應時間則表示對于存儲介質的訪問速度,這個對于用戶請求的響應速度影響也非常大。IO 的響應時間可以通過存儲介質的 IOPS(單位時間完成的 IO 數)來進行衡量。服務器針對于 CDN 緩存應用的存儲機制配置的原則是:內存用于存放最頻繁(最熱)的內容對象,這部分對象的訪問次數一般占到整個被訪問次數的30%左右,但是存儲大概只占到 1%左右;接下來次熱的內容被存放在 SSD 上,這部分內容的訪問次數大概占到整個被訪問對象的次數的60%左右,而存儲大概只占到20%左右;冷點的內容存放在機械硬盤上,這部分內容的訪問次數大概占到被訪問次數的10%左右,但是存儲卻占到80%。每片服務器有3個 Sata 接口的硬盤盤位,配置一塊 SSD 和兩塊 Sata 機械硬盤來滿足 CDN 緩存分層存儲的需要。由于 SSD 本身的響應時間已經完全超越了目前這款更低功耗服務器的 CPU 所能夠處理的速度,因此對于 SSD 硬盤的選項主要關注在存儲大小的選擇。由于 SSD 的大小直接和其成本相關,因此需要根據緩存內容的大小來選擇合適大小的 SSD 硬盤。根據剛才的分析,SSD 大概需要存儲占總緩存內容大小20%左右的對象內容,大概估算一下整個服務器需要緩存內容的大小約為300GB 左右,因此 SSD 的大小選擇為60GB 左右的硬盤比較合適;目前市場上和上升大小規格相近的硬盤型號有64GB 和80GB 兩種,考慮到 SSD 本身需要一定的冗余來保證性能,因此選擇了80GB 的型號。對于機械硬盤的選擇則需要考慮的因素包括:存儲大小、功耗、穩定性、成本、硬盤轉速、性能(主要用隨機訪問模式下的 IOPS 來衡量),最終選擇了型號為 ST95005620AS 的硬盤。由于內存的選型依賴于 CPU 的類型,目前 Atom D525 的處理器只能支持不大于4GB 的 DDR3 的內存,內存的主頻不超過800MHz,而且沒有 ECC 的支持;另外考慮到低功耗的要求所以選擇的是兩條2GB DDR3 的筆記本內存。

淘寶對低耗服務器做了詳細的測試,性能測試方面包括實驗室環境和線上環境,還有功耗測試和穩定性測試。測試指標包括: 響應時間(從 squid 接收到請求到將響應發送出去的時間)、每秒處理的請求數(每秒 Squid 能夠成功處理的請求數,該指標可以通過 squidclient 工具得到)、流量(單位時間內 squid 針對用戶請求所響應內容的比特流量)、功效(單位功耗下能夠服務的 QPS 數,或者每瓦服務的流量)。

實驗室的性能測試表明,大片更低功耗服務器的 CDN 緩存服務最大能力大概為1700QPS(或229.5Mbps),而最高功效為 70 QPS/瓦(或者9.46 Mbps/瓦)。線上環境測試結果:整體的緩沖命中率在95%以上;95%的響應時間都在20ms 以下,最高不超過100ms;測試到的最高性能為1100QPS,而此時的 CPU 利用率只有70%左右、磁盤的利用率也在40%以下。就穩定性而言,線上一個月的運行并沒有出現應用服務的明顯中斷,而且整體性能曲線平穩,基本上可以判斷穩定性能夠滿足 CDN 服務的要求。

對于服務器的下一步優化,文檔給出了提示。功耗優化:在 BIOS 中設置可關閉 USB 接口;設置關閉 CPU 中的圖像處理邏輯 GPU。運營維護優化:提供1對多的 OOB 或 IPMI 管理以太網接口;進一步提高服務器的密度,提高單臺服務器的服務能力,降低單位節點的服務器設備數;同時也可提高電源的轉換效率;集成網絡交換模塊到服務器機框中,降低服務器對外的網絡接口數量。性能優化:擴展 Sata 硬盤的盤位,進一步提高機械硬盤的服務能力,進而提高整體服務器的服務能力;更換效能更高的 CPU:SandyBridge(15瓦)。

據章文嵩在微博中透漏,目前該定制服務器已經實現量產,建設了十幾個 CDN 節點,約800臺 ATOM 服務器。跟基于 Intel L3406 或 E5602 處理器的服務器節點比起來,QPS/瓦是最高的,成本最低,響應時間平均最短,得益與服務器數目多硬盤多。可運維性還有待加強。

如果讀者想詳細的了解服務器的設計規范和參數,可以訪問項目的網站來 下載相關的文檔。


來自: InfoQ

 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!