導讀:何謂云之“大腦”?
云計算技術是一系列復雜基礎技術的綜合體,包括物理設備管理、計算虛擬化、分布式存儲、網絡虛擬化以及軟件定義數據中心等,基于這些技術構建的云計算平臺無疑是一套復雜的系統。在這樣復雜的系統中充當“大腦”角色,管控決策所有資源使用的部件是云調度器。
在云計算的模式下,傳統“煙囪式”的獨立的服務器、存儲和網絡等物理資源被虛擬化成一個個共享資源池,云調度器通過資源使用調度的策略自動為云平臺上的業務統一調配資源,以滿足業務對基礎設施資源的動態需求。
本文將為您解密云之“大腦”的工作原理,展示華云數據在OpenStack核心領域的技術創新。
資源的分配和調度是云計算中的關鍵技術,那么云調度器是如何工作呢?作為國內最早一批開始對Openstack進行研究及應用的團隊,下面就以目前流行的開源云計算平臺Openstack為例,闡述其調度器(Nova scheduler)組件是如何管理和控制云平臺資源的。Nova scheduler是Openstack核心服務nova的組件之一,主要負責為創建、啟動的云主機實例尋找合適的計算節點,同時在遷移云主機的時候負責檢查目標端計算節點的物理資源是否足夠。下面就談一談我們對Nova scheduler技術原理的解析與應用優化。
原理解析
下圖是Openstack架構圖,從中我們可以看出Nova scheduler是通過與Message queue和Nova database交互來完成調度任務。

云調度器的核心任務是:基于業務對資源的請求,從當前所管理的所有云資源中選擇最適合的資源分配給該業務,使該業務正常部署和運行;但何為“最適合”?在不同的場景下可能實質含義不同,有的希望業務盡量運行在較少數量的機器上以節省電力消耗,有的則希望業務盡量均勻分布在所有可用的服務器上,以保障運行性能;因此,這里的“最適合”是相對于特定場景下所定義的調度策略而言的。
下圖是Nova scheduler的簡化工作流程圖,首先根據配置的Filters(過濾器)過濾出符合條件的主機列表,然后對得到的主機列表進行權重并排序,最后選出最優的Host。

Nova scheduler的主要流程包括:
2.1主機過濾(Filters)
2.2權值計算(Weighting)
2.1 主機過濾
所有的Filters實現都位于nova/scheduler/filters目錄,以Openstack Mitaka版本為例:
├── affinity_filter.py
├── aggregate_image_properties_isolation.py
├── aggregate_instance_extra_specs.py
├── aggregate_multitenancy_isolation.py
├── all_hosts_filter.py
├── availability_zone_filter.py
├── compute_capabilities_filter.py
├── compute_filter.py
├── core_filter.py
├── cpu_pinning_filter.py
├── disk_filter.py
├── exact_core_filter.py
├── exact_disk_filter.py
├── exact_ram_filter.py
├── image_props_filter.py
├── io_ops_filter.py
├── isolated_hosts_filter.py
├── json_filter.py
├── metrics_filter.py
├── numa_topology_filter.py
├── num_instances_filter.py
├── pci_passthrough_filter.py
├── ram_filter.py
├── retry_filter.py
├── trusted_filter.py
├── type_filter.py
目前,社區的OpenStack Mitaka支持以上這些過濾策略,開發者也可以根據具體需要實現自己的過濾策略。為了便于擴展,Nova將一個調度器必須要實現的接口提取出來成為nova.scheduler.driver.Scheduler,只要繼承了該類并實現其中的接口,我們就可以自定義任何我們需要的調度器。啟用它們只需要在 /etc/nova/nova.conf配置文件中的添加該過濾器即可。
2.2 權值計算
所有的Weigher實現都位于nova/scheduler/weights目錄,以Openstack Mitaka版本為例:
├── _init__.py
├── metrics.py
├── ram.py
嘗試在一臺不適合的主機上創建云主機的代價比在一臺合適主機上創建的代價要高,比如說在一臺高性能主機上創建一臺功能簡單的普通云主機的代價是高的。
OpenStack對權值的計算需要一個或多個(Weight值,代價函數)的組合,然后對每一個經過過濾的主機調用代價函數進行計算,將得到的值與weight值乘積,得到最終的權值。開發者可以實現自己的代價函數,設置自己的Weight值來更精確的利用更加復雜的算法選擇主機。下圖展示了對于每個宿主節點如何計算Weight值,以及最后根據Weight值排序,挑選出當前最合適的節點的過程。

