Активный и пассивный режимы в нескольких регионах
Одновременно направляйте трафик в несколько регионов с помощью маршрутизации 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-directionalAurora 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 — локальная установка не требуется.
Все уроки этого курса
- HA и отказоустойчивость: определения и компромиссы
- Шаблоны Multi-AZ для сервисов с состоянием
- Активный и пассивный режимы в нескольких регионах
- Проверки состояния, автоматические выключатели и логика повторных попыток