1. 程式人生 > 其它 >八、OpenStack知識點總結

八、OpenStack知識點總結

一:雲端計算

一、起源

  1. 雲端計算這個概念首次在2006年8月的搜尋引擎會議上提出,成為了繼網際網路、計算機後資訊時代的又一種革新(網際網路第三次革命)。

  2. 雲端計算的核心是將資源協調在一起,使使用者通過網路就可以獲取到無限的資源並且不受時間和空間的限制,為使用者提供一種全新的體驗。

二、基本概念

1.定義

  • 官方:雲端計算是一種按使用量付費的模式(資源服務模式),該模式可以實現隨時隨地、便捷按需的從可配置資源共享池中獲取所需的資源。

  • 百度百科:雲端計算是基於網際網路的相關服務的增加、使用和交付模式,通常涉及通過網際網路來提供動態易擴充套件且經常是虛擬化的資源。

2.特點

  • 按需部署:根據使用者的需求快速配備計算能力及資源分配。

  • 資源池化:供應商的資源被池化,以多使用者租用模式被不同客戶使用。

  • 快速伸縮:資源可以彈性的部署和釋放。

  • 可靠性高:倘若伺服器故障也不影響計算與應用的正常執行。

3.分類

  • 私有云:雲端計算基礎設施由一個單一的組織部署和使用。

  • 公有云:雲端計算基礎設施被部署給廣泛的公眾公開使用。

  • 混合雲:使用標準或專有的技術組合以上兩種雲。

4.服務型別

  • IaaS(基礎設施即服務):提供商提供虛擬化計算資源,如虛擬機器、儲存、網路和作業系統。

  • PaaS(平臺即服務):通過網際網路為開發人員提供構建應用程式和服務的平臺。

  • SaaS(軟體即服務):通過網際網路為使用者提供按需軟體付費應用程式。

三、平臺分類

1.從技術應用劃分

  • 以資料儲存為主的儲存型雲平臺

  • 以資料處理為主的計算型雲平臺

  • 計算和儲存兼顧的綜合型雲平臺

2.從是否收費劃分

  • 開源雲平臺:AbiCloud、Hadoop、Eucalyptus、MongoDB、OpenStack

  • 商業化雲平臺:Google、IBM、Oracle、Amazon、阿里雲等

四、應用

  1. 儲存雲:雲端儲存是一個以資料儲存和管理為核心的雲端計算系統。使用者可以將本地的資源上傳至雲端上,可以在任何地方連入網際網路來獲取雲上的資源。

  2. 醫療雲:使用雲端計算來建立醫療健康服務雲平臺,實現了醫療資源的共享和醫療範圍的擴大

  3. 金融雲:利用雲端計算的模型,將資訊、金融和服務等功能分散到龐大分支機構構成的網際網路“雲”中,共享網際網路資源,從而解決現有問題並且達到高效、低成本的目標。

  4. 教育雲:教育雲可以將所需要的任何教育硬體資源虛擬化,然後將其傳入網際網路中,以向教育機構和學生老師提供一個方便快捷的平臺。

五、虛擬化

1.虛擬化技術

  • 定義:虛擬化是一個廣義上的術語,是指計算元件在虛擬的基礎上而不是真實的基礎上執行,是一個為了簡化管理,優化資源的解決方案。

  • 分類

    • 桌面虛擬化:在本地計算機顯示和操作遠端計算機桌面,在遠端計算機執行程式和儲存資訊。

    • 應用虛擬化:在作業系統和應用程式間建立虛擬環境。

    • 伺服器虛擬化:將伺服器物理資源抽象成邏輯資源形成動態管理的“資源池“”。

    • 網路虛擬化:將不同網路的硬體和軟體資源結合成一個虛擬的整體。

    • 儲存虛擬化:將實體儲存空間分隔成不同的邏輯儲存空間。

2.雲端計算和虛擬化的關係

3.虛擬化的優點

  • 提高IT資源利用率,加速應用部署,提高應用相容性。

  • 顯著減少了伺服器的數量,企業不動資產和管理成本。

二:OpenStack

一、簡介

1. 定義

  • 百度百科:OpenStack是一個開源的雲端計算管理平臺專案,由NASA(美國國家航空航天局)和Rackspace合作研發併發起,以Apache許可證授權的開原始碼專案。

  • 官方:OpenStack是一個雲作業系統,通過資料中心可控制大型的計算、儲存、網路等資源池。所有的管理通過前端介面管理員就可以完成,同樣也可以通過web介面讓終端使用者部署資源。

2. 發展歷程

二、核心架構

