AWS Solutions Architect · Oppitunti

Monen Regionin active-active ja active-passive

Reititä liikenne useisiin Regioneihin samanaikaisesti Route 53:n viivepohjaisella reitityksellä tai vaihda toimintaan lämpimän valmiusympäristön avulla kuntotarkistukseen perustuvalla vikasiedolla.

Oppitunti 3/413 vaihetta

Monen Regionin active-active ja active-passive on ilmainen AWS Solutions Architect-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu AWS Solutions Architect-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.

Miksi usean alueen arkkitehtuuri?

Multi-AZ suojaa yksittäisten AZ:ien vikaantumiselta, mutta kokonainen AWS-alue voi muuttua käytettäväksi suuren mittakaavan katastrofien, vakavien käyttökatkosten tai sääntelyvaatimusten vuoksi. Usean alueen arkkitehtuurit vastaavat tähän ajamalla työkuormia kahdella tai useammalla maantieteellisesti erillään sijaitsevalla alueella. Päämalleja on kaksi: active-passive (yksi alue palvelee liikennettä toisen odottaessa standby-tilassa) ja active-active (molemmat alueet palvelevat liikennettä samanaikaisesti).

Active-passive: lämmin standby-malli

Active-passive-mallissa ensisijainen alue käsittelee kaiken tuotantoliikenteen. Toissijaisella alueella toimii pienennetty mutta käyttökelpoinen kopio, joka pysyy lämpimänä ja valmiina. Tiedot replikoituvat jatkuvasti ensisijaiselta alueelta toissijaiselle. Kun ensisijainen alue vikaantuu, toissijainen alue ylennetään aktiiviseksi Route 53:n failover-reitityksen avulla. Tämä malli on edullisempi kuin active-active, mutta sen RTO on suurempi, koska standby-ympäristön aktivointi ja skaalaus vievät aikaa.

# 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: liikennettä molemmilla alueilla

Active-active-mallissa molemmat alueet palvelevat tuotantoliikennettä samanaikaisesti. Route 53 jakaa käyttäjät viiveeseen perustuvalla reitityksellä tai painotetulla reitityksellä lähimmälle tai tarkoituksenmukaisimmalle alueelle. Kun yksi alue vikaantuu, Route 53:n kuntotarkistukset havaitsevat vian ja ohjaavat kaiken liikenteen toimivalla alueelle. Active-active tarjoaa parhaan RTO:n (lähes nolla), pienentää maailmanlaajuisesti hajautettujen käyttäjien viivettä ja parantaa suorituskykyä jakamalla kuorman alueiden kesken.

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

Tietojen replikointi alueiden välillä

Usean alueen arkkitehtuurin haastavin osa on tietojen yhdenmukaisuuden säilyttäminen alueiden välillä. Keskeisiä työkaluja ovat seuraavat: S3 Cross-Region Replication (CRR) replikoituu asynkronisesti S3-objekteja toisella alueella olevaan ämpäriin. DynamoDB Global Tables tarjoaa usean pääkirjoittajan ja usean alueen replikoinnin eventual consistency -mallilla. Aurora Global Database replikoituu yhdeltä ensisijaiselta alueelta enintään viidelle toissijaiselle alueelle alle sekunnin viiveellä. Kullakin replikointimekanismilla on erilaiset yhdenmukaisuustakuut ja viiveominaisuudet.

# 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-mallissa

DynamoDB Global Tables mahdollistaa aidon active-active-, usean alueen ja usean pääkirjoittajan replikoinnin. Sovellus voi kirjoittaa DynamoDB:hen miltä tahansa alueelta, ja muutokset replikoituvat yleensä yhden sekunnin kuluessa kaikille muille alueille. Konfliktit ratkaistaan last-writer-wins-periaatteella aikaleimojen perusteella. Tämä tekee Global Tablesista ihanteellisen maailmanlaajuisesti hajautetuille sovelluksille, kuten pelien pistetaulukoille, käyttäjäprofiileille ja istuntotallennukselle, joissa paikallisten luku- ja kirjoitusoperaatioiden pieni viive on ratkaisevan tärkeää.

# 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 kattaa useita AWS-alueita siten, että yksi ensisijainen alue käsittelee kirjoitukset ja enintään viisi toissijaista aluetta käsittelee luvut alle sekunnin replikointiviiveellä. Katastrofipalautusta varten voit ylentää toissijaisen alueen ensisijaiseksi alle minuutissa, joten ratkaisu soveltuu tiukan RTO:n active-passive-malliin. Toissijaiset alueet voivat myös palvella pienen viiveen lukuliikennettä, jolloin kyseessä on hybridimalli: lukemisessa active-active ja kirjoittamisessa 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:n kuntotarkistukset vaihtoa varten

Usean alueen vaihto perustuu Route 53:n kuntotarkistuksiin, jotka havaitsevat alueiden vikaantumiset. Kuntotarkistukset voivat valvoa päätepistettä (HTTP/HTTPS/TCP), CloudWatch-hälytystä tai olla laskettuja muiden kuntotarkistusten perusteella. Route 53 kyselyttää päätepisteitäsi jatkuvasti useista sijainneista eri puolilta maailmaa. Kun tarkistus epäonnistuu, Route 53 lopettaa automaattisesti kyseisen alueen tietueiden palauttamisen ja ohjaa liikenteen toimiville alueille DNS:n TTL-ajan kuluessa.

