云架構(gòu)和openstack的思考
最近在負責(zé)公司內(nèi)部私有云的建設(shè),一直在思考怎么搞云計算,怎么才能夠把云架構(gòu)設(shè)計得好一些。
本文章主要內(nèi)容:
1. 行業(yè)生態(tài)
2. 從需求角度看云
3. 云計算概述
4. 云建設(shè)的關(guān)鍵問題
5. 私有云架構(gòu)規(guī)劃
一.行業(yè)生態(tài)
計算機云經(jīng)過多年的發(fā)展,由一開始的概念,慢慢發(fā)展成熟并能夠推向市場,提供多種多樣的服務(wù),市場空間非常之大。
在云的發(fā)展過程中,亞馬遜經(jīng)過多年的深耕積累,發(fā)展成為了云行業(yè)的標桿企業(yè),甚至是建立了云解決方案的標準。
只要是存在商業(yè)價值以及商業(yè)利益的存在,就會有更多的公司、人參與進來,google、IBM、思科、Oracle、HP惠普、Intel、華為等IT巨頭先后參與進來,
在軟件和硬件方面提供專門的面向企業(yè)的解決方案,紛紛打著云計算、大數(shù)據(jù)、智能等概念來吸引客戶,拓展市場。
另外一方面,基于大數(shù)據(jù),存儲,云服務(wù)等也先后出現(xiàn)一些創(chuàng)新企業(yè),譬如dropbox、rackspace,國內(nèi)也產(chǎn)生相關(guān)的創(chuàng)業(yè)公司,譬如七牛、青云、ustack等。
按照開源的習(xí)慣來說,只要是有一套成熟的商業(yè)軟件,就會有一套開源的解決方案(譬如windows之于linux,google的mapreduce、gfs、大表之于hadoop等等),
在云領(lǐng)域,也存在相應(yīng)的開源解決方案,在開源的云解決方案里有若干公司將解決方案進行開源,而最為著名的有openstack和cloudstack。對于開源行業(yè)的領(lǐng)導(dǎo)者redhat來說,
redhat在企業(yè)操作系統(tǒng)的市場已經(jīng)做的很好,從RHEL系統(tǒng)的各個版本來都是提供操作系統(tǒng)的穩(wěn)定版本,在企業(yè)級系統(tǒng)市場有相當(dāng)高的市場份額。redhat特別重視云的發(fā)展,并將云操作系統(tǒng)作為未來10年的發(fā)展戰(zhàn)略重點。
并先后收購了openstack,以及ceph等存儲企業(yè),壯大自己在云領(lǐng)域的影響力。
隨著云領(lǐng)域的發(fā)展,逐漸形成了面向企業(yè)提供硬件和軟件產(chǎn)品產(chǎn)品提供商,面向企業(yè)提供服務(wù)的服務(wù)提供商,面向市場創(chuàng)業(yè)企業(yè)提供基礎(chǔ)服務(wù)的服務(wù)企業(yè),面向個人提供業(yè)務(wù)服務(wù)的一系列行業(yè)生態(tài)。
二. 從需求角度看云
需求是什么(what people need)?
我們所說的people,即人或者公司實體。在我的思考中我將people分為。
從企業(yè)角度看
1).小型企業(yè)
小型企業(yè)因為本身技術(shù)儲備不多,人員缺乏,沒有獨立的IT部門,但是在構(gòu)建自己的IT系統(tǒng)過程中需要購置各種產(chǎn)品和服務(wù),包括服務(wù)器、網(wǎng)絡(luò)、CDN等等,而要完成這樣的工作,需要投入大量的人力和財力。
通過購買云服務(wù)可以更加方便快捷,簡單的完成系統(tǒng)的搭建。
2).中型企業(yè)
中型企業(yè)有一定的規(guī)模,需要在信息化、管理方面有所注重,一般內(nèi)部都設(shè)立IT部門,但是和小型企業(yè)一樣,IT部門大多數(shù)都是為了解決自身需求很難能夠有一個完整的解決方案。這樣在服務(wù)器、網(wǎng)絡(luò)、CDN、企業(yè)管理軟件等等的需求還是比較大的。
3).大型企業(yè)
大型企業(yè)人數(shù)規(guī)模在萬人以上,特別是高新企業(yè),都有一個實力不錯的IT支撐部門,通過部門就可以完善對企業(yè)內(nèi)部信息化建設(shè)
從企業(yè)性質(zhì)范圍來看,我將企業(yè)分為
1).傳統(tǒng)行業(yè)企業(yè)
傳統(tǒng)行業(yè)大多數(shù)是以服務(wù)業(yè)、制造業(yè)、生產(chǎn)性企業(yè)為主,在IT信息化方面相對比較落后,重資產(chǎn)行業(yè)
2).互聯(lián)網(wǎng)企業(yè)
互聯(lián)網(wǎng)行業(yè)是基于IT作為解決方案的
3).IT服務(wù)企業(yè)
以銷售軟件、硬件、以及技術(shù)咨詢服務(wù)為主的企業(yè)。
針對市場中存在的企業(yè)、個體等的需求特點,將需求規(guī)劃為(也是市面上常用的分類):
1.提供軟件的服務(wù),解決企業(yè)內(nèi)部信息化問題,譬如:ERP系統(tǒng),進銷存管理系統(tǒng),人力資源管理系統(tǒng),行政系統(tǒng),財務(wù)系統(tǒng)等等。(SAAS)
2.提供平臺服務(wù),解決行業(yè)共性問題,將SAAS遷移到云端,提供平臺類的服務(wù)。譬如:淘寶的開放平臺,facebook的開放平臺,基于salesforce的銷售系統(tǒng),云筆記,云盤等。(PAAS)
3.提供基礎(chǔ)設(shè)施服務(wù),基礎(chǔ)設(shè)施包括軟件和硬件方面的,包括:存儲、虛擬機、網(wǎng)絡(luò)、防火墻、緩存、負載均衡、數(shù)據(jù)庫等等。(IAAS)
對于企業(yè)內(nèi)部來說,一般互聯(lián)網(wǎng)企業(yè)人員角色分為
1.開發(fā)
2.測試
3.運維
4.DBA
5.產(chǎn)品
6.項目管理人員
7.客服
8.業(yè)務(wù)人員(銷售、市場、BD、人力資源、行政等等)
下圖說明一下在互聯(lián)網(wǎng)行業(yè)各個角色的需求(僅局限于云領(lǐng)域)
#p#
三. 云計算概述
云解決什么(what cloud offer)?
1. 封裝
將計算能力和軟件放在云端,可以減少重復(fù)建設(shè),將通用的服務(wù)封裝起來,達到重用,減少資源的浪費,提高生產(chǎn)效率,并提供成熟的解決方案。
2.安全
云計算將數(shù)據(jù)和存儲,軟件邏輯都集中于云端,更能方便的統(tǒng)一構(gòu)建安全體系
3.靈活
云計算提供靈活的軟件和服務(wù)端架構(gòu)
4.性能
通過集群的能力和云端的集成能夠提高集群的性能處理
5.伸縮能力
在存儲和計算能力方面提供彈性的資源管理,能夠按需使用
6.運維
云計算在IAAS角度來看,重要的是運維,能夠?qū)⑦\維更加集中化管理,并完全智能化,大大降低人力成本
7.充分利用物理資源
通過云建設(shè),能夠?qū)⑽锢碣Y源進行虛擬化處理,屏蔽物理硬件底層,并能夠完成物力資源軟化進行邏輯管理和分配調(diào)度
8.大數(shù)據(jù)
大數(shù)據(jù)保存于云端,能夠提供數(shù)據(jù)分析和智能處理
……
當(dāng)然,云計算還有很多很多好處,給我們帶來很多想像空間和IT技術(shù)的革命。
公有云與私有云
說到云,行業(yè)內(nèi)將云分為“公有云”和“私有云”,對于“公有云”和“私有云”的差別,在我們之前的需求分析過程中,大致了解了云的需求,
“公有云”和“私有云”的差別最大的是需求的差異,因為需求的差異,導(dǎo)致了技術(shù)方案和產(chǎn)品決策的差異。
公有云需求上由于用戶多種多樣,導(dǎo)致需求存在不一樣,特別需要更多的定制化,譬如:網(wǎng)絡(luò)的定制化,套餐組合的定制化,網(wǎng)絡(luò)資源,存儲資源的獨立等等
四. 云建設(shè)的關(guān)鍵問題
計算機基礎(chǔ)知識
計算機自從誕生以來,一直按照馮.諾伊曼的體系發(fā)展,在硬件的基礎(chǔ)上的操作系統(tǒng),也分為網(wǎng)絡(luò)協(xié)議體系的實現(xiàn),內(nèi)存管理,文件管理體系等等,大致的抽象圖
云建設(shè)要解決的問題?
1.管理問題
云計算的實施,首先要解決運維的問題,在云環(huán)境下后端是大規(guī)模數(shù)量的物理節(jié)點的集群,對于同時維護數(shù)以千計算的計算節(jié)點,以及部署結(jié)構(gòu)的復(fù)雜,需求的變化,
光靠增加人力也難以解決復(fù)雜的問題。從而需要構(gòu)建高效的計算資源管理系統(tǒng),能夠靈活簡單的管理運系統(tǒng),并能夠及時的發(fā)現(xiàn)問題。
2.計費問題(公有云)
對于公有云而言,因為是面向公眾的,必然產(chǎn)生費用的問題,常用的收費方式多種多樣,也因為產(chǎn)品的不同而計費方式不同,譬如:網(wǎng)絡(luò)、存儲、cpu、數(shù)據(jù)庫容量等等
3.資源隔離問題
云計算運行在云端,是通過虛擬化體系建立的,虛擬化是建立在硬件之上,多個虛擬化資源同時運行于同一節(jié)點(host)中,存在著資源的共享爭用問題,
這樣就存在著資源使用的公平性問題,導(dǎo)致同一Host上的資源使用相互影響。為了使得彼此資源使用相互獨立,我們要建立相應(yīng)的隔離機制。資源的隔離包括:存儲、內(nèi)存、cpu、數(shù)據(jù)庫、網(wǎng)絡(luò)等,其中網(wǎng)絡(luò)是最難控制的。
4.安全問題
在云端的應(yīng)用和基于客戶端的安全,面臨的環(huán)境不一樣,客戶端方面大多數(shù)是病毒問題引起的,而在云端,也存在一些服務(wù)器攻擊的問題,以及數(shù)據(jù)相互獨立相互影響的問題,以及一些服務(wù)端編程的安全問題等。
5.性能問題
對于云來說,需要保證云端的性能問題,包括CPU處理性能,IO處理能力,資源的就近訪問,資源數(shù)據(jù)同步的速度,還需要解決系統(tǒng)底層的性能問題,包括文件處理Cache,存儲介質(zhì)的優(yōu)化,采用SSD等,或者采用SATA+SSD的混合方式節(jié)約資源和降低成本。
6.存儲問題
對于云來說,由于云端是將客戶端的數(shù)據(jù)和運算轉(zhuǎn)移到云端,必須要有足夠的存儲能力以及足夠穩(wěn)定的存儲系統(tǒng),保證用戶數(shù)據(jù)的安全,對于存儲來說,有提供VM虛擬機運行環(huán)境的block device(塊存儲),
以及提供KV方式的對象訪問存儲,這些都需要保證數(shù)據(jù)復(fù)制、數(shù)據(jù)讀寫訪問的性能和數(shù)據(jù)永久可用的能力
7.網(wǎng)絡(luò)問題
對于公有云以及私有云的一些應(yīng)用場景,需要能夠提供網(wǎng)絡(luò)的邏輯隔離(SDN)或物理隔離,以及對網(wǎng)絡(luò)的訪問靈活問題。構(gòu)建虛 擬化網(wǎng)絡(luò),由于物理條件的限制,我們不得不從L2-L4層進行處理,我們常用的方式 是:bridge,vlan,gre,sdn(openflow,opendaylight),以及一些廠家的產(chǎn)品等等。
8.高可用問題
高可用問題是在分布式系統(tǒng)中必須要處理的問題,正因為集群的問題,我們必須要從多方面考慮解決的問題,包括保證云管理系統(tǒng)的高可用性,存儲介質(zhì)的高可用性,網(wǎng)絡(luò)的高可用性,虛擬機高可用問題等等。
9.提高資源利用率問題
對于物理資源的虛擬化,我們有很多種解決方法,KVM、Vmware、xen、Hyperv、LXC等等,在HVM的方式 下,對于VM本身的啟動需要占用大量的內(nèi)存、cpu和存儲資源,導(dǎo)致系統(tǒng)內(nèi)存和cpu使用有一定的浪費,基于LXC的解決方案因為是機基于Host OS
進程,通過namespace的方式進行隔離的,是一種輕量級的實現(xiàn),能夠在資源初始化,資源利用率方面能夠最大化,對于各個應(yīng)用場景來說,我們可以選用合適的解決方案。
#p#
五.私有云架構(gòu)規(guī)劃
私有云的目標
對于私有云建設(shè),我們的目標是
1.提高物理資源的利用率
2.一套云管理系統(tǒng),降低運維的復(fù)雜度,提高運維工作效率
3.構(gòu)建靈活的開發(fā)、測試集成環(huán)境
4.提供海量的存儲體系
5.建立完善的監(jiān)控體系
6.建立基礎(chǔ)應(yīng)用環(huán)境、方便測試
7.統(tǒng)一架構(gòu)
8.智能資源調(diào)度
我們是怎么建設(shè)私有云的?(how to implement)
openstack開源解決方案
對于云計算來說,也存在這多種解決方案,譬如cloudstack和openstack等,在兩種方案的比較之后,我們最終選擇了openstack的解決方案。
主要是出于以下幾點原因:
1.openstack的社區(qū)成熟度:在openstack經(jīng)過幾年的發(fā)展,社區(qū)已經(jīng)越來越成熟,很多大公司都參與進來幫助完善,紅帽公司未來十年也將openstack作為發(fā)展的戰(zhàn)略重點。
2.架構(gòu)設(shè)計的選擇:openstack采用了python語言編寫,并且設(shè)計上采用組件化的方式,各個組件獨立發(fā)展,并相互解藕
3.openstack提供了更加完整成熟的方案,能夠滿足多樣的需求,同時已經(jīng)有不少公司采用,已經(jīng)經(jīng)過生產(chǎn)上的驗證
4.文檔問題:openstack文檔化做的不錯,網(wǎng)上能夠找到多種多樣的問題處理辦法
5.人員招聘問題,經(jīng)過多年的發(fā)展和市場的培育,了解openstack的人越來越多,對于開發(fā)維護的人才建設(shè)和招聘相對成熟一些。
6.發(fā)展比較迅速
。。。。。
下圖是我們大致的架構(gòu)規(guī)劃
文章觀點僅一家之言,歡迎大家一起交流探討。