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