一、openstack各大模塊
1.openstack總架構圖
http://3ms.huawei.com/km/blogs/details/2655265
2.nova
2.0架構圖
2.1 nova-conductor
nova-compute 經常需要更新數據庫,比如更新虛機的狀態。 出於安全性和伸縮性的考慮,nova-compute 並不會直接訪問數據庫,而是將這個任務委托給 nova-conductor
2.2 nova-scheduler
虛機調度服務,負責決定在哪個計算節點上運行虛機
具體調度配置 https://www.cnblogs.com/CloudMan6/p/5441782.html
2.3 nova-compute
2.4 novncproxy
2.5 Hypervisor
計算節點上跑的虛擬化管理程序,虛機管理最底層的程序。 不同虛擬化技術提供自己的 Hypervisor。 常用的 Hypervisor 有 KVM,Xen, VMWare 等
2.6 nova-console
用戶可以通過多種方式訪問虛機的控制台:
nova-novncproxy,基於 Web 瀏覽器的 VNC 訪問 nova-spicehtml5proxy,
基於 HTML5 瀏覽器的 SPICE 訪問 nova-xvpnvncproxy,
基於 Java 客戶端的 VNC 訪問
2.7 nova-consoleauth
負責對訪問虛機控制台請求提供 Token 認證
2.8 nova-cert
提供 x509 證書支持
4、glance
4.1含義
管理 VM 的啟動鏡像,Nova 創建 VM 時將使用 Glance 提供的鏡像。
4..2glance架構圖
Image 的 metadata 會保持到 database 中,默認是 MySQL;image 是存放在 backend
4.3操作glance
4.3.1添加鏡像
ui方式 https://www.cnblogs.com/CloudMan6/p/5393376.html
cli方式 glance image-create --name cirros --file /tmp/cirros-0.3.4-x86_64-disk.img --disk-format qcow2 --container-format bare --progress
4.3.2刪除鏡像
ui方式 https://www.cnblogs.com/CloudMan6/p/5402490.html
cli方式 glance image-delete image-id名
4.3.3查詢
glance image-list
5、cinder
5.1含義
為雲平台提供統一接口,按需分配的,持久化的塊存儲服務(類似於Amazon EBS服務)
通過驅動的方式接入不同種類的后端存儲(本地存儲,網絡存儲,FCSAN,IPSAN)
5.2 cinder架構圖
參考:https://www.cnblogs.com/CloudMan6/p/5573159.html
cinder-api
接收 API 請求,調用 cinder-volume 執行操作。
cinder-volume
管理 volume 的服務,與 volume provider 協調工作,管理 volume 的生命周期。運行 cinder-volume 服務的節點被稱作為存儲節點。
cinder-volume 會定期向 Cinder 報告。cinder-volume 就會報告當前存儲節點的資源使用情況
cinder-scheduler
scheduler 通過調度算法選擇最合適的存儲節點創建 volume。
參考:https://www.cnblogs.com/CloudMan6/p/5589707.html
volume provider(LVS,NFS等)
數據的存儲設備,為 volume 提供物理存儲空間。 cinder-volume 支持多種 volume provider,每種 volume provider 通過自己的 driver 與cinder-volume 協調工作。
Message Queue
Cinder 各個子服務通過消息隊列實現進程間通信和相互協作。因為有了消息隊列,子服務之間實現了解耦,這種松散的結構也是分布式系統的重要特征。
Database
Cinder 有一些數據需要存放到數據庫中,一般使用 MySQL。數據庫是安裝在控制節點上的,比如在我們的實驗環境中,可以訪問名稱為“cinder”的數據庫。
Driver 框架
存儲節點支持多種 volume provider,包括 LVM, NFS, Ceph, GlusterFS,以及 EMC, IBM 等商業存儲系統。
cinder-volume 為這些 volume provider 定義了統一的 driver 接口,volume provider 只需要實現這些接口
參考:https://www.cnblogs.com/CloudMan6/p/5578673.html
5.3 存儲節點上本地的 LV 如何掛載到計算節點的 instance 上呢?通常情況存儲節點和計算節點是不同的物理節點
Cinder 的存儲節點 cinder-volume 默認使用 tgt 軟件來管理和監控 iSCSI target,在計算節點 nova-compute 使用 iscsiadm 執行 initiator 相關操作。
參考:https://www.cnblogs.com/CloudMan6/p/5624930.html
5.4 extend volume增加容量
參考:https://www.cnblogs.com/CloudMan6/p/5645305.html
5.5 snapshot
參考:https://www.cnblogs.com/CloudMan6/p/5657744.html
5.6 backup volume
參考:https://www.cnblogs.com/CloudMan6/p/5662236.html
5.7 restore volume
參考:https://www.cnblogs.com/CloudMan6/p/5668872.html
5.8 boot from volume
參考: https://www.cnblogs.com/CloudMan6/p/5679384.html
5.9 NFS volume
參考: https://www.cnblogs.com/CloudMan6/p/5683352.html
https://www.cnblogs.com/CloudMan6/p/5693771.html
6、swift對象存儲
6.1含義
提供對象存儲服務。VM 可以通過 RESTful API 存放對象數據。作為可選的方案,Glance 可以將鏡像存放在 Swift 中;Cinder 也可以將 Volume 備份到 Swift 中。
6.2優點
數據在整個系統中均勻分布
沒有中央數據庫
Account/Container/Object三級存儲結構均無需文件系統,且均有N(>=3)份拷貝
6.3swift架構
7、keystone鑒權管理
7.1keystone架構圖
user:一個使用openstack雲服務的人、系統或者服務。
project:項目,一組資源集合,包括虛擬資源如網絡、虛擬機、卷等資源關聯。
role:用戶角色,和policy配合使用。
token:一個通過keystone驗證的用戶標識,它的范圍與user+project或者user+domain關聯,根據獲取的token的方式來區分。
service:compute,image,identity,volume,network。
endpoint:service的網絡接入地址,具有region屬性。
group:用戶的集合,便於給用戶整體授予和取消權限
domain:類似命名空間,含有用戶、角色、Group、Project等。
policy:對於服務的操作規則,和角色相關,可以定義哪個角色可以進行哪些操作(v3版本只增加了crud操作,沒有邏輯實現替代policy.json的功能)
trust:一個用戶可以通過trust將自己的role和個人信息轉交給另一個用戶使用
8、Ceilometer
8.1含義
OpenStack中Ceilometer能把I層內部發生的事情和系統的運行情況收集起來,產生計量數據。FS OpenStack中Ceilometer主要為上層運維組件提供監控與告警數據,公有雲下可用於計費
8.2ceilometer框架
9、heat雲編排
9.1heat架構圖
模板是openstack資源的集合(虛擬機、網絡、存儲、告警、浮動IP、安全組、伸縮組、嵌套stack等),通過定義模板,可以將需要創建的資源在模板中描述,用此模板可以多次創建需要的資源。
由heat-api服務將這些模板由MQ實現的RPC方法發送至heat-engine服務處理,該服務將負責按照heat的規則解析這些模板,並最終將按照模板中定義的資源轉換為對不同組件API的調用,實現應用的部署與安裝。