云計算openstack核心組件-nova計算服務_第1頁
云計算openstack核心組件-nova計算服務_第2頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 、nova介紹:Nova是 OpenStack最核的服務,負責維護和管理云環(huán)境的計算資源。OpenStack作為 IaaS的云操作系統(tǒng),虛擬機命周期管理也就是通過 Nova來實現(xiàn)的。途與功能 :1)實例命周期管理2)管理計算資源3)絡和認證管理4)REST 風格的 API5)異步的致性通信6)Hypervisor透明:持Xen,XenServer/XCP,KVM, UML,VMware vSphere and Hyper-V在上圖中可以看到,Nova 處于 Openstak架構的中,其他組件都為Nova提供持: Glance為 VM提供 image Cinder 和 Swift分別為VM提供

2、塊存儲和對象存儲Neutron為 VM提供絡連接。Nova 架構如下:Nova 的架構較復雜,包含很多組件。這些組件以服務(后臺deamon進程)的形式運,可以分為以下類:APInova-api是整個 Nova組件的門戶,接收和響應客戶的API調(diào)。所有對Nova的請求都先由nova-api處理。nova-api 向外界暴露若HTTPREST API 接在 keystone中我們可以查詢nova-api的 endponits??蛻舳司涂梢詫⒄埱蟀l(fā)送到endponits指定的地址,向nova-api請求操作。當然,作為最終戶的我們不會直接發(fā)送RestAP 請求。OpenStack ,Dashboa

3、rd 和其他需要跟Nova交換的組件會使這些API。Nova-api 對接收到的 HTTP API 請求會做如下處理:1.檢查客戶端傳的參數(shù)是否合法有效2.調(diào) Nova其他服務的處理客戶端HTTP 請求3.格式化 Nova其他服務返回的結果并返回給客戶端nova-api 接收哪些請求?簡單的說,只要是跟虛擬機命周期相關的操作,nova-api 都可以響應。部分操作都可以在Dashboard上找到。打開Instance管理界除了提供 OpenStack的API,nova-api 還持 Amazon EC2 API。 也就是說,如果客戶以前使Amazon EC2,并且 EC2 的 API開發(fā)了些具

4、來管理虛機,那么如果現(xiàn)在要換成OpenStack,這些具可以縫遷移到OpenStack,因為 nova-api兼容 EC2 API,需做任何修改。Compute Corea)nova-scheduler:1虛機調(diào)度服務,負責決定在哪個計算節(jié)點上運虛機。創(chuàng)建Instance時,戶會提出資源需求,例如CPU、內(nèi)存、磁盤各需要多少。OpenStack將這些需求定義在flavor中,戶只需要指定哪個flavor就可以了??傻?flavor在 System-Flavors中管理。下介紹 nova-scheduler是如何實現(xiàn)調(diào)度的。在/etc/nova/nova.conf中,nova通過 driver=

5、filter_scheduler這個參數(shù)來配置nova-scheduler。driver=filter_schedulerFilter schedulerFilter scheduler 是 nova-scheduler默認的調(diào)度器,調(diào)度過程分為兩步:1.通過過濾器(filter)選擇滿條件的計算節(jié)點(運nova-compute)2.通過權重計算(weighting)選擇在最優(yōu)(權重值最)的計算節(jié)點上創(chuàng)建Instance。Nova 允許使第三scheduler,配置 scheduler_driver即可。這次體現(xiàn)了OpenStack的開放性。Scheduler 可以使多個filter依次進過濾

6、,過濾之后的節(jié)點再通過計算權重選出最適合的節(jié)點。上圖是調(diào)度過程的個例:1.最開始有 6個計算節(jié)點 Host1-Host62.通過多個 filter層層過濾,Host2和 Host4沒有通過,被刷掉了3. Host1,Host3,Host5,Host6計算權重,結果Host5得分最,最終選當 Filter scheduler需要執(zhí)調(diào)度操作時,會讓filter對計算節(jié)點進判斷,filter返回 True或 False。經(jīng)過前堆filter的過濾,nova-scheduler 選出了能夠部署instance的計算節(jié)點。如果有多個計算節(jié)點通過了過濾,那么最終選擇哪個節(jié)點呢?Scheduler 會對每個

