0Pricing
AWS Solutions Architect · Урок

Шаблоны запуска и настройка ASG

Создайте шаблон запуска с правильными AMI, типом экземпляра и пользовательскими данными, а затем подключите его к группе автоматического масштабирования с минимальной, максимальной и целевой ёмкостью.

«Шаблоны запуска и настройка ASG» — бесплатный урок AWS Solutions Architect на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AWS Solutions Architect, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AWS Solutions Architect содержит 4 уроков всего.

Что такое шаблон запуска

Шаблон запуска — это версионируемая схема, которая указывает группам Auto Scaling (и EC2 напрямую), как запускать экземпляры. В одном повторно используемом документе он содержит идентификатор AMI, тип экземпляра, пару ключей, группы безопасности и необязательные данные пользователя. В отличие от старой конфигурации запуска, шаблон запуска поддерживает несколько версий и может обновляться без замены ASG.

Создание шаблона запуска через CLI

Вы можете создать шаблон запуска с помощью AWS CLI, используя create-launch-template. Параметр --launch-template-data принимает объект JSON, определяющий все настройки экземпляра. Версионирование позволяет дорабатывать шаблон, не затрагивая работающие экземпляры, пока Вы не будете готовы развернуть изменения.

aws ec2 create-launch-template \
  --launch-template-name 'MyAppTemplate' \
  --version-description 'v1 initial' \
  --launch-template-data '{
    "ImageId": "ami-0abcdef1234567890",
    "InstanceType": "t3.medium",
    "KeyName": "my-key-pair",
    "SecurityGroupIds": ["sg-0123456789abcdef0"],
    "UserData": "IyEvYmluL2Jhc2gKZWNobyAnSGVsbG8n"
  }'

Версии шаблона запуска и версии по умолчанию

Каждый шаблон запуска начинается с версии 1. При создании новой версии можно переопределить только изменившиеся поля — все остальные настройки наследуются из исходной версии. Для ASG можно указать использование версии $Latest (всегда самой новой) или версии $Default (явно назначенной версией по умолчанию). Использование $Default обеспечивает контролируемое развертывание, а $Latest удобно в средах разработки.

# Create a new version based on version 1, changing only instance type
aws ec2 create-launch-template-version \
  --launch-template-name 'MyAppTemplate' \
  --source-version 1 \
  --launch-template-data '{"InstanceType": "t3.large"}'

Основные понятия группы Auto Scaling

Группа Auto Scaling (ASG) поддерживает набор экземпляров EC2 в заданных пределах: минимальной ёмкости (нижней границы), максимальной ёмкости (верхней границы) и желаемой ёмкости (целевого количества в каждый момент времени). Когда экземпляры не проходят проверки работоспособности или срабатывает политика масштабирования, ASG автоматически запускает или завершает работу экземпляров, чтобы поддерживать нужное количество в пределах от минимального до максимального.

Создание ASG с подключённым шаблоном запуска

При создании ASG Вы указываете шаблон запуска (а не конкретный AMI напрямую). Также необходимо указать подсети VPC, в которых будут запускаться экземпляры. Размещение экземпляров в нескольких подсетях (по одной в каждой AZ) обеспечивает встроенную отказоустойчивость между AZ: если одна AZ выйдет из строя, ASG автоматически запустит экземпляры взамен неё в оставшихся AZ.

aws autoscaling create-auto-scaling-group \
  --auto-scaling-group-name 'MyAppASG' \
  --launch-template 'LaunchTemplateName=MyAppTemplate,Version=$Default' \
  --min-size 2 \
  --max-size 10 \
  --desired-capacity 4 \
  --vpc-zone-identifier 'subnet-aaa111,subnet-bbb222,subnet-ccc333'

Проверки работоспособности ASG: EC2 и ELB

По умолчанию ASG использует проверки работоспособности EC2: экземпляр помечается как неисправный только в том случае, если он остановлен, завершён или гипервизор сообщает о его сбое. При подключении балансировщика нагрузки следует переключиться на проверки работоспособности ELB, чтобы ASG заменяла экземпляры, которые работают, но возвращают ошибки HTTP 5xx. Это распространённый вопрос на экзамене: если в архитектуре есть балансировщик нагрузки, всегда выбирайте проверки работоспособности ELB.

# Enable ELB health checks on an existing ASG
aws autoscaling update-auto-scaling-group \
  --auto-scaling-group-name 'MyAppASG' \
  --health-check-type ELB \
  --health-check-grace-period 300

Настройки ёмкости: минимальная, максимальная и желаемая

