0Pricing
AWS Solutions Architect · Lekcja

Aktywna-aktywna i aktywna-pasywna architektura wieloregionowa

Kierować ruch jednocześnie do wielu Regionów za pomocą routingu Route 53 opartego na opóźnieniu lub przełączać go na gotowy serwer zapasowy dzięki przełączaniu awaryjnemu z kontrolą stanu.

Aktywna-aktywna i aktywna-pasywna architektura wieloregionowa to bezpłatna lekcja AWS Solutions Architect na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AWS Solutions Architect, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Dlaczego architektura multi-region?

Multi-AZ chroni przed awariami pojedynczej strefy AZ, ale cały region AWS może stać się niedostępny podczas katastrof na dużą skalę, poważnych awarii lub w wyniku wymogów regulacyjnych. Architektury multi-region rozwiązują ten problem, uruchamiając obciążenia w co najmniej dwóch geograficznie oddzielonych regionach. Istnieją dwa główne wzorce: active-passive (jeden region obsługuje ruch, a drugi oczekuje w trybie gotowości) oraz active-active (oba regiony jednocześnie obsługują ruch).

Active-passive: wzorzec gorącej rezerwy

W konfiguracji multi-region typu active-passive region główny obsługuje cały ruch produkcyjny. Region pomocniczy uruchamia pomniejszoną, ale funkcjonalną kopię środowiska, która pozostaje aktywna i gotowa do użycia. Dane są stale replikowane z regionu głównego do pomocniczego. Gdy region główny ulegnie awarii, region pomocniczy jest aktywowany za pomocą routingu przełączania awaryjnego Route 53. Ten wzorzec jest tańszy niż active-active, ale zapewnia wyższe RTO (czas potrzebny na aktywację i skalowanie środowiska zapasowego).

# 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: ruch w obu regionach

W konfiguracji active-active oba regiony jednocześnie obsługują ruch produkcyjny. Route 53 z routingiem opartym na opóźnieniach lub routingiem ważonym kieruje użytkowników do najbliższego lub najbardziej odpowiedniego regionu. Gdy jeden region ulegnie awarii, kontrole stanu Route 53 wykrywają awarię i kierują cały ruch do zdrowego regionu. Active-active zapewnia najlepsze RTO (niemal zerowe), zmniejsza opóźnienia dla użytkowników rozproszonych globalnie i zwiększa przepustowość dzięki rozłożeniu obciążenia między regiony.

# 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"}
        }
      }
    ]
  }'

Replikacja danych między regionami

Najtrudniejszą częścią architektury multi-region jest utrzymanie spójności danych między regionami. Najważniejsze narzędzia to: S3 Cross-Region Replication (CRR), które asynchronicznie replikuje obiekty S3 do zasobnika w innym regionie; DynamoDB Global Tables, które zapewniają replikację multi-master między regionami z eventual consistency; oraz Aurora Global Database, która replikuje dane z jednego regionu głównego do maksymalnie pięciu regionów pomocniczych z opóźnieniem poniżej 1 sekundy. Każdy mechanizm replikacji ma inne gwarancje spójności i charakterystykę opóźnień.

# 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 dla active-active

DynamoDB Global Tables umożliwia prawdziwą replikację active-active, multi-region i multi-master. Aplikacja może zapisywać dane w DynamoDB w dowolnym regionie, a zmiany są zazwyczaj replikowane do wszystkich pozostałych regionów w ciągu 1 sekundy. Rozwiązywanie konfliktów odbywa się zgodnie z zasadą last-writer-wins, na podstawie znaczników czasu. Dzięki temu Global Tables idealnie nadaje się do globalnie rozproszonych aplikacji, takich jak rankingi gier, profile użytkowników i magazyny sesji, w których kluczowe znaczenie mają odczyty i zapisy z małym opóźnieniem lokalnym.

# 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 obejmuje wiele regionów AWS: jeden region główny obsługuje zapisy, a maksymalnie pięć regionów pomocniczych obsługuje odczyty przy opóźnieniu replikacji poniżej 1 sekundy. Na potrzeby DR można awansować region pomocniczy do roli głównego w czasie krótszym niż 1 minuta, dzięki czemu rozwiązanie nadaje się do konfiguracji active-passive z rygorystycznym RTO. Regiony pomocnicze mogą także obsługiwać odczyty z małym opóźnieniem, co tworzy hybrydowy wzorzec active-active dla odczytów i active-passive dla zapisów.

# 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

Kontrole stanu Route 53 na potrzeby przełączania awaryjnego

Przełączanie awaryjne multi-region opiera się na kontrolach stanu Route 53, które wykrywają awarie regionów. Kontrole stanu mogą monitorować punkt końcowy (HTTP/HTTPS/TCP), alarm CloudWatch albo być obliczane na podstawie innych kontroli stanu. Route 53 nieprzerwanie odpyta Państwa punkty końcowe z wielu lokalizacji na całym świecie. Gdy kontrola zakończy się niepowodzeniem, Route 53 automatycznie przestaje zwracać rekordy tego regionu i w czasie określonym przez TTL DNS przekierowuje ruch do zdrowych regionów.

