Всем привет. Планирую архиктуру в которой будет несколько входных точек трафика(nginx(ингрес)),

Рейтлимит на сколько я понимаю выставляется только на каждый инстант, в смысле на каждую входную точку по отдельности. Решил сливать логи доступа со всех nginx в одно место и там уже чем-то анализировать. Остаётся вопрос, а как мне сделать ratelimit, на основе сборных логов доступа? Я обычно ratelimit делал на самом nginx, а как мне в данном случае определить нарушителей по частоте запросов? Кто-то сталкивался с готовыми решениями под такую задачу?

27 ответов

14 просмотров

я не настоящий сварщик, конечно но посмотреть в сторону решений поверх openresty/lua можно там точно видел лимитеры

Владимир-Муковоз Автор вопроса
Pavel
я не настоящий сварщик, конечно но посмотреть в ст...

ну так они опять же на конкретную установку nginx

Pavel
я не настоящий сварщик, конечно но посмотреть в ст...

из LUA периодически опрашиваешь ендопинт, что знает про лимиты и вычисляешь все что надо

Владимир-Муковоз Автор вопроса
Pavel
из LUA периодически опрашиваешь ендопинт, что знае...

это не похоже на готовое решение), я уж тогда буду писать это на чём-то побыстрее луа))

Владимир Муковоз
это не похоже на готовое решение), я уж тогда буду...

поищи готовое решние поверх lua. они есть. в том-же kong

Владимир Муковоз
это не похоже на готовое решение), я уж тогда буду...

например? если мы не говорим про кастомные расширения nginx (даже хз какой там порог входа) то что?

Владимир-Муковоз Автор вопроса
Pavel
например? если мы не говорим про кастомные расшире...

мы вообще не говорим про расширения nginx

Например: Делай лимит через auth_request с опросом какого мемкэша. Устанавливаешь туда маркер с протуханием по времени, устанавливаешь на основе агрегации логов - хоть прям самим сислогом. Например: пишешь на lua синхронизацию диктов между инстансами, и лимитируешь по дикту.

Владимир-Муковоз Автор вопроса
Anton Noginov
Например: Делай лимит через auth_request с опросо...

идея понятна, сейчас копну, но я вот думаю, а не замедлит ли мне это работу nginx.?)) Вариант с сторонним модулем который бы курил сборный лог со всех nginx абсолютно не грузит инстанты nginx, да и банить наглецов я всё равно буду не через nginx, а есть на это клоудфлер)

Anton Noginov
Например: Делай лимит через auth_request с опросо...

если nginx стоит больше чем на одной тачке - получаешь достаточно большую нагрузку на сеть (ибо регистрируешь каждый запрос) но в среднем кажется отличный вариант. но я бы состояние лимитеров в памяти держал

Владимир Муковоз
идея понятна, сейчас копну, но я вот думаю, а не з...

Это оно и есть. У тебя сторонний процесс считает статистику, и ставит галку - пускать/не пускать. А nginx только ходит в мемкэш и смотрит на наличие галки. +1 запрос к сессии.

Владимир Муковоз
идея понятна, сейчас копну, но я вот думаю, а не з...

а есть понимание какую нагрузку нужно держать?

Pavel
если nginx стоит больше чем на одной тачке - получ...

Нет. 1. Сильно небольшую, + два десятка байт на запрос. 2. Эстеты могут хранить в локальном мемкэше. 3. Держать прямо в памяти nginx - можно, но проблематично синхронизировать.

Владимир-Муковоз Автор вопроса
Anton Noginov
Это оно и есть. У тебя сторонний процесс считает ...

так а зачем nginx вообще смотреть эту статистику, перед ним стоит клоудфлер, он будет решать пускать или не пускать

Anton Noginov
Нет. 1. Сильно небольшую, + два десятка байт на ...

думаю что для лимитеров не стоит задачи строгой консистентности. евенчуальная вполне пойдет

Владимир Муковоз
так а зачем nginx вообще смотреть эту статистику, ...

Тогда рейт-лимить на cf, зачем вобще что-то городить?

Anton Noginov
Нет. 1. Сильно небольшую, + два десятка байт на ...

логи с разных тачек еще сливать надо-)

Pavel
логи с разных тачек еще сливать надо-)

Они и так сливаются. Кроме того, лить можно в минимизированном формате.

Владимир-Муковоз Автор вопроса
Pavel
а цифры?

ну вот сейчас глянул лог за вчера, было 2619302 запросов к бекенду При этом вчера был далеко не топовый день, в топовый день можно умножить на 4 примерно. А архитектуру переделываем чтобы выдерживать ещё больше.

Владимир-Муковоз Автор вопроса
Anton Noginov
Тогда рейт-лимить на cf, зачем вобще что-то городи...

рейтлимит на клоудфлере, ты там платишь за пропущенные, безые запросы, каждые 10к запросов это 0,05 баксов, учитывая плотность запросов заказчик разорится на рейтлимите от клоудфлера)), да и оно прекрасно работало и у себя, ну пока не принято было решение делать несколько nginx))

Владимир-Муковоз Автор вопроса
Pavel
логи с разных тачек еще сливать надо-)

тут как раз проблем нет вообще ниразу

Владимир-Муковоз Автор вопроса
Pavel
30 RSP чтоль?

ну если размазать на сутки то выходит что так, но ночью как бы опсещалка сам понимаешь такая себе)), а вечером подскакивает. + повторюсь это типа вчера такой себе день был, это может быть в 4 раза больше

Владимир Муковоз
ну если размазать на сутки то выходит что так, но ...

даже 120 rps не выглядит очень большой нагрузкой

Похожие вопросы

Обсуждают сегодня

Hi! Could you please upvote my new notebook? thanks a lot. https://www.kaggle.com/code/melissamonfared/anime-character-generation-dsgan-gan
məru
4
upvote plz https://www.kaggle.com/code/bassetkerouche/swapping-face?scriptVersionId=207300096
benkerrouche Statoinary
1
-- Привет всем. -- Есть csv, проблема в том что он содержит очень много повторов по столбцам и по строкам. -- Решил перекинуть это в базу данных, чтобы было проще. Но я не ша...
Oleg Ivanov
1
Как считаете - вопрос на собесе: «Как быстрее всего запустить ec2 машину в aws (в чистом аккаунте) и показать вывод от любой команды с нее» не очень ли сложный для условного м...
Sergey
50
Господа, у меня вопрос. Что вообще такое этот ваш data science и data scientists? А то гуглю, а мне какую-то расплывчатую фигню говорят.
Inkosta
44
Hi could you please help me with my two new projects? https://www.kaggle.com/code/hesankazemnia/rice-image-classification-cnn-pytorch https://www.kaggle.com/code/hesankazemnia...
Hesan
6
Исходя из ваших комментариев, получается, что чтобы получить марты в CH из данных в PG, неправильно тянуть сырые данные в CH и там их обрабатывать, лепить справочники и джойни...
unhingedlunatic
42
hi, Can you upvote? https://www.kaggle.com/code/durjoychandrapaul/rag-q-a-system-by-langchain-huggingface-for-pdf?scriptVersionId=204704280
A
1
Could you upvote and comment please? https://www.kaggle.com/code/tatianapetrushkevich/beginner-images https://www.kaggle.com/code/tatianapetrushkevich/python-for-beginners1 ...
Tazziyana
7
Коллеги, приветствую! Появилась не совсем тривиальная задача реализовать в nginx редирект HTTPS —> HTTP. Да, именно так, а не наоборот. Мы разрабатываем embedded устройство,...
Никита
24
Карта сайта