1.1. Openstack的功能與作用
當今的數據中心,許多服務器都遇到過同樣的問題,即計算,電源,網絡帶寬等資源的利用率不足,當用戶想要一種靈活的,按需供給計算資源的服務,通過自動化或很少的人工干預就能使用時,那麼雲計算就是最好的選擇之一。雲計算通常包含了一個服務責任,表示雲計算服務提供商承諾的性能,規格,可用率等。雲計算服務讓用戶通過一個共享的計算資源,網絡帶寬,存儲池,運行應用程序或服務來完成計算工作,並按資源的使用來計費。
Openstack具有建設這樣資源池的能力,通過openstack的各種組件多種模式的排列組合,可以搭建成各種規模的雲,這些雲可以是私有云,公有云,混合雲。
Openstack具有三大核心功能,即計算,存儲,網絡,分別對應相應的項目Nova,Cinder等。其中Nova提供了計算資源的管理,可以管理跨服務器網絡的vm實例。同時Nova還提供了對多種Hyperviosr的支持,如KVM,QEMU,Xen,LXC,Vmware,Hyper-V,Powervm等。Cinder提供了存儲資源的管理,可以管理各個廠商提供的專業存儲設備。
1.2. Openstack關鍵組件
服務名稱 | 項目名稱 | 描述 |
Dashboard | Horizon | 基於openstackAPI接口使用django開發的web管理 |
Compute | Nova | 通過虛擬化技術提供計算資源池 |
Networking | Neutron | 實現了虛擬機的網絡資源管理 |
Storage存儲 | ||
Object Storage | Swift | 對象存儲,適用於“一次寫入,多次讀取” |
Block storage | Cinder | 塊存儲,提供存儲資源池 |
Shared server(共享服務) | ||
Identity | Keystone | 認證管理 |
Imageservice | glance | 提供虛擬機鏡像的註冊和存儲管理 |
Telemetry [t'lemtr] | Ceilometer [si'lmt] | 提供監控和數據採集,計量服務 |
Higher-level service(高級服務) | ||
Orchestration [,ks'tren] | Heat | 自動化部署的組件 |
DatabaseService | Trove | 提供數據庫應用服務 |
Mysql:
Openstack所使用的數據庫,包括nova,glance,cinder等在內的組件都會建立自己的數據庫,保存一些必要的數據。
Keystone:
Openstack的用戶認證組件,它的功能主要是建立管理項目的用戶和各種服務端口,以及進行用戶的身份認證,若要使用openstack的任意的API,第一步就必須通過keystone的驗證。
keystone的主要功能是提供認證和編錄服務
keystone提供了兩種認證方式:token,identifybackend)
token(令牌,實際是一個隨機字串,在認證時直接使用),主要用於內部各組件之間
identify(賬號,密碼),需要用戶登陸時,如用戶通過horizon訪問雲資源
catalog(編錄):保存當前openstack架構中的調用接口(ip地址,端口,url信息),openstack各個組件之間交互通過api接口,openstack架構各個組件通過http的restful機制(一種軟件架構風格,設計風格而不是標準,只是提供了一組設計原則和約束條件。它主要用於客戶端和服務器交互類的軟件。基於這個風格設計的軟件可以更簡潔,更有層次,更易於實現緩存等機制)遠程過程調用,基於URI輸出。
policy:管理策略,如與用戶管理、虛擬機實例管理有關的策略
Glance:
用來存放管理虛擬機鏡像和快照的服務,這也是一個最小架構中必須有的服務。
glance存放鏡像的元數據的
registry:調用數據庫的接口,檢索接口
database:映像文件的存儲位置等
swift:分佈式存儲
Neutron:
網絡服務,用來提供虛擬機網絡通信的組件,負責接收對網絡的調用請求。
Nova:
Nova是個至關重要的組件,也是個相對龐大的組件,其中有很多服務,它是進行生成虛擬機工作的主要服務。
Nova計算節點,是openstack的最核心的節點,運行虛擬機實例,分配cpu、內存,nova-compute本身並不能運行虛擬機,是要通過hypervisor,nova-compute通過api調用hypervisor,,nova-compute支持那種api就可以調用那種hypervisor,如nova-compute支持libvirt api就可以調用libvirt支持的hypervisor(如kvm),xenapi可以調用xen
Cinder:塊存儲
用來創建,刪除及管理volume(虛擬磁盤卷),以及給volume做快照等服務的組件
swift:分佈式文件系統,用來存儲鏡像文件模板
Horizion:
Openstack的web管理頁面,使用django框架開發。Web管理頁面包含了日常使用的大部分功能,提供給用戶一個最直觀的展現方式。很多簡單的二次開發都是從Horizon開始的。
Rabbitmq:
在openstack中,各個服務之間是通過消息來交互的,因爲openstack使用AMQP作爲消息傳遞的技術,所以rabbitmq,qpid,zeromq等支持AMQP的軟件都是被openstack所支持的。Rabbitmq是第一個被openstack所使用的消息傳遞軟件。Openstack通過AMQP實現RPC服務,來保證不同組件之間的通信,rabbitmq是控制節點中的一個非常關鍵的服務。