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