一、為何選擇雲計算/雲計算之前遇到的問題
1.有效解決硬件單點故障問題
單點故障是指某個硬件的故障造成網站某個服務的中斷。要真正解決這個問題,需要為每個硬件準備冗餘,這不僅大大增加了硬件購置成本,而且部署與維護成本也不容小視。
而云計算平臺是基於服務器集群,從設計之初就考慮了單點故障問題,並在建設時有效地解決了這個問題。如果一家雲服務商出現單點故障問題,就如同存在銀行的錢丟了。
2.按需增/減硬件資源
自己託管服務器,增/減硬件一直是頭疼的問題。
1. 增加服務器的時候,購買服務器需要時間,而且這個時間自己無法控制。而使用雲服務器,隨時可以增加服務器——垂手可得。
2. 減服務器只能從機房拉回辦公室,無法再把服務器退給廠商,購置服務器的成本就浪費了。而使用雲服務器,如果下個月不用,不續費就行了(針對阿里雲按月購買的情況)——想用就用,想扔就扔。
3. 不能按需增加滿足基本需求的服務器配置。假如我們現在需要一臺低配置的服務器用Linux跑緩存服務,如果為之單獨購買一臺便宜的低配置的服務器很不合算,因為這臺服務器僅僅一年的電費就至少要3000元左右。所以只能儘量減少服務器數量,提高單臺服務器的配置,在讓一臺服務器跑更多東西。而使用雲服務器,需要什麼樣的配置就買什麼樣的配置,讓各個服務器的職責更單一,互相之間的影響更小——職責分明,效率更高。
3.按需增/減帶寬
帶寬是主要成本,託管服務器時,與ISP服務商籤一年合同之前就要確定帶寬。用了一段時間之後,你發現帶寬買多了,想減一些是不允許的。中途要臨時增加帶寬一段時間也是不行的,要買就買一年(這是根據我們接觸過的ISP服務商)。所以,一般都會多買一些帶寬,留一些餘量。
使用雲服務器可以靈活地增減帶寬,不會浪費帶寬,即使買少了也不用擔心,隨時可以增加。雖然各個雲服務商會有一定的限制,比如在阿里雲一次至少要購買1個月的帶寬,但比自己託管服務器靈活很多,同樣的帶寬條件,會節省不少成本,尤其是帶寬需求在一年中變化比較大的網站。
4.更有吸引力的費用支付方式
在IDC機房託管服務器一般是籤一年合同,一次支付一個季度的費用。
而使用雲服務,一次可以支付更短時間的費用,比如阿里雲可以一次只支付一個月的費用,節約了流動資金。
從總體上考慮,差不多的成本,卻擁有更多的內存、更多的CPU、更多的硬盤空間、更優質的帶寬線路,更重要的是可以隨時按需擴展計算資源。
5.BGP線路解決南北互通問題
南北互通問題是南方電信與北方聯通線路之間的互通問題,這個問題困擾我們多年,之前用過雙線機房,解決的也不是很好。目前只有BGP線路才能有效解決這個問題,而擁有真正的BGP線路的機房不是很多,成本也非常高。而我準備使用的阿里雲用的就是BGP線路,這也是吸引我們的主要地方之一。
究竟什麼是南北互通問題?基於我們的理解簡體描述一下,不對之處歡迎指出。南北互通問題實際就是路由問題。假設我們的服務器放在上海電信的機房,上海一位聯通的用戶訪問我們的服務器,要先繞到聯通的北京總出口(假設總出口在北京),然後再繞回上海。實際上這位聯通用戶可以通過上海的線路直接到達我們的服務器,不用繞這麼遠,但上海電信的機房無法告知聯通的路由器走近路過來,只能按照聯通路由器設定好的路由走。本來即使走北京繞一下也沒有大的影響,畢竟是光的速度,但是由於大多數聯通的用戶訪問電信網絡都這麼繞著走,聯通的總出口成為了瓶頸,總出口流量太大時,聯通的用戶訪問電信的網絡速度就會慢。BGP線路也沒什麼神奇之處,只是它能決定走什麼路由過來,不繞遠路,問題自然解決了。它有這樣的特權,就不僅能解決南北互通的問題,而且能解決其他網絡的互通問題,比如教育網。因為有權限決定路由,就可以優化路由,哪條路堵,我就換條路。
二、什麼是雲計算(資源和服務的交互方式)
1.概念分解:
雲:雲計算中的雲,代表循環利用的意思(雲多了變成雨,落到地面,雲減少,水蒸發到空中,雲增加)。
計算:雲計算中的計算,代表計算資源,涵蓋虛機、存儲、網絡等。
雲計算:代表計算資源向雲水循環一樣,按需分配,循環利用。
附:企業數據中心部署在雲計算分佈式平臺上,類似於從原來單臺發電機轉向電廠集中供電模式,它意味著訪問計算機和存儲系統也可以作為一種商品流通,就像煤氣、水電一樣,取用方便,費用低廉,只不過它是通過互聯網傳輸的,雲就是互聯網的一種比喻
2.雲計算分類:
狹義:IT基礎設施的交互和使用模式,通過網絡以按需,易擴展的方式獲取資源
廣義:服務(IT基礎設施、軟件等)的交互和使用模式,通過網絡以按需、易擴展的方式獲取資源。
三、雲服務模式
1.IaaS:基礎設施即服務
用戶通過網絡獲取虛機、存儲、網絡,然後用戶根據自己的需求操作獲取的資源。 典型應用:亞馬遜AWS等
2.PaaS:平臺即服務
將軟件研發平臺作為一種服務, 如Eclipse/Java編程平臺,服務商提供編程接口/運行平臺等。典型應用:Google AppEngine、Force.com、微軟Azure等
3.SaaS:軟件即服務
將軟件作為一種服務通過網絡提供給用戶,如web的電子郵件、HR系統、訂單管理系統、客戶關係系統等。用戶無需購買軟件,而是向提供商租用基於web的軟件,來管理企業經營活動。典型應用:Google Doc、Saleforce.com、Oracle CRM On Demand、Office Live Workspace等
四、雲應用形式
2.私有云
將基礎設施與軟硬件資源構建於防火牆內,基於iaas構建私有云平臺供企業內部使用,開源組件有:openstack(最為出色),cloudstack等
2.雲存儲
雲存儲系統是一個以數據存儲和管理為核心的雲計算系統
3.雲遊戲
遊戲運行雲平臺服務端,雲平臺將遊戲畫面解壓縮後傳給用戶,用戶端無需高配置處理器和顯卡,只需要基本的視頻解壓縮能力即可。
4.雲物聯
基於雲平臺實現物物相連的互聯網。
5.雲安全
通過網狀的大量客戶端檢測網絡中軟件的異常,獲取木馬,惡意程序的最新信息,推送到雲平臺服務端自動分析和處理,再把解決方案發送給每一個客戶端。雲平臺使用者越多,越安全。
6.公有云
雲平臺對外開放,主要以Iaas和Paas為主,較為成熟的是Iaas,如阿里雲,騰訊雲,青雲,ucloud,首都在線等
7.混合雲
公有云和私有云的結合,即對企業內部又對企業外部,例如AWS
五、傳統應用與雲感知應用
1.傳統應用
傳統應用像養寵物,寵物病了要細心呵護
每個應用都是獨特的、專門的
專門的服務器、硬件和軟件保證可靠性
資源不夠,增加cpu、內存、磁盤
專門的技術支持
2.雲感知應用
雲感知應用像養牛,牛生病了,你需要一頭新的牛
應用跑在一個或多個虛擬機裡
資源不夠,增加新的虛擬機
應用掛起,重啟或創建新的虛擬機
六、openstack與及其相關組件介紹
1.openstack由來
openstack最早由美國國家航空航天局NASA研發的Nova和Rackspace研發的swift組成。後來以apache許可證授權,旨在為公共及私有云平臺建設。openstack主要用來為企業內部實現類似於Amazon EC2和S3的雲基礎架構服務(Iaas).每6個月更新一次,基本與ubuntu同步,命名是以A-Z作為首字母來的。
2.openstack項目與組件(服務名是項目名的別名)
核心項目3個
1.控制檯
服務名:Dashboard
項目名:Horizon
功能:web方式管理雲平臺,建雲主機,分配網絡,配安全組,加雲盤
2.計算
服務名:計算
項目名:Nova
功能:負責響應虛擬機創建請求、調度、銷燬雲主機
3.網絡
服務名:網絡
項目名:Neutron
功能:實現SDN(軟件定義網絡),提供一整套API,用戶可以基於該API實現自己定義專屬網絡,不同廠商可以基於此API提供自己的產品實現
存儲項目2個
1.對象存儲
服務名:對象存儲
項目名:Swift
功能:REST風格的接口和扁平的數據組織結構。RESTFUL HTTP API來保存和訪問任意非結構化數據,ring環的方式實現數據自動複製和高度可以擴展架構,保證數據的高度容錯和可靠性
2.塊存儲
服務名:塊存儲
項目名:Cinder
功能:提供持久化塊存儲,即為雲主機提供附加雲盤。
文件存儲
對用戶來說是一個文件夾
特點:
1.不能格式化,
2.基本操作單位是文件
3.支持基於postfix標準的文件處理,打開,增刪改查
塊存儲
對用戶來說就是一塊裸盤
特點:
1.可以格式化
2.基本操作單位是block
對象存儲
key:value
http://1.1.1.1/api:object
http://pan.baidu.com/s/1slTMqT3:ceph-vmware.png
共享服務項目3個
1.認證服務
服務名:認證服務
項目名:Keystone
功能:為訪問openstack各組件提供認證和授權功能,認證通過後,提供一個服務列表(存放你有權訪問的服務),可以通過該列表訪問各個組件。
2.鏡像服務
服務名:鏡像服務
項目名:Glance
功能:為雲主機安裝操作系統提供不同的鏡像選擇
3.計費服務
服務名:計費服務
項目名:Ceilometer
功能:收集雲平臺資源使用數據,用來計費或者性能監控
高層服務項目1個
1.編排服務
服務名:編排服務
項目名:Heat
功能:自動化部署應用,自動化管理應用的整個生命週期.主要用於Paas
3.openstack各組件詳解及運行流程
各組件邏輯關係圖:
openstack新建雲主機流程圖:
虛擬機啟動過程如下:
- 界面或命令行通過RESTful API向keystone獲取認證信息。
- keystone通過用戶請求認證信息,並生成auth-token返回給對應的認證請求。
- 界面或命令行通過RESTful API向nova-api發送一個boot instance的請求(攜帶auth-token)。
- nova-api接受請求後向keystone發送認證請求,查看token是否為有效用戶和token。
- keystone驗證token是否有效,如有效則返回有效的認證和對應的角色(注:有些操作需要有角色權限才能操作)。
- 通過認證後nova-api和數據庫通訊。
- 初始化新建虛擬機的數據庫記錄。
- nova-api通過rpc.call向nova-scheduler請求是否有創建虛擬機的資源(Host ID)。
- nova-scheduler進程偵聽消息隊列,獲取nova-api的請求。
- nova-scheduler通過查詢nova數據庫中計算資源的情況,並通過調度算法計算符合虛擬機創建需要的主機。
- 對於有符合虛擬機創建的主機,nova-scheduler更新數據庫中虛擬機對應的物理主機信息。
- nova-scheduler通過rpc.cast向nova-compute發送對應的創建虛擬機請求的消息。
- nova-compute會從對應的消息隊列中獲取創建虛擬機請求的消息。
- nova-compute通過rpc.call向nova-conductor請求獲取虛擬機消息。(Flavor)
- nova-conductor從消息隊隊列中拿到nova-compute請求消息。
- nova-conductor根據消息查詢虛擬機對應的信息。
- nova-conductor從數據庫中獲得虛擬機對應信息。
- nova-conductor把虛擬機信息通過消息的方式發送到消息隊列中。
- nova-compute從對應的消息隊列中獲取虛擬機信息消息。
- nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求glance-api獲取創建虛擬機所需要鏡像。
- glance-api向keystone認證token是否有效,並返回驗證結果。
- token驗證通過,nova-compute獲得虛擬機鏡像信息(URL)。
- nova-compute通過keystone的RESTfull API拿到認證k的token,並通過HTTP請求neutron-server獲取創建虛擬機所需要的網絡信息。
- neutron-server向keystone認證token是否有效,並返回驗證結果。
- token驗證通過,nova-compute獲得虛擬機網絡信息。
- nova-compute通過keystone的RESTfull API拿到認證的token,並通過HTTP請求cinder-api獲取創建虛擬機所需要的持久化存儲信息。
- cinder-api向keystone認證token是否有效,並返回驗證結果。
- token驗證通過,nova-compute獲得虛擬機持久化存儲信息。
- nova-compute根據instance的信息調用配置的虛擬化驅動來創建虛擬機。