Метод утечки ведра с Haproxy - ограничение скорости - PullRequest
0 голосов
/ 29 января 2019

Nginx использует метод с утечкой, чтобы ограничить частоту запросов. Nginx http_limit_req_module .

Это означает, что если я установлю ограничение в 100 рэк / сек, а затем меня затопит 120 рэк / сек, 100 запросов будут обслуживаться нормально, но 20 запросов будутбыть обслужен с ошибкой 503.

Как я могу установить это с Haproxy?

Я прочитал много документации о sc_http_req_rate , но так как скорость всегда составляет 120 req/ сек.Я всегда возвращаю 503 ошибки.

frontend main
    bind *:80
    acl foo_limited_req sc_http_req_rate(0) ge 100
    http-request track-sc0 path table Abuse     # Set the URI as the key of the table
    use_backend bk1 if foo_limited_req
    default_backend web

backend web
    server web1 192.168.0.10

backend Abuse
    stick-table type string len 128 size 100K expire 30m store http_req_rate(1s)

backend bk1
     server listenerror 127.0.0.1:81

listen errorlistener
    bind 127.0.0.1:81
    mode http
    errorfile 503 /etc/haproxy/errors/200-tuned.http

Я хочу обслуживать поток 100 запросов в секунду с web backend.И излишек в 20 рек / сек с бэкэндом bk1 .

1 Ответ

0 голосов
/ 29 января 2019

Вы хотите установить для параметра maxconn в ваших глобальных настройках значение «X», которое является вашим желаемым пределом скорости.

См. Ниже мой пример:

global
  log         127.0.0.1 syslog
  maxconn     1000
  user        haproxy
  group       haproxy
  daemon
...