Что такое балансировщики
Что проверяют
Представляете ли вы, что находится между вашим тестом и приложением. Для тестировщика это не теория: балансировщик объясняет половину плавающих дефектов на стенде, и вопрос проверяет, умеете ли вы их различать, а не списывать на нестабильность.
Как отвечать
Балансировщик принимает входящие запросы и раскидывает их по нескольким одинаковым экземплярам приложения, следя за их доступностью.
Стоит развести уровни. На транспортном уровне он видит только соединение и отдаёт его целиком одному узлу. На уровне приложения читает запрос и умеет решать по пути, заголовку или методу, а заодно обычно завершает на себе TLS.
Алгоритмы простые: по кругу, по числу активных соединений, по весам, по хэшу от адреса клиента или ключа запроса. Отдельно есть проверки здоровья: переставший отвечать экземпляр выводится из ротации, а при выкладке открытые соединения сначала доводятся до конца.
Что из этого следует для тестирования. Проверить, что запросы действительно расходятся: для этого удобно вернуть идентификатор узла в заголовке ответа. Погасить один экземпляр и убедиться, что трафик не теряется. Прогнать сценарии с состоянием (вход, корзина, многошаговая форма, загрузка файла), когда следующий запрос попал на другой узел. Убедиться, что до приложения доходит настоящий адрес клиента, иначе ломаются лимиты и гео. Проверить длинные соединения и таймауты.
Где спотыкаются
Списывают плавающие падения на нестабильность автотестов. Классическая картина: из двух экземпляров один поднялся со старой версией или без миграции, и сценарий валится через раз. Пока неизвестно, какой узел обслужил запрос, такой дефект не ловится.
Тестируют за балансировщиком единственный экземпляр приложения. Тогда проблемы общего состояния не проявляются вовсе: сессия в памяти процесса, файл на локальном диске, кэш внутри приложения. Всё это выстреливает на проде, где узлов несколько.
Повторяют тезис, что балансировщик сам по себе точка отказа, и на этом останавливаются. В рабочей схеме он резервируется парой узлов с общим адресом или несколькими точками входа. Интереснее выяснить, что происходит при выкладке, при переполнении очереди и при медленном ответе бэкенда.