Hi,

On Mon, Feb 11, Badari Prasad wrote:
>     Thank you for the response. I came up with my own haproxy cfg, where i
> would want to rate limit based on event name and client id in url.
> URL ex : /api/v1/<event_name>/<clientid>
> 
> Have attached a file for my haproxy cfg.  But it does not seems to be rate
> limiting the incoming requests.

> backend st_src_monte
>     stick-table type string size 1m expire 10s store http_req_rate(10s)
> ...
> 
>    acl monte_as1_exceeds_limit src_http_req_rate(st_src_as1_monte) gt 990
>    acl monte_in_limit src_http_req_rate(st_src_as1_monte) lt 1000
>    http-request track-sc0 src table st_src_as1_monte

There's no st_src_as1_monte table in your example config, there's
st_src_monte table.

>    http-request deny deny_status 429 if { path_beg 
> /api/v1/monitoring-event/A000001 AND monte_as1_exceeds_limit }

You're tracking connections with src, but the stick table is type string,
have you checked from admin socket that the stick table has entries,
something like:
echo 'show table st_src_monte' | nc -U /var/lib/haproxy/stats
(insted of nc -U, socat stdio /var/lib/haproxy/stats should also work).

If you want to track src ip, then stick-table type ip or ipv6 is
probably better.

>> I would want to configure 1000 tps for url /api/v1/client1/transfer_data or
>> 500 tps for /api/v1/client2/user_data and so on....

Do you mean that only 1000 tps goes to
/api/v1/client1/transfer_data (no matter what the source ip addresses
are) or each source ip can send 1000 tps to /api/v1/client1/transfer_data ?

-Jarno

-- 
Jarno Huuskonen

Reply via email to