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