華云數據對Nova scheduler的優化與應用
3.1 基于指標監控的動態調度支持
OpenStack原生調度器自帶了很多基礎的Filters過濾策略,能夠滿足大部分的使用場景,但是這個調度的基本機制是靜態的,即在資源開通過程中基于請求的資源數量完成調度分配決策,而不考慮業務實際運行時對各種資源的使用情況,所以可能出現該調度分配在部署時是最優的,但在運行時并不是。比如有兩臺服務器A和B,vm1已經運行在Host A上,現在要開通vm2,假如按照資源最優的方式調度,vm2被調度到Host B上,經過一段時間的運行,發現vm1與vm2間經常有大量網絡通信,我們知道在云環境下,跨節點的網絡通信性能是不如同節點上的網絡直接轉發,所以基于運行時情況,讓vm1與vm2同時運行在一個host上會是較優的方式。
基于上述考慮,華云云平臺引入了基于運行時指標監控的動態調度支持,即通過對業務vm的持續指標監控(包括cpu、磁盤、內存、網絡io、業務的峰谷、vm間的通信量等),充分考慮業務vm在運行時的資源需求,提供再次優化調度建議。通過納入運行時情況指標運算,優化調度所挑選的host和初始調度的host很可能不一樣,如果不一致,可以通過動態遷移機制完成遷移,使之達到階段性的最優分布。
3.2 調整云主機大小
OpenStack Nova的resize功能內在實現是基于冷遷移, 只不過resize在遷移后使用了一個不一樣的flavor。
OpenStack在處理resize接口的時候,每次resize都會隨機調度到某個可用主機節點,但這樣做存在一定缺陷。首先,每次resize都是一次冷遷移,即使當前節點的資源足夠,也會發生一次冷遷移;這個在使用共享存儲的場景不是什么大問題,但是在本地存儲的場景,resize vm一定要做一次遷移就不太智能了。其次,有的客戶希望可以指定resize vm到用戶指定的節點,希望這個功能有更好的靈活性;
基于上述考慮,我們對resize功能進行優化與調整,當執行resize操作的時候,如果當前節點上資源充足,優先在當前節點上完成resize,無需遷移;如果當前節點資源不足,則由調度器調度到其他可用節點。此外,擴展resize接口,使其支持resize云主機至隨機節點、指定節點或本地節點等策略,做到可控可配置。

3.3 基于分區部署的調度
隨著云計算服務類型的細化,需要針對不同的業務場景提供不同類型的云資源,在同一個數據中心內會包括不同類型的計算節點,比如支持CPU獨占、支持GPU虛擬化、支持OVS-DPDK網絡加速等等。這些計算節點之間是功能與特性上的差異,華云數據合理優化與利用Nova scheduler中基于分區的調度技術,實現把不同功能與特性的云主機需求開通到該類型的計算節點上。比如當用戶創建CPU獨占或者GPU類型的VM時,OpenStack會在相應分區類型的計算節點上開通。
總結
本文簡單介紹了云調度器Nova scheduler的基本原理與工作流程,同時分享了目前華云數據云平臺對其的部分擴展優化。目前OpenStack社區也在孵化類似Watcher等云平臺優化項目,這些項目會與調度器結合提供云平臺的運行時優化。如何把搭建的云平臺更好的運行,使之最大化的發揮能效,仍然有許多可挖掘優化的地方。
華云數據對于OpenStack的研究和應用,一直秉承源于社區、優于社區、回饋社區的理念,緊跟社區的步伐,不斷改進與優化,將優化的功能代碼回饋于社區、將優秀的產品功能交付于客戶。
關于華云數據
華云數據集團成立于2010年,是專業從事云計算服務的創新型公司,公司遍布于北京、上海、無錫、深圳、廈門、杭州、南京、臨沂等;香港、拉斯維加斯擁有運營中心,在國內擁有超過15個城市的20余個數據中心和上萬臺物理服務器集群。網絡覆蓋中國電信、中國聯通以及華云數據自有BGP網絡,實現從邊緣到核心的全覆蓋。華云數據在北京、上海、廣州、深圳、香港打造高速專線直連的高品質節點提升業務性能,提高用戶體驗。另外,2個中國電信美洲數據中心和2個香港數據中心還可滿足客戶對海外業務的需求。
華云數據以為用戶提供定制化混合架構為目標,產品覆蓋公有云、私有云、混合云及IDC轉云等領域,可以為用戶提供數十種解決方案,深度滿足企業云化需求。
來源:XXX(非中文科技資訊)的作品均轉載自其它媒體,轉載請尊重版權保留出處,一切法律責任自負。
文章內容僅供閱讀,不構成投資建議,請謹慎對待。投資者據此操作,風險自擔。
如發現本站文章存在問題,提供版權疑問、身份證明、版權證明、聯系方式等發郵件至news@citnews.com.cn。
海藝AI的模型系統在國際市場上廣受好評,目前站內累計模型數超過80萬個,涵蓋寫實、二次元、插畫、設計、攝影、風格化圖像等多類型應用場景,基本覆蓋所有主流創作風格。
IDC今日發布的《全球智能家居清潔機器人設備市場季度跟蹤報告,2025年第二季度》顯示,上半年全球智能家居清潔機器人市場出貨1,2萬臺,同比增長33%,顯示出品類強勁的市場需求。