openstack team mailing list archive
-
openstack team
-
Mailing list archive
-
Message #19176
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