Cinder API WSGI 应用在 Apache/Nginx 下¶
https://blueprints.launchpad.net/cinder/+spec/non-eventlet-wsgi-app.
Cinder API 使用 eventelt 作为 Web 服务器和 WSGI 应用管理器。Eventlet 提供自己的 WSGI 应用来提供 Web 服务器功能。
问题描述¶
Cinder API 以另一种方式部署,作为通用的 Web 应用。Apache/Nginx 通常用作 REST API 应用的 Web 服务器。
Cinder API 作为单独的服务运行。这意味着云运营商需要配置一些软件来监控 Cinder API 是否正在运行。
Apache/Nginx 在实际重负载下比 eventlet 表现更好。
用例¶
像任何其他 Web 应用一样,使用 Apache/Nginx 部署 Cinder API。
- 使用 Apache/Nginx 部署 Cinder API 以获得开箱即用的负载均衡和 Web 应用
监控。例如,Nginx/uWSGI 可以在后端服务停止时重启它。
提议的变更¶
提供基于所用 Web 框架的 WSGI 应用,而不是 eventlet。将基于 eventlet 的 WSGI 应用作为默认选项,并使其可配置。
备选方案¶
保持现状,继续使用 eventlet 提供 REST API Web 服务。使用类似 haproxy 的工具进行 API 请求负载均衡,并使用 watchdog 来在 Cinder API 服务关闭后重启它。
数据模型影响¶
无。
REST API 影响¶
无。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
如果我们有大量请求发送到 Cinder API,可能会出现潜在的性能影响。性能影响将使用 Rally 进行测试。
其他部署者影响¶
部署者应配置 Apache/Nginx/等和 WSGI 模块来处理对 Cinder API 的请求。默认情况下,Cinder API 将使用 eventlet,并且不会对部署者产生影响。
不会为 Cinder 引入新的配置选项。
Chef cookbooks 和 Puppet manifests 应该支持新的部署模式。
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
Ivan Kolodyazhny <e0ne>
- 其他贡献者
Anton Arefiev <aarefiev>
工作项¶
实现基于 webob 框架的 WSGI 应用。
使用 Rally 测试性能影响。
编写文档说明如何使用 Apache/Nginx 运行 Cinder API。
在 Devstack 中实现配置选项以支持新的部署模式。
确保 eventlet 的使用不会破坏 Nginx/Apache 中的 WSGI。
启动跨项目倡议,在 oslo 中实现此功能。
依赖项¶
无
测试¶
将实现新的部署模式的函数测试。我们需要在 infra 上对每次提交进行 CI 测试此功能。
文档影响¶
将更新管理员指南。