0Pricing
AWS Solutions Architect · Урок

HA и отказоустойчивость: определения и компромиссы

Разберитесь в различии между высокой доступностью (минимизация простоев) и отказоустойчивостью (нулевой простой благодаря избыточности) и узнайте, как стоимость увеличивается с каждым уровнем.

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

Обзор HA и отказоустойчивости

Высокая доступность (HA) и отказоустойчивость (FT) — две разные цели надёжности, которые архитекторы часто путают. Высокая доступность означает, что система испытывает минимальное время простоя: она может пережить сбои, но при восстановлении возможны кратковременные перебои. Отказоустойчивость означает, что система продолжает работать без какого-либо прерывания даже при отказе компонентов, поскольку полностью резервные пути мгновенно принимают нагрузку.

Определение процентов доступности

Доступность измеряется как процент времени работы за год. Доступность 99,9% (три девятки) означает примерно 8,7 часа простоя в год, тогда как 99,99% (четыре девятки) допускает только 52,6 минуты. 99,999% (пять девяток) допускает всего 5,26 минуты. Каждая дополнительная девятка обычно требует большей избыточности, автоматизации и затрат. На экзамене SAA-C03 часто проверяется умение определить, какая архитектура соответствует заданной цели доступности.

# Availability calculations
# 99.9%  → 8.76 hours/year downtime
# 99.99% → 52.6 minutes/year downtime
# 99.999% → 5.26 minutes/year downtime

# Formula: downtime = (1 - availability) * 8760 hours

Как выглядит высокая доступность

Высокодоступная архитектура выдерживает отказ одного компонента, автоматически обнаруживая сбой и переключаясь на исправную замену в течение секунд или минут. Примеры: RDS Multi-AZ (автоматическое переключение на резервный экземпляр в другой AZ), Auto Scaling Groups, заменяющие завершённые экземпляры, и Elastic Load Balancers, перенаправляющие трафик от неисправных целевых ресурсов. Возникает кратковременное прерывание, но система восстанавливается без ручного вмешательства.

# RDS Multi-AZ failover: ~60-120 seconds downtime
# ASG replacement: ~1-3 minutes to launch new instance
# ELB unhealthy target removal: within health check interval

Как выглядит отказоустойчивость

Отказоустойчивая архитектура использует активную избыточность — несколько одинаковых компонентов одновременно обрабатывают запросы, поэтому при отказе одного из них остальные мгновенно принимают его нагрузку без простоя. Примеры: активно-активный ELB с несколькими экземплярами EC2, DynamoDB Global Tables, одновременно обслуживающие чтение и запись в нескольких регионах, и Aurora с несколькими репликами для чтения. Для отказоустойчивости требуется постоянно работающий дополнительный ресурс.

Компромисс между затратами на HA и FT

Отказоустойчивость значительно дороже высокой доступности, поскольку требует постоянно полностью подготовленной резервной ёмкости. Высокодоступный экземпляр RDS Multi-AZ удваивает стоимость базы данных из-за резервного экземпляра, который активируется только при сбое. Отказоустойчивая активно-активная конфигурация Aurora в нескольких регионах может стоить в четыре раза дороже, зато полностью устраняет простой при отказах региона. Архитекторам необходимо сопоставлять стоимость избыточности с бизнес-ценой простоя.

# Cost tiers (approximate multipliers):
# Single AZ, no redundancy: 1x cost
# Multi-AZ (HA):             2x cost
# Multi-Region active-passive: 2-3x cost
# Multi-Region active-active (FT): 3-4x cost

Целевое время восстановления и HA

Целевое время восстановления (RTO) — это максимально допустимое время недоступности системы. Архитектуры с высокой доступностью предусматривают низкое RTO — обычно минуты — благодаря автоматическому переключению. Отказоустойчивые архитектуры предусматривают почти нулевое RTO. При проектировании HA необходимо выбирать сервисы и конфигурации, гарантирующие восстановление в пределах заданного бюджета RTO. Например, RDS Multi-AZ обеспечивает RTO примерно 60–120 секунд, что подходит для многих требований высокой доступности.

Единичные точки отказа (SPOF)

Единичная точка отказа (SPOF) — это любой компонент, отказ которого приводит к отказу всей системы. К распространённым SPOF относятся один экземпляр EC2 без ASG, база данных RDS в одной AZ, один шлюз NAT или одна зона доступности. Устранение SPOF — первый шаг к обеспечению HA и FT. На экзамене SAA-C03 часто проверяется умение находить и устранять SPOF на заданных архитектурных схемах.

