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