← Back to team overview

openstack team mailing list archive

Re: Distributed rate-limiting

 

Hi,

Sorry to bring alive a fairly old thread, but I had a few questions on Nova's rate limiting in a distributed/ load balanced Openstack environment.

My understanding is Turnstile manages the situation where, the in-memory rate limits that are configured on load balanced API servers
are imposed properly on the incoming requests, so each API server is correctly updated/synced with the used rate limits.
Can you please confirm this understanding?

Also, I don't think this is part of the Openstack trunk code, and if so, is there any reason why it's not part of Nova, as it was meant to be a replacement?

Regards,
Rohit

-----Original Message-----
From: openstack-bounces+rohit.karajgi=vertex.co.in@xxxxxxxxxxxxxxxxxxx [mailto:openstack-bounces+rohit.karajgi=vertex.co.in@xxxxxxxxxxxxxxxxxxx] On Behalf Of Kevin L. Mitchell
Sent: Saturday, March 17, 2012 3:15 AM
To: openstack@xxxxxxxxxxxxxxxxxxx
Subject: [Openstack] Distributed rate-limiting

Howdy, folks.  I've been working on a replacement for nova's rate-limiting middleware that will handle the multiple-node case, and I've developed a fairly generic rate-limiting package, along with a second package that adapts it to nova.  (This means you could also use this rate-limiting setup with, say, glance, or with any other project that uses Python middleware.)  Here is some information:

* Turnstile
        Turnstile is a piece of WSGI middleware that performs true distributed
        rate-limiting.  System administrators can run an API on multiple
        nodes, then place this middleware in the pipeline prior to the
        application.  Turnstile uses a Redis database to track the rate at
        which users are hitting the API, and can then apply configured rate
        limits, even if each request was made against a different API node.
        
        - https://github.com/klmitch/turnstile
        - http://pypi.python.org/pypi/turnstile

* nova_limits
        This package provides the ``nova_limits`` Python module, which
        contains the ``nova_preprocess()`` preprocessor, the
        ``NovaClassLimit`` limit class, and the ``NovaTurnstileMiddleware``
        replacement middleware class, all for use with Turnstile.  These
        pieces work together to provide class-based rate limiting integration
        with nova.
        
        - https://github.com/klmitch/nova_limits
        - http://pypi.python.org/pypi/nova_limits

Both packages should be fairly well documented (start with README.rst), and please feel free to log issues or make pull requests.
--
Kevin L. Mitchell <kevin.mitchell@xxxxxxxxxxxxx>


_______________________________________________
Mailing list: https://launchpad.net/~openstack
Post to     : openstack@xxxxxxxxxxxxxxxxxxx
Unsubscribe : https://launchpad.net/~openstack
More help   : https://help.launchpad.net/ListHelp

______________________________________________________________________
Disclaimer:This email and any attachments are sent in strictest confidence for the sole use of the addressee and may contain legally privileged, confidential, and proprietary data.  If you are not the intended recipient, please advise the sender by replying promptly to this email and then delete and destroy this email and any attachments without any further use, copying or forwarding


Follow ups

References