# 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 dla active-active

AWS Global Accelerator udostępnia dwa statyczne adresy IP Anycast, które kierują ruch przez globalną sieć AWS do optymalnego punktu końcowego. W przeciwieństwie do przełączania awaryjnego DNS w Route 53, które zależy od TTL, Global Accelerator wykrywa awarie punktów końcowych w ciągu 1–3 sekund i natychmiast przekierowuje ruch — znacznie szybciej niż propagacja DNS. Należy użyć Global Accelerator, gdy wymagane jest przełączanie awaryjne w czasie poniżej sekundy, stałe adresy IP na potrzeby białych list lub gdy routing oparty na TTL DNS jest zbyt wolny dla zakładanego 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

Rozwiązywanie konfliktów w active-active

Architektury multi-region active-active mierzą się z fundamentalnym wyzwaniem: konfliktami zapisów. Jeśli dwa regiony jednocześnie zaktualizują ten sam rekord, która aktualizacja powinna zwyciężyć? DynamoDB Global Tables korzysta z zasady last-writer-wins. Strategie rozwiązywania konfliktów na poziomie aplikacji obejmują: event sourcing (dzienniki tylko do dopisywania z łączeniem CRDT), wersjonowanie (odrzucanie zapisów z nieaktualnymi numerami wersji) lub zapisy partycjonowane (każdy region jest właścicielem fragmentu danych i zapisuje wyłącznie w swoim fragmencie). Należy projektować model danych tak, aby minimalizować konflikty zapisów między regionami.

# 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"}}'

Koszty i złożoność operacyjna

Architektury multi-region znacząco zwiększają koszty i złożoność. Płacą Państwo za zasoby w wielu regionach, koszty replikacji danych (transfer danych między regionami), koszty kontroli stanu, a często także za powielone narzędzia operacyjne w każdym regionie. Active-passive jest bardziej opłacalne, ponieważ środowisko zapasowe działa ze zmniejszoną przepustowością. Active-active kosztuje najwięcej, ale zapewnia najlepsze doświadczenia użytkowników i RTO. Zawsze należy zestawić koszt z wartością biznesową dodatkowej odporności regionalnej.

# 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

Wybór właściwego wzorca multi-region

Wzorzec multi-region należy wybrać na podstawie wymagań biznesowych: jeśli RTO > 1 godzina, a priorytetem jest koszt, należy użyć Backup and Restore w innym regionie. Jeśli RTO wynosi minuty, należy użyć active-passive z gorącą rezerwą. Jeśli RTO < 1 minuta, a użytkownicy są rozproszeni globalnie, należy użyć active-active. Należy uwzględnić wymagania regulacyjne — niektóre branże wymagają przechowywania danych w określonych regionach, co może ograniczać dostępne opcje replikacji. Decyzję architektoniczną należy udokumentować, wyraźnie opisując kompromisy.

# 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

Szybkie sprawdzenie

Sprawdź swoją wiedzę na temat zagadnień AWS Solutions Architect (SAA-C03) z tej lekcji.

Podsumowanie lekcji

W tej lekcji poznali Państwo następujące zagadnienia: active-passive uruchamia region zapasowy po wystąpieniu awarii, active-active jednocześnie obsługuje ruch z wielu regionów, a DynamoDB Global Tables i Aurora Global Database to kluczowe usługi replikacji danych między regionami. Kontrole stanu Route 53 i Global Accelerator obsługują decyzje dotyczące routingu ruchu. W następnej części omówimy kontrole stanu, circuit breakers i logikę ponawiania prób.

Często zadawane pytania

Czy lekcja „Aktywna-aktywna i aktywna-pasywna architektura wieloregionowa” jest bezpłatna?

Tak — pełny tekst „Aktywna-aktywna i aktywna-pasywna architektura wieloregionowa” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AWS Solutions Architect, przejdź na CoddyKit PRO. Kurs AWS Solutions Architect zawiera 4 lekcji w sumie.

Co nauczysz się w „Aktywna-aktywna i aktywna-pasywna architektura wieloregionowa”?

Kierować ruch jednocześnie do wielu Regionów za pomocą routingu Route 53 opartego na opóźnieniu lub przełączać go na gotowy serwer zapasowy dzięki przełączaniu awaryjnemu z kontrolą stanu. Ćwiczysz AWS Solutions Architect z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AWS Solutions Architect?

Nie wymagamy żadnego doświadczenia. AWS Solutions Architect w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Aktywna-aktywna i aktywna-pasywna architektura wieloregionowa”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AWS Solutions Architect?

Tak. Każda lekcja AWS Solutions Architect zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Wysoka dostępność a tolerancja błędów: definicje i kompromisy
  2. Wzorce Multi-AZ dla usług stanowych
  3. Aktywna-aktywna i aktywna-pasywna architektura wieloregionowa
  4. Kontrole stanu, wyłączniki i logika ponawiania
← Powrót do AWS Solutions Architect