范多毅
云計(jì)算作為一種基于互聯(lián)網(wǎng)、動態(tài)、可伸縮且虛擬化地以服務(wù)方式,提供計(jì)算資源的全新計(jì)算模式,是繼個人電腦、互聯(lián)網(wǎng)之后電子信息技術(shù)領(lǐng)域又一次重大變革,其影響范圍和程度都很可能超越以往。隨著云計(jì)算概念的不斷普及,越來越多的終端引入了云計(jì)算服務(wù)。
而在瞬息萬變的互聯(lián)網(wǎng)時代,如何快速和靈活的配置企業(yè)各種資源,在最大化利用資源的同時,又不會錯過業(yè)務(wù)爆發(fā)的機(jī)遇,已經(jīng)成為企業(yè)生存及發(fā)展不可缺少的特質(zhì)之一。
本文將重點(diǎn)介紹,小規(guī)模IT企業(yè)如何充分利用Amazon的彈性云,將自己的IT業(yè)務(wù)整體遷移到云上。以及描述了遷移所涉及到的服務(wù)架構(gòu)調(diào)整、相關(guān)資源利用和安全性穩(wěn)定性等問題。以上說到的整體業(yè)務(wù)還包含電子郵件服務(wù),Web應(yīng)用,持久化技術(shù),并行計(jì)算平臺。
信息發(fā)布型互聯(lián)網(wǎng)站是指新聞類,電子公告類以信息發(fā)布為主的互聯(lián)網(wǎng)站產(chǎn)品。該類型的網(wǎng)站,本次考察的遷移目標(biāo)是一個跨國信息發(fā)布類網(wǎng)站,需要滿足以下的性能要求:
需要在多個國家能快速訪問。
需要能并發(fā)處理大量連接的要求。
要能應(yīng)對突發(fā)訪問量增加的需求。
原有架構(gòu),如圖1所示:

圖1 原有的應(yīng)用程序架構(gòu)圖
需要考慮對硬件的需求能夠支持多倍的峰值的上限。
基于圖1進(jìn)行實(shí)現(xiàn)和部署的服務(wù)器部署結(jié)構(gòu)圖,如圖2所示:

圖2 原有服務(wù)器部署示意圖
描述了原有情況下,所有組件均需要由企業(yè)來實(shí)現(xiàn)和后續(xù)部署維護(hù),如何及時解決服務(wù)器失效成為系統(tǒng)穩(wěn)定性的瓶頸。
圖2原有部署結(jié)構(gòu)說明:
(1) DNS Server,根據(jù)來源IP數(shù)據(jù),比對亞洲IP地址資源數(shù)據(jù)庫判定是在中國還是在日本或美國,將訪問路由到最近的服務(wù)器。
(2) 中國側(cè)的兩個Tomcat應(yīng)用服務(wù)器為業(yè)務(wù)層的負(fù)載平衡。
(3) 前端緩存,利用Nginx的緩存實(shí)現(xiàn)。
遷移到云平臺后,架構(gòu)變成,如圖3所示:

圖3 遷移后的新架構(gòu)
遷移后方案的說明:
(1) 程序部署通過自動化實(shí)現(xiàn)到EC2的傀儡服務(wù)器。再由該服務(wù)器向既有服務(wù)器進(jìn)行分發(fā)。
(2) 剝離部分非關(guān)系數(shù)據(jù)庫功能到 SimpleDB,降低管理成本,提升可靠性。
(3) 增加 Memcached緩存層,提升應(yīng)用層的處理速度,和承擔(dān)部分頁面組件緩存功能。
(4) 靜態(tài)內(nèi)容以及部分緩存內(nèi)容通過 S3存儲,并自動發(fā)布到CloudFront進(jìn)行CDN應(yīng)用。
(5) 負(fù)載平衡由 Elastic Load Balance完成,使用AutoScale+CloudWatch自動伸縮組功能提升可靠性。
2.1.1 Amazon提供的虛擬服務(wù)器分為不同的性能級別,分別對應(yīng)不同的CPU內(nèi)存。其中微實(shí)例是非常劃算的實(shí)例,價(jià)格低廉,但它的CPU具有特定的限制,需要有選擇的應(yīng)用,一般是用于偶爾爆發(fā)CPU利用率的應(yīng)用類型。所以合理利用不同類型的實(shí)例,將有效的利用投資獲得效益。
2.1.2 彈性體現(xiàn)在不同級別的實(shí)例之間,有非常平滑的過渡切換過程。在分鐘級別時間內(nèi),可以實(shí)現(xiàn)從微實(shí)例到大型實(shí)例的切換過程,升級過程更加平滑。
2.1.3 由官方提供的成本消耗,基本符合實(shí)際的情況,如圖4所示:

