OpenStack從入門到放棄(一)

一:爲何選擇雲計算及雲計算之前遇到的問題

一、有效解決硬件單點故障問題

單點故障是指某個硬件的故障造成網站某個服務的中斷。要真正解決這個問題,需要爲每個硬件準備冗餘,這不僅大大增加了硬件購置成本,而且部署與維護成本也不容小視。

而云計算平臺是基於服務器集羣,從設計之初就考慮了單點故障問題,並在建設時有效地解決了這個問題。如果一家雲服務商出現單點故障問題,就如同存在銀行的錢丟了。

二、按需增/減硬件資源

自行託管服務器,增減硬件一直是頭疼的問題。

  1. 增加服務器的時候,購買服務器需要時間,而且這個時間自己無法控制。而使用雲服務器,隨時可以增加服務器——垂手可得。

  2. 減服務器只能從機房拉回辦公室,無法再把服務器退給廠商,購置服務器的成本就浪費了。而使用雲服務器,如果下個月不用,不續費就行了(針對阿里雲按月購買的情況)——想用就用,想扔就扔。

  3. 不能按需增加滿足基本需求的服務器配置。假如我們現在需要一臺低配置的服務器用Linux跑緩存服務,如果爲之單獨購買一臺便宜的低配置的服務器很不合算,因爲這臺服務器僅僅一年的電費就至少要3000元左右。所以只能儘量減少服務器數量,提高單臺服務器的配置,在讓一臺服務器跑更多東西。而使用雲服務器,需要什麼樣的配置就買什麼樣的配置,讓各個服務器的職責更單一,互相之間的影響更小——職責分明,效率更高。

三、BGP線路解決南北互通問題

南北互通問題是南方電信與北方聯通線路之間的互通問題,這個問題困擾我們多年,目前只有BGP線路纔能有效解決這個問題,而擁有真正的BGP線路的機房不是很多,成本也非常高。

聯通的機房,上海一位移動的用戶訪問我們的服務器,要先繞到移動的北京總出口(假設總出口在北京),然後再繞回上海。實際上這位移動用戶可以通過上海的線路直接到達我們的服務器,不用繞這麼遠,但上海聯通的機房無法告知移動的路由器走近路過來,只能按照移動路由器設定好的路由走。本來即使走北京繞一下也沒有大的影響,畢竟是光的速度,但是由於大多數移動的用戶訪問電信網絡都這麼繞着走,移動的總出口成爲了瓶頸,總出口流量太大時,移動的用戶訪問電信的網絡速度就會慢。BGP線路也沒什麼神奇之處,只是它能決定走什麼路由過來,不繞遠路,問題自然解決了。它有這樣的特權,就不僅能解決南北互通的問題,而且能解決其他網絡的互通問題,比如教育網。因爲有權限決定路由,就可以優化路由,哪條路堵,我就換條路。

四、按需增減帶寬

帶寬是主要成本,託管服務器時,與ISP服務商籤一年合同之前就要確定帶寬。用了一段時間之後,你發現帶寬買多了,想減一些是不允許的。中途要臨時增加帶寬一段時間也是不行的,要買就買一年(這是根據我們接觸過的ISP服務商)。所以,一般都會多買一些帶寬,留一些餘量。

使用雲服務器可以靈活地增減帶寬,不會浪費帶寬,即使買少了也不用擔心,隨時可以增加。雖然各個雲服務商會有一定的限制,比如在阿里雲一次至少要購買1個月的帶寬,但比自行託管服務器靈活很多,同樣的帶寬條件,會節省不少成本,尤其是帶寬需求在一年中變化比較大的網站。

五、更有吸引力的費用支付方式

在IDC機房託管服務器一般是籤一年合同,一次支付一個季度的費用。

而使用雲服務,一次可以支付更短時間的費用,比如阿里雲可以一次只支付一個月的費用,節約了流動資金。

從總體上考慮,差不多的成本,卻擁有更多的內存、更多的CPU、更多的硬盤空間、更優質的帶寬線路,更重要的是可以隨時按需擴展計算資源。

二:什麼是雲計算(資源和服務的交互方式)

一、概念分解:

雲:雲計算中的雲,代表循環利用的意思(雲多了變成雨,落到地面,雲減少,水蒸發到空中,雲增加)。

計算:雲計算中的計算,代表計算資源,涵蓋虛機、存儲、網絡等。

雲計算:代表計算資源向雲水循環一樣,按需分配,循環利用。

附:企業數據中心部署在雲計算分佈式平臺上,類似於從原來單臺發電機轉向電廠集中供電模式,它意味着訪問計算機和存儲系統也可以作爲一種商品流通,就像煤氣、水電一樣,取用方便,費用低廉,只不過它是通過互聯網傳輸的,雲就是互聯網的一種比喻

二、雲計算分類:

狹義:IT基礎設施的交互和使用模式,通過網絡以按需,易擴展的方式獲取資源

