Что такое балансировщик нагрузки (Load Balancer) в архитектуре?

«Что такое балансировщик нагрузки (Load Balancer) в архитектуре?» — вопрос из категории Архитектура, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Балансировщик нагрузки (Load Balancer, LB) — это сетевой компонент (аппаратный или программный), который распределяет входящий клиентский трафик между группой серверов для обеспечения масштабируемости, отказоустойчивости и эффективного использования ресурсов.

Основные задачи:

  1. Распределение запросов: Использование алгоритмов (Round Robin, Least Connections, IP Hash).
  2. Проверка здоровья (Health Checks): Регулярные опросы серверов и исключение неработающих из ротации.
  3. Обеспечение сессионной устойчивости (Sticky Sessions): Направление запросов одного пользователя на один и тот же backend-сервер.
  4. Терминирование SSL: Разгрузка backend-серверов от задач шифрования/дешифрования.

Пример конфигурации Nginx как балансировщика:

http {
    upstream backend_servers {
        # Алгоритм Least Connections
        least_conn;
        server 10.0.1.10:8080;
        server 10.0.1.11:8080;
        server 10.0.1.12:8080 backup; # Резервный сервер
    }

    server {
        listen 80;
        location / {
            proxy_pass http://backend_servers;
        }
    }
}

Типы балансировщиков:

  • L4 (Transport Layer): Работает с IP-адресами и портами (TCP/UDP). Быстрый, но без анализа содержимого запроса.
  • L7 (Application Layer): Работает с данными уровня приложения (HTTP-заголовки, cookies). Позволяет принимать более интеллектуальные решения о маршрутизации.

Использование: Веб-фермы, микросервисные архитектуры, кластеры баз данных.