7、計算節(jié)點打分,得分最的獲勝。打分的過程就是weight,翻譯過來就是計算權重值,那么scheduler是根據(jù)什么來計算權重值呢?前 nova-scheduler的默認實現(xiàn)是根據(jù)計算節(jié)點空閑的內(nèi)存量計算權重值:空閑內(nèi)存越多,權重越,instance 將被部署到當前空閑內(nèi)存最多的計算節(jié)點上。b)nova-compute:nova-compute是管理虛機的核服務,在計算節(jié)點上運。通過調(diào)Hypervisor API實現(xiàn)節(jié)點上的instance的命周期管理。OpenStack對 instance的操作,最后都是交給nova-compute來完成的。 nova-compute與 Hypervisor起實

8、現(xiàn) OpenStack對 instance命周期的管理。Openstack中虛機默認的保存路徑在:/var/lib/nova/instances通過Driver架構持多種HypervisorHypervisor是計算節(jié)點上跑的虛擬化管理程序,虛機管理最底層的程序。不同虛擬化技術提供的Hypervisor。 常的 Hypervisor有KVM,Xen, VMWare等。nova-compute為這些 Hypervisor定義了統(tǒng)的接,Hypervisor 只需要實現(xiàn)這些接,就可以Driver的形式即插即到 OpenStack系統(tǒng)中。下是Nova Driver的架構意圖:c)nova-conduc

9、tor:nova-compute經(jīng)常需要更新數(shù)據(jù)庫,如更新和獲取虛機的狀態(tài)。出于安全性和伸縮性的考慮,nova-compute并不會直接訪問數(shù)據(jù)庫,是將這個任務委托給nova-conductor。這樣做有兩個顯著好處:1.更的系統(tǒng)安全性2.更好的系統(tǒng)伸縮性Console Interfacenova-console: 戶可以通過多種式訪問虛機的控制臺:nova-novncproxy: 基于 Web瀏覽器的 VNC 訪問nova-spicehtml5proxy: 基于 HTML5瀏覽器的 SPICE 訪問nova-xvpnvncproxy: 基于 Java客戶端的 VNC 訪問nova-conso

10、leauth: 負責對訪問虛機控制臺請求提供Token認證nova-cert: 提供 x509證書持DatabaseNova 會有些數(shù)據(jù)需要存放到數(shù)據(jù)庫中,般使MySQL。數(shù)據(jù)庫安裝在控制節(jié)點上。Nova使命名為 “nova”的數(shù)據(jù)庫。Message Queue在前我們了解到Nova包含眾多的服務,這些服務之間需要相互協(xié)調(diào)和通信。為解耦各個服務,Nova 通過 Message Queue作為服務的信息中轉(zhuǎn)站。所以在架構圖上我們看到了服務之間沒有直接的連線,是通過Message Queue聯(lián)系的。OpenStack默認是 RabbitMQ作為 Message 。 MQ是 OpenStack的核基

11、礎組件,我們后也會詳細介紹。、Nova 組件如何協(xié)同作Nova 物理部署案前家已經(jīng)看到Nova由很多服務組成,我們也知道OpenStack是個分布式系統(tǒng),可以部署到若節(jié)點上,那么接下來家可能就會問:Nova 的這些服務在物理上應該如何部署呢?對于 Nova,這些服務會部署在兩類節(jié)點上:計算節(jié)點和控制節(jié)點。計算節(jié)點上安裝了Hypervisor,上運虛擬機。由此可知:1.只有 nova-compute需要放在計算節(jié)點上。2.其他服務則是放在控制節(jié)點上的。下我們可以看看實驗環(huán)境的具體部署情況。通過在計算節(jié)點和控制節(jié)點上運ps -elf | grep nova來查看運的nova服務計算節(jié)點comput