圖4 硬件消耗曲線示意圖
矩形曲線表示傳統(tǒng)的硬件資源(硬件,電力,相應(yīng)的管理資源)投入曲線。下方的是實(shí)際根據(jù)應(yīng)用情況估算的理論上最小的資源消耗曲線。而中間的深色曲線表示了利用Amazon彈性云平臺的相關(guān)技術(shù)后,對于資源的投入,基本上貼符合實(shí)際需求曲線。在實(shí)際使用中,有效降低成本。
Amazon提供了ELB+AutoScale方案。ELB提供了將訪問流自動平均分配到Availability Zone,在一個zone中平均分配到相應(yīng)的EC2 Instance,如圖5所示:

圖5 ELB應(yīng)用結(jié)構(gòu)圖
AutoScale提供EC2實(shí)例數(shù)量根據(jù)配置自動伸縮的功能。依據(jù)新聞發(fā)布的特點(diǎn)和訪問量,將對參數(shù)做如下設(shè)置。
AutoScale Group參數(shù),如表1所示:

表1 根據(jù)項(xiàng)目設(shè)計(jì)的負(fù)載平衡自動伸縮參數(shù)
實(shí)際測試性能,表1中的指標(biāo)控制線和實(shí)際檢測數(shù)據(jù),如圖6所示:

圖6 ELB自動伸縮參數(shù)偵測圖
左圖為CPU大于40%監(jiān)控線,右圖為25%控制下限。
實(shí)際服務(wù)器的動態(tài)增加和減少曲線,如圖7所示:
數(shù)據(jù)顯示實(shí)例根據(jù)訪問的情況,呈現(xiàn)自動增長、自動收縮的特性。而依據(jù)Amazon的收費(fèi)策略,實(shí)際需要支付的費(fèi)用為實(shí)際運(yùn)行中的實(shí)例。
對于規(guī)模更大的網(wǎng)站應(yīng)用,或者軟件應(yīng)用,可以將伸縮范圍設(shè)定到更大的數(shù)字,理論上可以相對快速的響應(yīng)突發(fā)流量的情況。
在容量變更冷卻時間的粒度上,需要根據(jù)具體的情況,設(shè)定適合應(yīng)用的參數(shù)。因?yàn)椴划?dāng)?shù)膮?shù),導(dǎo)致頻繁的實(shí)例容量變更,必定會降低應(yīng)用的體驗(yàn),并因?yàn)椋瑢?shí)例啟動的代價(jià)增加額外的資源消耗費(fèi)用,例如IO數(shù)量。
另一個方案是,使用定期容量變更,來預(yù)先準(zhǔn)備好應(yīng)對流量的變更。例如每天的2點(diǎn)到8點(diǎn)降低實(shí)例數(shù)量,而在早中晚保證高額的實(shí)例數(shù)量。理想的健康曲線圖,如圖7所示:

圖7 ELB自動伸縮偵測圖
因?yàn)橐褂肁mazon的ELB,所以需要用到Amazon的高可靠DNS解析方案,也因?yàn)槔昧薃mazon的CDN解決方案,所以原來程序架構(gòu)中的 DNS服務(wù)被撤銷。Route53提供了高可靠的DNS解析服務(wù),并唯一的提供ELB的動態(tài)映射功能。
CloudFront是Amazon提供的CDN服務(wù),提供了應(yīng)用部署方案一個非常方便的內(nèi)容分發(fā)系統(tǒng),讓終端用戶可以訪問離他最近的資源節(jié)點(diǎn),獲得高的訪問效率。如何利用云存儲提供原有的靜態(tài)和動態(tài)內(nèi)容發(fā)布和加速,如圖8所示:

