0Pricing
AWS Solutions Architect · Урок

Активный и пассивный режимы в нескольких регионах

Одновременно направляйте трафик в несколько регионов с помощью маршрутизации Route 53 по задержке или переключайтесь на готовую резервную систему с проверкой состояния.

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

Зачем нужна архитектура в нескольких регионах?

Multi-AZ защищает от сбоев одной AZ, но весь регион AWS может стать недоступным во время масштабных катастроф, крупных аварий или из-за нормативных требований. Архитектуры в нескольких регионах решают эту проблему, запуская рабочие нагрузки в двух или более географически разделённых регионах. Существуют два основных шаблона: active-passive (один регион обслуживает трафик, а другой ожидает в режиме резерва) и active-active (оба региона одновременно обслуживают трафик).

Active-Passive: шаблон тёплого резерва

В конфигурации active-passive для нескольких регионов основной регион обрабатывает весь рабочий трафик. Вторичный регион запускает уменьшенную, но работоспособную копию, которая остаётся активной и готовой к работе. Данные непрерывно реплицируются из основного региона во вторичный. При отказе основного региона вторичный повышается до активного с помощью маршрутизации переключения Route 53. Этот шаблон дешевле active-active, но имеет более высокий RTO (время, необходимое для активации и масштабирования резерва).

# Route 53 failover routing configuration
# Primary record: us-east-1 ALB (primary)
# Secondary record: us-west-2 ALB (failover)

aws route53 change-resource-record-sets \
  --hosted-zone-id Z123 \
  --change-batch '{
    "Changes": [{
      "Action": "CREATE",
      "ResourceRecordSet": {
        "Name": "app.example.com",
        "Type": "A",
        "Failover": "PRIMARY",
        "HealthCheckId": "hc-primary"
      }
    }]
  }'

Active-Active: трафик в обоих регионах

В конфигурации active-active оба региона одновременно обслуживают рабочий трафик. Route 53 с маршрутизацией на основе задержки или взвешенной маршрутизацией направляет пользователей в ближайший или наиболее подходящий регион. Когда один регион выходит из строя, проверки работоспособности Route 53 обнаруживают сбой и направляют весь трафик в работоспособный регион. Active-active обеспечивает наилучший RTO (почти нулевой), снижает задержку для пользователей по всему миру и повышает пропускную способность за счёт распределения нагрузки между регионами.

# Route 53 latency-based routing for active-active
aws route53 change-resource-record-sets \
  --hosted-zone-id Z123 \
  --change-batch '{
    "Changes": [
      {
        "Action": "CREATE",
        "ResourceRecordSet": {
          "Name": "app.example.com",
          "Type": "A",
          "Region": "us-east-1",
          "SetIdentifier": "us-east-1",
          "HealthCheckId": "hc-use1",
          "AliasTarget": {"DNSName": "alb-use1.amazonaws.com"}
        }
      }
    ]
  }'

Репликация данных между регионами

Самая сложная часть архитектуры в нескольких регионах — поддержание согласованности данных между регионами. Основные инструменты: S3 Cross-Region Replication (CRR) асинхронно реплицирует объекты S3 в Bucket другого региона. DynamoDB Global Tables обеспечивают мультимастерную репликацию между регионами с eventual consistency. Aurora Global Database реплицирует данные из одного основного региона не более чем в пять вторичных регионов с отставанием менее 1 секунды. Каждый механизм репликации имеет свои гарантии согласованности и характеристики задержки.

# Enable S3 Cross-Region Replication
aws s3api put-bucket-replication \
  --bucket source-bucket-us-east-1 \
  --replication-configuration '{
    "Role": "arn:aws:iam::123:role/replication-role",
    "Rules": [{
      "Status": "Enabled",
      "Destination": {
        "Bucket": "arn:aws:s3:::dest-bucket-us-west-2"
      }
    }]
  }'

DynamoDB Global Tables для Active-Active

