Рубрики
Без рубрики

Как создать AWS ALB и ASG

В этом посте вы узнаете, как создать балансировщик нагрузки приложений AWS (ALB) для вашего EC2… С тегами учебник, облако, java, aws.

В этом посте вы узнаете, как создать балансировщик нагрузки приложений AWS (LB) для ваших экземпляров EC2, на которых запущено приложение Spring Boot. Вы также создадите группу автоматического масштабирования (ASG), которая упростит настройку и автоматически увеличит и уменьшит масштаб.

1. Вступление

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

В этом посте вы узнаете, как настроить балансировщик нагрузки приложений (обратите внимание, что существуют также другие типы , в зависимости от ваших потребностей), который распределяет трафик между несколькими экземплярами EC2, на которых запущено базовое приложение Spring Boot. Далее вы узнаете, как использовать группу автоматического масштабирования, что значительно упростит ситуацию.

В случае, если у вас нет никаких знаний о том, как создавать экземпляры EC2, прочитайте предыдущий блог . Источники, использованные в этом посте, доступны на GitHub . Ресурсы, используемые в этом посте, ничего вам не будут стоить, используется только бесплатный уровень.

2. Пример Приложения

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

@RestController
public class HelloController {

    @GetMapping("/hello")
    public String hello() {
        String message = "Hello AWS!";
        try {
            InetAddress ip = InetAddress.getLocalHost();
            message += " From host: " + ip;
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
        return message;
    }

}

Также добавлена конечная точка работоспособности пружинного привода, которую вы можете использовать для включения проверки работоспособности экземпляра EC2.

Если вы хотите запустить приложение локально, просто выполните следующую команду:

$ mvn spring-boot:run

Проверьте, доступны ли конечные точки:

$ curl http://localhost:8080/hello
Hello AWS! From host: /127.0.1.1
$ curl http://localhost:8080/actuator/health
{"status":"UP"}

Создайте файл jar:

$ mvn clean verify

Файл jar загружается в GitHub в качестве выпуска, чтобы иметь возможность загрузить его в экземпляр EC2.

3. Создайте экземпляры EC2

Создайте 2 экземпляра EC2 в двух разных зонах доступности со следующими пользовательскими данными:

#!/bin/bash
yum -y install java-11-amazon-corretto-headless
wget https://github.com/mydeveloperplanet/MyAWSPlanet/releases/download/v0.0.1-alpha/MyAWSPlanet-0.0.1-SNAPSHOT.jar
java -jar MyAWSPlanet-0.0.1-SNAPSHOT.jar

Во время запуска экземпляра EC2 загружается и устанавливается Java 11, загружается файл jar и запускается файл jar.

Создайте новую группу безопасности и оставьте входящее правило доступа SSH по умолчанию на данный момент. Назовите группу безопасности ec2-сг . Теперь запустите экземпляры EC2.

4. Создайте АЛЬБОМ

В левом меню перейдите к Балансировщики нагрузки в разделе Балансировка нагрузки и нажмите кнопку Создать балансировщик нагрузки кнопка. Здесь вы можете выбрать тип балансировщика нагрузки, который вы хотите использовать. Выберите Балансировщик нагрузки приложения , нажав кнопку Создать .

В Шаге 1 вы даете балансировщику нагрузки имя |/Мой Первый балансировщик Нагрузки .

Установите прослушиватель на порт 8080 .

Вы также включаете зоны доступности для балансировщика нагрузки. Проверьте, в каких зонах доступности запущены ваши экземпляры EC2, и включите те же зоны доступности. Нажмите на Далее: Кнопка Настроить параметры безопасности .

В Шаге 2 просто нажмите Далее: Кнопка Настроить группы безопасности .

В Шаге 3 создайте новую группу безопасности alb-sg для вашего ALB, разрешающую HTTP-трафик на порт 8080. Нажмите на Далее: Кнопка Настроить маршрутизацию .

В Шаге 4 вам нужно создать Целевую группу . Целевой группой может быть несколько экземпляров EC2, в которые ALB будет отправлять трафик. Назовите целевую группу Моя первая целевая группа , установите порт на 8080 и установите путь проверки работоспособности в /привод/работоспособность . Нажмите на Далее: Кнопка Зарегистрировать цели .

В Шаге 5 вам нужно добавить экземпляры EC2, которые вы хотите включить в целевую группу. Выберите оба экземпляра EC2 и нажмите кнопку Добавить в зарегистрированный . Нажмите на Следующий: Кнопка Обзор .

В конце вы сможете просмотреть все настройки и нажать кнопку Создать . Вам нужно подождать некоторое время, прежде чем ALB будет активен.

Попробуйте вызвать URL-адрес с DNS-именем балансировщика нагрузки.

$ curl http://MyFirstLoadBalancer-1212513449.eu-central-1.elb.amazonaws.com:8080/hello

504 Gateway Time-out

504 Gateway Time-out

Ожидается тайм-аут. Экземпляры EC2 разрешают только SSH-трафик и не разрешают HTTP-трафик. В меню слева перейдите к Группы безопасности в разделе Сеть и безопасность . Выберите группу безопасности ec2-sg и нажмите кнопку Изменить правила для входящих на вкладке Правила для входящих .

Добавьте правило, разрешающее HTTP-трафик через порт 8080. В качестве источника вы выбираете группу безопасности alb-sg вашей ЛАБОРАТОРИИ. Это означает, что ваши экземпляры EC2 не могут быть доступны напрямую по HTTP, а только через балансировщик нагрузки. Нажмите на Кнопка Сохранить правила .

Попробуйте снова вызвать URL-адрес, и теперь будет возвращено приветственное сообщение. Он будет более или менее поровну разделен между двумя машинами, когда вы вызовете его несколько раз.

$ curl http://MyFirstLoadBalancer-1212513449.eu-central-1.elb.amazonaws.com:8080/hello
Hello AWS! From host: ip-172-31-2-55.eu-central-1.compute.internal/172.31.2.55
$ curl http://MyFirstLoadBalancer-1212513449.eu-central-1.elb.amazonaws.com:8080/hello
Hello AWS! From host: ip-172-31-2-55.eu-central-1.compute.internal/172.31.2.55
$ curl http://MyFirstLoadBalancer-1212513449.eu-central-1.elb.amazonaws.com:8080/hello
Hello AWS! From host: ip-172-31-2-55.eu-central-1.compute.internal/172.31.2.55
$ curl http://MyFirstLoadBalancer-1212513449.eu-central-1.elb.amazonaws.com:8080/hello
Hello AWS! From host: ip-172-31-2-55.eu-central-1.compute.internal/172.31.2.55
$ curl http://MyFirstLoadBalancer-1212513449.eu-central-1.elb.amazonaws.com:8080/hello
Hello AWS! From host: ip-172-31-21-171.eu-central-1.compute.internal/172.31.21.171
$ curl http://MyFirstLoadBalancer-1212513449.eu-central-1.elb.amazonaws.com:8080/hello
Hello AWS! From host: ip-172-31-21-171.eu-central-1.compute.internal/172.31.21.171
...

Перейдите к Целевым группам в разделе Балансировка нагрузки и посмотрите на работоспособность экземпляров. Здесь вы можете видеть, что оба экземпляра EC2 исправны на основе настроенной проверки работоспособности.

Чтобы все очистить, вам нужно удалить балансировщик нагрузки, целевую группу, завершить работу экземпляров EC2, удалить группу безопасности EC2 и, наконец, удалить группу безопасности ALB. Если вы хотите продолжать следить за этим блогом, завершите только экземпляры EC2, вам понадобятся другие элементы в следующем разделе.

5. Создайте ASG

Создание ALB легко и имеет свои преимущества, но вам все равно нужно вручную добавлять и удалять экземпляры. Эта проблема решается с помощью группы автоматического масштабирования (ASG). На основе шаблона масштабирование и масштабирование будут выполняться автоматически на основе определенных вами триггеров.

В левом меню перейдите к Группы автоматического масштабирования в разделе Автоматическое масштабирование и нажмите кнопку Создать группу автоматического масштабирования .

Дайте ASG имя Мой первый ASG . Следующее, что нужно сделать, это создать Шаблон запуска . Шаблон запуска предоставит информацию о том, как создавать экземпляры EC2. Щелкните ссылку Создать шаблон запуска .

Откроется новая вкладка браузера, где вы сначала дадите шаблону имя Мой Первый Шаблон Запуска .

Заполните AMI , тип экземпляра и пара ключей , которая будет использоваться точно так же, как вы делали при создании экземпляра EC2.

В настройках Сети выберите группу безопасности ec2-sg .

Оставьте Настройки сети , Хранение , Теги ресурсов и Сетевые интерфейсы по умолчанию. Разверните раздел Дополнительные сведения и прокрутите вниз до конца. Скопируйте Пользовательские данные , которые вы использовали для создания экземпляров EC2 ранее, в поле Пользовательские данные. Наконец, нажмите кнопку Создать шаблон запуска .

Вернитесь к мастеру создания ЗАДАЧИ, нажмите кнопку обновить рядом с полем Шаблон запуска и выберите только что созданный шаблон запуска. Нажмите кнопку Далее .

В Шаге 2 выберите три подсети и нажмите кнопку Далее .

В Шаге 3 выберите присоединение существующих целевых групп балансировщика нагрузки и выберите Моя первая целевая группа .

В разделе Проверки работоспособности вы включаете ЭЛБ . Таким образом, ELB автоматически перезапустится, когда он выйдет из строя. Нажмите на Кнопка Далее .

На Шаге 4 вы определяете Размер группы с Желаемой вместимостью 2,/|Минимальной вместимостью 2 и Максимальной вместимостью 3.

С помощью Политики масштабирования вы можете определить, как должно выполняться автоматическое масштабирование, когда вы выбираете Политику масштабирования отслеживания целей . А пока просто выберите Нет , но полезно взглянуть на различные варианты автоматического масштабирования. Нажмите кнопку Далее .

В Шаге 5 и Шаг 6 , просто нажмите Кнопка Далее . Можно добавлять уведомления и теги, но вы не будете использовать их в этом уроке. В Шаге 7 вы можете просмотреть все и в нижней части страницы нажать кнопку Создать группу автоматического масштабирования . Это может занять несколько минут, прежде чем все будет готово и запущено. Вы увидите следующее:

  • В разделе Автоматическое масштабирование :

    • Группа Автоматического Масштабирования
  • В разделе Экземпляры :

    • Два экземпляра EC2, которые были созданы, потому что минимальная и желаемая емкость была установлена на 2
    • Созданный Шаблон Запуска

Проверьте еще раз с помощью curl , можно ли получить доступ к URL-адресу приветствия.

Перейдите в группу Автоматическое масштабирование и на вкладку Сведения и нажмите кнопку Изменить .

Увеличьте желаемую и минимальную емкость и нажмите кнопку Обновить .

Автоматически подготавливается новый экземпляр. Подождите несколько минут, пока экземпляр не будет помечен как исправный в Целевой группе, и после этого трафик будет распределен по трем экземплярам EC2.

Чтобы все очистить, вам нужно удалить группу автоматического масштабирования (это может занять некоторое время), балансировщик нагрузки, целевую группу, группу безопасности EC2 и, наконец, удалить группу безопасности ALB.

6. Вывод

В этом посте вы узнали, как создать АЛЬБОМ в качестве единой точки доступа для ваших экземпляров EC2. Проблема с этой настройкой заключалась в том, что вам нужно было вручную добавлять или удалять экземпляры, когда трафик становился высоким или низким. ASG решит эту проблему. Он запустит или завершит экземпляры EC2 на основе нескольких политик масштабирования (которые вы не настраивали в этом посте, а просто взглянули).

Оригинал: “https://dev.to/mydeveloperplanet/how-to-create-an-aws-alb-and-asg-3fc2”