openstack是什么
openstack和虛擬化技術區別
虛擬化是最底層的技術,通過虛擬化技術(XEN、KVM等)可以使物理服務器具有虛擬化能力。openstack是一個雲平台,它是用來對接和管理虛擬化出來的資源的,統一管理不同虛擬化技術的硬件。
openstack10大核心組件
1、nova
nova是一個開天辟地的組件,因為其他組件大都是從nova組件分離出去的。nova組件主要提供計算資源。
noai-api:對外提供接口,接受所有請求的
nova-compute:提供計算資源
2、horizon
在開源的openstack中是有這個組件的,但是華為的openstack里面把這個組件刪除了。這個組件主要是用來提供web ui界面的。
3、glance
這個組件主要是用來提供存儲鏡像服務的。
4、cinder
主要提供快儲存服務。比如說雲硬盤,就是由這個組件提供服務的。
5、neutron
主要用來提供網絡資源,IP、路由等。
6、swift
原生openstack里這個組件是用來提供對象存儲服務的,華為的op中這個組件是用來對接glance組件的(glance只是提供鏡像服務,實際的鏡像文件存儲在swift中)
7、ceilometer
提供計量計費服務 。
8、heat
提供自動編排服務。
9、ironic
提供裸金屬服務器、物理服務器服務。
10、keystone
身份驗證使用的組件。
Openstack架構圖
Openstack是一種典型的SOA架構。SOA:面向服務架構(SOA)是一個組件模型,它將應用程序的不同功能單元(稱為服務)進行拆分,並通過這些服務之間定義良好的接口和協議聯系起來。接口是采用中立的方式進行定義的,它應該獨立於實現服務的硬件平台、操作系統和編程語言。這使得構建在各種各樣的系統中的服務可以以一種統一和通用的方式進行交互。
下邊我們來詳細的介紹以下重要的組件:
nova
nova是openstack中最重要的組件。很多別的組件都是從nova中分離出去的。nova組件又包含很多模塊,我們詳細來說以下其中比較重要的六個模塊。
nova-api: 接受請求。api其實就是接口,它對外呈現的形式就是代碼。比如說有一個應用程序A它包含很多模塊,其中一個功能模塊是登陸模塊。這時候如果另一個程序B也想用這個功能,那么他要么自己開發這個功能模塊,要么直接調用A的這個功能模塊,調用的話其實就是通過API來調用的,這就是api。A會把自己的用來實現這個功能模塊的代碼整體打包,做成一個api接口(其實就是一個函數,底層是所有的代碼),然后B直接調用這個api函數就可以使用這個功能了。這就是api的作用。比如說我們在登陸京東網站的時候,它顯示可以通過微信登陸,其實這就是調用了微信的登陸功能的api接口。api一般都部署在控制節點上。
nova-scheduler: 平衡計算資源,然后選擇合適的節點下發雲主機。
nova-compute:真正干事的模塊。用於創建雲主機。
上述三個模塊是結合在一起的,他們之間的聯系如下:
比如說現在要發放一台雲主機,這個需求由nova-api接收,然后nova-api會將這個需求給到nova-scheduler,nova-scheduler會進行權重計算,決定將雲主機下發在那個節點上,並將這個決定告訴這個計算節點上的nova-compute,然后由nova-compute創建雲主機。這個雲主機就出來了。
nova-conductor:專門用來使其他組件和數據庫解耦。nova-compute在創建后雲主機之后,雲主機的信息(名字、規格)等是需要保存到數據庫中的,那么是誰來和數據庫交互呢?如果用nova-compute直接和數據庫交互,因為每個計算節點上都有一個nova-compute,這也就意味着每個節點都可以訪問數據庫,那么數據庫的安全性會大大降低。所以為了數據庫的安全性,在G版本引入了nova-conductor。如果要查數據庫的數據,nova-api可以直接查,但是如果要往數據庫中寫數據,nova-compute必須通過nova-conductor來和數據庫進行交互。nova-scheduler和nova-compute都必須通過conductor,如下圖所示:
nova-novncproxy:提供遠程訪問雲主機功能。
nova-consoleauth:驗證雲主機賬號密碼是否准確等。用於雲主機鑒權。