DynamoDB Global Tables обеспечивают настоящую мультимастерную репликацию active-active между регионами. Приложение может выполнять записи в DynamoDB в любом регионе, а изменения обычно реплицируются во все остальные регионы в течение 1 секунды. Разрешение конфликтов выполняется по принципу побеждает последняя запись на основе временных меток. Поэтому Global Tables идеально подходят для глобально распределённых приложений, таких как игровые таблицы лидеров, профили пользователей и хранилища сеансов, где критически важны чтение и запись с малой задержкой на локальном уровне.

# Create DynamoDB Global Table
aws dynamodb create-global-table \
  --global-table-name UserProfiles \
  --replication-group \
    RegionName=us-east-1 \
    RegionName=eu-west-1 \
    RegionName=ap-southeast-1

# Applications in each region write to local DynamoDB
# Replication is automatic and bi-directional

Aurora Global Database

Aurora Global Database охватывает несколько регионов AWS: один основной регион обрабатывает записи, а до пяти вторичных регионов — чтения с отставанием репликации менее 1 секунды. Для DR можно повысить вторичный регион до основного менее чем за 1 минуту, поэтому служба подходит для active-passive с жёсткими требованиями к RTO. Вторичные регионы также могут обслуживать чтения с малой задержкой, что создаёт гибридный шаблон: active-active для чтения и active-passive для записи.

# Create Aurora Global Database
aws rds create-global-cluster \
  --global-cluster-identifier my-global-db \
  --engine aurora-postgresql \
  --engine-version 14.5

# Add secondary region
aws rds create-db-cluster \
  --db-cluster-identifier secondary-cluster \
  --global-cluster-identifier my-global-db \
  --engine aurora-postgresql \
  --region eu-west-1

Проверки работоспособности Route 53 для переключения

Переключение между регионами опирается на проверки работоспособности Route 53, которые обнаруживают сбои регионов. Проверки могут отслеживать конечную точку (HTTP/HTTPS/TCP), тревогу CloudWatch или быть вычисляемыми на основе других проверок работоспособности. Route 53 непрерывно опрашивает ваши конечные точки из нескольких мест по всему миру. Когда проверка завершается с ошибкой, Route 53 автоматически прекращает возвращать записи этого региона и перенаправляет трафик в работоспособные регионы в течение периода DNS TTL.

# Create Route 53 health check
aws route53 create-health-check \
  --caller-reference unique-ref-001 \
  --health-check-config '{
    "Type": "HTTPS",
    "FullyQualifiedDomainName": "app.us-east-1.example.com",
    "Port": 443,
    "ResourcePath": "/health",
    "RequestInterval": 30,
    "FailureThreshold": 3
  }'

Global Accelerator для Active-Active

AWS Global Accelerator предоставляет два статических IP-адреса Anycast, которые направляют трафик через глобальную сеть AWS к оптимальной конечной точке. В отличие от переключения DNS Route 53, зависящего от TTL, Global Accelerator обнаруживает сбои конечной точки за 1–3 секунды и мгновенно перенаправляет трафик — значительно быстрее распространения DNS-изменений. Используйте Global Accelerator, если требуется переключение менее чем за секунду, постоянные IP-адреса для списков разрешённых адресов или если маршрутизация на основе DNS TTL слишком медленна для вашего RTO.

# Create Global Accelerator
aws globalaccelerator create-accelerator \
  --name my-accelerator \
  --ip-address-type IPV4

# Add endpoints in multiple regions
aws globalaccelerator create-endpoint-group \
  --listener-arn arn:aws:globalaccelerator::123:accelerator/xxx/listener/yyy \
  --endpoint-group-region us-east-1 \
  --endpoint-configurations EndpointId=alb-us-east-1-arn,Weight=100

Разрешение конфликтов в Active-Active

