OpenStack 的Nova元件詳解

Dus發表於2015-03-30

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實現了一些基本的排程演算法:

  • 隨機演算法:計算主機在所有可用域內隨機選擇
  • 可用域演算法:跟隨機演算法相仿,但是計算主機在指定的可用域內隨機選擇。
  • 簡單演算法:這種方法選擇負載最小的主機執行例項。負載資訊可通過負載均衡器獲得。

相關文章