一、 什么是openstack?
OpenStack是一個由NASA(美國國家航空航天局)和Rackspace合作研發并發起的,以Apache許可證授權的自由軟件和開放源代碼項目。
二、openstack前世今身
openstack是一個跟Eucalyptus,AWS(Amazon web Service)類似的IaaS框
openstack最有由美國國家航空航天局NASA研發的Nova和Rackspace研發swift組成。后來以Apache許可授權,指在為公共及私有云平臺建設。openstack主要用來為企業內部實現類似于Amazon EC2和S3的云基礎架構(IaaS)。每6個月更新一次,一般與Ubuntu同步,命名是以A-Z作為首字母來的。
三、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
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
?
四、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的信息調用配置的虛擬化驅動來創建虛擬機
?