Архитектуры active-active в нескольких регионах сталкиваются с фундаментальной проблемой: конфликтами записей. Если два региона одновременно обновляют одну запись, какое обновление должно победить? DynamoDB Global Tables использует принцип «побеждает последняя запись». Стратегии разрешения конфликтов на уровне приложения включают: источники событий (журналы только для добавления слиянием CRDT), версионирование (отклонение записей с устаревшими номерами версий) или разделённые записи (каждый регион владеет своим фрагментом данных и записывает только в него). Проектируйте модель данных так, чтобы минимизировать конфликты записей между регионами.

# DynamoDB conditional write to prevent conflicts
aws dynamodb update-item \
  --table-name Orders \
  --key '{"orderId":{"S":"ord-123"}}' \
  --update-expression 'SET #s = :newStatus' \
  --condition-expression '#v = :expectedVersion' \
  --expression-attribute-names '{"#s":"status","#v":"version"}' \
  --expression-attribute-values '{":newStatus":{"S":"shipped"},":expectedVersion":{"N":"1"}}'

Стоимость и эксплуатационная сложность

Архитектуры в нескольких регионах значительно увеличивают стоимость и сложность. Вы платите за ресурсы в нескольких регионах, репликацию данных (передачу данных между регионами), проверки работоспособности и часто нуждаетесь в дублирующих инструментах эксплуатации в каждом регионе. Active-passive экономичнее, поскольку резерв работает с уменьшенной производительностью. Active-active стоит дороже всего, но обеспечивает наилучшее взаимодействие с пользователем и RTO. Всегда сопоставляйте стоимость с бизнес-ценностью дополнительной устойчивости на уровне регионов.

# Key costs in multi-region architecture:
# - EC2/RDS in each region: full compute costs
# - Cross-region data transfer: ~$0.02/GB
# - Route 53 health checks: ~$0.50/check/month
# - Global Accelerator: $0.025/hour + data transfer
# - DynamoDB Global Table replication: per-write charges per region
# - Aurora Global Database: storage replicated to all regions

Выбор подходящего шаблона для нескольких регионов

Выбирайте шаблон для нескольких регионов на основе бизнес-требований: если RTO > 1 часа и приоритетом является стоимость, используйте резервное копирование и восстановление в другом регионе. Если RTO составляет минуты, используйте active-passive с тёплым резервом. Если RTO < 1 минуты, а пользователи распределены по всему миру, используйте active-active. Учитывайте нормативные требования: в некоторых отраслях данные должны храниться в определённых регионах, что может ограничить варианты репликации. Документируйте архитектурное решение, явно указывая компромиссы.

# Decision matrix:
# RTO > 1 hour, RPO > 1 hour:  Backup & Restore
# RTO ~minutes, RPO ~minutes:   Active-Passive (Warm Standby)
# RTO < 1 minute, RPO ~0:       Active-Active

# Key services for each:
# Backup & Restore: AWS Backup + S3 CRR
# Active-Passive:   Aurora Global DB + Route 53 failover
# Active-Active:    DynamoDB Global Tables + Global Accelerator

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

Проверьте своё понимание концепций AWS Solutions Architect (SAA-C03), рассмотренных в этом уроке.

Итоги урока

В этом уроке вы узнали, что active-passive запускает резервный регион, который активируется при сбое, active-active одновременно обслуживает трафик из нескольких регионов, а DynamoDB Global Tables и Aurora Global Database — ключевые службы для репликации данных между регионами. Проверки работоспособности Route 53 и Global Accelerator принимают решения о маршрутизации трафика. Далее мы рассмотрим проверки работоспособности, автоматические размыкатели и логику повторных попыток.

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

Урок «Активный и пассивный режимы в нескольких регионах» бесплатный?

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

Чему я научусь в уроке «Активный и пассивный режимы в нескольких регионах»?

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

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

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

Сколько времени занимает урок «Активный и пассивный режимы в нескольких регионах»?

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

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

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

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

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