HAProxy: ограничение одновременных подключений на основе поля заголовка HTTP
Я пытаюсь ограничить количество одновременных подключений с помощью HAProxy stick-таблиц на основе полей заголовка HTTP. Я мог бы найти множество примеров с использованием IP-адресов, но в моем случае это не работает. Наше приложение отличает учетную запись пользователя исключительно от поля заголовка HTTP x-account и ожидает запросы, поступающие с нескольких IP-адресов одновременно.
На данный момент я не могу предоставить какое-либо сообщение об ошибке или что-то еще, так как я не смог понять конфигурацию до сих пор. Таким образом, это очень простой вопрос об использовании / настройке HAProxy.
Из того, что я понял после прочтения документации HAProxy:
Я определяю таблицу приставок следующим образом:
stick-table type string size 100m store conn_cur
Это должно предоставить мне таблицу для хранения полей моего заголовка. Я не добавил expire, так как на самом деле мне все равно, и значения все равно будут повторяться. Также не ожидайте намного больше, чем 5K-10K записей, то есть разные учетные записи.
До сих пор документация была довольно ясной, но с этого начинаются мои проблемы. Я предполагаю, что мне нужна строка, которая сообщает HAProxy, что он должен связать значение поля заголовка с соединением и сообщить о его открытии и в конечном итоге закрытии. Может ли это быть что-то вроде этого?
stick store-request hdr(x-account) account_table
И, кроме того, должна быть строка, которая отклоняет / отстраняет запрос, если максимальное количество сеансов для этого пользователя превышено. Что-то вроде этого, я думаю:
http-request tarpit if hdr(x-account) account_table gt 10
По крайней мере, это то, что я ожидал, но я могу быть совершенно неправ, хотя. Как я уже говорил, я не смог найти ни одного примера, использующего строки в палке. Если это поможет, я могу предоставить полную конфигурацию HAProxy, но я думаю, что это не имеет значения, поскольку это только часть определения внешнего интерфейса, верно?
Любая помощь приветствуется.
Ура, Ральф