Налаштування Auto Scaling Groups в AWS: оптимізація витрат та надійність

Пікові навантаження можуть призвести до простоїв і переплат, якщо інфраструктура не масштабується автоматично. Ми налаштовуємо Auto Scaling Groups в AWS, щоб ваш застосунок стабільно працював за будь-якого напливу користувачів. Наша команда реалізує проєкт під ключ — від аудиту поточної конфігурації до впровадження та подальшої підтримки.
Часті запитання

Налаштування Auto Scaling Groups в AWS

Ми налаштовуємо групи автоматичного масштабування (ASG) в AWS, щоб ваше застосування витримувало пікові навантаження без простоїв та переплат. Помилки в конфігурації — десятки тисяч доларів на місяць або години даунтайму. Правильне налаштування ASG з використанням predictive scaling та Mixed Instance Policy знижує витрати на 60–70%. Наш досвід — понад 50 успішних проєктів з масштабування, сертифіковані інженери та гарантія результату. Зв'яжіться з нами для оцінки вашої інфраструктури.

Типова історія: ASG налаштована з policy по CPU. Навантаження зростає — CPU піднімається до 70%, ASG запускає новий інстанс. Інстанс запускається 5 хвилин, проходить health check ще 3 хвилини — разом 8 хвилин до того, як новий інстанс починає приймати трафік. За ці 8 хвилин CPU на існуючих інстансах вже давно перевалив за 90%, і користувачі бачать таймаути.

Рішення — в predictive scaling та правильній warmup конфігурації. Але про все по порядку.

Launch Templates замість Launch Configurations

Launch Configurations — legacy. Вже кілька років AWS офіційно рекомендує Launch Templates для всього нового. Launch Templates підтримують versioning (можна відкотитися до попередньої конфігурації інстанса), mixed instance policies (комбінування різних типів в одній ASG), T-instance unlimited mode та інші нові фічі.

Приклад Launch Template через Terraform
resource "aws_launch_template" "app" {
  name_prefix = "myapp-"
  image_id = data.aws_ami.app.id
  instance_type = "t3.medium"
  iam_instance_profile {
    name = aws_iam_instance_profile.app.name
  }
  user_data = base64encode(templatefile("${path.module}/userdata.sh", {
    environment = var.environment
  }))
  tag_specifications {
    resource_type = "instance"
    tags = {
      Name = "myapp-${var.environment}"
    }
  }
  lifecycle {
    create_before_destroy = true
  }
}

Які політики масштабування обрати?

Target Tracking — найпростіший і рекомендований. Вказуємо цільове значення метрики, ASG сам рахує, скільки інстансів потрібно. Для CPU target 50% — ASG тримає середнє CPU близько 50%, автоматично додаючи або прибираючи інстанси.

resource "aws_autoscaling_policy" "cpu_target" {
  name = "cpu-target-tracking"
  autoscaling_group_name = aws_autoscaling_group.app.name
  policy_type = "TargetTrackingScaling"
  target_tracking_configuration {
    predefined_metric_specification {
      predefined_metric_type = "ASGAverageCPUUtilization"
    }
    target_value = 50.0
  }
}

Step Scaling — для більш точного контролю. Різні кроки масштабування залежно від величини перевищення порогу. CPU 60–75% → додати 1 інстанс, CPU 75–90% → додати 3 інстанси, CPU >90% → додати 5 інстансів.

Scheduled Scaling — за розкладом, для передбачуваних піків. Комбінуючи ці підходи, можна досягти оптимальної реакції на навантаження.

Тип політики Коли використовувати Переваги
Target Tracking Типові web-навантаження Простота, автоматична корекція
Step Scaling Нерівномірні піки з критичністю Гнучкість, точне управління
Scheduled Scaling Передбачувані події (робочий час, акції) Ресурси готові до початку піку

Як налаштувати health check grace period?

ASG перевіряє здоров'я інстансів через EC2 status checks або через ALB health checks. ALB health checks — найкращий варіант для веб-сервісів: перевіряють реальну віддачу застосунку, а не просто доступність гіпервізора.

health_check_grace_period — час, який ASG дає новому інстансу на ініціалізацію, перш ніж почне перевіряти health checks. Якщо grace period занадто малий — інстанс буде визнаний нездоровим до того, як застосунок стартував, і ASG його вб'є. Якщо занадто великий — реально зламаний інстанс довго залишається в ротації.

