首页 » OpenStack系统架构设计实战 » OpenStack系统架构设计实战全文在线阅读

《OpenStack系统架构设计实战》3.8 Cinder功能及典型工作流程

关灯直达底部

3.8.1 cinder-api服务启动流程

1)脚本bin.cinder-api(读取配置文件,获取Cinder路径,导入必需的模块,调用service.WSGIService('osapi_volume'))。

2)cinder.service:WSGIService._init_(使用osapi_volume初始化了一个WSGIService服务,调用wsgi.Server)。

3)cinder.wsgi:Server._init_(wsgi.Server类的对象初始化操作,创建了一个GreenPool协程池,但并不启动WSGI服务)。

4)脚本bin.cinder-api(调用service.serve(server))。

5)cinder.service:serve(初始化Launcher类,然后调用_launcher.launch_server)。

6)cinder.service:Launcher.launch_server(调用eventlet.spawn,建立一个新的绿色线程用来运行变量func所指定的方法;调用self.run_server)。

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

8)启动cinder-api服务。

·cinder.service:WSGIService.start(调用self.server.start())。

·cinder.wsgi:Server.start(产生了一个协程,在self._start中又调用eventlet.wsgi.server,启动了osapi_volume所指定的阻塞式eventlet WSGI服务,也就是说,cinder-api服务启动成功了)。

9)等待cinder-api服务结束。

·cinder.service:WSGIService.wait(等待WSGIService服务结束;调用self.server.wait)。

·cinder.wsgi:Server.wait(调用self._server.wait())。

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

·cinder.service:Launcher.wait(等待Cinder-Api协程结束,然后关闭RPC协议框架)。