Hello all,

I'm moving to HA using it to replace NGINX and I've a question regarding
how to do a Rate Limiting in HA that enables queuing the requests instead
of closing them.

I was able to limit per IP following those examples:
https://www.haproxy.com/blog/four-examples-of-haproxy-rate-limiting/ .
However, when the limit is reached, the users see the error and connection
is closed.

Since I come from NGINX, it has this handy feature
https://www.nginx.com/blog/rate-limiting-nginx/ where connections that
exceed the threshold are queued. Thus the user will still be able to do the
calls but be delayed without him getting errors and keep the overall number
of requests within threshold.

Is there anything similar in HA? It should limit/queueing the user by IP.

To explain with an example, we have two users Alice, with ip A.A.A.A and Bob
with ip B.B.B.B The threshold is 30r/minute.

So in 1 minute:

   - Alice does 20 requests. -> that's fine
   - Bob does 60 requests. -> the system caps the requset to 30 and then
   process the other 30 later on (maybe also adding timeout/delay)
   - Alice does 50 request -> the first 40 are fine, the next 10 are queued.
   - Bob does 20 requests -> they are queue after the one above.

I saw that it can be done in general, by limiting the connections per host.
But this will mean that it's cross IP and thus, if 500 is the limit
- Alice  does 1 call
- Bob does 1000 calls
- Alice does another 1 call
- Alice will be queued, that's not what i would like to have.

is this possible? Is there anything similar that can be done?


Thanks


-- 
*Stefano*

Reply via email to