1、 什麼是openstack?web
OpenStack是一個由NASA(美國國家航空航天局)和Rackspace合做研發併發起的,以Apache許可證受權的自由軟件和開放源代碼項目。算法
2、openstack前世今身數據庫
openstack是一個跟Eucalyptus,AWS(Amazon web Service)相似的IaaS框swift
openstack最有由美國國家航空航天局NASA研發的Nova和Rackspace研發swift組成。後來以Apache許可受權,指在爲公共及私有云平臺建設。openstack主要用來爲企業內部實現相似於Amazon EC2和S3的雲基礎架構(IaaS)。每6個月更新一次,通常與Ubuntu同步,命名是以A-Z做爲首字母來的。後端
3、openstack項目及組件功能簡單介紹api
核心項目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 4 文件存儲:在用戶的角度來講,就是一個文件夾。例如:U盤,ftp(文件傳輸協議)、nfs等 5 特色:沒法格式化 6 基本操做單位是文件 7 基於Postfix標準的文件處理,進行增刪改查 8 9 塊存儲:在用戶的角度來講就是一塊裸盤(空硬盤,進行格式化,分block大小) 10 特色:能夠格式化 11 基本操做單位是block 12 13 文件存儲與塊存儲之間的關係:對用戶來講,到最後用的還是文件存儲 14 15 對象存儲:key:value形式(例如網盤分享,一個鏈接表明一個key,一個文件表明value) 16 key:value的表示 httpd://1.1.1.1/api:object(冒號前面爲key,後面爲value) 17 18 特色:一切皆對象,速度快(屬於非關係型,比關係型快) 19 本質上沒法再對象存儲裏修改文件
共享服務項目3個
1.認證服務
服務名:認證服務
項目名:Keystone
功能:爲訪問openstack各組件提供認證和受權功能,認證經過後,提供一個服務列表(存放你有權訪問的服務),能夠經過該列表訪問各個組件
2.鏡像服務
服務名:鏡像服務
項目名:Glance
功能:爲雲主機安裝操做系統提供不一樣的鏡像選擇
3.計費服務
服務名:計費服務
項目名:Ceilometer
功能:收集雲平臺資源使用數據,用來計費或者性能監控
高層服務項目1個
1.編排服務
服務名:編排服務
項目名:Heat
功能:自動化部署應用,自動化管理應用的整個生命週期,主要用於PaaS
4、openstack各組件關係
openstack新建主機流程圖
首先咱們先分析一下這個流程圖。整個的體系下來不止這29步
1.命令行或者經過web界面,就是dashboard,經過RESTful API向keystone獲取認證信息
2.keystone經過用戶請求進行認證,並生成auth-token返回給用戶,這個第一個token是屬於用戶用沒有權限登陸的token
3.命令行或web界面經過RESTful API 向nova-api發送一個新建虛擬機的請求並攜帶一個token.這個token屬於第二個token,看這個token是否有權限訪問nova
4. nova-api 接受來自客戶端的請求和token信息,而後拿着token信息向keystone認證。
5.keystone驗證token是否有效,有效則返回有效的認證和對應的角色(有些操做須要有角色權限才能操做)
6.經過認證後nova-api將用戶的建立虛擬機的請求寫到數據庫中,(新建虛擬機信息:cpu,內存,硬盤,網絡結構,屬於什麼vlan等等)
7.初始化新建虛擬機的數據庫記錄並返回
8.nova-api將新建虛擬機的請求信息放到消息中間件(MQ)中。(經過rpc.call)只是請求信息並非詳細信息.
9.nova-scheduler(nova計算節點,安裝了nova-compute的軟件)接受nova-api的請求。就是在多個nova-compute中找到一個合適的nova-compute讓它去建虛擬機
10.nova-scheduler經過查詢nova數據庫 計算資源的狀況,並經過調度算法計算符合虛擬機建立須要的主機,並返回信息到nova-scheduler
11.對有符合建立虛擬的物理主機,nova-scheduler就會更新數據庫中對應的物理主機信息
12.nova-scheduler經過rpc.cast像nova-compute發送對應的建立虛擬機請求信息
13.nova-compute會從消息列隊中獲取建立虛擬機的請求信息。
14.nova-compute經過rpc.call像nova-conductor請求獲取虛擬機的信息
15.nova-conductor從消息列隊中拿到nova-compute的請求信息
16.nova-conductor根據信息進行查詢虛擬機對應信息
17.nova-conductor從數據庫中獲取虛擬機對應信息
18.nova-conductor把虛擬機信息經過消息的方式發送到消息列隊中
(上述的nova部分屬於回調機制)
19.nova-compute從對應的消息列隊中獲取虛擬機信息
20.nova-compute經過keystone的RESTful API 拿到認證token,並經過http請求glance-api獲取建立虛擬機所需的鏡像。
21.glance-api想keystone認證token是否有效,並返回認證結果
glance具體如何工做的:
glance-api接收到請求後,將請求發給glance-registry,glance-registry到數據庫中將鏡像的元數據拿到,並返回給glance-api。glance-api會到後端的存儲拿到鏡像的URL地址
22.token驗證經過,nova-compute得到虛擬機鏡像信息(URL)下載到本地
23.nova-compute經過keystone的RESTful API 拿到認證的token,而且經過HTTP請求neutron-server獲取建立虛擬機所須要的網絡
24.neutron-server去向keystone認證token是否有效,並返回結果。
25token認證經過後,nova-compute得到虛擬機網絡信息
26.nova-compute 經過keystone的RESTful API拿到認證token,並經過HTTP請求cinder-api獲取建立虛擬機所需的持久化存儲信息
27.cinder-api向keystone認證token是否有效,並返回結果
28.token認證經過後,nova-compute獲的虛擬機持久化存儲信息
29.nova-compute根據instance的信息調用配置的虛擬化驅動來建立虛擬機