您好,登錄后才能下訂單哦!
如何實(shí)現(xiàn)nova-scheduler模塊調(diào)度,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
openstack在創(chuàng)建虛擬機(jī)或進(jìn)行虛擬機(jī)的冷遷移時(shí)根據(jù)在nova.conf文件中scheduler_default_filters和scheduler_available_filters配置的過濾器,
對主機(jī)進(jìn)行篩選,選擇合適的目的主機(jī)。
下面根據(jù)nova M版源碼分析調(diào)度不同過濾器的。
一、conductor服務(wù)通過rpc調(diào)用scheduler服務(wù) SchedulerManager類的select_destinations,由此開始進(jìn)入進(jìn)入主機(jī)過濾階段,
此階段主要目的是調(diào)用事先在nova.conf文件中配置的過濾器,選擇合適的計(jì)算節(jié)點(diǎn)。
文件nova/scheduler/manager.py
104行,self.driver實(shí)際是在nova.conf文件中配置的FileterScheduler
二、nova/scheduler/filter_scheduler.py文件
52行,num_instances是要選擇的計(jì)算節(jié)點(diǎn)數(shù)。
53行,self._schedule是實(shí)際的調(diào)度函數(shù),在此函數(shù)中調(diào)度各個過濾器的函數(shù)。
三、_schedule函數(shù)
94行,加載json文件可以在json文件里配置過濾規(guī)則,現(xiàn)在m版json文件沒起作用。
104行,在過濾之前首先要從數(shù)據(jù)庫拿到所有計(jì)算節(jié)點(diǎn)的的當(dāng)前狀態(tài)。
112行,進(jìn)行主機(jī)過濾
120行,拿到過濾的主機(jī)計(jì)算權(quán)重,并返回根據(jù)權(quán)重排序的列表。
四、nova/scheduler/host_manager.py文件
get_filtered_host函數(shù)中參數(shù)filter_class_names傳進(jìn)來的值是None,進(jìn)入517分支
517行,filters是所有過濾器類名字的列表,由self._choose_host_filters函數(shù)返回
_choose_host_filters(),函數(shù)根據(jù)nova.conf文件中的scheduler_default_filters和scheduler_available_filters挑選出要使用的過濾器
self._load_filters()加載nova.conf文件中的scheduler_default_filters項(xiàng),默認(rèn)在nova/scheduler/filters下的全部過濾器都打開。
545行,調(diào)用nova/filters.py文件中BaseFilterHandler::get_filtered_objects,參數(shù)filters是要使用的過濾器類列表,hosts是所有的計(jì)算節(jié)點(diǎn)。
五、nova/filters.py文件
81行,循環(huán)調(diào)用過濾器
85行,調(diào)用過濾器類的filter_all方法,對主機(jī)進(jìn)行篩選,以AvailabilityZoneFilter類說明調(diào)用關(guān)系
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。