Cinder API WSGI application under Apache/Nginx
Cinder API uses eventlet as a webserver and WSGI application managing. This spec describes new option to deploy Cinder API with Apache/Nginx Related blueprint: non-eventlet-wsgi-app Change-Id: Ie17dbca185d33c75c98175dceda024f8713149a6
This commit is contained in:
parent
0d2bae8d0a
commit
6cbc9da47e
158
specs/liberty/non-eventlet-wsgi-app.rst
Normal file
158
specs/liberty/non-eventlet-wsgi-app.rst
Normal file
@ -0,0 +1,158 @@
|
|||||||
|
..
|
||||||
|
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||||
|
License.
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||||
|
|
||||||
|
==============================================
|
||||||
|
Cinder API WSGI application under Apache/Nginx
|
||||||
|
==============================================
|
||||||
|
|
||||||
|
https://blueprints.launchpad.net/cinder/+spec/non-eventlet-wsgi-app.
|
||||||
|
|
||||||
|
Cinder API uses eventelt as a webserver and WSGI application managing. Eventlet
|
||||||
|
provides own WSGI application to provide web server functionality.
|
||||||
|
|
||||||
|
|
||||||
|
Problem description
|
||||||
|
===================
|
||||||
|
|
||||||
|
* Cinder API is deployed in other way as a common web application. Apache/Nginx
|
||||||
|
is generally used web servers for REST API application.
|
||||||
|
|
||||||
|
* Cinder API is runned as a separate service. It means that cloud operator need
|
||||||
|
to configure some software to monitor that Cinder API is running.
|
||||||
|
|
||||||
|
* Apache/Nginx works better under the real heavy load then eventlet.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Use Cases
|
||||||
|
=========
|
||||||
|
|
||||||
|
* Deploy Cinder API with Apache/Nginx like an any other web applicaction.
|
||||||
|
|
||||||
|
* Deploy Cinder API with Apache/Nginx to have load balancing and web applicaion
|
||||||
|
monitoring out of the box. E.g. Nginx/uWSGI can restart backend service if
|
||||||
|
it stopped by any case.
|
||||||
|
|
||||||
|
|
||||||
|
Proposed change
|
||||||
|
===============
|
||||||
|
|
||||||
|
Provide WSGI application based on used web-framework instead of eventlet. Leave
|
||||||
|
eventlet-based WSGI application as a default option and make it configurable.
|
||||||
|
|
||||||
|
Alternatives
|
||||||
|
------------
|
||||||
|
|
||||||
|
Leave as is and use eventlet for REST API web serving. Use something like
|
||||||
|
haproxy for API requests load balancing and some watchdog to restart Cinder API
|
||||||
|
service after shutdown.
|
||||||
|
|
||||||
|
Data model impact
|
||||||
|
-----------------
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
REST API impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None.
|
||||||
|
|
||||||
|
Security impact
|
||||||
|
---------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Notifications impact
|
||||||
|
--------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Other end user impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
Performance Impact
|
||||||
|
------------------
|
||||||
|
|
||||||
|
Potential performance impact could be present if we will have a lot of requests
|
||||||
|
to Cinder API. Performance impact will be tested with Rally.
|
||||||
|
|
||||||
|
Other deployer impact
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
Deployers should configure Apache/Nginx/etc and WSGI module to handle requests
|
||||||
|
to Cinder API. By default, Cinder API will use eventlet and no deployer impact
|
||||||
|
will be.
|
||||||
|
|
||||||
|
No new configuration options for Cinder will be introduced.
|
||||||
|
|
||||||
|
New deployment mode should be supported by Chef cookbooks and Puppet manifests.
|
||||||
|
|
||||||
|
Developer impact
|
||||||
|
----------------
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Implementation
|
||||||
|
==============
|
||||||
|
|
||||||
|
Assignee(s)
|
||||||
|
-----------
|
||||||
|
|
||||||
|
Primary assignee:
|
||||||
|
Ivan Kolodyazhny <e0ne>
|
||||||
|
|
||||||
|
Other contributors:
|
||||||
|
Anton Arefiev <aarefiev>
|
||||||
|
|
||||||
|
Work Items
|
||||||
|
----------
|
||||||
|
|
||||||
|
* Implement WSGI application based on webob framework.
|
||||||
|
|
||||||
|
* Test performance impact with Rally.
|
||||||
|
|
||||||
|
* Write documentation how to run Cinder API with Apache/Nginx.
|
||||||
|
|
||||||
|
* Implement configuration option in Devstack to support new deployment mode.
|
||||||
|
|
||||||
|
* Make sure usage of eventlet doesn't break WSGI in Nginx/Apache.
|
||||||
|
|
||||||
|
* Start cross-project initiative to implement this in oslo.
|
||||||
|
|
||||||
|
|
||||||
|
Dependencies
|
||||||
|
============
|
||||||
|
|
||||||
|
None
|
||||||
|
|
||||||
|
|
||||||
|
Testing
|
||||||
|
=======
|
||||||
|
|
||||||
|
Functional tests for new deployment mode will be implemented. We need to test
|
||||||
|
this feature on every commit on infra with CI.
|
||||||
|
|
||||||
|
|
||||||
|
Documentation Impact
|
||||||
|
====================
|
||||||
|
|
||||||
|
Administrators Guide will be updated.
|
||||||
|
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
|
||||||
|
|
||||||
|
* https://review.openstack.org/#/c/154642/
|
||||||
|
|
||||||
|
* https://review.openstack.org/#/c/164035/
|
||||||
|
|
||||||
|
* https://review.openstack.org/#/c/196088/
|
||||||
|
|
||||||
|
* http://lists.openstack.org/pipermail/openstack-dev/2015-February/057359.html
|
Loading…
x
Reference in New Issue
Block a user