I try to setup shared bandwidth limitation. My objective is to setup a limit per IP. I started with this blog post as example and here is my configuration:
frontend <>
[...]
filter bwlim-out limit_by_src limit 50M key src table st_src_bw # 50MB/s per IP
# Disable per IP bw limitation because of monitoring issues
http-response set-bandwidth-limit limit_by_src
backend st_src_bw
stick-table type ipv6 size 1m expire 3600s store bytes_out_rate(1s)
But as side effect I’ve got issues with monitoring, the check got timeouts:
That should work and not block your monitoring unless you mean that it’s disrupting monitor traffic from another system? I have this configuration
frontend fe_port_81
mode http
bind *:81
log global
option httplog
filter bwlim-out limit_by_src limit 10K key src table be_app
default_backend be_app
http-response set-bandwidth-limit limit_by_src
backend be_app
mode http
option httpchk GET /
log global
timeout server 25s
default-server inter 3s rise 2 fall 3
stick-table type ip size 1m expire 3600s store bytes_out_rate(1s)
server app2 12.1.1.3:80 maxconn 1000 weight 10 check
I didn’t see any timeouts or issues with monitoring during that at all. Can you show me the full front end and back end configuration when you get the issues?
I’ve tested using two different backends and it’s not impacting monitors regardless of how much I throw at it. However, are you talking about using monitors directly to the servers using the configuration on the backend? Or are you sending monitor traffic from another service and having it traverse the load balancer?
As you can see in the table output your monitor IP shouldn’t even be listed or tracked so no shaping would apply.
If you want to re-enable the configuration that was causing issues and then run a tcpdump and check the logs it might give you more clues.