最近在負(fù)責(zé)公司內(nèi)部私有云的建設(shè),一直在思考怎么搞云計(jì)算,怎么才能夠把云架構(gòu)設(shè)計(jì)得好一些。本文盡量全面的列出了云架構(gòu)建設(shè)和選型的考量因素。
我們主要從五個(gè)層面逐步評(píng)估云架構(gòu)的建設(shè)和選型,分別是:
1. 行業(yè)生態(tài)
2. 企業(yè)需求
3. 云計(jì)算的能力
4. 潛在的挑戰(zhàn)
5. 如何建設(shè)
一、行業(yè)生態(tài)
計(jì)算機(jī)云經(jīng)過(guò)多年的發(fā)展,由一開始的概念,慢慢發(fā)展成熟并能夠推向市場(chǎng),提供多種多樣的服務(wù),市場(chǎng)空間非常之大。
在云的發(fā)展過(guò)程中,亞馬遜經(jīng)過(guò)多年的深耕積累,發(fā)展成為了云行業(yè)的標(biāo)桿企業(yè),甚至可以說(shuō)是建立了云解決方案的標(biāo)準(zhǔn)。之后,Google、IBM、思科、Oracle、HP、Intel、華為等IT巨頭先后參與進(jìn)來(lái),在軟件和硬件方面提供專門的面向企業(yè)的解決方案,紛紛打著云計(jì)算、大數(shù)據(jù)、智能等概念來(lái)吸引客戶,拓展市場(chǎng)。
另外一方面,基于大數(shù)據(jù)、存儲(chǔ)、云服務(wù)等,市場(chǎng)上也先后出現(xiàn)一些創(chuàng)新企業(yè),如Dropbox、Rackspace,國(guó)內(nèi)的七牛、青云、UnitedStack等。
當(dāng)前的IT世界有一個(gè)常見的現(xiàn)象,就是只要某一個(gè)領(lǐng)域有一套成熟的商業(yè)軟件,就同時(shí)也會(huì)有一套開源的解決方案,如Windows之于Linux,Google的MapReduce、GFS、大表之于Hadoop等。在云領(lǐng)域也存在相應(yīng)的開源解決方案,目前最為著名的有Openstack和Cloudstack。開源行業(yè)的領(lǐng)導(dǎo)者RedHat此前
在企業(yè)操作系統(tǒng)的市場(chǎng)已經(jīng)做的很好,RHEL的各個(gè)版本在企業(yè)級(jí)系統(tǒng)市場(chǎng)有相當(dāng)高的市場(chǎng)份額。現(xiàn)在的RedHat特別重視云的發(fā)展,并將云操作系統(tǒng)作為未來(lái)10年的發(fā)展戰(zhàn)略重點(diǎn),在最近兩年先后收購(gòu)了Gluster以及Ceph等存儲(chǔ)企業(yè),以壯大自己在云領(lǐng)域的影響力。
隨著云領(lǐng)域的發(fā)展,市場(chǎng)上也逐漸形成了面向企業(yè)提供硬件和軟件產(chǎn)品的提供商、面向企業(yè)提供服務(wù)的提供商、面向市場(chǎng)初創(chuàng)企業(yè)提供基礎(chǔ)服務(wù)的提供商、面向個(gè)人提供業(yè)務(wù)服務(wù)的提供商等一系列行業(yè)生態(tài)。
圖 1 云行業(yè)服務(wù)生態(tài)
二、企業(yè)需求
需求是什么,也就是what people need這個(gè)問(wèn)題。我們所說(shuō)的people,即人或者公司實(shí)體,該對(duì)象的劃分并不單純,可粗淺的從三個(gè)角度來(lái)進(jìn)行分類:
從企業(yè)角度看:
1)小型企業(yè)
小型企業(yè)的技術(shù)儲(chǔ)備不多,人員缺乏,沒(méi)有獨(dú)立的IT部門,但是在構(gòu)建自己的IT系統(tǒng)過(guò)程中需要購(gòu)置各種產(chǎn)品和服務(wù),包括服務(wù)器、網(wǎng)絡(luò)、CDN等等,而要完成這樣的工作,需要投入大量的人力和財(cái)力。通過(guò)購(gòu)買云服務(wù)可以更加方便快捷,簡(jiǎn)單的完成系統(tǒng)的搭建。
2)中型企業(yè)
中型企業(yè)有一定的規(guī)模,需要在信息化、管理方面有所注重,一般內(nèi)部都設(shè)立IT部門,但是和小型企業(yè)一樣,IT部門大多數(shù)都是為了解決自身需求,很難能夠有一個(gè)完整的解決方案。這樣在服務(wù)器、網(wǎng)絡(luò)、CDN、企業(yè)管理軟件等等的需求還是比較大的。
3)大型企業(yè)
大型企業(yè)人數(shù)規(guī)模在萬(wàn)人以上,特別是高新企業(yè),都有一個(gè)實(shí)力不錯(cuò)的IT支撐部門,通過(guò)部門就可以完善對(duì)企業(yè)內(nèi)部信息化建設(shè)。
從企業(yè)性質(zhì)范圍來(lái)看:
1)傳統(tǒng)行業(yè)企業(yè)
傳統(tǒng)行業(yè)大多數(shù)是以服務(wù)業(yè)、制造業(yè)、生產(chǎn)性企業(yè)為主,在IT信息化方面相對(duì)比較落后,屬于重資產(chǎn)行業(yè)。
2)互聯(lián)網(wǎng)企業(yè)
互聯(lián)網(wǎng)行業(yè)是基于IT作為解決方案的
3)IT服務(wù)企業(yè)
以銷售軟件、硬件、以及技術(shù)咨詢服務(wù)為主的企業(yè)。
針對(duì)市場(chǎng)中存在的企業(yè)、個(gè)體等的需求特點(diǎn),市場(chǎng)上一般對(duì)軟件服務(wù)進(jìn)行如下分類:
1. 提供軟件的服務(wù),解決企業(yè)內(nèi)部信息化問(wèn)題,如ERP系統(tǒng)、進(jìn)銷存管理系統(tǒng)、人力資源管理系統(tǒng)、行政系統(tǒng)、財(cái)務(wù)系統(tǒng)等等。(SaaS)
2. 提供平臺(tái)服務(wù),解決行業(yè)共性問(wèn)題,將SaaS遷移到云端,提供平臺(tái)類的服務(wù)。如淘寶的開放平臺(tái)、Facebook的開放平臺(tái)、基于Salesforce的銷售系統(tǒng)、云筆記、云盤等。(PaaS)
3. 提供基礎(chǔ)設(shè)施服務(wù)。基礎(chǔ)設(shè)施包括軟件和硬件方面的,包括存儲(chǔ)、虛擬機(jī)、網(wǎng)絡(luò)、防火墻、緩存、負(fù)載均衡、數(shù)據(jù)庫(kù)等等。(IaaS)
從企業(yè)內(nèi)部人員角色來(lái)看:
企業(yè)內(nèi)部,尤其是互聯(lián)網(wǎng)企業(yè)內(nèi)部,一般將角色分為如下幾類:
1. 開發(fā)
2. 測(cè)試
3. 運(yùn)維
4. DBA
5. 產(chǎn)品
6. 項(xiàng)目管理人員
7. 客服
8. 業(yè)務(wù)人員(銷售、市場(chǎng)、BD、人力資源、行政等等)
不同的角色對(duì)于軟件服務(wù)的需求也是不同的,下圖大致描繪了互聯(lián)網(wǎng)行業(yè)各個(gè)角色對(duì)云平臺(tái)的需求:
圖 2 互聯(lián)網(wǎng)行業(yè)各個(gè)角色對(duì)云平臺(tái)的需求
三、云計(jì)算的能力
云計(jì)算能夠解決什么,也就是what cloud offer這個(gè)問(wèn)題。目前的云計(jì)算在應(yīng)用中主要提供了以下八個(gè)能力:
1. 封裝:將計(jì)算能力和軟件放在云端,可以減少重復(fù)建設(shè),將通用的服務(wù)封裝起來(lái),達(dá)到重用,減少資源的浪費(fèi),提高生產(chǎn)效率,并提供成熟的解決方案。在云端,云提供商可以建立軟件的標(biāo)準(zhǔn),提供發(fā)布包的方式,用戶可以通過(guò)軟件包的方式進(jìn)行購(gòu)買使用,譬如目前開源領(lǐng)域的Docker。
2. 安全:云計(jì)算將數(shù)據(jù)和存儲(chǔ),軟件邏輯都集中于云端,更能方便的統(tǒng)一構(gòu)建安全體系,通過(guò)Iptables實(shí)現(xiàn)網(wǎng)絡(luò)過(guò)濾,并在服務(wù)端做安全組件實(shí)現(xiàn)安全策略,并能夠通過(guò)海量集群應(yīng)對(duì)DDOS攻擊等。
3. 靈活:云計(jì)算提供靈活的軟件和服務(wù)端架構(gòu),用戶不再需要自己構(gòu)建應(yīng)用運(yùn)行環(huán)境,對(duì)資源的使用能夠按需購(gòu)買,并能夠升級(jí),并自由組合。舉例來(lái)說(shuō):用戶可以選用不同的存儲(chǔ)方式(mysql、oracle,文件系統(tǒng),kv等等)
4. 性能:通過(guò)集群的能力和云端的集成能夠提高集群的性能處理,通過(guò)專業(yè)的云解決提供商,在云端的性能擴(kuò)展更加方便,技術(shù)上更加專業(yè)。譬如服務(wù)端可以在用戶毫不察覺(jué)的情況下完成添加機(jī)器、存儲(chǔ)擴(kuò)容等操作。
5. 伸縮能力:在存儲(chǔ)和計(jì)算能力方面提供彈性的資源管理,能夠按需使用,在使用過(guò)程中,可以通過(guò)動(dòng)態(tài)的添加和減少物理資源,來(lái)提高響應(yīng)能力或節(jié)約成本。
6. 運(yùn)維:云計(jì)算在IaaS角度來(lái)看,重要的是運(yùn)維,能夠?qū)⑦\(yùn)維更加集中化管理,并完全智能化,大大降低人力成本
7. 充分利用物理資源:通過(guò)云建設(shè),能夠?qū)⑽锢碣Y源進(jìn)行虛擬化處理,屏蔽物理硬件底層,并能夠完成物理資源軟化進(jìn)行邏輯管理和分配調(diào)度
8. 大數(shù)據(jù):大數(shù)據(jù)保存于云端,能夠提供數(shù)據(jù)分析和智能處理
當(dāng)然,云計(jì)算還有很多很多好處,給我們帶來(lái)很多想像空間和IT技術(shù)的革命。
公有云與私有云
行業(yè)內(nèi)將云分為“公有云”和“私有云”。在我們之前的需求分析過(guò)程中,大致了解了云的需求,“公有云”和“私有云”的差別最大的是需求的差異,因?yàn)樾枨蟮牟町悾瑢?dǎo)致了技術(shù)方案和產(chǎn)品決策的差異。
公有云需求上由于用戶多種多樣,導(dǎo)致需求存在不一樣,特別需要更多的定制化,譬如:
1. 存儲(chǔ)個(gè)性化
云存儲(chǔ)方面大概分為塊存儲(chǔ)和對(duì)象存儲(chǔ),塊存儲(chǔ)適合于vm運(yùn)行環(huán)境,對(duì)象存儲(chǔ)提供了KV的訪問(wèn)方式提供了海量擴(kuò)展存儲(chǔ)文件的能力,用戶可以根據(jù)自己的需求選擇不同的存儲(chǔ)方式,選用不同的容量。在存儲(chǔ)物理介質(zhì)方面來(lái)說(shuō),因?yàn)榇嬖诓煌奈锢斫橘|(zhì),對(duì)性能和安全的要求,可以采用傳統(tǒng)的SATA硬盤,或者SSD存儲(chǔ)等。
2. 內(nèi)存使用
內(nèi)存方面,需要提供動(dòng)態(tài)擴(kuò)展內(nèi)存的方式,用戶能夠自由擴(kuò)展
3. 網(wǎng)絡(luò)的定制化
公有云用戶需要能夠構(gòu)建自己的內(nèi)部網(wǎng)絡(luò),并能夠自動(dòng)組網(wǎng)
4. 數(shù)據(jù)庫(kù)使用
公有云的用戶分屬不同的公司團(tuán)體,各自的技術(shù)差異存在,因而有不同的數(shù)據(jù)庫(kù)類型,譬如mysql,sqlserver,oracle等等。并能夠定義存儲(chǔ)大小,內(nèi)存運(yùn)行大小等等。并提供數(shù)據(jù)備份、恢復(fù)、高可用服務(wù)等
5. 緩存使用
公有云的用戶可以選擇不同的緩存方式,譬如增加CDN,采用不同的KV緩存方式并選擇容量。
6. 安全問(wèn)題
公有云對(duì)于云的安全和私有云差別較大,私有云大多數(shù)在安全問(wèn)題上不需要公有云那么嚴(yán)格,大多數(shù)是內(nèi)部系統(tǒng)之間的交互
以上僅限于IaaS層面的考慮,當(dāng)然對(duì)于公有云來(lái)說(shuō)還有很多細(xì)化的個(gè)性化需求,例如:數(shù)據(jù)分析,業(yè)務(wù)對(duì)接服務(wù)等等。
四、潛在的挑戰(zhàn)
計(jì)算機(jī)自從誕生以來(lái),一直按照馮.諾伊曼的體系發(fā)展在硬件的基礎(chǔ)上的操作系統(tǒng),也分為網(wǎng)絡(luò)協(xié)議體系的實(shí)現(xiàn)、內(nèi)存管理、文件管理體系等等。大致的抽象圖如下:
圖 3 計(jì)算機(jī)體系抽象圖
要建設(shè)云,有幾個(gè)重要的問(wèn)題需要解決:
1. 管理問(wèn)題
云計(jì)算的實(shí)施首先要解決運(yùn)維的問(wèn)題,在云環(huán)境下后端是大規(guī)模數(shù)量的物理節(jié)點(diǎn)的集群,對(duì)于同時(shí)維護(hù)數(shù)以千計(jì)算的計(jì)算節(jié)點(diǎn),以及部署結(jié)構(gòu)的復(fù)雜,需求的變化,光靠增加人力也難以解決復(fù)雜的問(wèn)題。從而需要構(gòu)建高效的計(jì)算資源管理系統(tǒng),能夠靈活簡(jiǎn)單的管理運(yùn)系統(tǒng),并能夠及時(shí)的發(fā)現(xiàn)問(wèn)題。
2. 計(jì)費(fèi)問(wèn)題(公有云)
對(duì)于公有云而言,因?yàn)槭敲嫦蚬姷模厝划a(chǎn)生費(fèi)用的問(wèn)題,常用的收費(fèi)方式多種多樣,也因?yàn)楫a(chǎn)品的不同而計(jì)費(fèi)方式不同,譬如:網(wǎng)絡(luò)、存儲(chǔ)、cpu、數(shù)據(jù)庫(kù)容量等等
3. 資源隔離問(wèn)題
云計(jì)算運(yùn)行在云端,是通過(guò)虛擬化體系建立的,虛擬化是建立在硬件之上,多個(gè)虛擬化資源同時(shí)運(yùn)行于同一節(jié)點(diǎn)(host)中,存在著資源的共享爭(zhēng)用問(wèn)題,
這樣就存在著資源使用的公平性問(wèn)題,導(dǎo)致同一Host上的資源使用相互影響。為了使得彼此資源使用相互獨(dú)立,我們要建立相應(yīng)的隔離機(jī)制。資源的隔離包括:存儲(chǔ)、內(nèi)存、cpu、數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)等,其中網(wǎng)絡(luò)是最難控制的。
4. 安全問(wèn)題
在云端的應(yīng)用和基于客戶端的安全,面臨的環(huán)境不一樣,客戶端方面大多數(shù)是病毒問(wèn)題引起的,而在云端,也存在一些服務(wù)器攻擊的問(wèn)題,以及數(shù)據(jù)相互獨(dú)立相互影響的問(wèn)題,以及一些服務(wù)端編程的安全問(wèn)題等。
5. 性能問(wèn)題
對(duì)于云來(lái)說(shuō),需要保證云端的性能問(wèn)題,包括CPU處理性能,IO處理能力,資源的就近訪問(wèn),資源數(shù)據(jù)同步的速度,還需要解決系統(tǒng)底層的性能問(wèn)題,包括文件處理Cache,存儲(chǔ)介質(zhì)的優(yōu)化,采用SSD等,或者采用SATA+SSD的混合方式節(jié)約資源和降低成本。
6. 存儲(chǔ)問(wèn)題
對(duì)于云來(lái)說(shuō),由于云端是將客戶端的數(shù)據(jù)和運(yùn)算轉(zhuǎn)移到云端,必須要有足夠的存儲(chǔ)能力以及足夠穩(wěn)定的存儲(chǔ)系統(tǒng),保證用戶數(shù)據(jù)的安全,對(duì)于存儲(chǔ)來(lái)說(shuō),有提供VM虛擬機(jī)運(yùn)行環(huán)境的block device(塊存儲(chǔ)),以及提供KV方式的對(duì)象訪問(wèn)存儲(chǔ),這些都需要保證數(shù)據(jù)復(fù)制、數(shù)據(jù)讀寫訪問(wèn)的性能和數(shù)據(jù)永久可用的能力
7. 網(wǎng)絡(luò)問(wèn)題
對(duì)于公有云以及私有云的一些應(yīng)用場(chǎng)景,需要能夠提供網(wǎng)絡(luò)的邏輯隔離(SDN)或物理隔離,以及對(duì)網(wǎng)絡(luò)的訪問(wèn)靈活問(wèn)題。構(gòu)建虛擬化網(wǎng)絡(luò),由于物理?xiàng)l件的限制,我們不得不從L2-L4層進(jìn)行處理,我們常用的方式是:bridge,vlan,gre,sdn(openflow,opendaylight),以及一些廠家的產(chǎn)品等等。
8. 高可用問(wèn)題
高可用問(wèn)題是在分布式系統(tǒng)中必須要處理的問(wèn)題,正因?yàn)榧旱膯?wèn)題,我們必須要從多方面考慮解決的問(wèn)題,包括保證云管理系統(tǒng)的高可用性,存儲(chǔ)介質(zhì)的高可用性,網(wǎng)絡(luò)的高可用性,虛擬機(jī)高可用問(wèn)題等等。
9. 提高資源利用率問(wèn)題
對(duì)于物理資源的虛擬化,我們有很多種解決方法,KVM、Vmware、xen、Hyperv、LXC等等,在HVM的方式下,對(duì)于VM本身的啟動(dòng)需要占用大量的內(nèi)存、cpu和存儲(chǔ)資源,導(dǎo)致系統(tǒng)內(nèi)存和cpu使用有一定的浪費(fèi),基于LXC的解決方案因?yàn)槭菣C(jī)基于Host OS進(jìn)程,通過(guò)namespace的方式進(jìn)行隔離的,是一種輕量級(jí)的實(shí)現(xiàn),能夠在資源初始化,資源利用率方面能夠最大化,對(duì)于各個(gè)應(yīng)用場(chǎng)景來(lái)說(shuō),我們可以選用合適的解決方案。
五、如何建設(shè)
58同城經(jīng)過(guò)多年的發(fā)展,探索了一條適合自身發(fā)展的技術(shù)架構(gòu)體系。隨著業(yè)務(wù)和技術(shù)的發(fā)展,團(tuán)隊(duì)規(guī)模不斷壯大,在技術(shù)和管理上面臨越來(lái)越多的挑戰(zhàn)。在項(xiàng)目需求管理,開發(fā)效率、代碼管理和質(zhì)量建設(shè),測(cè)試,線上發(fā)布,運(yùn)維管理等方面需要有一套完整的解決方案,來(lái)提升公司的協(xié)作能力和整體能效。
58同城目前所有的應(yīng)用在線上都是跑在物理機(jī)器上,采用物理機(jī)的方式,一方面會(huì)導(dǎo)致服務(wù)器資源得不到充分和合理的使用,譬如:有些物理機(jī)器cpu使用長(zhǎng)期在10%以下,有些內(nèi)存使用剩余很多;另外一方面,由于互聯(lián)網(wǎng)的特點(diǎn),存在著時(shí)段內(nèi)的訪問(wèn)高峰問(wèn)題,需要解決資源使用的伸縮問(wèn)題;基于以上問(wèn)題,架構(gòu)部對(duì)現(xiàn)有的技術(shù)體系進(jìn)行梳理和分析,采用資源虛擬化的方式進(jìn)行私有云的建設(shè),并在這基礎(chǔ)上,完善公司整體技術(shù)體系,包括:開發(fā)、測(cè)試、上線、運(yùn)維等一系列自動(dòng)化和智能化方面的建設(shè)。
私有云的目標(biāo)
1. 提高物理資源的利用率
2. 一套云管理系統(tǒng),降低運(yùn)維的復(fù)雜度,提高運(yùn)維工作效率
3. 構(gòu)建靈活的開發(fā)、測(cè)試集成環(huán)境
4. 提供海量的存儲(chǔ)體系
5. 建立完善的監(jiān)控體系
6. 建立基礎(chǔ)應(yīng)用環(huán)境、方便測(cè)試
7. 統(tǒng)一架構(gòu)
8. 智能資源調(diào)度
實(shí)施方案:OpenStack
對(duì)于云計(jì)算來(lái)說(shuō),也存在著多種解決方案,如CloudStack和OpenStack等。在兩種方案的比較之后,我們最終選擇了OpenStack的解決方案。主要是出于以下幾點(diǎn)原因:
1. OpenStack的社區(qū)成熟度:OpenStack經(jīng)過(guò)幾年的發(fā)展,社區(qū)已經(jīng)越來(lái)越成熟,很多大公司都參與進(jìn)來(lái)幫助完善,紅帽公司未來(lái)十年也將OpenStack作為發(fā)展的戰(zhàn)略重點(diǎn)。
2. 架構(gòu)設(shè)計(jì)的選擇:OpenStack采用了Python語(yǔ)言編寫,并且設(shè)計(jì)上采用組件化的方式,各個(gè)組件獨(dú)立發(fā)展,并相互解耦
3. OpenStack提供了更加完整成熟的方案,能夠滿足多樣的需求,同時(shí)已經(jīng)有不少公司采用,已經(jīng)經(jīng)過(guò)生產(chǎn)上的驗(yàn)證
4. 文檔問(wèn)題:OpenStack文檔化做的不錯(cuò),網(wǎng)上能夠找到多種多樣的問(wèn)題處理辦法
5. 人員招聘問(wèn)題,經(jīng)過(guò)多年的發(fā)展和市場(chǎng)的培育,了解OpenStack的人越來(lái)越多,對(duì)于開發(fā)維護(hù)的人才建設(shè)和招聘相對(duì)成熟一些。
6. 發(fā)展比較迅速
下圖是我們大致的架構(gòu)規(guī)劃
圖 4 OpenStack建設(shè)方案架構(gòu)規(guī)劃
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://m.guhuozai8.cn/
本文標(biāo)題:云架構(gòu)建設(shè)和選型的思考
本文網(wǎng)址:http://m.guhuozai8.cn/html/consultation/10839715818.html