12、e只運了nova-compute服務控制節(jié)點controller運了若nova-*服務RabbitMQ和 MySQL也是放在控制節(jié)點上的。可能細的同學已經(jīng)發(fā)現(xiàn)我們的控制節(jié)點上也運了nova-compute。 這實際上也就意味著devstack-controller既是個控制節(jié)點,同時也是個計算節(jié)點,也可以在上運虛機。這也向我們展了OpenStack這種分布式架構部署上的靈活性:可以將所有服務都放在臺物理機上,作為個All-in-One 的測試環(huán)境;也可以將服務部署在多臺物理機上,獲得更好的性能和可。另外,也可以nova service-list查看 nova-*服務都分布在哪些節(jié)點上從虛機創(chuàng)建

13、流程看nova-*服務如何協(xié)同作從學習 Nova的度看,虛機創(chuàng)建是個常好的場景,涉及的nova-*服務很全,下是流程圖。1. 客戶(可以是OpenStack最終戶,也可以是其他程序)向API(nova-api)發(fā)送請求:幫我創(chuàng)建個虛機”2. API對請求做些必要處理后,向Messaging(RabbitMQ)發(fā)送了條消息:讓 Scheduler 創(chuàng)建個虛機”3. Scheduler(nova-scheduler)從 Messaging獲取到 API發(fā)給它的消息,然后執(zhí)調(diào)度算法,從若計算節(jié)點中選出節(jié)點A4. Scheduler 向 Messaging發(fā)送了條消息:在計算節(jié)點 A上創(chuàng)建這個虛機”5

14、. 計算節(jié)點 A的 Compute(nova-compute)從 Messaging中獲取到 Scheduler 發(fā)給它的消息,然后在本節(jié)點的Hypervisor上啟動虛機。6. 在虛機創(chuàng)建的過程中,Compute如果需要查詢或更新數(shù)據(jù)庫信息,會通過Messaging向 Conductor(nova-conductor)發(fā)送消息,Conductor負責數(shù)據(jù)庫訪問。以上是創(chuàng)建虛機最核的步驟,這個步驟向我們展了nova-*服務之間的協(xié)作的式,也體現(xiàn)了OpenStack整個系統(tǒng)的分布式設計思想,掌握這種思想對我們深理解OpenStack會常有幫助。三、Nova 創(chuàng)建虛擬機詳細過程1、界或命令通過RE

15、STful API向keystone獲取認證信息。2、keystone通過戶請求認證信息,并成auth-token返回給對應的認證請求。3、界或命令通過RESTful API向nova-api發(fā)送個boot instance的請求(攜帶auth-token)。4、nova-api接受請求后向keystone發(fā)送認證請求,查看token是否為有效戶和token。5、keystone驗證token是否有效,如有效則返回有效的認證和對應的(注:有些操作需要有權限才能操作)。6、通過認證后nova-api和數(shù)據(jù)庫通訊。7、初始化新建虛擬機的數(shù)據(jù)庫記錄。8、nova-api通過rpc.call向nova