1. 物理架構圖

2. 邏輯架構圖

3. 概念架構圖

三、核心專案

1.共享服務元件

  1. 資料庫服務(database service):Mariadb及Mongodb。

  2. 訊息傳輸(Message Queues)::RabbitMQ

  3. 快取(cache):Memcached

  4. 時間同步(time sync):ntp

  5. 儲存(storge provider):ceph,GFS,LVM,ISICI等

  6. 高可用及負載均衡:pacemaker,HAproxy,keepalived,lvs

2. 核心元件

  1. 認證服務(Identity Service):Keystone。提供了其餘所有元件的認證資訊/令牌的管理,建立,修改等等,使用MySQL作為統一的資料庫。

  2. 映象服務(Image Service):Glance。提供了對虛擬機器部署的時候所能提供的映象的管理,包含映象的匯入,格式,以及製作相應的模板

  3. 計算服務(compute):Nova。負責維護和管理雲端計算計算資源,維護和管理計算和網路。

  4. 網路服務(Network):Neutron。提供了對網路節點的網路拓撲管理,同時提供Neutron在Horizon的管理面板

  5. Web介面服務(Dashboard):Horizon。提供了以Web的形式對所有節點的所有服務的管理

  6. 塊儲存服務(Block Storage):Cinder。為執行例項提供穩定的資料塊儲存服務

  7. 物件儲存(Object Storage):Swift。為Glance提供映象儲存和卷備份服務

  8. 測量(Metering):Ceillrmeter。提供對物理資源以及虛擬資源的監控,並記錄這些資料,對該資料進行分析,在一定條件下觸發相應動作

  9. 部署編排(Orchestration):Heat。提供了基於模板來實現雲環境中資源的初始化,依賴關係處理,部署等基本操作,也可以解決自動收縮,負載均衡等高階特性。

  10. 資料庫服務(Database Service):Trove。提供可擴充套件和可靠的關係和非關係資料庫引擎服務

四、元件詳解

1.RabbitMQ

  • 1.1 概念:實現了AMQP( 高階訊息佇列協議 )的流行訊息佇列系統 ,用於在分散式系統中儲存轉發訊息,在 易用性、擴充套件性、高可用性等方面表現不俗。

  • 1.2 特點

    • 開源,效能優秀,穩定性保障。

    • 提供可靠性訊息投遞模式、返回模式和HA模式、表示式配置及映象佇列模型

    • 叢集模式豐富,語Spring AMQP完美整合,保證資料不丟失的前提做到高可靠性和可用性

  • 1.3 核心概念

  • 1.4 工作原理

    • 1.客戶端連線到訊息佇列伺服器,開啟一個channel。

    • 2.客戶端宣告一個exchange,並設定相關屬性。

    • 3.客戶端宣告一個queue,並設定相關屬性。

    • 4.客戶端使用routing key,在exchange和queue之間建立好繫結關係。

    • 5.客戶端投遞訊息到exchange。

    • 6.exchange接收到訊息後,就根據訊息的key和已經設定的binding,進行訊息路由,將訊息投遞到一個或多個佇列裡。

  • 1.5 常用操作

2.Memcached

2.1 概念:Memcached 是一個開源的、高效能的分散式記憶體物件快取系統。通過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提高網站訪問速度,加速動態WEB應用、減輕資料庫負載。

2.2 快取流程

  • 檢查客戶端請求的資料是否在 Memcache 中,如果存在,直接將請求的資料返回,不在對資料進行任何操作。

  • 如果請求的資料不在 Memcache 中,就去資料庫查詢,把從資料庫中獲取的資料返回給客戶端,同時把資料快取一份 Memcache 中

  • 每次更新資料庫的同時更新 Memcache 中的資料庫,確保資料資訊一致性。

  • 當分配給 Memcache 記憶體空間用完後,會使用 LRU 策略加到其失效策略,失效的資料首先被替換掉,然後再替換掉最近未使用的資料。

3.Keystone

  • 3.1 作用:認證服務,提供了其餘所有元件的認證資訊/令牌的管理,建立,修改等等,使用MySQL作為統一的資料庫。

  • 3.2 核心概念

  • 3.3 工作原理
  • 3.4 工作流程(在各個元件中的作用)

4. Glance

  • 4.1 作用:映象服務,提供了對虛擬機器部署的時候所能提供的映象的管理,包含映象的匯入,格式,以及製作相應的模板

  • 4.2 核心概念

  • 4.3 工作原理

    • 4.3.1 Glance-api:接收REST API的請求,然後通過其他模組來完成諸如映象的查詢、獲取、上傳、刪除等操作,預設監聽埠9292。

    • 4.3.2 Glance-registry:用於與MariaDB資料庫互動,用於儲存或獲取映象的元資料(metadata),預設監聽埠9191。

    • 4.3.3 Store Adapter:通過提供的儲存介面來獲取映象

