Шаг 1. Как работает ADC: схема обработки запроса, режимы работы

Рады, что вы пользуетесь нашим продуктом! В этом обучении расскажем, как работает ADC и как его настраивать. Начнём с режимов работы.

Режимы работы

Режим определяет, какой трафик должен обрабатывать ADC. Вы можете выбрать любой из трёх:

  • http — обработка только HTTP/HTTPS-запросов;

  • stream — обработка только UDP-датаграмм и TCP-соединений;

  • http&stream — два в одном: обработка и HTTP/HTTPS-запросов, и UDP-датаграмм/TCP-соединений.

По умолчанию включён http. Для смены режима измените настройки conf/config.yaml.

Схема обработки запроса

Режим http (HTTP/HTTPS)

Для обработки HTTP/HTTPS-запроса ADC может:

  • Установить соединение с клиентом. Поддерживаются TLS и mTLS.

  • Расшифровать HTTPS-запрос.

  • Определить, кто обращается к API. Например, отличить одного вашего партнёра с доступом к API от другого.

  • Проверить запрос по правилам. Например, проверить права клиента, разрешён ли его IP и не превышен ли лимит запросов.

  • Решить, пропускать ли запрос дальше. Если настроенное условие доступа не выполнено, ADC вернёт клиенту ошибку.

  • Изменить запрос. Например, изменить URI, заголовки и параметры или преобразовать тело запроса.

  • Ответить без обращения к бэкенду. Например, вернуть перенаправление, заглушку или сохранённый в кэше ответ.

  • Следить за состоянием бэкенд-серверов. ADC проверяет их доступность и учитывает ошибки или тайм-ауты при выборе ноды.

  • Выбрать бэкенд и направить в него разрешённый запрос. ADC выбирает доступную ноду с учётом алгоритма балансировки. При ошибке он может попробовать другую ноду.

  • Отправить копию запроса в другой сервис. Если включено зеркалирование, ADC передаёт дубликат параллельно с основным запросом.

  • Изменить ответ бэкенда. Например, изменить заголовки, код или тело ответа перед отправкой клиенту.

  • Передать ответ клиенту.

  • Зафиксировать результат. Например, записать логи, метрики и трассировку запроса.

Этот список — верхнеуровневое описание того, что ADC в принципе умеет делать с трафиком. Показываем тот же набор операций в виде схемы, чтобы вы могли наглядно представить процесс работы ADC:

tutorial how adc works 1

Как будет обработан конкретный запрос, вы настраиваете сами через плагины и объекты конфигурации. О них читайте в шагах обучения 2 и 3.

Режим stream (TCP/UDP)

Для обработки UDP/TCP-трафика ADC может:

  • Установить TCP-соединение с клиентом или создать UDP-сессию при получении первой датаграммы. Для TCP поддерживаются TLS и mTLS.

  • Проверить доступ по настроенным правилам. Например, разрешён ли IP клиента и не превышен ли лимит одновременных соединений или сессий.

  • Решить, пропускать ли трафик клиента дальше. Если настроенное условие доступа не выполнено, ADC закроет TCP-соединение / прекратит обработку UDP-сессии.

  • Следить за состоянием бэкенд-серверов. ADC проверяет их доступность и учитывает ошибки или тайм-ауты при выборе ноды.

  • Выбрать бэкенд-ноду и направить в неё трафик. ADC выбирает ноду по алгоритму балансировки с учётом её состояния. Для TCP, если подключение не удалось и повтор разрешён, ADC может попробовать другую ноду.

  • Передавать данные между клиентом и бэкендом.

  • Записать данные о соединении/сессии в логи и метрики.

Этот список — верхнеуровневое описание того, что ADC в принципе умеет делать с UDP/TCP-трафиком. Показываем тот же набор операций в виде схемы, чтобы вы могли наглядно представить процесс работы ADC:

tutorial how adc works 2

Как будет обработана каждая сессия/соединение, вы настраиваете сами через плагины и объекты конфигурации. О них читайте в шагах обучения 2 и 3.

Режим http&stream (HTTP/HTTPS + TCP/UDP)

Этот режим — просто одновременная работа сразу в двух режимах: http и stream. При выборе http&stream ADC будет готов обрабатывать HTTP/HTTPS, TCP и UDP.

Как будет обработан конкретный трафик, вы настраиваете сами через плагины и объекты конфигурации. О них читайте в шагах обучения 2 и 3.