Введение
Приложению иногда нужно больше серверов, а позже меньше. Вы определите две политики, увеличите группу с двух до трёх и вернётесь к двум. Проверите HTTP-ответы и ограничение дальнейших изменений границами группы.
Нужно знать шаблоны, группы Auto Scaling и проверки ALB. Новая среда предоставляет независимую исправную группу application-fleet из двух экземпляров, шаблон, сеть и ALB. Старые ресурсы не используются.
Связь с сертификацией
Начальная практика для SAA-C03 Domain 2 и SOA-C03 Domain 2: мощность Auto Scaling, действия масштабирования и интеграция ALB.
Определение политик
Изучите группу и создайте политики без изменения мощности.
Перейдите в рабочую папку и проверьте начальную мощность:
cd /home/labex/project
aws autoscaling \
describe-auto-scaling-groups \
--auto-scaling-group-names application-fleet \
--query 'AutoScalingGroups[].{Min:MinSize,Desired:DesiredCapacity,Max:MaxSize,Instances:Instances[].InstanceId}'
TG_ARN=$(aws elbv2 \
describe-target-groups \
--names application-targets \
--query 'TargetGroups[0].TargetGroupArn' \
--output text)
LB_DNS=$(aws elbv2 \
describe-load-balancers \
--names application-alb \
--query 'LoadBalancers[0].DNSName' \
--output text)
aws elbv2 \
wait target-in-service \
--target-group-arn "$TG_ARN"
Ожидайте минимум 2, желаемое 2, максимум 3 и две исправные цели в AWS View. Политика масштабирования определяет изменение. ChangeInCapacity меняет абсолютное количество: 1 добавляет сервер, -1 удаляет один.
Создайте две политики SimpleScaling. Период охлаждения обычно позволяет действию стабилизироваться до следующего срабатывания сигнализации. Сохраните 30 секунд:
aws autoscaling \
put-scaling-policy \
--auto-scaling-group-name application-fleet \
--policy-name add-one-server \
--policy-type SimpleScaling \
--adjustment-type ChangeInCapacity \
--scaling-adjustment 1 \
--cooldown 30
aws autoscaling \
put-scaling-policy \
--auto-scaling-group-name application-fleet \
--policy-name remove-one-server \
--policy-type SimpleScaling \
--adjustment-type ChangeInCapacity \
--scaling-adjustment -1 \
--cooldown 30
aws autoscaling \
describe-policies \
--auto-scaling-group-name application-fleet \
--query 'ScalingPolicies[].{Name:PolicyName,Type:PolicyType,Adjustment:ScalingAdjustment,Cooldown:Cooldown}'
Создание не выполняет политику. Здесь явный вызов с --no-honor-cooldown показывает управляемые переходы. Временное соблюдение cooldown и сигнализация CloudWatch не демонстрируются. В рабочей системе политики по метрикам используют сигнализацию, а target tracking следует целевому значению. Автоматическая обратная связь и нагрузка CPU не проверяются.
Увеличение до трёх серверов
Выполните положительную политику и подтвердите реальные ответы дополнительного сервера.
Scale-out добавляет экземпляры. Выполните политику и дождитесь ALB:
aws autoscaling \
execute-policy \
--auto-scaling-group-name application-fleet \
--policy-name add-one-server \
--no-honor-cooldown
aws elbv2 \
wait target-in-service \
--target-group-arn "$TG_ARN"
aws autoscaling \
describe-auto-scaling-groups \
--auto-scaling-group-names application-fleet \
--query 'AutoScalingGroups[].{Desired:DesiredCapacity,Max:MaxSize,Instances:Instances[].InstanceId}'
Ожидайте мощность 3 и три текущих ID. Группа запускает новый сервер по шаблону и автоматически регистрирует его.
Повторно выполните политику на максимуме и проверьте мощность:
aws autoscaling \
execute-policy \
--auto-scaling-group-name application-fleet \
--policy-name add-one-server \
--no-honor-cooldown
aws autoscaling \
describe-auto-scaling-groups \
--auto-scaling-group-names application-fleet \
--query 'AutoScalingGroups[].{Desired:DesiredCapacity,Max:MaxSize,Instances:Instances[].InstanceId}'
Мощность остаётся 3; изменение не превышает максимум группы. Ограничивается число серверов, не запросы на сервер.
Отправьте девять запросов и сравните IDs с тремя текущими экземплярами:
for request in 1 2 3 4 5 6 7 8 9; do
curl --config client.conf -sS "http://$LB_DNS/health"
echo
done
В AWS View подтвердите желаемое 3, три исправные цели и реальные ответы 200 всех IDs через Send request. Новая запись API не доказывает обслуживание трафика.