# 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-mallissa

AWS Global Accelerator tarjoaa kaksi staattista Anycast-IP-osoitetta, jotka reitittävät liikenteen AWS:n maailmanlaajuisen verkon kautta parhaalle päätepisteelle. Toisin kuin Route 53:n DNS-vaihto, joka riippuu TTL:stä, Global Accelerator havaitsee päätepisteiden viat 1–3 sekunnissa ja reitittää liikenteen välittömästi uudelleen – paljon DNS-levitystä nopeammin. Käytä Global Acceleratoria, kun tarvitset alle sekunnin vaihtoa, sallittujen luetteloiden käyttöön sopivat pysyvät IP-osoitteet tai kun DNS:n TTL-pohjainen reititys on liian hidasta RTO-tavoitteeseesi nähden.

# 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

Konfliktien ratkaiseminen active-active-mallissa

Usean alueen active-active-arkkitehtuurit kohtaavat perustavanlaatuisen haasteen: kirjoituskonfliktit. Jos kaksi aluetta päivittää samaa tietuetta samanaikaisesti, kumpi päivitys voittaa? DynamoDB Global Tables käyttää last-writer-wins-periaatetta. Sovellustason konfliktinratkaisustrategioita ovat esimerkiksi event sourcing (vain lisäystä käyttävät lokit ja CRDT-yhdistäminen), versiointi (vanhentuneilla versionumeroilla tehdyt kirjoitukset hylätään) ja osioidut kirjoitukset (kukin alue omistaa osan tiedoista ja kirjoittaa vain omaan osaansa). Suunnittele tietomallisi niin, että alueiden väliset kirjoituskonfliktit jäävät mahdollisimman vähäisiksi.

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

Kustannukset ja toiminnan monimutkaisuus

Usean alueen arkkitehtuurit kasvattavat kustannuksia ja monimutkaisuutta merkittävästi. Maksat resursseista useilla alueilla, tietojen replikoinnista (alueiden välisestä tiedonsiirrosta), kuntotarkistuksista ja usein myös erillisistä ylläpitotyökaluista kullakin alueella. Active-passive on kustannustehokkaampi, koska standby-ympäristö toimii pienemmällä kapasiteetilla. Active-active maksaa eniten, mutta tarjoaa parhaan käyttökokemuksen ja RTO:n. Arvioi aina kustannukset suhteessa paremman alueellisen vikasietoisuuden liiketoiminta-arvoon.

# 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

Sopivan usean alueen mallin valitseminen

Valitse usean alueen malli liiketoimintavaatimusten perusteella: jos RTO > 1 tunti ja kustannukset ovat etusijalla, käytä Backup and Restore -mallia toiselle alueelle. Jos RTO on minuutteja, käytä active-passive-mallia lämpimällä standby-ympäristöllä. Jos RTO < 1 minuutti ja käyttäjät ovat maailmanlaajuisesti hajautuneita, käytä active-active-mallia. Huomioi sääntelyvaatimukset – joillakin toimialoilla tietojen on pysyttävä tietyillä alueilla, mikä voi rajoittaa replikointivaihtoehtojasi. Dokumentoi arkkitehtuuripäätös ja sen kompromissit selkeästi.

# 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

Pikatarkistus

Testaa tästä oppitunnista oppimasi AWS Solutions Architect (SAA-C03) -käsitteet.

Oppitunnin kertaus

Tässä oppitunnissa opit, että active-passive käyttää standby-aluetta, joka aktivoidaan vikaantumisen yhteydessä, active-active palvelee liikennettä samanaikaisesti useilta alueilta ja DynamoDB Global Tables sekä Aurora Global Database ovat keskeisiä palveluja usean alueen tietojen replikoinnissa. Route 53:n kuntotarkistukset ja Global Accelerator hoitavat liikenteen reitityspäätökset. Seuraavaksi tutustumme kuntotarkistuksiin, circuit breaker -mekanismeihin ja uudelleenyrityslogiikkaan.

Aloita maksutta

Opi AWS Solutions Architect tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Monen Regionin active-active ja active-passive” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa AWS Solutions Architect-oppimispolun 3 oppituntia, myös oppitunnin “Monen Regionin active-active ja active-passive”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. AWS Solutions Architect-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Monen Regionin active-active ja active-passive”?

Reititä liikenne useisiin Regioneihin samanaikaisesti Route 53:n viivepohjaisella reitityksellä tai vaihda toimintaan lämpimän valmiusympäristön avulla kuntotarkistukseen perustuvalla vikasiedolla. Harjoittelet AWS Solutions Architect-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni AWS Solutions Architect-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin AWS Solutions Architect-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Monen Regionin active-active ja active-passive”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä AWS Solutions Architect-oppitunnilla?

Kyllä. Jokainen AWS Solutions Architect-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Korkea käytettävyys ja vikasietoisuus: määritelmät ja kompromissit
  2. Monen AZ:n mallit tilallisille palveluille
  3. Monen Regionin active-active ja active-passive
  4. Kuntotarkistukset, circuit breakerit ja uudelleenyrityslogiikka
← Takaisin: AWS Solutions Architect