Прокси и балансировщик решают разные задачи, хотя на сети выглядят одинаково
Прокси работает на уровне прикладного обмена: принимает запрос, может его разобрать, изменить заголовки, кэшировать, фильтровать и отправить дальше. Балансировщик распределяет поток между несколькими узлами и следит, чтобы запрос попал на живой backend. Если упростить: прокси управляет содержимым, балансировщик — маршрутом.
Анализ показал, что ошибки чаще возникают, когда эти роли смешивают. Типичные признаки: рост задержек на TLS-терминации, неравномерная загрузка backend’ов, внезапные 502/504 при нормальном CPU на приложении. В таких случаях сначала проверяют:
— где завершается TCP и TLS;
— есть ли sticky sessions;
— как настроены health check и таймауты;
— не ломает ли прокси заголовки Connection, X-Forwarded-For, Host.
Данные подтверждают следующую корреляцию: чем больше промежуточных слоев, тем важнее явная политика таймаутов и ретраев. Если прокси уже повторил запрос, балансировщик не должен делать это без ограничений, иначе растет нагрузка и появляется лавина дублирующих соединений. Рекомендуется обратить внимание на метрику соединений в состоянии half-open и на разницу между входящим и исходящим RPS.
Практика здесь простая: четко разделяйте L4 и L7, документируйте, кто отвечает за health check, а кто за маршрутизацию и кэш. Тогда при инциденте разбор идет по слоям, а не по ощущениям.
Прокси-инфра
@proxy_infra_desk_arb
Прокси и балансировщик решают разные задачи, хотя на сети выглядят одинаково
Этот пост опубликован в Telegram-канале Прокси-инфра. Подписаться можно по ссылке: @proxy_infra_desk_arb.