Перейти к содержанию

Настройка ресурсов для WAF‑ноды

Количество ресурсов, выделенных для WAF‑ноды, определяет качество и скорость обработки запросов. Данная инструкция содержит рекомендации по настройке ресурсов для WAF‑ноды.

Основными потребителями ресурсов являются следующие компоненты WAF‑ноды:

  • Tarantool или модуль постаналитики. Выполняет статистический анализ обработанных запросов локально и является основным потребителем ресурсов.

  • NGINX. Основной компонент WAF‑ноды и обратного проксирования.

Tarantool

Модуль постаналитики использует находящееся в памяти хранилище Tarantool. База данных Tarantool используется для хранения в локальном буфере копии трафика, который обрабатывает WAF‑нода, в том числе заголовки запросов и ответов, тело запросов. Тело ответа не записывается в базу данных.

Рекомендуемое количество памяти для Tarantool — 75% от общей памяти сервера. Чтобы оценить требуемое количество памяти более точно используется следующая формула:

Скорость обработки запросов в байтах в минуту * 15 * 2

Для оценки используется данная формула, так как для эффективной работы WAF‑ноды необходимо хранить данные не менее чем за 15 минут обработки запросов с учетом двойных издержек на сериализацию данных.

Например, если WAF‑нода на пике обрабатывает запросы со скоростью 50 Мбит/сек, для Tarantool требуется выделить следующее количество памяти:

50 Мбит/сек / 8 (бит в байте) * 60 (секунд в минуте) * 15 * 2 = 11,250,000,000 байт (или ~ 10.4 Гбит)

Настройка ресурсов в Ingress‑контроллере Kubernetes

Настройка памяти Tarantool для pod'а ingress‑controller‑wallarm‑tarantool выполяется в следующем блоке файла values.yaml:

  • Для передачи значения в Гбит:

    controller:
      wallarm:
        tarantool:
        arena: "0.2"
    

  • Для передачи количества ядер ЦП:

    controller:
      wallarm:
        tarantool:
        resources:
            limits:
            cpu: 1000m
            memory: 1640Mi
            requests:
            cpu: 1000m
            memory: 1640Mi
    

Настройка ресурсов на других платформах

Настройка памяти для Tarantool выполняется в файле /etc/default/wallarm-tarantool > атрибут SLAB_ALLOC_ARENA. Чтобы указать количество памяти:

  1. Откройте конфигурационный файл Tarantool:
vim /etc/default/wallarm-tarantool
vim /etc/default/wallarm-tarantool
vim /etc/default/wallarm-tarantool
vim /etc/default/wallarm-tarantool
vim /etc/default/wallarm-tarantool
vim /etc/sysconfig/wallarm-tarantool
vim /etc/sysconfig/wallarm-tarantool
vim /etc/sysconfig/wallarm-tarantool
  1. Укажите размер памяти в атрибуте SLAB_ALLOC_ARENA. Например:
SLAB_ALLOC_ARENA=10.4
  1. Перезапустите Tarantool:
sudo systemctl restart wallarm-tarantool
sudo systemctl restart wallarm-tarantool
sudo systemctl restart wallarm-tarantool
sudo service wallarm-tarantool restart
sudo service wallarm-tarantool restart
sudo service wallarm-tarantool restart
sudo systemctl restart wallarm-tarantool
sudo systemctl restart wallarm-tarantool

Чтобы получить количество времени, на протяжении которого Tarantool может хранить данные о трафике с текущим уровнем нагрузки на WAF‑ноду, вы можете использовать метрику wallarm-tarantool/gauge-timeframe_size.

NGINX

Количество ресурсов, которое использует NGINX, зависит от множества факторов. Для средней оценки используется следующая формула:

Количество одновременных запросов * Средний размер запроса * 3

Например:

  • WAF‑нода обрабатывает на пике 10000 запросов одновременно;

  • средний размер запроса — 5 Кбит.

Количество ресурсов, потребляемых NGINX, будет равно:

10000 * 5 Кбит * 3 = 150000 Кбит (или ~150 Мбит)

Чтобы выделить ресурсы:

  • для pod'а Ingress‑контроллера NGINX (ingress-controller) используйте следующий блок в файле values.yaml:

    controller:
      resources:
        limits:
        cpu: 1000m
        memory: 1640Mi
        requests:
        cpu: 1000m
        memory: 1640Mi
    

  • для других плаформ используйте конфигурационный файл NGINX.

Рекомендации по использованию ресурсов CPU

При запуске WAF‑ноды в боевой среде рекомендуется выделить как минимум 1 ядро ЦП для NGINX и 1 ядро ЦП для Tarantool.

Фактическое количество ресурсов для NGINX зависит от многих факторов, например: количество запросов в секунду, средний размер запроса и ответа, количество правил ЛОМ, типы кодировки данных и других. В среднем, 1 ядро ЦП обрабатыает около 500 запросов в секунду. При первоначальной настройке ресурсов рекомендуется выделить увеличенное количество ресурсов для WAF‑ноды. Через некоторое время вы сможете проверить реальное количество используемых ресурсов и адаптировать настройку под реальные показатели, увеличенные вдвое для обеспечения стабильности в случаях типа скачка трафика.