openstack及其核心组件
openstack及其核心組件
- 云計算
- 概述
- 基本特征
- 發布模型
- 服務類型
- IAAS(基礎架構即服務)
- PAAS(平臺即服務)
- openStack
- 概述
- 優勢
- 核心組件
- 概念架構
- 邏輯架構
- 通信關系
- 物理架構
- 控制節點
- 網絡節點
- 網絡節點的組成
- 計算節點
- 存儲節點
了解openstack之前我們要先了解云計算這個概念
云計算
概述
云計算管理的是網絡資源、存儲資源、服務器資源等物理硬件資源。可以使客戶在任何時間任何地點,通過網絡,獲取所需要的資源或服務,并且按需分配,按用量進行收費。
基本特征
按需自助服務
視客戶需要,可以從每個服務提供商那里單方面地向客戶提供計算能力,譬如,服務器時間和網絡存儲,而這些是自動進行無需干涉的
廣泛的網絡訪問
具有通過規范機制網絡訪問的能力,這種機制可以使用各種各樣的瘦和胖客戶端平臺(例如,攜帶電話、筆記本電腦以及PDA)
資源共享
提供商提供的計算資源被集中起來通過一個多客戶共享模型來為多個客戶提供服務,并根據客戶的需求,動態地分配或再分配不同的物理和虛擬資源。有一個區域獨立的觀念,就是客戶通常不需要控制或者需要知道被提供的資源的確切的位置,但是可能會在更高一層的抽象(例如,國家、州或者數據中心)上指定資源的位置。資源的例子包括存儲設備、數據加工、內存、網絡帶寬和虛擬機等
快速的可伸縮性
具有快速地可伸縮性地提供服務的能力。在一些場景中,所提供的服務可以自動地,快速地橫向擴展,在某種條件下迅速釋放、以及快速橫向收縮。對于客戶來講,這種能力用于使所提供的服務看起來好象是無限的,并且可以在任何時間、購買任何數量
可度量的服務
云系統通過一種可計量的能力杠桿在某些抽象層上自動地控制并優化資源以達到某種服務類型(例如,存儲、處理、帶寬以及活動用戶帳號)。資源的使用可以被監視和控制,通過向供應商和用戶提供這些被使用服務報告以達到透明化
發布模型
架構即服務 (IaaS)
向客戶提供處理、存儲、網絡以及其他基礎計算資源,客戶可以在上運行任意軟件,包括操作系統和應用程序。用戶不管理或者控制底層的云基礎架構,但是可以控制操作系統、存儲、發布應用程序,以及可能限度的控制選擇的網絡組件(例如,防火墻)
發布模型:
私有云(使用計費)
云基礎架構被一個組織獨立地操作,可能被這個組織或者第三方機構所管理,可能存在于某種條件下或者無條件存在。
社區云
云基礎架構被幾個組織所共享,并且支持一個互相分享概念(例如,任務、安全需求、策略和切合的決策)的特別的社區。可能被這些組織或者第三方機構所管理,可能存在于某種條件下或者無條件存在。
公有云
云基礎架構被做成一般公共或者一個大的工業群體所使用,被某個組織所擁有,并出售云服務。
混合云(公有云,私有云)
云基礎架構是由兩個或者兩個以上的云組成,這些云保持著唯一的實體但是通過標準或者特有的技術結合在一起。這些技術使得數據或者應用程序具有可移植性。(例如,在云之間進行負載平衡的Cloud Bursting技術)(硬件資源超負荷)
服務類型
IAAS(基礎架構即服務)
提供底層IT基礎設施服務,包括處理能力,存儲空間、網絡資源
一般面對對象是IT管理人員。
場景:用戶可獲取的是硬件或虛擬硬件,包括裸機或虛擬機,可以自行安裝操作系統或其他應用程序。openstack就是一種IAAS云服務。
用戶通過網絡獲取虛機、存儲、網絡,然后用戶根據自己的需求操作獲取的資源
PAAS(平臺即服務)
把安裝好開發環境的系統平臺作為一種服務通過互聯網提供給用戶
一般面對對象是開發人員。
場景:用戶可獲取的是安裝了操作系統以及支撐應用程序運行所需要的資源庫等軟件的物理機或虛擬機,可以自行安裝其他應用程序,但不能修改已經預裝好的操作系統和運行環境。
將軟件研發平臺作為一種服務, 如Eclipse/Java編程平臺,服務商提供編程接口/運行平臺等
SAAS(軟件即服務)
直接通過互聯網為用戶提供部署好的軟件和應用程序的服務,可直接使用
一般面向對象是普通用戶。
場景:用戶可獲取的是以租賃的方式來直接使用一些軟件,而不是購買。
將軟件作為一種服務通過網絡提供給用戶,如web的電子郵件、HR系統、訂單管理系統、客戶關系系統等。用戶無需購買軟件,而是向提供商租用基于web的軟件,來管理企業經營活動
openStack
概述
NASA(美國國家航空航天局)和rackspace共同發起,以apache許可證授權的自由軟件和開放源代碼項目。為公有云及私有云的建設與管理提供軟件的開源項目,覆蓋了網絡、虛擬化、操作系統、服務器等各個方面。openstack是一個開源的云計算管理平臺架構,是一系列開源的軟件項目的組合。云平臺的底層支持(與傳統運維分水嶺)。
優勢
控制性
完全開源的平臺,提供API接口,方便與第三方技術集成
兼容性
OpenStack兼容其他公有云,方便用戶進行數據遷移
可擴展性
模塊化設計,可以通過橫向擴展,增加節點、添加資源
靈活性
根據自己的需要建立相應基礎設施、增加集群規模
行業標準
眾多IT領軍企業已經加入到OpenStack項目
核心組件
| Compute 計算服務 | Nova | 負責創建,調度,銷毀云主機 | 負責實例生命周期的管理,計算資源的單位。對Hypervisor(又稱虛擬機監視器(英語:virtual machine monitor,縮寫為 VMM),是用來建立與執行虛擬機器的軟件、固件或硬件。)進行屏蔽,支持多種虛擬化技術(紅帽默認為KVM),支持橫向擴展 負責創建,調度,銷毀云主機 |
| Network 網絡服務 | Neutron | 負責實現SDN | 負責虛擬網絡的管理,為實例創建網絡的拓撲結構。是面向租戶的網絡管理,可以自己定義自己的網絡,各個租戶之間互不影響 |
| Identify | 身份認證服務 Keystone | 為訪問openstack各組件提供認證和授權功能,認證通過后,提供一個服務列表(存放你有權訪問的服務),可以通過該列表訪問各個組件 | 類似于LDAP服務,對用戶、租戶和角色、服務進行認證與授權,且支持多認證機制 |
| Dashboard 控制面板服務 | Horizon | 就是web展示界面操作平臺,方便用戶交互 | 提供一個Web管理界面,與OpenStack底層服務進行交互 |
| Image Service 鏡像服務 | Glance | 提供鏡像服務,裝機使用 | 提供虛擬機鏡像模板的注冊與管理,將做好的操作系統拷貝為鏡像模板,在創建虛擬機時直接使用,可支持多格式的鏡像 |
| Block Storage 塊存儲服務 | Cinder | 提供持久化塊存儲,即為云主機提供附加云盤 | 負責為運行實例提供持久的塊存儲設備,可進行方便的擴展,按需付費,支持多種后端存儲 |
| Object Storage 對象存儲服務 | Swift | 目錄結構存儲數據 | 為OpenStack提供基于云的彈性存儲,支持集群無單點故障 |
| Telemetry 計量服務 | Ceilometer | 很明顯自用的根本不需要這功能,而且所謂的監控其實根本也算不上什么監控,監控性能,計費 | 用于度量、監控和控制數據資源的集中來源,為OpenStack用戶提供記賬途徑 |
概念架構
核心為虛擬機,所有組件圍繞虛擬機,為它提供服務。可將上圖的架構分為三個部分:
紅色方框為全局組件:
keystone:為所有服務模塊提供認證與授權
ceilometer:度量、監控所有數據資源
horizon :UI平臺管理,提供一個web管理頁面,與底層交互
橙色方框為輔助組件:
ironic 提供裸金屬環境(沒有操作系統的計算機硬件,簡稱裸機)
trove 提供管理數據庫服務(控制關系型和非關系型數據庫)
heat,sahara 提供對數據管理和編排
黃色方框為核心組件:
glance:提供鏡像服務
neutron:提供網絡服務
swift:提供對象存儲資源
cinder:提供快存儲資源
nova:管理實例的生命周期,并負責調取以上四個資源給虛擬機使用。
具體流程
云平臺用戶在經過Keystone服務認證授權后,通過Horizon或者Reset API模式創建虛擬機服務,創建過程中包括利用Nova服務創建虛擬機實例,虛擬機實例采用Glance提供鏡像服務,然后使用Neutron為新建的虛擬機分配IP地址,并將其納入虛擬網絡中,之后在通過Cinder創建的卷為虛擬機掛載存儲塊,整個過程都在Ceilometer模塊資源的監控下,Cinder產生的卷(Volume)和Glance提供的鏡像(Image) 可以通過Swift的對象存儲機制進行保存。
ps:
MQ(Message Queue)消息隊列
是基礎數據結構中“先進先出”的一種數據結構。一般用來解決應用解耦,異步消息,流量削峰等問題,實現高性能,高可用,可伸縮和最終一致性架構。
常用的三種類型,包括rabbitmq、 rocketmq、kafka,是兩個獨立的服務之間,消息傳遞的載體,解決消息在傳輸是請求的高并發問題,會以容器的方式,存儲消息列表(包括請求、交互、報文),劃分重要等級放入隊列中,逐個處理,處理完的會自動刪除。
Token
服務端生成的一串字符串,以作客戶端進行請求的一個令牌,當第一次登錄后,服務器生成一個Token便將此Token返回給客戶端,以后客戶端只需帶上這個Token前來請求數據即可,無需再次帶上用戶名和密碼。
邏輯架構
簡單看就是內部核心組件、輔助組件、全局組件,各組件之間通過api進行對接,通訊則采用消息代理(rabbitmq)。核心組件的功能模塊,以及單個功能模塊之間如何通訊。
全局,架構層面
OpenStack包括若干個稱為OpenStack服務的獨立組件,所有服務均可通過一個公共身份服務進行身份驗證,除了那些需要管理權限的命令,每個服務之間均可通過公共API進行交互。
OpenStack分為多個核心組件,核心組件之間只/僅通過一個公共的API進行對接/通訊。同時每個核心組件,都由一個對立的用戶進行管理(會對用戶授權)。httpd承載API,HTTPD提供一個展示web頁面的方式,并且表示是以HTTP進行通訊。
單個服務,核心組件(維度)
每個OpenStack服務又由若干組件組成。包含多個進程。所有服務至少有一個API進程,用于偵聽API請求,對這些請求進行預處理,并將它們傳送到該服務的其它組件。除了認證服務,實際工作都是由具體的進程完成的
restful請求:外部想要訪問/查詢/調用,內部的資源的請求
API負責接收請求,對請求進行預處理,并且把它們發給后端對應的功能模塊,它本身不負責具體過程處理
預處理:
API向keystone進行權限認證
根據請求需求把請求分發給對應的功能模塊進行處理
一個服務的進程之間通信,則使用AMQP消息代理,服務的狀態存儲在數據庫中。
以核心組件維度來理解
1.API
2.子功能模塊
3.其它(rabbitmq 消息隊列)
ps:
使用AMQP,因為以服務本身擁有的消息傳遞和消息交互的通訊方式,進行通訊與數據傳輸會存在嚴重的瓶頸問題。openstack本身架構非常的復雜,龐大,處理的數據量非常多時,消息傳遞速率,效率及合理性會有一個嚴格的劃分,需要使用一個隊列(AMQP消息代理)去作為中間的承載,而這樣的一個服務叫rabbitmq(消息隊列)。
每一個核心組件都是由各種各樣的子功能模塊構成,每個功能模塊做具體的事件處理,執行具體的任務,它們各組件的通訊也是借助了消息代理這種方式。
通信關系
基于AMQP協議的通信
用于每個項目內部各個組件之間的通信。
基于SQL的通信
用于各個項目內部的數據庫通信。
基于HTTP協議進行通信
通過各項目的API建立的通信關系,API都是RESTful Web API。
通過Native API實現通信
OpenStack各組件和第三方軟硬件之間的通信。
物理架構
一共有四種節點類型:控制節點、網絡節點、計算節點、存儲節點
控制節點
作用:分發任務,主要管理其他節點。控制節點也可以跑實例資源(處理具體任務)
支持服務
MySQL:數據庫作為基礎/擴展服務產生的數據存放的地方
RabbitMQ:消息代理(也稱消息中間件)為其他各種服務之間提供了統一的消息通信服務
基礎服務
Keystone:認證管理服務,提供了其余所有組件的認證信息/令牌的管理,創建,修改等等,使用MySQL作為統一的數據庫
Glance:鏡像管理服務,提供了對虛擬機部署的時候所能提供的鏡像的管理,包含鏡像的導入,格式,以及制作相應的模板
Nova:計算管理服務,提供了對計算節點的Nova的管理,使用Nova-API進行通信
Neutron:網絡管理服務,提供了對網絡節點的網絡拓撲管理,同時提供Neutron在Horizon的管理面板
Horizon:控制臺服務,提供了以Web的形式對所有節點的所有服務的管理,通常把該服務稱DashBoard
ps:
Glance、Nova、Neutron:創建數據庫所必備的組件,也是最為復雜的組件,所以為基礎服務
控制節點管理著計算節點,Nova想要調用資源分配的話也是會由控制節點中的Nova進行調用/管理
擴展服務
Cinder:提供管理存儲節點的Cinder相關,同時提供Cinder在Horizon中的管理面板
Swift:提供管理存儲節點的Swift相關,同時提供Swift在Horizon中的管理面板
Trove:提供管理數據庫節點的Trove相關,同時提供Trove在Horizon中的管理面板
Heat:提供了基于模板來實現云環境中資源的初始化,依賴關系處理,部署等基本操作,也可以解決自動收縮,負載均衡等高級特性。
Centimeter:提供對物理資源以及虛擬資源的監控,并記錄這些數據,對該數據進行分析,在一定條件下觸發相應動作
ps:
Cinder、Swift、Trove、Heat:數據存儲的管理
Cinder、Swift:輔助組件,提供虛擬機的存儲支持
網絡接口
通過網絡接口管理其他節點的網絡。對應的其他節點的管理網絡的作用就是接受其他節點管理網絡的管理,并將請求轉發回去。
ps:
對網卡的功能進行了劃分,負責了在網絡層面對OpenStack進行管理,如果以四個節點進行劃分的話,控制節點通過這種管理網絡的網卡類型去管理網絡節點、管理計算節點、管理存儲節點,就是說以網絡的層面管理其它控制節點,管理整個架構,那么其他節點管理網絡的功能為接受控制節點的一個任務/請求,并且通過這樣的管理網絡把數據返回回去
網絡節點
基礎服務
Neutron:具體實現
網絡接口
管理網絡:接受控制節點的任務調度
數據網絡:數據庫相關的網絡管理。包括:數據對接、數據存儲,數據同步,和其他節點上的數據網絡進行關聯
外部網絡:負責和外部第三方組件做對接、管理、集成等。
網絡節點的組成
提供者網絡:Openstack結構內部網絡
自服務網絡:Openstack架構外部網絡
Openstack網絡類型(以功能劃分)有兩種,第一個是內部網絡,第二個是外部網絡
Openstack的網絡功能,是通過插件、代理的方式來實現
提供者網絡(指的就是OpenStack原生架構內部)
聯網管理:是一種類型
ML2插件:在OpenStack中,提供網絡支持的方式就是通過插件和代理的方式去實現網絡的功能,ML2代表的就是二層的插件管理
Linux網絡工具:比如說一些虛擬交換機、虛擬路由器一些虛擬設備,包括虛擬化的一個網線和對接的網卡
Linux Bridge代理:網橋、橋接、DHCP代理:就是通過插件與代理的方式去實現的
元數據代理(Metadata Agent):管理的是具體的一個屬性的控制,這樣修改它的網絡組件包括虛擬設備,都可以通過修修改他的元數據屬性來進行修改,控制
自服務網絡(指的就是OpenStack架構外部的網絡)
與提供者網絡相比多了一個三層代理(L3 Agent)
L3 Agent:三層設備,路由器、三層交換機,可以跨網段通信,也就是可以跨節點,跨平臺通信
計算節點
基礎服務
Nova Hypervisor:實例生命周期的管理,負責調用底層VMM的資源給虛擬機使用
網絡插件代理:通過插件和代理來實現網絡二層、三層的具體功能
擴展服務
celiometer Agent:計量客戶使用的資源量,并根據這個來按量收費
網絡接口
管理網絡:接受控制節點的網絡接口的調度和管理
數據網絡:數據庫相關的網絡管理。包括:數據對接、數據存儲,數據同步,和其他節點上的數據網絡進行關聯
存儲節點
基礎服務
Cinder:提供塊存儲
Swift:提供對象存儲
網絡接口
管理網絡:接受控制節點的網絡接口的調度和管理
數據網絡:數據庫相關的網絡管理。包括:數據對接、數據存儲,數據同步,和其他節點上的數據網絡進行關聯
總結
以上是生活随笔為你收集整理的openstack及其核心组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python安装pyinstaller模
- 下一篇: Sklearn学习之路(2)——围绕评估