← Back to team overview

openstack team mailing list archive

Re: Distributed rate-limiting

 

Hi Kevin,

A couple of quick questions:

- As you get the tenant id from the context I assume this module has to come after the authentication in the pipeline.   Have you thought about using the tenant_id in the URL instead ?   (I'm thinking of the case where you want rate limit requests into the authentication system as well as Nova itself).

- Does this work for EC2 as well as OSAPI ?

Cheers,
Phil 

-----Original Message-----
From: openstack-bounces+philip.day=hp.com@xxxxxxxxxxxxxxxxxxx [mailto:openstack-bounces+philip.day=hp.com@xxxxxxxxxxxxxxxxxxx] On Behalf Of Kevin L. Mitchell
Sent: 16 March 2012 21:45
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


Follow ups

References