Пример: желаемая мощность три, дополнительный сервер отвечает HTTP 200. Ваши IDs будут другими.
Сокращение с сохранением минимума
Уменьшите мощность и подтвердите доступность двух серверов.
Scale-in удаляет экземпляры. Выполните отрицательную политику и дождитесь исправных текущих целей:
aws autoscaling \
execute-policy \
--auto-scaling-group-name application-fleet \
--policy-name remove-one-server \
--no-honor-cooldown
aws elbv2 \
wait target-in-service \
--target-group-arn "$TG_ARN"
aws autoscaling \
describe-auto-scaling-groups \
--auto-scaling-group-names application-fleet \
--query 'AutoScalingGroups[].{Min:MinSize,Desired:DesiredCapacity,Instances:Instances[].InstanceId}'
aws ec2 \
describe-instances \
--filters "Name=tag:aws:autoscaling:groupName,Values=application-fleet" \
--query 'Reservations[].Instances[].{Instance:InstanceId,State:State.Name}'
Ожидайте два текущих ID и один экземпляр terminated. Удаляемый сервер выбирает группа; это не всегда самый новый. Удалённый экземпляр не должен оставаться в активных целях.
Повторно выполните отрицательную политику на минимуме и проверьте мощность:
aws autoscaling \
execute-policy \
--auto-scaling-group-name application-fleet \
--policy-name remove-one-server \
--no-honor-cooldown
aws autoscaling \
describe-auto-scaling-groups \
--auto-scaling-group-names application-fleet \
--query 'AutoScalingGroups[].{Min:MinSize,Desired:DesiredCapacity,Instances:Instances[].InstanceId}'
Желаемое остаётся 2; политика не опускает группу ниже минимума. Отправьте шесть запросов оставшимся серверам:
for request in 1 2 3 4 5 6; do
curl --config client.conf -sS "http://$LB_DNS/health"
echo
done
В AWS View подтвердите две исправные цели и ответы 200 обоих текущих IDs. Завершённый ID не появляется в новых ответах. Проверяются жизненный цикл и маршрутизация, а не время дренирования или сохранение сеансов.
Удаление политик с сохранением группы
Удалите свои политики после возвращения предоставленной группы к двум серверам.
Удалите обе политики и проверьте оставшийся список:
aws autoscaling \
delete-policy \
--auto-scaling-group-name application-fleet \
--policy-name add-one-server
aws autoscaling \
delete-policy \
--auto-scaling-group-name application-fleet \
--policy-name remove-one-server
aws autoscaling \
describe-policies \
--auto-scaling-group-name application-fleet \
--query 'ScalingPolicies[].PolicyName'
aws autoscaling \
describe-auto-scaling-groups \
--auto-scaling-group-names application-fleet \
--query 'AutoScalingGroups[].{Min:MinSize,Desired:DesiredCapacity,Max:MaxSize}'
Список должен быть [], группа — минимум 2, желаемое 2, максимум 3. Удаление политик не завершает существующие экземпляры. Сохраните группу, шаблон, ALB и сеть; AWS View должен показывать два исправных сервера.
Итоги
Вы определили положительную и отрицательную простые политики, наблюдали реальное увеличение с двух до трёх и сокращение до двух, проверили границы. HTTP-ответы и нативное завершение подтвердили результат. Затем политики удалены, восстановленная группа сохранена.
Вы различаете настройку, явное выполнение и запуск по метрике. Задание применяет диагностику маршрутов и состояния к новому серверу без трафика.