圖8 CDN和云存儲應(yīng)用方案示意圖
實(shí)施時對站點(diǎn)的域名進(jìn)行映射,以實(shí)現(xiàn)站點(diǎn)內(nèi)資源 url的一致性。同時通過Amazon提供的S3存儲服務(wù),將內(nèi)容透過S3向CloudFront進(jìn)行發(fā)布。將圖片服務(wù)器的內(nèi)容宿主于S3上,同時需要改造后端內(nèi)容發(fā)布系統(tǒng),將內(nèi)容的輸出和靜態(tài)的應(yīng)用元素,例如靜態(tài)頁面和圖片,發(fā)布到指定的S3上,根據(jù)配置會自動同步到CDN網(wǎng)絡(luò)上。
實(shí)際測試下用戶在訪問具體資源時,日本的用戶會被定向到日本本地的節(jié)點(diǎn),而位于中國的用戶會被定向到位于香港的節(jié)點(diǎn),美國的用戶定位到加州的節(jié)點(diǎn),實(shí)現(xiàn)了既定目標(biāo)。
Amazon Relational Database Service (RDS),這是一個在EC2云端系統(tǒng)上提供的完整數(shù)據(jù)庫解決方案。RDS提供自動備份服務(wù)。Multi A-Z功能,是數(shù)據(jù)庫熱備的完美方案。
遷移方案中的數(shù)據(jù)庫位置參考圖3。
根據(jù)網(wǎng)站項(xiàng)目的數(shù)據(jù)特點(diǎn),比對選擇合適的方案,如表2所示:

表2 數(shù)據(jù)庫需求比對
實(shí)施時需要修改時區(qū),以實(shí)現(xiàn)非本地區(qū)的數(shù)據(jù)庫應(yīng)用。因?yàn)檫€不能完全支持?jǐn)?shù)據(jù)庫的所有功能,特別是不能向Amazon以外的服務(wù)器進(jìn)行數(shù)據(jù)同步,所以在特定應(yīng)用,情況下,很大程度上受限于速度問題。
為了方便的存儲非關(guān)系型數(shù)據(jù),充分利用 SimpleDB組件的特點(diǎn),部署內(nèi)容 Metadata的元數(shù)據(jù)格式,以便于內(nèi)容的管理和檢索。同時對于網(wǎng)站中的相對獨(dú)立的應(yīng)用組件,利用這個非關(guān)系型數(shù)據(jù)庫,將變得十分的便利。而SimpleDB的高可靠,零管理特點(diǎn),決定了開發(fā)維護(hù)的代價(jià)非常低。
Elastic Cache提供了Amazon版本的Memcached,通過建立大量內(nèi)存式的緩存,提供了極快的響應(yīng)速度。在系統(tǒng)架構(gòu)層面為某些頻繁訪問的資源設(shè)定LRU的緩存更新策略,以提升系統(tǒng)響應(yīng)速度。
嚴(yán)格來說緩存層并非Amazon提供的特殊功能,但是因?yàn)槭芟抻贛emcached這樣的高內(nèi)存消耗應(yīng)用,在實(shí)際部署時,可能會造成硬件整體成本的大幅上升,并難以充分利用投入的硬件。Amazon將大內(nèi)存應(yīng)用的成本降低到可行的下限,并且由于按需購買的特性,使緩存層有充分的發(fā)揮空間。
Amazon的云計(jì)算平臺做了大量工作來提升可靠性。合理利用這些功能,將有助于企業(yè)部署關(guān)鍵業(yè)務(wù)的可靠性。
利用Availability Zone 提升系統(tǒng)的可靠性,CloudFront、數(shù)據(jù)庫的Multi A-Z配置,ELB中的多AZ的方式,以及EC2分別的部署,都是利用了這樣一個概念。在配置關(guān)鍵業(yè)務(wù)時,需要充分利用這些配置來提升系統(tǒng)的可靠性。
數(shù)據(jù)庫:利用Multi A-Z,支持熱備功能。利用SimpleDB這種高可靠的數(shù)據(jù)庫,部署業(yè)務(wù)。
業(yè)務(wù)處理層:利用ELB和AutoScale。
實(shí)例層:利用定期備份和快照,保障服務(wù)可以在單日時間內(nèi)進(jìn)行恢復(fù)。
文件存儲:利用S3來安全的存儲大量的文件。
其他組件:利用SQS來應(yīng)用消息隊(duì)列、利用SES來實(shí)現(xiàn)郵件應(yīng)用,同時達(dá)到0配置和高可靠。
CloudWatch:可以監(jiān)控上千個組件指標(biāo),實(shí)現(xiàn)對系統(tǒng)各個方面指標(biāo)的全監(jiān)控。例如在AutoScale Policy中配置的監(jiān)控指標(biāo)的反饋響應(yīng),從而實(shí)現(xiàn)的了服務(wù)的高可靠性。
系統(tǒng)提供了安全組,實(shí)現(xiàn)基本的安全配置.。根據(jù)不同的應(yīng)用,配置不同的安全組,以達(dá)到控制實(shí)例端口的安全性。
Amazon提供了安全渠道和工具,如圖9所示:

圖9 安全架構(gòu)示意圖
IAM(identity & Access Management)服務(wù)提供的第三方訪問和管理指定資源的權(quán)限,在產(chǎn)品發(fā)布部分會,對這個功能進(jìn)行進(jìn)一步的利用方面的描述。
Key Pair被設(shè)計(jì)用來在項(xiàng)目中登錄各個服務(wù)器,Access Credential用于授權(quán)應(yīng)用程序控制云資源的行為,和利用應(yīng)用程序組件。
通過將IT企業(yè)的現(xiàn)有產(chǎn)品架構(gòu)部署到Amazon的彈性云上,實(shí)現(xiàn)了既定的遷移目標(biāo)。
在遷移過程中發(fā)現(xiàn)如果需要充分利用彈性云的特征,IT產(chǎn)品在很多環(huán)節(jié)需要進(jìn)行重構(gòu),利用一些更加可靠的Amazon的服務(wù)來替代原有的程序組件,以充分利用高可靠的、降低管理成本的、和按需購買的優(yōu)勢。
而Amazon的彈性云,提供了更多原先中小企業(yè)無法做到或者無法做到這種方便程度的特殊功能和產(chǎn)品特性,例如全新的產(chǎn)品交付方式、產(chǎn)品部署方式、全自動化的伸縮管理、極為細(xì)致的硬件軟件資源投資管理,在極大程度上降低了企業(yè)的各方面成本。甚至有完全基于Amazon云平臺的公司出現(xiàn)。
云計(jì)算平臺提供了全新的應(yīng)用體驗(yàn),極大了降低復(fù)雜系統(tǒng)的建立管理成本,是未來中小IT企業(yè)發(fā)展的絕好契機(jī)。也是大型企業(yè)極大提升效能,降低成本的絕佳平臺。
[1]雷萬云.云計(jì)算—企業(yè)信息化建設(shè)策略與實(shí)踐[M].北京:清華大學(xué)出版社,2010.
[2]Tim Mather, Subra Kumaraswamy, Shahed Latif.Cloud security and privacy: an enterprise perspective on risks and compliance[M], 2009.
[3]Jeffrey Dean.MapReduce: simplified data processing on large clusters[M], 2008.
[4]雷葆華.云計(jì)算解碼——技術(shù)架構(gòu)和產(chǎn)業(yè)運(yùn)營[M]北京:電子工業(yè)出版社, 2011.
[5]George Feuerlicht, Shyam Govardhan.SOA: Trends and Directions[M], 2009.