讀古今文學網 > OpenStack系統架構設計實戰 > 3.8.2 cinder-scheduler服務啟動流程 >

3.8.2 cinder-scheduler服務啟動流程

1)腳本bin.cinder-scheduler(讀取配置文件,獲取Cinder路徑,導入必需的模塊,調用service.Service.create(binary='cinder-scheduler'))。

2)cinder.service:Service.create(進行了一系列變量的初始化操作,然後對類進行初始化)。

3)腳本bin.cinder-api(調用service.serve(server))。

4)cinder.service:serve(初始化Launcher類,然後調用_launcher.launch_server)。

5)cinder.service:Launcher.launch_server(調用eventlet.spawn,建立一個新的綠色線程用來運行變量func所指定的方法;調用self.run_server)。

6)cinder.service:Launcher.run_server(先調用server.start,再調用server.wait)。

7)啟動cinder-scheduler服務。

cinder.service:Service.start(創建RPC連接,啟動消費者線程,然後等待隊列消息。當輪詢查詢到消息到達後,創建協程處理相關消息)。

8)等待cinder-scheduler服務結束。

·cinder.service:Service.wait(等待服務結束;調用x.wait())。

·cinder.service:wait(調用_launcher.wait())。

·cinder.service:Launcher.wait(等待Cinder-scheduler協程結束,然後關閉RPC協議框架)。