OpenStack資源調度和現狀分析
大小:0.8 MB 人氣: 2017-10-10 需要積分:2
作者簡介:胡曉亮,目前就職于IBM Platform Computing 系統科技部云計算部門,擔任云計算開發部工程師。自2013年8月開始參與OpenStack相關的開發工作,涉及Nova、Cinder、Heat、等項目。本文節選自《程序員》,謝絕轉載,更多精彩,請訂閱《程序員》
OpenStack簡介:OpenStack是旨在為公有及私有云的建設與管理提供軟件的一個開源項目,采用Apache授權協議,它的核心任務是簡化云系統的部署過程,并且賦予其良好的可擴展性和可管理性。它已經在當前的基礎設施即服務(IaaS)資源管理領域占據領導地位,成為公有云、私有云及混合云管理的“云操作系統”事實上的標準,在政府、電信、金融、制造、能源、零售、醫療、交通等行業成為企業創新的利器。OpenStack基于開放的架構,支持多種主流的虛擬化技術,許多重量級的科技公司如RedHat,AT&T,IBM,HP,SUSE,Intel,AMD,Cisco,Microsoft,Citrix,Dell等參與貢獻設計和實現,更加推動了OpenStack的高速成長, 打破了Amazon等少數公司在市場上壟斷的局面,解決了云服務被單一廠商綁定的問題并降低了云平臺部署成本。
OpenStack資源調度和優化現狀
OpenStack的虛擬機調度策略主要是由FilterScheduler和ChanceScheduler實現的,其中FilterScheduler作為默認的調度引擎實現了基于主機過濾(filtering)和權值計算(weighing)的調度算法,而ChanceScheduler則是基于隨機算法來選擇可用主機的簡單調度引擎。如圖1是FilterScheduler的虛擬機調度過程,它支持多種built-in的filter和weigher來滿足一些常見的業務場景。在設計上,OpenStack基于filter和weigher支持第三方擴展,因此用戶可以通過自定義filter和weigher,或者使用json資源選擇表達式來影響虛擬機的調度策略從而滿足不同的業務需求。
圖 1:OpenStack調度workflow
Built-in的filter(部分):
ComputeFilter過濾計算節點down機的主機CoreFilter過濾vcpu不滿足虛擬機請求的主機DiskFilter過濾disk不滿足虛擬機請求的主機RamFilter過濾ram不滿足虛擬機請求的主機ImagePropertiesFilter過濾 architecture, hypervisor type不滿足虛擬機請求的主機SameHostFilter過濾和指定虛擬機不在同一個主機上的主機DifferentHostFilter過濾和指定虛擬機在同一個主機上的主機JsonFilter過濾不滿足OpenStack自定義的json資源選擇表達式的主機:json資源選擇表達式形如 query=’[“》”, “$cpus”,4]’表示過濾掉cpus小于等于4的主機
Built-in的weigher(部分):
RAMWeigher根據主機的可用ram排序IoOpsWeigher根據主機的io負載排序
在一個復雜的云系統中,對云計算資源的監控和優化對于保證云系統的健康運行,提高IT管理的效率有重要的作用。最新版本的OpenStack也沒有提供類似的功能,這可能是由于云系統的監控的對象和優化目標對于不同的用戶有不同的要求,難于形成統一實現和架構,但是OpenStack已經意識到這部分的重要性并且啟動了2個項目來彌補這個短板,當前它們都處于孵化階段:
Watcher(https://github.com/openstack/watcher):一個靈活的、可伸縮的多租戶OpenStack-based云資源優化服務,通過智能的虛擬機遷移策略來減少數據中心的運營成本和增加能源的利用率。Congress(https://github.com/openstack/congress):一個基于異構云環境的策略聲明、監控,實施,審計的框架。
PRS簡介
由于OpenStack開源的特性,直接投入商業使用可能面臨后期升級,維護,定制化需求無法推進的問題,因此一些有技術實力的公司都基于OpenStack開發了自己商業化的版本,這些商業化版本的OpenStack都包含了一些獨有的特性并和社區開源的OpenStack形成了差異化, 比如完善了OpenStack虛擬機的調度和編排功能,加強了云系統的運行時監控和優化,彌補了云系統自動化災難恢復的空缺,簡化了云系統的安裝和部署,引入了基于資源使用時長的帳務費用系統等等。PRS(Platform Resource Scheduler)是IBM Platform Computing公司的基于OpenStack的商業化資源調度,編排和優化的引擎,它基于對云計算資源的抽象和預先定義的調度和優化策略,為虛擬機的放置動態地分配和平衡計算容量,并且不間斷地監控主機的健康狀況,提高了主機的利用率并保持用戶業務的持續性和穩定性,降低IT管理成本。PRS采用可插拔式的無侵入設計,100%兼容OpenStack API, 并且對外提供標準的接口,方便用戶進行二次開發,以滿足不同用戶的業務需求。本文將會從虛擬機初始調度策略,實時監控和優化策略,用戶自定義OpenStack Filter,虛擬機調度失敗的Trouble Shooting Report和基于拓撲結構調度等方面概括介紹PRS的主要功能和使用場景,之后將有一系列文章對每個主題展開深入介紹。
虛擬機初始調度策略
虛擬機的初始放置策略指的是用戶根據虛擬機對資源的要求決定虛擬機究竟應該創建在哪種類型的主機上,這種資源要求就是一些約束條件或者策略。例如,用戶的虛擬機需要選擇CPU或者內存大小滿足一定要求的主機去放置,虛擬機是需要放置在北京的數據中心還是西安的數據中心,幾個虛擬機是放在相同的主機上還是放置在不同的主機上等等。原生OpenStack調度框架在靈活的支持第三方的filter和weigher的同時也喪失了對調度策略的統一配置和管理,當前PRS支持如圖2的初始放置策略,并且可以在運行時動態的修改放置策略。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%