Terraform: инфраструктура на уровне кода | страница 56



  vpc_zone_identifier  = data.aws_subnet_ids.default.ids

  min_size = 2

  max_size = 10

  tag {

    key                 = "Name"

    value               = "terraform-asg-example"

    propagate_at_launch = true

  }

}


Развертывание балансировщика нагрузки

Вы уже научились развертывать группу ASG, но при этом возникает небольшая проблема: у вас есть несколько серверов с отдельными IP-адресами, однако конечным пользователям обычно нужна единая точка входа. Одно из решений заключается в развертывании балансировщика нагрузки, который будет распределять трафик между вашими серверами и предоставлять всем вашим пользователям собственный IP-адрес (или, если быть точным, доменное имя). Создание балансировщика нагрузки с высокими доступностью и масштабируемостью требует много усилий. И опять вы можете положиться на AWS, воспользовавшись сервисом Elastic Load Balancer (ELB) от Amazon (рис. 2.10).

Рис. 2.10. Использование Amazon ELB для распределения трафика по группе автомасштабирования

AWS предлагает три типа балансировщиков нагрузки.

Application Load Balancer (ALB). Лучше всего подходит для балансировки трафика по протоколам HTTP и HTTPS. Работает на прикладном уровне (уровень 7) сетевой модели OSI.

• Network Load Balancer (NLB). Лучше всего подходит для балансировки трафика по протоколам TCP, UDP и TLS. Если сравнивать с ALB, может быстрее масштабироваться в обе стороны в зависимости от нагрузки (NLB рассчитан на масштабирование до десятков миллионов запросов в секунду). Работает на транспортном уровне (уровень 4) сетевой модели OSI.

Classic Load Balancer (CLB). Это «старый» балансировщик нагрузки, который появился раньше, чем ALB и NLB. Он способен работать с трафиком по протоколам HTTP, HTTPS, TCP и TLS, но ограничен в возможностях по сравнению со своими «преемниками». Работает как на прикладном, так и на транспортном уровне (L7 и L4) сетевой модели OSI.

Современные приложения должны использовать в основном ALB или NLB. Поскольку наш простой пример с веб-сервером является HTTP-приложением без серьезных требований к производительности, нам лучше всего подойдет ALB.

Как показано на рис. 2.11, ALB состоит из нескольких частей.

Прослушиватель (слушатель). Прослушивает определенные порты (например, 80) и протокол (скажем, HTTP).

• Правило прослушивателя. Берет запросы, направленные к прослушивателю, и передает те из них, которые соответствуют определенным путям (например, /foo или /bar) или сетевым именам (вроде foo.example.com или bar.example.com),  заданным целевым группам.