Cinder API WSGI application under Apache/Nginx
Cinder API uses eventelt as a webserver and WSGI application managing. Eventlet
provides own WSGI application to provide web server functionality.
- 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.
- 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.
Provide WSGI application based on used web-framework instead of eventlet. Leave
eventlet-based WSGI application as a default option and make it configurable.
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.
Other end user 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
No new configuration options for Cinder will be introduced.
New deployment mode should be supported by Chef cookbooks and Puppet manifests.
- Primary assignee:
- Ivan Kolodyazhny <e0ne>
- Other contributors:
- Anton Arefiev <aarefiev>
- 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.
Functional tests for new deployment mode will be implemented. We need to test
this feature on every commit on infra with CI.
Administrators Guide will be updated.