Правильная настройка границ ёмкости имеет решающее значение. Минимальная ёмкость гарантирует, что приложение всегда сможет обслуживать трафик (ниже этого значения группа не опускается). Максимальная ёмкость предотвращает неконтролируемое масштабирование, которое может исчерпать лимиты сервисов или бюджет. Желаемая ёмкость — это исходная цель; политики масштабирования изменяют её динамически. Если задать одинаковые значения min=max=desired, ASG будет работать как группа фиксированного размера, что удобно для развёртываний с использованием шаблона запуска или для закреплённой ёмкости.

Подключение целевой группы ALB к ASG

Для приложений веб-уровня подключите ASG к целевой группе Application Load Balancer. Каждый новый экземпляр, запущенный ASG, автоматически регистрируется в целевой группе, а завершённые экземпляры автоматически удаляются из неё. Это гарантирует, что трафик направляется только к работоспособным запущенным экземплярам. Также необходимо задать тип проверки работоспособности ELB, чтобы ASG учитывала сбои на уровне балансировщика нагрузки.

aws autoscaling attach-load-balancer-target-groups \
  --auto-scaling-group-name 'MyAppASG' \
  --target-group-arns 'arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/MyTG/abc123'

Пользовательские данные в шаблонах запуска

Пользовательские данные — это сценарий оболочки (закодированный в Base64), который выполняется один раз при первом запуске экземпляра. В шаблоне запуска это подходящее место для установки пакетов, настройки агентов (CloudWatch, SSM) и получения кода приложения. Пользовательские данные должны быть идемпотентными: сценарии, которые можно безопасно запускать несколько раз, предотвращают проблемы при обновлении экземпляров. Для сложных конфигураций вместо встраивания больших сценариев вызывайте AWS Systems Manager или используйте инструмент управления конфигурацией.

#!/bin/bash
yum update -y
yum install -y amazon-cloudwatch-agent
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config -m ec2 -c ssm:/MyApp/CWConfig -s
# Start application
cd /opt/myapp && ./start.sh

Тёплые пулы для ускорения масштабирования

Тёплый пул заранее инициализирует набор остановленных (или работающих) экземпляров EC2 в состоянии готовности за пределами ASG. Когда ASG требуется увеличить ёмкость, она берёт экземпляры из тёплого пула вместо запуска экземпляров с нуля, значительно сокращая время добавления ёмкости. Экземпляры в тёплом пуле облагаются расходами за остановленное состояние (только EBS, без платы за CPU), поэтому это намного дешевле, чем содержать полностью работающие резервные экземпляры.

Политики завершения и балансировка между AZ

При уменьшении ASG должна решить, какие экземпляры завершить. Политика завершения по умолчанию сначала выбирает AZ с наибольшим количеством экземпляров (для повторной балансировки), затем самый старый шаблон запуска, а потом экземпляр, который ближе всего к началу следующего платёжного часа. Этот порядок можно изменить — например, выбрать OldestLaunchTemplate, чтобы сначала удалить экземпляры с устаревшими конфигурациями. ASG также автоматически выполняет повторную балансировку между AZ после того, как подсеть становится доступной, или после ручных изменений.

Быстрая проверка

Проверьте своё понимание понятий AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что шаблоны запуска предоставляют версиюемый многоразовый шаблон экземпляра, поддерживающий несколько версий и указатели версий $Latest/$Default; границы ёмкости ASG (минимальная, максимальная и желаемая) управляют размером набора экземпляров с автоматическим распределением между AZ по подсетям; а проверки работоспособности ELB необходимо включать, когда за ASG находится балансировщик нагрузки, чтобы сбои на уровне приложения запускали замену экземпляров. Далее мы рассмотрим политики масштабирования, включая отслеживание цели и пошаговое масштабирование.

Часто задаваемые вопросы

Урок «Шаблоны запуска и настройка ASG» бесплатный?

Да — полный текст урока «Шаблоны запуска и настройка ASG» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AWS Solutions Architect, подпишись на CoddyKit PRO. Курс AWS Solutions Architect содержит 4 уроков всего.

Чему я научусь в уроке «Шаблоны запуска и настройка ASG»?

Создайте шаблон запуска с правильными AMI, типом экземпляра и пользовательскими данными, а затем подключите его к группе автоматического масштабирования с минимальной, максимальной и целевой ёмкостью. Ты практикуешь AWS Solutions Architect с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AWS Solutions Architect?

Предыдущий опыт не требуется. AWS Solutions Architect на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Шаблоны запуска и настройка ASG»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AWS Solutions Architect?

Да. Каждый урок AWS Solutions Architect включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Шаблоны запуска и настройка ASG
  2. Политики масштабирования: отслеживание цели и пошаговое масштабирование
  3. Запланированное и прогнозируемое масштабирование
  4. Обновление экземпляров и перехватчики жизненного цикла
← Назад к AWS Solutions Architect