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

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

27 ответов

19 просмотров

я не настоящий сварщик, конечно но посмотреть в сторону решений поверх 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 не выглядит очень большой нагрузкой

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

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

1. https://www.kaggle.com/code/ahmadrezagholami2001/housing-estimation-linear-regression 2. https://www.kaggle.com/code/ahmadrezagholami2001/uncovering-quality-in-wines-logis...
Ahmadreza
1
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
Исходя из ваших комментариев, получается, что чтобы получить марты в CH из данных в PG, неправильно тянуть сырые данные в CH и там их обрабатывать, лепить справочники и джойни...
unhingedlunatic
42
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
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
Карта сайта