✍️ Балансировка нагрузки | продолжение
Ранее писали про балансировку нагрузки
Напомним, балансировка — механизм распределения входящих запросов между серверами
Уровни балансировки в модели OSI
💙сетевой уровень (L3, IP) – балансировка на основе IP-адресов
💙транспортный уровень (L4, TCP/UDP) – маршрутизация запросов по номерам портов и соединениям, без анализа содержимого пакетов
💙прикладной уровень (L7, HTTP/HTTPS) – анализ HTTP-запросов и маршрутизация на основе URL, заголовков или cookies
Типы балансировщиков
Аппаратные (Hardware Load Balancer, HLB)
- физические устройства с сетевыми процессорами (ASIC), которые обрабатывают пакеты быстрее, чем программные решения
- часто используются в крупных дата-центрах
⏩ примеры: F5 Big-IP, Citrix NetScaler
Как работают
➡️клиент отправляет запрос на IP-адрес балансировщика
➡️балансировщик обрабатывает запрос на аппаратном уровне
➡️трафик направляется на нужный сервер с мин задержками
Программные (Software Load Balancer, SLB)
- ПО на сервере, которое выполняет функции балансировки
- гибкое, дешевле аппаратных решений, но требует мощностей сервера
⏩ Nginx, HAProxy, Envoy
Как работают
➡️SLB развернут на виртуальной машине / физическом сервере
➡️принимает запросы и перенаправляет их на сервера по заданным алгоритмам
➡️может использовать L4 или L7-балансировку
Виртуальные (Virtual Load Balancer, VLB)
- программные балансировщики, работают в виртуальных средах или в облаке
- поддерживают авто-масштабирование (динамическое изменение кол-ва серверов)
⏩AWS ELB, Yandex Network Load Balancer
Как работают
➡️облачный балансировщик получает запрос
➡️в зависимости от нагрузки создает новые инстансы или перераспределяет трафик
➡️атоматически масштабируется и настраивается
* инстанс (instance) – виртуальная / физическая машина, которая обрабатывает запросы
Методы балансировки
⚪️DNS-балансировка (уровень L3)
DNS-сервер возвращает разные IP-адреса на один DNS-запрос
— не учитывает загрузку серверов и может кэшироваться клиентами (возможны задержки в обновлении маршрутов)
— например, api.example.com может вести на разные серверы
⚪️Через прокси-сервер (L7)
запросы поступают на прокси → он анализирует содержимое и перенаправляет на нужные серверы
⚪️Прямая балансировка (L4)
изменяет MAC-адреса пакетов, направляет их напрямую на backend-серверы
⚪️NAT-балансировка (L3-L4)
изменяет IP-адреса и порты пакетов, направляет трафик на разные серверы онлайн
Примеры методов для разных типов нагрузки
⭐️Статический контент (изображения, видео, CSS, JavaScript)
Пользователь запрашивает изображение с сайта
➡️ DNS-балансировщик (Nginx) направляет запрос на ближайший географически сервер CDN
➡️ CDN отдает изображение из кэша, без загрузки с основного сервера
⭐️API-запросы (REST, GraphQL)
REST API с /auth и /data:
➡️ L4-балансировщик (NAT / HAProxy) направляет трафик API на серверы, распределяет нагрузку
➡️ L7-балансировщик (Nginx) перенаправляет по URL или заголовкам:
/auth — на серверы аутентификации
/data — на серверы обработки данных
⭐️Веб-приложения (динамический контент, пользовательские сессии)
L7-балансировщик (F5 BIG-IP) с алгоритмом Sticky Sessions определяет пользователя по cookie и направляет его запросы на один сервер. Данные сессии (корзина, авторизация) не потеряются
⭐️БД
Кластер PostgreSQL с мастером и 3 репликами
➡️L4-балансировщик (например, Pgpool-II) с алгоритмом Least Connections отправляет запросы на чтение (SELECT) на реплики, чтобы снизить нагрузку на мастер
➡️запросы INSERT/UPDATE идут на мастер
📎 Материалы
1. Балансировка нагрузки: основные алгоритмы и методы
2. Load Balancer и Reverse Proxy в микросервисной архитектуре
3. Load Balancers для систем оркестрации
4. Балансировка нагрузки в Облаках
5. Сетевой балансировщик нагрузки
6. DNS Балансировка нагрузки: что это такое
7. Как работает L3 балансировщик нагрузки
8. Балансировка нагрузки на L3, L4 и L7
9. Что такое Envoy, зачем он нужен и как работает
#проектирование #инфраструктура
➿➿➿➿➿➿➿➿➿➿
🧑🎓 Больше полезного в базе знаний по системному анализу
Post #562
13.7K
- 👍 16
- 🔥 6
- 🤔 3
- ❤ 2
- 😁 2