Open Stack Compute Infrastructure (Nova)
Nova是OpenStack雲中的計算組織控制器。支援OpenStack雲中例項(instances)生命週期的所有活動都由Nova處理。這樣使得Nova成為一個負責管理計算資源、網路、認證、所需可擴充套件性的平臺。但是,Nova自身並沒有提供任何虛擬化能力,相反它使用libvirt API來與被支援的Hypervisors互動。Nova 通過一個與Amazon Web Services(AWS)EC2 API相容的web services API來對外提供服務。
功能和特點:
- 例項生命週期管理
- 管理計算資源
- 網路和認證管理
- REST風格的API
- 非同步的一致性通訊
- Hypervisor透明:支援Xen,XenServer/XCP, KVM, UML, VMware vSphere and Hyper-V
OpenStack計算的組成:
Nova 雲架構包括以下主要元件:
- API Server (nova-api)
- Message Queue (rabbit-mq server)
- Compute Workers (nova-compute)
- Network Controller (nova-network)
- Volume Worker (nova-volume)
- Scheduler (nova-scheduler)
API Server(nova-api)
API Server對外提供一個與雲基礎設施互動的介面,也是外部可用於管理基礎設施的唯一元件。管理使用EC2 API通過web services呼叫實現。然後API Server通過訊息佇列(Message Queue)輪流與雲基礎設施的相關元件通訊。作為EC2 API的另外一種選擇,OpenStack也提供一個內部使用的“OpenStack API”。
Message Queue(Rabbit MQ Server)
OpenStack 節點之間通過訊息佇列使用AMQP(Advanced Message Queue Protocol)完成通訊。Nova 通過非同步呼叫請求響應,使用回撥函式在收到響應時觸發。因為使用了非同步通訊,不會有使用者長時間卡在等待狀態。這是有效的,因為許多API呼叫預期的行為都非常耗時,例如載入一個例項,或者上傳一個映象。
Compute Worker(nova-compute)
Compute Worker處理管理例項生命週期。他們通過Message Queue接收例項生命週期管理的請求,並承擔操作工作。在一個典型生產環境的雲部署中有一些compute workers。一個例項部署在哪個可用的compute worker上取決於排程演算法。
Network Controller(nova-network)
Network Controller 處理主機地網路配置。它包括IP地址分配、為專案配置VLAN、實現安全組、配置計算節點網路。
Volume Workers(nova-volume)
Volume Workers用來管理基於LVM(Logical Volume Manager)的例項卷。Volume Workers有卷的相關功能,例如新建卷、刪除卷、為例項附加捲,為例項分離卷。卷為例項提供一個持久化儲存,因為根分割槽是非持久化的,當例項終止時對它所作的任何改變都會丟失。當一個卷從例項分離或者例項終止(這個卷附加在該終止的例項上)時,這個卷保留著儲存在其上的資料。當把這個卷重附載入相同例項或者附加到不同例項上時,這些資料依舊能被訪問。
一個例項的重要資料幾乎總是要寫在捲上,這樣可以確保能在以後訪問。這個對儲存的典型應用需要資料庫等服務的支援。
Scheduler(nova-scheduler)
排程器Scheduler把nova-API呼叫對映為OpenStack元件。排程器作為一個稱為nova-schedule守護程式執行,通過恰當的排程演算法從可用資源池獲得一個計算服務。Scheduler會根據諸如負載、記憶體、可用域的物理距離、CPU構架等作出排程決定。nova scheduler實現了一個可插入式的結構。
當前nova-scheduler實現了一些基本的排程演算法:
- 隨機演算法:計算主機在所有可用域內隨機選擇
- 可用域演算法:跟隨機演算法相仿,但是計算主機在指定的可用域內隨機選擇。
- 簡單演算法:這種方法選擇負載最小的主機執行例項。負載資訊可通過負載均衡器獲得。