In-Flight Request Limiting¶
To proactively prevent services from being overwhelmed with high load, a limit on the number of simultaneous in-flight requests can be applied.
TraefikEE supports distributed in-flight request limiting. It's a middleware just like Traefik's in-flight request limiting middleware, but it ensures that requests are limited over time throughout your cluster and not just on an individual proxy.
To use distributed in-flight request limiting, you'll need to deploy a service with the middleware enabled. Here are some examples depending on the provider you're using:
labels: - "traefik.http.middlewares.test-inflightreq.plugin.inflightreq.amount=10"
apiVersion: traefik.containo.us/v1alpha1 kind: Middleware metadata: name: test-inflightreq spec: plugin: inFlightReq: amount: 10
# Here, an average of 100 requests per second is allowed. # In addition, a burst of 50 requests is allowed. [http.middlewares] [http.middlewares.test-inflightreq.plugin.inFlightReq] amount = 10
# Here, an average of 100 requests per second is allowed. # In addition, a burst of 50 requests is allowed. http: middlewares: test-inflightreq: plugin: inFlightReq: amount = 10
For more information on the different configuration possibilities (
sourceCriterion etc.), refer to the Traefik Reference.
Migrating from Traefik¶
If a Traefik configuration for the in-flight request limiting middleware exists, it can adapted for TraefikEE simply by using
plugin.inFlightReq instead of
inFlightReq. See the examples above for the different providers.
A Traefik middleware configuration can be kept, which will run the non-distributed version of the middleware on each proxy. This means the limiting is per-proxy and not throughout the entire cluster, so be careful.