Ответ
Балансировщик нагрузки (Load Balancer, LB) — это сетевой компонент (аппаратный или программный), который распределяет входящий клиентский трафик между группой backend-серверов. Его основная цель — повышение доступности, отказоустойчивости и эффективности использования ресурсов.
Основные функции и алгоритмы распределения:
- Round Robin: Последовательное распределение запросов по списку серверов.
- Least Connections: Направление запроса на сервер с наименьшим количеством активных соединений.
- IP Hash: Распределение на основе хэша IP-адреса клиента (для сохранения сессии).
Типичная конфигурация с Nginx как программным балансировщиком для PHP-FPM пула:
http {
upstream php_backend {
least_conn; # Алгоритм балансировки
server 10.0.1.10:9000; # PHP-FPM worker 1
server 10.0.1.11:9000; # PHP-FPM worker 2
server 10.0.1.12:9000 backup; # Резервный сервер
}
server {
listen 80;
location ~ .php$ {
fastcgi_pass php_backend; # Передача запросов в upstream
# ... остальные fastcgi параметры
}
}
}
Ключевые преимущества использования балансировщика:
- Масштабируемость: Легко добавить новый сервер в пул для обработки возросшей нагрузки.
- Отказоустойчивость: Балансировщик выполняет health checks и исключает не отвечающие серверы из ротации.
- SSL/TLS Termination: Может брать на себя расшифровку HTTPS-трафика, разгружая backend-серверы.
- Единая точка входа: Упрощает архитектуру для клиентов и управление DNS.
В облачных средах (AWS, GCP) часто используются управляемые балансировщики (ALB, NLB), которые автоматически масштабируются и интегрируются с группами виртуальных машин или контейнеров.