07.計算Nova→2.nova組件詳解→3.nova-compute

nova-compute 在計算節點上運行,負責管理節點上的 instance。 OpenStack 對 instance 的操做,最後都是交給 nova-compute 來完成的。 nova-compute 與 Hypervisor 一塊兒實現 OpenStack 對 instance 生命週期的管理。html

  1. 經過 Driver 架構支持多種 Hypervisor
    1. nova-compute 多種 Hypervisor 定義了統一的接口,Hypervisor 只須要實現這些接口,就能夠 Driver 的形式即插即用到 OpenStack 系統中。
    2. 能夠在 /opt/stack/nova/nova/virt/ 目錄下查看到 OpenStack 源代碼中已經自帶了上面這幾個 Hypervisor 的 Driver
       1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      root@controller:~# ll /opt/stack/nova/nova/virt/ |grep '^d'
      drwxr-xr-x 10 stack stack 4096 Jun 8 00:51 ./
      drwxr-xr-x 30 stack stack 4096 Jun 8 00:51 ../
      drwxr-xr-x 4 stack stack 4096 Jun 8 00:51 disk/
      drwxr-xr-x 2 stack stack 4096 Jun 7 23:36 hyperv/
      drwxr-xr-x 2 stack stack 4096 Jun 8 00:51 image/
      drwxr-xr-x 2 stack stack 4096 Jun 8 00:28 ironic/
      drwxr-xr-x 4 stack stack 4096 Jun 8 00:51 libvirt/
      drwxr-xr-x 4 stack stack 4096 Jun 7 23:36 powervm/
      drwxr-xr-x 2 stack stack 4096 Jun 7 23:36 vmwareapi/
      drwxr-xr-x 3 stack stack 4096 Jun 7 23:36 xenapi/
    3. 某個特定的計算節點上只會運行一種 Hypervisor,只需在該節點 nova-compute 的配置文件 /etc/nova/nova.conf 中配置所對應的 compute_driver 就能夠了。在咱們的環境中由於是 KVM,因此配置的是 Libvirt 的 driver。
      1
      2
      [DEFAULT]
      compute_driver = libvirt.LibvirtDriver

  2. 按期向 OpenStack 報告計算節點的狀態
    1.  nova-scheduler 的不少 Filter 是根據算節點的資源使用狀況進行過濾的。好比 RamFilter 要檢查計算節點當前能夠的內存量;CoreFilter 檢查可用的 vCPU 數量;DiskFilter 則會檢查可用的磁盤空間。OpenStack 是如何得知每一個計算節點的這些信息呢? 
    2. 查看nova-compute的日誌因爲我配的devstack在兩臺節點上都有nova-comute服務,所以兩臺節點都有本身的日誌:root@controller:~# journalctl -af --unit devstack@n-cpu.service
      1. Total usable vcpus: 1, total allocated vcpus: 0:報告當前計算節點資源使用狀況,vcpus爲1說明這個節點的cpu數量爲1,allocated vcpus表示給在這個節點建立的虛擬機分配的cpu數量
      2. Compute_service record updated for controller:controller:更新nova-compute服務狀態
      3. Running periodic task ComputeManager:運行週期性任務
      4. Didn't find any instances for network info cache update:由於此時尚未建虛擬機,因此出現這條日誌
    3. nova-compute 是如何得到當前計算節點的資源使用信息的:nova-compute 能夠經過 Hypervisor 的 driver 拿到這些信息,舉例來講,在咱們的實驗環境下 Hypervisor 是 KVM,用的 Driver 是 LibvirtDriver。 LibvirtDriver 能夠調用相關的 API 得到資源信息,這些 API 的做用至關於咱們在 CLI 裏執行 virsh nodeinfo、virsh dominfo 等命令。
  1. 實現 instance 生命週期的管理
    1. OpenStack 對 instance 最主要的操做都是經過 nova-compute 實現的,包括 instance 的 launch、shutdown、reboot、suspend、resume、terminate、resize、migration、snapshot 等。
相關文章
相關標籤/搜索