Для застосунків з довгим cold start (Spring Boot, JVM) — grace period 300–600 секунд. Для легких Go/Node сервісів — 60–120 секунд.

Lifecycle Hooks для деплоїв

Lifecycle Hooks — механізм виконання дій при запуску або завершенні інстансу, з паузою процесу ASG до завершення хука. Згідно з документацією AWS, AWS Lifecycle Hooks дозволяють:

  • autoscaling:EC2_INSTANCE_LAUNCHING: дочекатися повної ініціалізації застосунку, зареєструвати інстанс в consul/etcd, завантажити конфігурацію з S3.
  • autoscaling:EC2_INSTANCE_TERMINATING: дочекатися завершення поточних запитів, дереєстрація з service discovery, відправка метрик останнього стану.

Без terminating хука — при scale-in ALB отримує сигнал прибрати інстанс з rotation, але сам інстанс вже вбивається ASG через 30 секунд. Активні з'єднання обриваються. З хуком — інстанс спочатку drain connections (до 5 хвилин), потім сигналить хуку про завершення.

Як заощадити з Mixed Instance Policy?

Для зниження вартості — Mixed Instance Policy: частина capacity на On-Demand (base), решта на Spot. Spot інстанси до 10 разів дешевші за On-Demand при правильному виборі стратегії. Наприклад, заміна 10 інстансів t3.medium (On-Demand ~$0.0416/год) на Spot заощаджує близько $2500 на місяць.

mixed_instances_policy {
  instances_distribution {
    on_demand_base_capacity = 1
    on_demand_percentage_above_base_capacity = 20
    spot_allocation_strategy = "price-capacity-optimized"
  }
  launch_template {
    launch_template_specification {
      launch_template_id = aws_launch_template.app.id
      version = "$Latest"
    }
    override {
      instance_type = "t3.medium"
    }
    override {
      instance_type = "t3a.medium"
    }
    override {
      instance_type = "t2.medium"
    }
  }
}

Стратегія price-capacity-optimized — Spot інстанси з пулів з найбільшою доступністю та мінімальною ціною. Знижує ймовірність переривання. Правильне поєднання On-Demand та Spot може скоротити витрати на 60-70% порівняно з повним On-Demand. Крім того, predictive scaling дозволяє реагувати на навантаження вдвічі швидше за звичайне target tracking.

Характеристика On-Demand Spot (Mixed Instance Policy)
Ціна 100% до 10% від On-Demand
Гарантія доступності 99.99% до 99.5% (залежить від типу)
Переривання ні можливо (при високому попиті)
Використання критичні сервіси відмовостійкі, batch, stateless

Як налаштувати Auto Scaling Group? Покрокова інструкція

  1. Створіть Launch Template з вказанням AMI, типу інстанса, user data та тегів.
  2. Створіть Auto Scaling Group, обравши Launch Template та вказавши VPC і підмережі.
  3. Налаштуйте політику масштабування: Target Tracking для CPU або Request Count.
  4. Підключіть ALB та налаштуйте health check grace period (300–600 с для важких застосунків).
  5. Додайте Lifecycle Hooks для graceful shutdown (EC2_INSTANCE_TERMINATING).
  6. Налаштуйте Mixed Instance Policy для економії.
  7. Протестуйте масштабування за допомогою навантажувального тестування.

Що входить в роботу

  • Аудит поточної конфігурації ASG та рекомендації
  • Проектування Launch Templates з урахуванням security та user data
  • Налаштування однієї або кількох політик масштабування (target tracking, step, scheduled)
  • Інтеграція з ALB та налаштування health checks
  • Реалізація Lifecycle Hooks для graceful shutdown
  • Mixed Instance Policy для оптимізації вартості
  • Моніторинг (CloudWatch, Prometheus) та алерти
  • Документація та навчання вашої команди
  • Гарантія на налаштування — 1 місяць

Терміни та вартість

Базова конфігурація ASG з target tracking policy та ALB інтеграцією — від $500. Повна конфігурація з lifecycle hooks, mixed instances, scheduled scaling та моніторингом — $1500–$3000. Вартість розраховується індивідуально після аналізу вашої інфраструктури.

Замовте аудит поточної конфігурації ASG — заощадьте до 70% на хмарних витратах. Отримайте консультацію інженера AWS з 7+ років досвіду. Ми гарантуємо, що ваше масштабування буде надійним, економічним та керованим.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139