4 типа управляемых балансировщиков нагрузки: выбор подходящего для вашего приложения

Когда дело доходит до управления трафиком и обеспечения высокой доступности ваших приложений, балансировщики нагрузки играют решающую роль. Они распределяют входящий сетевой трафик между несколькими серверами, оптимизируя производительность и предотвращая перегрузку любого отдельного сервера. В этой статье мы рассмотрим четыре типа управляемых балансировщиков нагрузки и обсудим их функции, варианты использования и примеры кода. Итак, приступим!

  1. Балансировщики нагрузки приложений (ALB):
    Балансировщики нагрузки приложений работают на уровне приложений (уровень 7) модели OSI, принимая интеллектуальные решения о маршрутизации на основе содержимого HTTP-запросов. ALB способны обрабатывать расширенные сценарии маршрутизации и предлагают такие функции, как маршрутизация на основе контента, маршрутизация на основе хоста и маршрутизация запросов на основе URL-путей. Давайте посмотрим на фрагмент кода, демонстрирующий создание ALB с помощью AWS SDK для Python (Boto3):
import boto3
elbv2 = boto3.client('elbv2')
response = elbv2.create_load_balancer(
    Name='my-alb',
    Subnets=['subnet-xxxxxxxx', 'subnet-xxxxxxxx'],
    SecurityGroups=['sg-xxxxxxxx'],
    Type='application',
    Scheme='internet-facing'
)
print(response)
  1. Балансировщики сетевой нагрузки (NLB):
    Балансировщики сетевой нагрузки работают на транспортном уровне (уровень 4) модели OSI, принимая решения о маршрутизации на основе данных IP-протокола. NLB предназначены для обработки больших объемов трафика со сверхнизкой задержкой, что делает их идеальными для приложений на основе TCP/UDP, которым требуется высочайшая производительность. Вот пример создания NLB с помощью интерфейса командной строки AWS:
aws elbv2 create-load-balancer --name my-nlb --subnets subnet-xxxxxxxx subnet-xxxxxxxx --security-groups sg-xxxxxxxx --type network --scheme internet-facing
  1. Классические балансировщики нагрузки (CLB).
    Классические балансировщики нагрузки — это старое поколение балансировщиков нагрузки, предлагаемое AWS. Они работают как на прикладном, так и на транспортном уровнях (уровень 4 и уровень 7) модели OSI, обеспечивая базовые функции балансировки нагрузки. Хотя классическим балансировщикам нагрузки не хватает некоторых расширенных возможностей, они все же могут быть подходящим выбором для простых приложений. Вот пример создания классического балансировщика нагрузки с помощью консоли управления AWS:
  • Перейти на панель управления EC2
  • Нажмите «Балансировщики нагрузки».
  • Нажмите «Создать балансировщик нагрузки»
  • Следуйте инструкциям мастера установки, чтобы настроить классический балансировщик нагрузки
  1. Балансировщики нагрузки контейнеров.
    Балансировщики нагрузки контейнеров специально разработаны для контейнерных рабочих нагрузок, выполняемых на платформах оркестрации, таких как Kubernetes. Они легко интегрируются с системами оркестрации контейнеров, обеспечивая динамическую балансировку нагрузки, обнаружение сервисов и автоматическое масштабирование. Ниже приведен пример использования Nginx Ingress Controller, популярного балансировщика нагрузки для Kubernetes:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: myapp.example.com
      http:
        paths:
          - pathType: Prefix
            path: "/"
            backend:
              service:
                name: my-service
                port:
                  number: 80