16、-scheduler請求是否有創(chuàng)建虛擬機的資源(Host 。9、nova-scheduler進程偵聽消息隊列,獲取nova-api的請求。10、nova-scheduler通過查詢nova數(shù)據(jù)庫中計算資源的情況,并通過調(diào)度算法計算符合虛擬機創(chuàng)建需要的主機。11、對于有符合虛擬機創(chuàng)建的主機,nova-scheduler更新數(shù)據(jù)庫中虛擬機對應的物理主機信息。12、nova-scheduler通過向nova-compute發(fā)送對應的創(chuàng)建虛擬機請求的消息。13、nova-compute會從對應的消息隊列中獲取創(chuàng)建虛擬機請求的消息。14、nova-compute通過rpc.call向nova-condu

17、ctor請求獲取虛擬機消息。(Flavor)15、nova-conductor從消息隊隊列中拿到nova-compute請求消息。16、nova-conductor根據(jù)消息查詢虛擬機對應的信息。17、nova-conductor從數(shù)據(jù)庫中獲得虛擬機對應信息。18、nova-conductor把虛擬機信息通過消息的式發(fā)送到消息隊列中。19、nova-compute從對應的消息隊列中獲取虛擬機信息消息。20、nova-compute通過keystone的RESTfull API拿到認證的token,并通過HTTP請求glance-api獲取創(chuàng)建虛擬機所需要鏡像。21、glance-api向keys

18、tone認證token是否有效,并返回驗證結果。22、token驗證通過,nova-compute獲得虛擬機鏡像信息(URL)。23、nova-compute通過keystone的RESTfull API拿到認證k的token,并通過HTTP請求neutron-server獲取創(chuàng)建虛擬機所需要的絡信息。24、neutron-server向keystone認證token是否有效,并返回驗證結果。25、token驗證通過,nova-compute獲得虛擬機絡信息。26、nova-compute通過keystone的RESTfull API拿到認證的token,并通過HTTP請求cinder-api

19、獲取創(chuàng)建虛擬機所需要的持久化存儲信息。27、cinder-api向keystone認證token是否有效,并返回驗證結果。28、token驗證通過,nova-compute獲得虛擬機持久化存儲信息。29、nova-compute根據(jù)instance的信息調(diào)配置的虛擬化驅(qū)動來創(chuàng)建虛擬機。四、徹底刪除nova-compute節(jié)點1、控制節(jié)點上操作查看計算節(jié)點,刪除node11openstack host list2nova service-list2、將node1上的計算服務設置為down,然后disabled1systemctl stop openstack-nova-compute2nova

20、service-list1nova service-disable node1 nova-compute2nova service-list3、在數(shù)據(jù)庫清理(nova庫)(1)參看現(xiàn)在數(shù)據(jù)庫狀態(tài)123rootnode1 # mysql-u root -p4Enter password:5Welcome to the MariaDB monitor. Commands end with ; or g.6Your MariaDB connectionid is 907 Server version: 10.1.20-MariaDB MariaDB Server89 Copyright (c) 20

21、00, 2016, Oracle, MariaDB Corporation Ab and others.1011Typehelp;orhfor help. Typec toclear the current input statement.1213MariaDB (none) use nova;Reading table informationforcompletion of table and column names14You can turn off this feature to get a quicker startup with -A1516Database changed17Ma

22、riaDB novaselect host from nova.services;18+-+19| host|+-+| | |202122| node1 |23| node1 | node1 |24| node1 |25| node2 |26+-+277 rowsin set (0.00 sec)2829MariaDB novaselect hypervisor_hostname from compute_nodes;30+-+| hypervisor_hostname |31+-+32| node133| node2|34+-+352 rowsin set (0.00 sec)3637(2)

23、刪除數(shù)據(jù)庫中的node1節(jié)點信息123MariaDB nova delete from nova.services where host=node1;4 Query OK,4 rows affected (0.01 sec)5MariaDB nova delete from compute_nodes where hypervisor_hostname=node1;6Query OK,1 row affected (0.00 sec)78MariaDB nova9MariaDB nova10MariaDB nova11MariaDB novaselect host from nova.serv

24、ices;+-+12| host|13+-+14| |15| | node2 |16+-+173 rowsin set (0.00 sec)1819MariaDB novaselect hypervisor_hostname from compute_nodes;20+-+21| hypervisor_hostname |22+-+23| node2|24+-+1 rowinset (0.00 sec)2526MariaDB nova2728五、nova配置件:DEFAULTmy_ip=3use_neutron = Truefirewall_driver = nova.virt.firewal

25、l.NoopFirewallDriverenabled_apis=osapi_compute,metadatatransport_url =apiauth_strategy = keystoneapi_databaseconnection = mysql+barbicancachecellscinderos_region_name = RegionOnecloudpipeconductorconsoleconsoleauthcorscors.subdomaincryptodatabaseconnection = mysql+ephemeral_storage_encryptionfilter_

26、schedulerglanceapi_servers =guestfshealthcheckhypervimage_file_urlironickey_managerkeystone_authtokenauth_uri =auth_url =memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = novalibvirtvirt_type=qemumatchmaker_redismetricsmksneutron

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論