廣義:服務(IT基礎設施、軟件等)的交互和使用模式,通過網絡以按需、易擴展的方式獲取資源。

三:雲服務模式

一、IaaS:基礎設施即服務

用戶通過網絡獲取虛機、存儲、網絡,然後用戶根據自己的需求操作獲取的資源。 典型應用:亞馬遜AWS等

二、PaaS:平臺即服務

將軟件研發平臺作爲一種服務, 如Eclipse/Java編程平臺,服務商提供編程接口/運行平臺等。典型應用:Google AppEngine、Force.com、微軟Azure等

三、SaaS:軟件即服務

將軟件作爲一種服務通過網絡提供給用戶,如web的電子郵件、HR系統、訂單管理系統、客戶關係系統等。用戶無需購買軟件,而是向提供商租用基於web的軟件,來管理企業經營活動。典型應用:Google Doc、Saleforce.com、Oracle CRM On Demand、Office Live Workspace等

四:雲應用形式

一.私有云

將基礎設施與軟硬件資源構建於防火牆內,基於iaas構建私有云平臺供企業內部使用,開源組件有:OpenStack(最爲出色),CloudStack等

二.雲存儲

雲存儲系統是一個以數據存儲和管理爲核心的雲計算系統

三.雲遊戲

遊戲運行雲平臺服務端,雲平臺將遊戲畫面解壓縮後傳給用戶,用戶端無需高配置處理器和顯卡,只需要基本的視頻解壓縮能力即可。

四.雲物聯

基於雲平臺實現物物相連的互聯網。

五.雲安全

通過網狀的大量客戶端檢測網絡中軟件的異常,獲取木馬,惡意程序的最新信息,推送到雲平臺服務端自動分析和處理,再把解決方案發送給每一個客戶端。雲平臺使用者越多,越安全。

六.公有云

雲平臺對外開放,主要以Iaas和Paas爲主,較爲成熟的是Iaas,如阿里雲,騰訊雲,青雲,ucloud,首都在線等

七.混合雲

公有云和私有云的結合,即對企業內部又對企業外部,例如AWS

五:傳統應用與雲感知應用

一、傳統應用

傳統應用像養寵物,寵物病了要細心呵護

每個應用都是獨特的、專門的

專門的服務器、硬件和軟件保證可靠性

資源不夠,增加cpu、內存、磁盤

專門的技術支持

二、雲感知應用

雲感知應用像養牛,牛生病了,你需要一頭新的牛

應用跑在一個或多個虛擬機裏

資源不夠,增加新的虛擬機

應用掛起,重啓或創建新的虛擬機

六:OpenStack與及其相關組件介紹

一、OpenStack由來

OpenStack最早由美國國家航空航天局NASA研發的Nova和Rackspace研發的swift組成。後來以apache許可證授權,旨在爲公共及私有云平臺建設。openstack主要用來爲企業內部實現類似於Amazon EC2和S3的雲基礎架構服務(Iaas).每6個月更新一次,基本與ubuntu同步,命名是以A-Z作爲首字母來的。

二、OpenStack項目與組件(服務名是項目名的別名)

1.控制檯

服務名:Dashboard

項目名:Horizon

功能:web方式管理雲平臺,建雲主機,分配網絡,配安全組,加雲盤

2.計算

服務名:計算

項目名:Nova

nbsp; 功能:負責響應虛擬機創建請求、調度、銷燬雲主機

3.網絡

服務名:網絡

項目名:Neutron

功能:實現SDN(軟件定義網絡),提供一整套API,用戶可以基於該API實現自己定義專屬網絡,不同廠商可以基於此API提供自己的產品實現

1.對象存儲

服務名:對象存儲

項目名:Swift

功能:REST風格的接口和扁平的數據組織結構。RESTFUL HTTP API來保存和訪問任意非結構化數據,ring環的方式實現數據自動複製和高度可以擴展架構,保證數據的高度容錯和可靠性

2.塊存儲

服務名:塊存儲

項目名:Cinder

功能:提供持久化塊存儲,即爲雲主機提供附加雲盤。

1.認證服務

服務名:認證服務

項目名:Keystone

功能:爲訪問openstack各組件提供認證和授權功能,認證通過後,提供一個服務列表(存放你有權訪問的服務),可以通過該列表訪問各個組件。

2.鏡像服務

服務名:鏡像服務

項目名:Glance

功能:爲雲主機安裝操作系統提供不同的鏡像選擇

3.計費服務

服務名:計費服務

項目名:Ceilometer

功能:收集雲平臺資源使用數據,用來計費或者性能監控

1.編排服務

服務名:編排服務

項目名:Heat

功能:自動化部署應用,自動化管理應用的整個生命週期.主要用於Paas

三、OpenStack各組件詳解及運行流程

各組件邏輯關係圖:
各組件邏輯關係圖
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的信息調用配置的虛擬化驅動來創建虛擬機。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章