# Common SPOFs to eliminate:
# - Single EC2 instance  → ASG + ALB
# - Single-AZ RDS        → Multi-AZ RDS
# - Single NAT Gateway   → NAT Gateway per AZ
# - Single AZ subnets    → Subnets in 2+ AZs
# - Hardcoded IP in app  → DNS + health checks

Сервисы с состоянием и без состояния

Обеспечить HA или FT гораздо проще для сервисов без состояния (например, веб-серверов или функций Lambda), поскольку любой экземпляр может обработать любой запрос. Сервисы с состоянием (базы данных, кэши, файловые системы) устроены сложнее: необходимо синхронизировать состояние между репликами, учитывать задержку репликации и обеспечивать согласованность при переключении. Такие сервисы AWS, как EFS (общая файловая система), ElastiCache с группами репликации и Aurora (общее хранилище), разработаны для упрощения обеспечения HA сервисов с состоянием.

Шаблоны проектирования HA в AWS

К распространённым шаблонам HA в AWS относятся: 1) балансировка нагрузки между AZ — распределение экземпляров EC2 по AZ за ALB; 2) реплики для чтения — разгрузка трафика чтения и повышение реплики до основной при DR; 3) S3 для ресурсов без состояния — S3 изначально обеспечивает HA с надёжностью 11 девяток; 4) Global Accelerator — статические IP-адреса Anycast, направляющие трафик к исправным конечным точкам в разных регионах. Каждый шаблон представляет собой компромисс между стоимостью и требуемым уровнем доступности.

# ALB cross-zone load balancing example
aws elbv2 modify-load-balancer-attributes \
  --load-balancer-arn <ALB-ARN> \
  --attributes Key=load_balancing.cross_zone.enabled,Value=true

Шаблоны проектирования FT в AWS

Шаблоны отказоустойчивости требуют активной избыточности повсюду. Основные шаблоны FT: DynamoDB изначально отказоустойчив — он реплицирует данные в трёх AZ, поэтому переключение не требуется. S3 имеет встроенную FT. Aurora Multi-Master (теперь многозапись Aurora Serverless v2) позволяет одновременно выполнять запись в нескольких AZ. Kinesis по умолчанию хранит данные в нескольких AZ. Выбор управляемых сервисов со встроенной FT — наиболее экономичный путь к архитектурам без простоев.

Проверка допущений о HA и FT

Качество проектирования HA или FT определяется качеством тестирования. AWS рекомендует использовать AWS Fault Injection Simulator (FIS) для проведения контролируемых экспериментов: завершать экземпляры, ограничивать пропускную способность API или внедрять сетевые сбои. Необходимо убедиться, что переключение действительно завершается в пределах RTO, что потери данных не превышают RPO и что оповещения срабатывают правильно. Регулярные дни отказов и упражнения по хаос-инжинирингу выявляют пробелы в предположениях об отказоустойчивости до того, как они приведут к инцидентам в рабочей среде.

# AWS FIS experiment to terminate EC2 instances
aws fis create-experiment-template \
  --description 'Terminate 30% of ASG instances' \
  --targets '{"instanceTargets":{"resourceType":"aws:ec2:instance","selectionMode":"PERCENT(30)"}}' \
  --actions '{"terminateInstances":{"actionId":"aws:ec2:terminate-instances","targets":{"Instances":"instanceTargets"}}}'

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

Проверьте, насколько хорошо Вы усвоили концепции AWS Solutions Architect (SAA-C03) из этого урока.

Итоги урока

В этом уроке Вы узнали, что высокая доступность сокращает время простоя благодаря автоматическому восстановлению (RTO в минутах), отказоустойчивость устраняет простой благодаря активной избыточности (нулевое RTO), а стоимость значительно возрастает с каждым уровнем устойчивости. Устранение единичных точек отказа — основа обоих подходов. Далее мы рассмотрим шаблоны Multi-AZ для сервисов с состоянием.

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

Урок «HA и отказоустойчивость: определения и компромиссы» бесплатный?

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

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

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

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

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

Сколько времени занимает урок «HA и отказоустойчивость: определения и компромиссы»?

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

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

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

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

  1. HA и отказоустойчивость: определения и компромиссы
  2. Шаблоны Multi-AZ для сервисов с состоянием
  3. Активный и пассивный режимы в нескольких регионах
  4. Проверки состояния, автоматические выключатели и логика повторных попыток
← Назад к AWS Solutions Architect