5. Nova(核心)

  • 作用:負責維護和管理的網路和儲存,提供計算服務

  • 核心元件

  • 虛擬機器建立流程

6. Horizon

  • 作用:web介面服務(Dashboard),提供了以Web的形式對所有節點的所有服務的管理

  • 區域(Region)

    • 地理上的概念,可以理解為一個獨立的資料中心,每個所定義的區域有自己獨立的Endpoint;

    • 區域之間是完全隔離的,但多個區域之間共享同一個Keystone和Dashboard(目前Openstack中的Dashboard還不支援多個區域);

    • 區域的設計更多側重地理位置的概念,使用者可以選擇離自己更新的區域來部署自己的服務,選擇不同的區域主要是考慮那個區域更靠近自己;

    • 區域的概念是由Amazon在AWS中提出,主要是解決容錯能力和可靠性;

  • 可用性區域(Availability Zone)

    • AZ是在Region範圍內的再次切分,例如可以把一個機架上的伺服器劃分為一個AZ,劃分AZ是為了提高容災能力和提供廉價的隔離服務;

    • AZ主要是通過冗餘來解決可用性的問題,在Amazon的宣告中,Instance不可用是指使用者所有AZ中的同一個Instance都不可達才表明不可用;

    • AZ是使用者可見的一個概念,並可選擇,是物理隔離的,一個AZ不可用不會影響其他的AZ,使用者在建立Instance的時候可以選擇建立到那些AZ中;

  • Host Aggreates:一組具有共同屬性的節點集合,如以CPU作為區分型別的一個屬性

  • Cell

    • 概念:nova為了增加橫向擴充套件以及分散式、大規模(地理位置級別)部署的能力,同時又不增加資料庫和訊息中介軟體的複雜度,引入了cell的概念,並引入了nova-cell服務。

    • 作用

      • 解決OpenStack的擴充套件性和規模瓶頸

      • 每個Cell都有自己獨立的DB和AMQP,不與其他模組共用DB和AMQP,解決了大規模環境中DB和AMQP的瓶頸問題;

      • Cell實現了樹形結構(通過訊息路由)和分級排程(過濾演算法和權重演算法),Cell之間通過RPC通訊,解決了擴充套件性問題;

7. Cinder

  • 作用:儲存服務,為執行例項提供穩定的資料塊儲存服務

  • 核心元件

  • 工作流程

    • 使用者向 cinder-api傳送建立volume的請求

    • cinder-api對請求做一些必要處理後,通過 Messaging將建立訊息傳送給cinder-scheduler

    • cinder-scheduler從 Messaging 獲取到 cinder-api發給它的訊息,然後執行排程演算法,從若干計儲存點中選出節點 A

    • cinder-scheduler通過 Messaging 將建立訊息傳送給儲存節點A

    • 儲存節點 A 的 cinder-volume從 Messaging 中獲取到 cinder-scheduler發給它的訊息,然後通過 driver 在 volume provider 上建立 volume。

三:先電雲端計算基礎架構服務平臺搭建

一、搭建雲平臺(單雙節點)

1. 建立虛擬機器並配置網路

1.1 虛擬機器規格(單雙節點均可用)

1.2 網路配置

2. 基本環境配置

3.編輯環境變數

4. 執行指令碼安裝服務

4.1單節點(computer改為compute)

4.2雙節點(computer改為compute)

二、指令碼詳解

  1. 基礎配置指令碼:iaas-pre-host.sh

  2. 資料庫服務指令碼:iaas-install-msyql.sh

  3. 身份認證服務指令碼:iaas-install-keystone.sh

  4. 映象服務指令碼:iaas-install-glance.sh

  5. 計算服務指令碼:iaas-install-nova-{controller,comput}.sh

  6. 網路服務指令碼

    • 控制節點(單節點)

      • iaas-install-neutron-controller.sh

      • iaas-install-neutron-controller-gre.sh

    • 計算節點

      • iaas-install-neutron-compute.sh

      • iaas-install-neutron-compute-gre.sh

  7. web介面服務:iaas-install-dashboard.sh

  8. 塊儲存服務指令碼:iaas-install-cinder-{controller,compute}.sh

  9. 物件儲存服務:iaas-install-swift-{controller,compute}.sh