最先提出來是亞馬遜公司,發家是靠賣書,最後本身把本身賣書的業務移到互聯網上,隨着本身公司業務的增長,本身公司內部服務器就不夠用了,慢慢就開始作虛擬化,作了虛擬化以後,隨着公司組織架構的複雜性,虛擬化知足不了公司業務部門的要求,後來基於虛擬化技術作了二次的研發,它知足不了什麼呢,公司部門他有不一樣的業務線,不一樣部門也須要不一樣的物理服務器,那麼他還會處理一些部門申請的工單,好比我這麼個部門要多一臺服務器,多一臺虛擬機,用完之後也沒有必定的回收策略,因此呢,虛擬化技術是知足於不了公司業務,因此呢,亞馬遜公司就開發了一個雲計算平臺,AWS,亞馬遜雲。php
OpenStack是美國的航天航空宇航局看到人家亞馬遜作的雲計算作的挺好的,可是呢,你想用人家的,你得花錢,他是收費的,是閉源的,因此,他聯合了其餘公司,開發了OpenStack平臺,它是一個開源的雲計算架構。python
最先呢是物理服務器階段,我們中國互聯網最先是從2000年興起的,2000年時慢慢有了QQ,當時去網吧只有局域網,並無外網,不能上Internet,後來有了互聯網,在那個時候,搞IT的人其實挺low的,在公司裏也就搬搬飲水機,修修電腦,接接線,最後呢,隨着互聯網的興起發展,公司內部的服務器須要把本身的服務經過互聯網對外提供出去,那麼公司本身的業務涉及到互聯網確定須要軟件,而後慢慢呢,IT它的技能隨着時間推移也須要進化,學習心得東西,最後呢,IT愈來愈牛逼了。最先呢,咱們的IT技術都是把軟件,系統放到服務器上跑的,通常呢這個服務器跑一個服務,他不說把全部的服務都運行在一個服務器上,若是說都運行在一個服務器上,你的服務器壞了,你的整套業務就癱了。nginx
隨着技術的慢慢的演化,虛擬化架構出來了,它能夠把單個物理服務器虛擬成多個小的邏輯的服務器給咱們提供服務,可是呢,虛擬化技術只是把一個服務器虛擬成多個服務器而已,其餘的功能很簡單。好比說,跟雲計算相比,只是提供了虛擬化技術,雲計算能夠提供不一樣的資源,我能夠根據客戶需求它彈性的去給你客戶知足,網絡,存儲等,並且你只須要在雲計算平臺裏提需求就好,至於後臺怎麼去實現的,你不用去管,可是虛擬化不行,若是說你在虛擬化裏要求啓動一臺虛擬機,必須告訴虛擬化我這臺虛擬機啓在哪一個物理節點上,哪一個物理服務器上,若是這個服務器癱了的話,也沒有其餘的高級功能,對這個服務器裏業務進行彈性伸縮。數據庫
最後雲計算這項技術誕生了,他是一個按使用量付費的商業模式,他這個模式根據用戶的需求不一樣,用戶只要經過互聯網,能夠從雲計算裏面獲取不一樣的資源(資源包括網絡,服務器也值計算,存儲,應用軟件,服務)。緩存
SaaS( Software as a Service): 把在線軟件做爲一種服務。服務器
好比百度網盤,咱們用戶拿到的是一款軟件,你拿過來直接用,咱們用戶不用管這款軟件的客戶端是運行在什麼樣的服務器裏,它是經過什麼樣的語言開發出來的,你直接享受服務就能夠。網絡
Paas( Platform as a Service): 把平臺做爲一種服務。架構
咱們有服務器之後,你要用服務器作開發程序,他必須安裝一些開發的環境軟件,那麼呢,在雲計算裏面,直接給你把底層的服務器以及裏面須要安裝的開發環境軟件都給你裝好了,你拿過來就能夠直接用,就比如說你是作python開發的,而後你享受的是pass級別的服務,你就不須要安裝pyhton底層的環境了,好比python3.7,解釋器。直接就能夠寫代碼。
Iaas( Infrastructure as a Service):把硬件設備做爲一種服務。負載均衡
經過公有云公司去註冊帳戶,那麼你公司要上線一些服務的話,就經過你註冊的公有云公司提供的虛擬的雲主機,就不用你公司內部去買服務器了,每次登錄到他的平臺,就能夠訪問到他給你提供的虛擬機。ide
OpenStack是雲計算開源具體落實的一個項目,是由Rackspace和NASA共同開發的雲計算平臺,讓任何人均可以自行創建和提供雲端運算服務,每半年發佈一次,用Python語言編寫。
社區
www.openstack.org, wiki.openstack.org
郵件列表
http://wiki.openstack.org/MailingLists#General_List
http://wiki.openstack.org/MailingLists#Development_List
http://wiki.openstack.org/MailingLists#Operators
如何貢獻代碼
http://wiki.openstack.org/HowToContribute
源代碼管理
http://wiki.openstack.org/GerritWorkflow
文檔
OpenStack爲私有云和公有云提供可擴展的彈性的雲計算服務,這種服務雲必須是簡單部署而且擴展性強。
一、模塊鬆耦合
耦合:好比拿一個應用來講,你有一個服務,那麼這個服務,其實最後達成一個應用的話,底層有不少不少小組件,必須相互之間去聯繫配合,才能提供服務,這些小組件之間必須有必定的關係的聯繫起來,這些關係就是耦合,這些小組件關係性越強,其中的某一個壞掉了,那麼其餘的就不能正常工做了,因此說,鬆耦合性越高,依賴性越低。
二、組件配置較爲靈活
三、二次開發容易(必須學會python)
Compute:計算服務
Networking:網絡服務,虛擬化層的網絡服務,能夠經過一些軟件虛擬出來咱們現實中的交換機,路由器,防火牆等等的物理設備
Storage:存儲服務給咱們提供裸磁盤
OpenStack Dashboard:管理終端,這三個服務經過一個叫管理終端來統一的調度。
數據庫服務( Database Service )
MairaDB 及 MongoDB (部署度量服務時用到)
消息傳輸(Message Queues)
RabbitMQ
緩存(cache)
Memcached
時間(time sync)
NTP
存儲(storge provider)
ceph、GFS、LVM、ISICI等
高可用及負載均衡
pacemaker、HAproxy、keepalive、lvs等
提供一個vip,vip是提供高可用漂移的,他能夠把本身負責高可用的服務,經過資源的形式,加入到本身的管理組建裏面,他說的這個資源,是管理的高可用服務,好比http,數據庫等。若是你要用pacemaker呢,你要把這些服務加入到他的資源管理器裏,他能控制這些資源,怎麼控制,就是開啓,關閉,重啓,它還能夠可對資源的啓動順序作規定。
好比搭建lnmp網站架構,nginx依賴於數據庫和php來工做,那麼你這一個服務器在啓動的時候,必須把這些服務調動起來,pacemaker能夠設置這些服務的啓動順序,把數據庫設爲優先啓動,再啓動你的nginx,還有其餘的一些服務。還可控制服務的依賴,什麼意思,就是說我就想這個nginx依賴於這個數據庫,若是這個數據庫不起的話,我nginx不起,或者是這個數據庫起在第一個節點,我想讓nginx也起在這個節點。
還有一個就是粘性,我能夠設置某一個服務讓他固定啓動到某一個節點,好比我有三個節點,nod1,nod2,nod3,平時呢,我能夠設置nginx讓他正常的狀況下啓動到nod1下面,若是這個nod1當掉了,他會漂移到nod2,nod3,當我nod1恢復了,nginx又回到nod1上面。
身份服務( Identity Service ):Keystone
計算( Compute ): Nova
鏡像服務( Image Service ): Glance
網絡 & 地址管理( Network ): Neutron
對象存儲( Object Storage ): Swift
塊存儲 (Block Storage) : Cinder
UI 界面 (Dashboard) : Horizon
測量 (Metering) : Ceilometer
部署編排 (Orchestration) : Heat