✍️ Балансировка нагрузки | продолжение
Ранее писали про
балансировку нагрузкиНапомним, балансировка — механизм распределения входящих запросов между серверами
Уровни балансировки в модели 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 и L79.
Что такое Envoy, зачем он нужен и как работает#проектирование #инфраструктура
➿➿➿➿➿➿➿➿➿➿
🧑🎓 Больше полезного в базе знаний по системному анализу