文/趙永明
搭建緩存服務(wù)器解流量問題(上)
文/趙永明
高校校園網(wǎng)Web訪問的要求和壓力不斷增長。一方面校園網(wǎng)應(yīng)用系統(tǒng)要能滿足高并發(fā)查詢請求;另一方面校園網(wǎng)內(nèi)用戶對外網(wǎng)Web應(yīng)用訪問量也在日益上升。于是對高性能的代理(Proxy)服務(wù)器、緩存(Cache)服務(wù)器的需求也應(yīng)運(yùn)而生。Squid和Nginx都是廣泛使用的代理(緩存)服務(wù)器,但是還有一個(gè)高性能的同類軟件Apache Traffic Server仍未被廣泛了解。
互聯(lián)網(wǎng)的發(fā)展日新月異,網(wǎng)站的數(shù)量和網(wǎng)站的數(shù)據(jù)量都在瘋漲。網(wǎng)站的流量如何管理?帶寬如何才能更好的利用?服務(wù)器的各個(gè)層面性能如何發(fā)揮到極致?筆者將從一個(gè)CDN運(yùn)維人員的角度,來告訴大家如何使用Apache Traffic Server解決這些棘手的問題。
Apache Traffic Server(下文中簡稱為TS)是一個(gè)高性能、高效率、可擴(kuò)展的,能夠支持HTTP/1.1 協(xié)議的代理(緩存)服務(wù)器。各種Proxy/Cache平臺(tái)都有優(yōu)缺點(diǎn),關(guān)鍵是根據(jù)用戶的實(shí)際需求環(huán)境選擇一個(gè)恰當(dāng)?shù)倪M(jìn)行使用。
在TS的企業(yè)用戶中,最大一部分用戶為CDN服務(wù)器,因此其網(wǎng)站加速功能(即反向代理服務(wù)器)在整個(gè)體系中占有非常重要的地位,TS為了更好的解決ISP級別的用戶的管理與使用,采用remap 的方法來進(jìn)行反向代理配置。所謂的remap是對用戶的請求的URL和真實(shí)的源URL之間進(jìn)行映射,如我們使用TS來加速網(wǎng)站image.zymlinux.net的訪問,我們將需要告訴TS,如果用戶請求image.zymlinux.net,TS應(yīng)該從什么地方取URL。TS中的remap系統(tǒng)即完成這個(gè)轉(zhuǎn)換過程。下面以實(shí)際配置為例來講解remap的使用方法:
TS的進(jìn)程控制系統(tǒng)、命令介紹:
為做到ISP級別的穩(wěn)定性,TS設(shè)計(jì)了一套復(fù)雜的進(jìn)程管理系統(tǒng),正常運(yùn)行的TS系統(tǒng)包含3個(gè)主進(jìn)程:traffic_cop traffic_manager traffic_server。
traffic_server負(fù)責(zé)處理用戶請求。
traffic_manager負(fù)責(zé)管理traffic_server的健康穩(wěn)定運(yùn)行,并在非正常情況下,負(fù)責(zé)重啟traffic_server進(jìn)程。并負(fù)責(zé)處理用戶的管理命令。
traffic_cop監(jiān)管traffic_manager運(yùn)行。
用戶的管理命令通過traffic_line traffic_shell等工具,提交給traffic_manager,并得到執(zhí)行。
TS的cluster模式:
TS作為企業(yè)級的系統(tǒng)在運(yùn)行中,很多情況下是以集群運(yùn)行的,因此TS設(shè)計(jì)了一套cluster組件,完成集群運(yùn)行中的管理需求和海量內(nèi)容緩存的需求。TS集群支持3種工作模式: 全cluster集群;管理cluste集群;獨(dú)立服務(wù)器。
TS的集群模式具有如下特點(diǎn):
TS的集群是無master的集群,任何集群成員可以自由加入或退出,任何一臺(tái)機(jī)器宕機(jī)不會(huì)造成整個(gè)集群服務(wù)中斷。集群通訊可以采用專用的內(nèi)部通訊網(wǎng)卡/網(wǎng)絡(luò)以減少對外網(wǎng)絡(luò)IO的壓力。
集群內(nèi)部通訊使用TCP連接復(fù)用機(jī)制,確保內(nèi)部互聯(lián)資源最少化,即一個(gè)集群的內(nèi)部互聯(lián)每個(gè)機(jī)器要維持n-1個(gè)TCP連接。
集群能夠?qū)彺娴膬?nèi)容進(jìn)行一致性hash,從而將IO分散到集群內(nèi)的所有機(jī)器上,并且在任何一臺(tái)機(jī)器宕機(jī)的情況下,整個(gè)集群的hash不會(huì)產(chǎn)生波動(dòng)。
安裝:
TS官方目前并沒有提供RPM包等二進(jìn)制版本,我們以當(dāng)前業(yè)內(nèi)最常用的CentOS 5.5 64位系統(tǒng)為例進(jìn)行TS的編譯安裝。另:http://zymlinux.net/trafficserver/下有已經(jīng)打包好的RPM包可以供測試使用。
準(zhǔn)備工作:
CentOS 5.5 64位系統(tǒng),簡單安裝,不啟用RAID、軟RAID等
在apache官網(wǎng)下載TS的源碼包:http://trafficserver. apache.org/downloads.html
TS可以作為很多角色配置使用,首先以CDN常用的網(wǎng)絡(luò)加速服務(wù)器(反向代理服務(wù)器),加速cdn.zymlinux.net為需求配置一個(gè)TS的服務(wù)。
第二次配置,上面的配置為最初始配置,TS將使用/ usr/local/var/trafficserver目錄作為默認(rèn)存儲(chǔ)設(shè)備,生成一個(gè)256M的cache.db文件作為緩存的存儲(chǔ)。修改配置,使用硬盤sd[b-f]為存儲(chǔ)設(shè)備:
2. 由于TS默認(rèn)以nobody:root權(quán)限運(yùn)行,而CentOS的硬盤屬主是root:disk,屬性是660,因而TS默認(rèn)設(shè)置無法直接讀寫硬盤設(shè)備。修改系統(tǒng)設(shè)置以允許TS直接使用物理設(shè)備,如可以采用修改sd[b-f]為任何人可寫:
chmod go+rw /dev/sd{b..f}
3. 重新啟動(dòng)服務(wù),以使TS采用新的硬盤:
trafficserver restart
(作者單位為淘寶網(wǎng))
Apache Traffic Server特點(diǎn)
TS是運(yùn)營商級別的高性能proxy/cache服務(wù)器,充分考慮到商業(yè)運(yùn)營環(huán)境中的業(yè)務(wù)、用戶需求。
TS的緩存效率高,響應(yīng)快,硬件資源利用率高。
TS代理支持長連接、連接復(fù)用、過濾規(guī)則、映射、甚至7層hash和負(fù)載均衡、Cluster,能夠支持各種復(fù)雜的業(yè)務(wù)模式。
API很方便的支持各種環(huán)節(jié)的自由處理,并高度模塊化,用戶可以根據(jù)協(xié)議需要基于TS做二次開發(fā),以達(dá)成定制需求。
TS目前的開發(fā)團(tuán)隊(duì)是有著10多年CDN運(yùn)營、開發(fā)經(jīng)驗(yàn)的專業(yè)團(tuán)隊(duì),更有全球最大的CDN商業(yè)公司的大力支持,最好的開源組織Apache基金會(huì)嚴(yán)格管理。
TS代碼遵循Apache授權(quán),對企業(yè)用戶友好!Apache授權(quán)被業(yè)內(nèi)公認(rèn)為是僅次于BSD授權(quán)的對企業(yè)用戶最友好的授權(quán)之一。