雲架構和openstack的思考

原文連接: http://ifeve.com/cloud-architecture-openstack/python

做者:羅立樹linux

最近在負責公司內部私有云的建設,一直在思考怎麼搞雲計算,怎麼纔可以把雲架構設計得好一些。數據庫

本文章主要內容:編程

1. 行業生態windows

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等存儲企業,壯大本身在雲領域的影響力。

隨着雲領域的發展,逐漸造成了面向企業提供硬件和軟件產品產品提供商,面向企業提供服務的服務提供商,面向市場創業企業提供基礎服務的服務企業,面向我的提供業務服務的一系列行業生態。

IMG_5039

二. 從需求角度看雲

需求是什麼(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.發展比較迅速

。。。。。

下圖是咱們大體的架構規劃

架構規劃設計

相關文章
相關標籤/搜索