Sobes.tech
Middle
107
questionbank

Как работает балансировщик нагрузки в облачных технологиях?

Ответ от нейросети

sobes.tech AI

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

Основные функции:

  • Распределение трафика: Перенаправляет запросы на доступные инстансы.
  • Проверка состояния (Health Checks): Периодически проверяет работоспособность инстансов и выводит из ротации неисправные.
  • Масштабирование: Облегчает добавление и удаление инстансов без прерывания работы.

Алгоритмы распределения трафика:

  • Round Robin: Последовательное распределение по кругу.
  • Least Connections: Направляет запрос на наименее загруженный инстанс.
  • IP Hash: Распределяет запросы на основе хеша IP-адреса клиента, обеспечивая сеансовую привязку.
  • Weighted Round Robin: Распределение с учетом назначенных весов каждому инстансу.

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

  • Network Load Balancer (NLB): Работает на сетевом уровне (Layer 4, TCP/UDP). Отлично подходит для высокопроизводительных сценариев с большим объемом трафика.
  • Application Load Balancer (ALB): Работает на прикладном уровне (Layer 7, HTTP/HTTPS). Поддерживает маршрутизацию на основе URL, хоста, заголовков и куки, терминирование SSL.
  • Gateway Load Balancer (GWLB): Работает на сетевом уровне (Layer 3) и предназначен для развертывания и масштабирования сторонних сетевых виртуальных устройств (файрволов, IDS/IPS) прозрачно для трафика.

Проверка состояния (Health Check): Балансировщик отправляет запросы (например, GET /health) или проверяет TCP-порт на инстансах. Если ответ соответствует ожиданиям (например, HTTP 200 OK или успешное TCP-соединение), инстанс считается здоровым.

Пример настройки в AWS CLI:

# Создание целевой группы (Target Group)
aws elbv2 create-target-group \
    --name MyTargetGroup \
    --protocol HTTP \
    --port 80 \
    --vpc-id vpc-xxxxxxxxxxxxxxxxx

# Регистрация инстансов в целевой группе
aws elbv2 register-targets \
    --target-group-arn arn:aws:elasticloadbalancing:us-east-1:xxxxxxxxxx:targetgroup/MyTargetGroup/xxxxxxxxxxxxxxxxx \
    --targets Id=i-xxxxxxxxxxxxxxxxx Id=i-yyyyyyyyyyyyyyyyy

# Создание балансировщика нагрузки (ALB)
aws elbv2 create-load-balancer \
    --name MyAppAlb \
    --subnets subnet-xxxxxxxxxxxxxxxxx subnet-yyyyyyyyyyyyyyyyy \
    --scheme internet-facing \
    --type application

# Создание слушателя (Listener)
aws elbv2 create-listener \
    --load-balancer-arn arn:aws:elasticloadbalancing:us-east-1:xxxxxxxxxx:loadbalancer/app/MyAppAlb/xxxxxxxxxxxxxxxxx \
    --port 80 \
    --protocol HTTP \
    --default-actions Type=forward,TargetGroupArn=arn:aws:elasticloadbalancing:us-east-1:xxxxxxxxxx:targetgroup/MyTargetGroup/xxxxxxxxxxxxxxxxx

# Пример настройки Health Check
aws elbv2 modify-target-group \
    --target-group-arn arn:aws:elasticloadbalancing:us-east-1:xxxxxxxxxx:targetgroup/MyTargetGroup/xxxxxxxxxxxxxxxxx \
    --health-check-protocol HTTP \
    --health-check-port 80 \
    --health-check-path /health \
    --health-check-interval-seconds 30 \
    --health-check-protocol-timeout-seconds 5 \
    --healthy-threshold-count 3 \
    --unhealthy-threshold-count 3

Балансировщики нагрузки являются критическим компонентом в облачной инфраструктуре для обеспечения высокой доступности, масштабируемости и надежности приложений.