Openstack之Nova建立虛機流程分析
前言
Openstack作為一個虛擬機器管理平臺,核心功能自然是虛擬機器的生命週期的管理,而負責虛機管理的模組就是Nova。
本文就是openstack中Nova模組的分析,所以本文重點是以下三點:
先了解Openstack的整體架構,搞清楚為什麼要用這樣的架構;
然後再瞭解架構中的各個元件,元件提供的主要功能與各個元件之間的互動;
瞭解虛機的啟動過程,能在遇到問題時發現問題出在哪個模組中的哪個元件。
Nova元件介紹
接下來進行詳細介紹,如有錯誤,歡迎拍磚!
下圖為建立虛擬機器的一個大概流程圖。
客戶端:可以認為是web頁面op或者Horizonl;也可以是命令列的nova client。
Nova Api:用於接收和處理客戶端傳送的HTTP請求;
Nova Scheduler:nova的排程宿主機的服務,決定虛擬機器建立在哪個節點上。
Nova compute:Nova中最和新的服務,負責虛擬機器的生命週期的管理。
nova conductor:資料訪問許可權的控制操作,可以理解為資料庫代理服務。
其他服務:nova cert管理證照,為了相容aws;nova vncproxy和consoleauth控制檯服務。
不同的模組之間是透過HTTP請求REST API服務
同一個模組不同元件之間(如nova-scheduler請求nova-compute)是RPC遠端呼叫,透過Rabbmq來實現。
虛機建立流程梳理
1.客戶端使用自己的使用者名稱密碼請求認證。
2.keystone透過查詢在keystone的資料庫user表中儲存了user的相關資訊,包括password加密後的hash值,並返回一個token_id(令牌),和serviceCatalog(一些服務的endpoint地址,cinder、glance-api後面下載映象和建立塊儲存時會用到)。
3.客戶端帶上keystone返回的token_id和建立虛機的相關引數,Post請求nova-api建立虛擬機器
4.nova-api接收到請求後,首先使用請求攜帶的token_id來訪問該api,以驗證請求是否有效。
5.keystone驗證透過後返回更新後的認證資訊。
6.nova api檢查建立虛擬機器引數是否有效與合法。
檢查虛擬機器name是否符合命名規範,flavor_id是否在資料庫中存在,image_uuid是否是正確的uuid格式
檢查instance、vcpu、ram的數量是否超過配額。
7.當且僅當所有傳參都有效合法時,更新nova資料庫,新建一條instance記錄,vm_states設為BUILDING,task_state設為SCHEDULING.
8.nova api 遠端呼叫傳遞請求、引數給nova scheduler,把訊息“請給我建立一臺虛擬機器”丟到訊息佇列,然後定期查詢虛機的狀態。
9.nova scheduler從queue中獲取到這條訊息
10.nova scheduler訪問nova 資料庫,透過排程演算法,過濾出一些合適的計算節點,然後進行排序。
11.更新虛機節點資訊,返回一個最優節點id給nova scheduler。
12.nova scheduler選定host之後,透過rpc呼叫nova-compute服務,把“建立虛機請求”訊息丟個mq。
13.nova compute收到建立虛擬機器請求的訊息
#nova-compute有個定時任務,定期從資料庫中查詢到執行在該節點上的所有虛擬機器資訊,統計得到空閒記憶體大小和空閒磁碟大小。然後更新資料庫compute_node資訊,以保證排程的準確性。
14.nova compute透過rpc查詢nova資料庫中虛機的資訊例如主機模板和id
15.nova conductor從訊息佇列中拿到請求查詢資料庫
16.nova conductor查詢nova資料庫
17.資料庫返回虛機資訊
18.nova compute從訊息佇列中獲取資訊。
19.nova compute 請求glance 的rest api,下載所需要的映象,一般是qcow2的。
http://www.cnblogs.com/zhoumingang/p/5522463.html
20.glance api 也會去驗證請求的token的有效性。
21.glance api 返回映象資訊給nova-compute。
22.同理,nova compute請求neutron api配置網路,例如獲取虛機ip地址
23.驗證token的有效性
24.neutron返回網路資訊
25-27 同glance、neutron驗證token返回塊裝置資訊
28.據上面配置的虛擬機器資訊,生成xml,寫入libvirt,xml檔案,然後呼叫libvirt driver去使用libvirt.xml檔案啟動虛擬機器。
總結:
1、Openstack這種分散式的架構,各個模組之間松耦合,可以很容易的新增模組,而且配置靈活,服務可以安裝在不同節點,即使部分服務掛了也不會影響。
2、虛擬機器建立簡單說來三步,nova api接受建立虛機請求,nova scheduler為建立虛機指定宿主機,nova compute啟動虛擬機器。如果能夠理解上面的所有步驟,那麼對於定位問題可以精準,甚至有些問題可以自己解決,譬如虛機error了,如果你看到虛機的資訊已經有host資訊了,那基本能從nova-compute的日誌中看到問題所在,如果沒有,基本是scheduler會有錯誤資訊提示。
轉自:http://www.cnblogs.com/zhoumingang/p/5532409.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4550/viewspace-2803638/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- openstack透過salt-cloud建立虛擬機器Cloud虛擬機
- Openstack的的nova list命令
- OpenStack安裝(三) Nova模組
- OpenStack 的Nova元件詳解元件
- Openstack Nova Failed to allocate network(s)AI
- 雲端計算管理平臺之OpenStack計算服務nova
- 照著官網來安裝openstack pike之nova安裝
- [zz]為 OpenStack Nova 製作 Ubuntu 映象Ubuntu
- openstack -- ocata 建立的卷無法連線到虛擬機器例項虛擬機
- OpenStack 之vmware機器遷移到openstack叢集
- openstack命令建立雲主機例項
- CentOS7.0+OpenStack+kvm雲平臺部署—配置NovaCentOS
- OpenStack 虛擬機器監控方案確定虛擬機
- 雲端計算管理平臺之OpenStack啟動虛擬機器例項虛擬機
- Openstack的nova-network的vlan模式擴充套件模式套件
- openstack虛擬機器遷移的操作記錄虛擬機
- Centos7安裝部署openstack--nova計算服務CentOS
- Openstack的nova-network的vlan模式擴充套件2模式套件
- 虛擬化技術之kvm虛擬機器建立工具qemu-kvm虛擬機
- 手動在虛擬機器之間建立信任虛擬機
- VMware/KVM/OpenStack虛擬化之網路模式總結模式
- PVM-流程虛擬機器虛擬機
- 虛擬化技術之kvm虛擬機器建立工具virt-install虛擬機
- Openstack命令列刪除虛擬機器硬體模板flavor命令列虛擬機
- OpenStack 的防火牆規則流程防火牆
- OpenStack提交程式碼的review流程View
- openStack核心元件的工作流程元件
- 建立新的虛擬機器虛擬機
- 利用OpenStack Rest API 建立映象RESTAPI
- 三分鐘帶你入門瞭解openstack的Nova專案
- OpenStack 計算節點關機,虛擬機器狀態解決辦法虛擬機
- 如何建立虛擬機器上建立 Cluster 共享磁碟虛擬機
- centos7安裝kvm環境採用網橋模式並建立虛擬機器制作openstack需要的映象CentOS模式虛擬機
- 別以為真懂Openstack: 虛擬機器建立的50個步驟和100個知識點(3)虛擬機
- 別以為真懂Openstack: 虛擬機器建立的50個步驟和100個知識點(4)虛擬機
- Ubuntu虛擬機器進入虛擬環境的流程Ubuntu虛擬機
- Openstack的使用者登入流程
- 使用 Cockpit 建立虛擬機器KPI虛擬機