Шаг 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:
Как будет обработан конкретный запрос, вы настраиваете сами через плагины и объекты конфигурации. О них читайте в шагах обучения 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:
Как будет обработана каждая сессия/соединение, вы настраиваете сами через плагины и объекты конфигурации. О них читайте в шагах обучения 2 и 3.
Режим http&stream (HTTP/HTTPS + TCP/UDP)
Этот режим — просто одновременная работа сразу в двух режимах: http и stream. При выборе http&stream ADC будет готов обрабатывать HTTP/HTTPS, TCP и UDP.
Как будет обработан конкретный трафик, вы настраиваете сами через плагины и объекты конфигурации. О них читайте в шагах обучения 2 и 3.