Aktif-Aktif Berbilang Tapak dengan Jadual Global dan Route 53
Jalankan kapasiti produksi penuh di dua atau lebih Region secara serentak menggunakan DynamoDB Global Tables, Aurora Global Database dan penghalaan kependaman Route 53.
Aktif-Aktif Berbilang Tapak dengan Jadual Global dan Route 53 ialah pelajaran AWS Solutions Architect percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran AWS Solutions Architect, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.
Definisi Aktif-Aktif Berbilang Tapak
Aktif-Aktif Berbilang Tapak ialah tahap pemulihan bencana tertinggi, apabila aplikasi anda berjalan pada kapasiti produksi penuh di dua atau lebih rantau AWS secara serentak. Berbeza daripada aktif-pasif, apabila persekitaran bersedia menunggu untuk mengambil alih, kedua-dua rantau dalam konfigurasi aktif-aktif melayani trafik pengguna sebenar sepanjang masa. Apabila satu rantau gagal, rantau yang satu lagi menyerap 100% trafik serta-merta tanpa kelewatan peralihan. Corak ini juga mengurangkan kependaman untuk pengguna yang tersebar di seluruh dunia dengan melayani mereka dari rantau yang paling hampir.
# Active-Active traffic split (normal operation):
# us-east-1: serving ~50% of users (North America)
# eu-west-1: serving ~50% of users (Europe)
# Active-Active traffic split (us-east-1 failure):
# us-east-1: 0% (health check failed)
# eu-west-1: 100% (ASG scales up automatically)
# RTO: near-zero (DNS TTL propagation only)
# RPO: near-zero (with DynamoDB Global Tables)Seni Bina DynamoDB Global Tables
DynamoDB Global Tables ialah tulang belakang data bagi seni bina aktif-aktif. Global Tables membolehkan replikasi berbilang induk dan berbilang rantau — aplikasi di mana-mana rantau boleh membaca dan menulis kepada jadual DynamoDB setempat, dan perubahan direplikasi kepada semua rantau lain dalam kira-kira 1 saat. Anda mengaktifkan Global Tables dengan menentukan rantau tempat jadual itu perlu wujud. AWS mengendalikan semua replikasi, penyelesaian konflik (penulis terakhir menang), dan peralihan secara automatik.
# Create DynamoDB table and add global regions
aws dynamodb create-table \
--table-name UserSessions \
--attribute-definitions AttributeName=userId,AttributeType=S \
--key-schema AttributeName=userId,KeyType=HASH \
--billing-mode PAY_PER_REQUEST \
--region us-east-1
# Add replica regions for Global Table
aws dynamodb update-table \
--table-name UserSessions \
--replica-updates '[{"Create":{"RegionName":"eu-west-1"}},{"Create":{"RegionName":"ap-southeast-1"}}]' \
--region us-east-1Aurora Global Database untuk Bacaan Aktif dengan Penulisan
Aurora Global Database menyediakan bacaan aktif-aktif tetapi penulisan aktif-pasif. Semua rantau sekunder melayani bacaan dengan kelewatan replikasi kurang daripada 1 saat, manakala hanya rantau utama menerima penulisan. Ini sesuai untuk aplikasi yang banyak melakukan bacaan dan mahukan bacaan berkependaman rendah di seluruh dunia dengan satu rantau utama yang jelas untuk penulisan. Semasa kegagalan rantau utama, anda boleh menaikkan taraf rantau sekunder menjadi utama dalam masa kurang daripada 1 minit, lalu mencapai RTO yang rendah bagi lapisan penulisan. Bandingkan dengan DynamoDB Global Tables yang menyokong penulisan aktif-aktif di semua rantau.
# Aurora Global Database read configuration
# Primary region (us-east-1): reads + writes
# Secondary region (eu-west-1): reads only
# ~100ms replication lag, serves EU users low-latency reads
# Application reads from local Aurora endpoint
# Application writes to primary region Aurora endpoint
# Java connection string with region routing:
# readEndpoint=eu-west-1.cluster-ro-xxx.aurora.amazonaws.com
# writeEndpoint=us-east-1.cluster-xxx.aurora.amazonaws.comPenghalaan Route 53 untuk Aktif-Aktif
Route 53 ialah pengarah trafik bagi seni bina aktif-aktif berbilang tapak. Gunakan penghalaan berasaskan kependaman untuk menghantar setiap pengguna ke rantau yang mempunyai kependaman rangkaian terendah dari lokasi mereka. Lampirkan pemeriksaan kesihatan pada setiap rekod rantau — apabila sesebuah rantau gagal dalam pemeriksaan kesihatannya, Route 53 mengeluarkannya secara automatik daripada respons DNS dan menghantar semua trafik kepada rantau sihat yang masih ada. Tetapkan TTL DNS kepada 60 saat atau kurang untuk meminimumkan masa yang diperlukan pengguna untuk beralih kepada rantau sihat.
# Route 53 latency routing with health checks
aws route53 change-resource-record-sets \
--hosted-zone-id ZXXX \
--change-batch '{
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "api.example.com",
"Type": "A",
"Region": "us-east-1",
"SetIdentifier": "us-east-1",
"HealthCheckId": "hc-us-east-1",
"AliasTarget": {"DNSName": "alb-us-east-1.amazonaws.com", "EvaluateTargetHealth": false}
}
}
]
}'Auto Scaling untuk Menyerap Trafik
Apabila satu rantau gagal dalam persediaan aktif-aktif, rantau yang masih beroperasi mesti mengendalikan trafik sebanyak 2 kali ganda (atau lebih) daripada biasa. Auto Scaling Group anda mesti mempunyai kapasiti maksimum yang mencukupi serta dasar peningkatan skala yang bertindak balas dengan pantas. Konfigurasikan peningkatan skala penjejakan sasaran berdasarkan bilangan permintaan ALB bagi setiap sasaran, supaya ASG menambah tika secara automatik apabila trafik berganda. Pertimbangkan juga pemanasan awal: semasa latihan peralihan, perhatikan sepantas mana ASG anda meningkatkan skala dan pastikan ia dapat mencapai kapasiti yang diperlukan dalam sasaran RTO anda.
# ASG target tracking for request count
aws autoscaling put-scaling-policy \
--auto-scaling-group-name app-asg-eu-west-1 \
--policy-name scale-on-requests \
--policy-type TargetTrackingScaling \
--target-tracking-configuration '{
"TargetValue": 1000,
"PredefinedMetricSpecification": {
"PredefinedMetricType": "ALBRequestCountPerTarget",
"ResourceLabel": "app/my-alb/xxx/targetgroup/my-tg/yyy"
},
"ScaleInCooldown": 60,
"ScaleOutCooldown": 30
}'Pengurusan Sesi dalam Aktif-Aktif
Dalam seni bina satu rantau, sesi pengguna boleh disimpan secara setempat pada pelayan aplikasi. Dalam aktif-aktif berbilang rantau, pengguna mungkin bertukar-tukar antara rantau bagi permintaan seterusnya, lalu merosakkan sesi pada bahagian pelayan. Penyelesaian: 1) Sesi tanpa keadaan — simpan data sesi dalam JWT bertandatangan atau kuki yang boleh disahkan oleh mana-mana pelayan di mana-mana rantau. 2) DynamoDB Global Tables untuk sesi — simpan sesi secara berpusat dengan capaian dalam milisaat dari mana-mana rantau. 3) ElastiCache dengan Global Datastore — replikasi Redis merentas rantau untuk penyimpanan sesi.
# DynamoDB Global Table for session storage
# Session item structure:
{
'sessionId': 'sess-abc123',
'userId': 'usr-456',
'data': {'cart': [...], 'preferences': {}},
'expiresAt': 1750000000,
'lastUpdatedRegion': 'us-east-1'
}
# Application reads from local region DynamoDB
# Writes replicate to all regions within ~1 second
# No sticky sessions needed on the ALBKonflik Penulisan dan Penyelesaiannya
Cabaran terbesar dalam aktif-aktif dengan penulisan berbilang induk ialah konflik penulisan. Jika dua pengguna di rantau berbeza mengemas kini rekod yang sama secara serentak, kemas kini yang manakah akan menang? DynamoDB Global Tables menggunakan penulis terakhir menang berdasarkan cap masa penulisan. Kaedah ini berfungsi dengan baik untuk kebanyakan kes penggunaan tetapi boleh menyebabkan kehilangan data bagi kemas kini yang bersaing (contohnya, dua pengguna meningkatkan pembilang secara serentak). Reka bentuk model data anda untuk mengelakkan penulisan serentak pada item yang sama oleh rantau berbeza menggunakan penulisan bersyarat atau dengan membahagikan pemilikan data mengikut rantau.
# Avoid conflicts with conditional writes
aws dynamodb update-item \
--table-name UserProfiles \
--key '{"userId":{"S":"usr-123"}}' \
--update-expression 'SET profileVersion = profileVersion + :inc, username = :name' \
--condition-expression 'profileVersion = :expectedVersion' \
--expression-attribute-values '{
":inc":{"N":"1"},
":name":{"S":"newname"},
":expectedVersion":{"N":"5"}
}'
# If another region already updated version, this fails gracefullyReplikasi S3 dalam Aktif-Aktif
Untuk storan objek dalam aktif-aktif, gunakan Replikasi Merentas Rantau S3 dengan replikasi dua hala (tersedia pada bucket yang mengaktifkan pemversian). Berbeza daripada CRR sehala, replikasi dua hala memastikan bucket di kedua-dua rantau sentiasa segerak — objek yang ditulis di mana-mana rantau direplikasi secara automatik ke rantau yang satu lagi. Ini penting untuk aplikasi yang menulis fail yang dimuat naik pengguna ke bucket S3 rantau setempatnya tetapi memerlukan fail tersebut boleh dicapai secara global. Aktifkan Replication Time Control (RTC) S3 untuk menjamin 99.99% objek direplikasi dalam masa 15 minit.
# Bidirectional S3 replication
# Bucket A (us-east-1) replicates to Bucket B (eu-west-1)
# Bucket B (eu-west-1) replicates to Bucket A (us-east-1)
# Enable S3 RTC for guaranteed replication time
aws s3api put-bucket-replication \
--bucket us-east-1-uploads \
--replication-configuration '{
"Rules": [{
"Status": "Enabled",
"ReplicationTime": {"Status": "Enabled", "Time": {"Minutes": 15}},
"Metrics": {"Status": "Enabled", "EventThreshold": {"Minutes": 15}},
"Destination": {"Bucket": "arn:aws:s3:::eu-west-1-uploads"}
}]
}'CloudFront dengan Asal Berbilang Rantau
Gunakan CloudFront dengan kumpulan asal untuk mencipta CDN aktif-aktif dengan peralihan automatik. Konfigurasikan asal utama (ALB di us-east-1) dan asal sekunder (ALB di eu-west-1). CloudFront beralih secara automatik kepada asal sekunder apabila asal utama mengembalikan ralat 5xx. Untuk aset statik yang dilayan daripada S3, konfigurasikan kumpulan asal yang menunjuk kepada bucket S3 di berbilang rantau dengan replikasi dua hala. Ini menambahkan lapisan daya tahan pada peringkat CDN di atas penghalaan aktif-aktif Route 53 anda.
# CloudFront origin group for multi-region failover
aws cloudfront create-distribution \
--distribution-config '{
"Origins": {
"Quantity": 2,
"Items": [
{"Id": "us-east-1", "DomainName": "alb-us-east-1.amazonaws.com"},
{"Id": "eu-west-1", "DomainName": "alb-eu-west-1.amazonaws.com"}
]
},
"OriginGroups": {
"Items": [{
"Id": "multi-region-group",
"FailoverCriteria": {"StatusCodes": {"Items": [500,502,503,504]}},
"Members": {"Items": [{"OriginId": "us-east-1"},{"OriginId": "eu-west-1"}]}
}]
}
}'Pemantauan Kesihatan Aktif-Aktif
Seni bina aktif-aktif memerlukan pemantauan kukuh untuk memastikan kedua-dua rantau sihat dan trafik diagihkan seperti yang dijangkakan. Metrik utama: Route 53 HealthCheckPercentageHealthy bagi setiap rantau, DynamoDB ReplicationLatency untuk kelewatan Global Tables, ALB RequestCount bagi setiap rantau untuk mengesahkan pengagihan trafik, dan papan pemuka CloudWatch merentas akaun/merentas rantau untuk paparan bersatu. Tetapkan penggera apabila kelewatan replikasi melebihi ambang RPO anda atau apabila pengagihan trafik menjadi sangat tidak seimbang.
# CloudWatch alarm for DynamoDB Global Table replication lag
aws cloudwatch put-metric-alarm \
--alarm-name 'GlobalTable-ReplicationLag-eu-west-1' \
--metric-name ReplicationLatency \
--namespace AWS/DynamoDB \
--dimensions Name=TableName,Value=UserSessions Name=ReceivingRegion,Value=eu-west-1 \
--period 60 \
--evaluation-periods 3 \
--threshold 5000 \
--comparison-operator GreaterThanThreshold \
--alarm-actions arn:aws:sns:us-east-1:123:ops-alertsBila Aktif-Aktif Merupakan Pilihan yang Tepat
Aktif-aktif sesuai apabila: pengguna tersebar di seluruh dunia dan kependaman ke satu rantau tidak boleh diterima. RTO mestilah hampir sifar — perniagaan tidak dapat bertolak ansur walaupun dengan masa henti selama beberapa minit. Keupayaan penulisan tinggi memerlukan penulisan diagihkan merentas rantau. Keperluan kawal selia mewajibkan pemprosesan data dalam negara. Kosnya jauh lebih tinggi berbanding tahap DR yang lain, jadi pilih aktif-aktif hanya apabila keperluan perniagaan dan faktor ekonomi benar-benar menyokongnya. Bagi banyak beban kerja, Warm Standby sudah memadai dan jauh lebih murah.
# Active-Active justification checklist:
# [ ] Users in 2+ continents with latency SLAs
# [ ] RTO requirement < 5 minutes
# [ ] Revenue impact of downtime justifies 2x+ cost
# [ ] Data must remain within specific regions (regulations)
# [ ] Write throughput exceeds single-region capacity
# If fewer than 2-3 boxes checked:
# Consider Warm Standby instead (lower cost, adequate RTO)Semakan Pantas
Uji pemahaman anda tentang konsep AWS Solutions Architect (SAA-C03) daripada pelajaran ini.
Imbas Kembali Pelajaran
Dalam pelajaran ini, anda telah mempelajari bahawa: DynamoDB Global Tables membolehkan penulisan berbilang induk merentas rantau untuk aktif-aktif sebenar, penghalaan kependaman Route 53 dengan pemeriksaan kesihatan mengarahkan pengguna ke rantau sihat yang paling hampir, dan pengurusan sesi mestilah tanpa keadaan atau menggunakan storan yang direplikasi secara global dalam aktif-aktif. Aktif-aktif menyediakan RTO dan RPO yang hampir sifar tetapi dengan kos yang jauh lebih tinggi. Seterusnya, kita akan meneroka Operational Excellence dan Security, iaitu dua tonggak AWS Well-Architected Framework.
Pelajari AWS Solutions Architect dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 30
- Pelajaran
- 120
Soalan Lazim
Adakah pelajaran “Aktif-Aktif Berbilang Tapak dengan Jadual Global dan Route 53” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran AWS Solutions Architect, termasuk “Aktif-Aktif Berbilang Tapak dengan Jadual Global dan Route 53”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus AWS Solutions Architect merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Aktif-Aktif Berbilang Tapak dengan Jadual Global dan Route 53”?
Jalankan kapasiti produksi penuh di dua atau lebih Region secara serentak menggunakan DynamoDB Global Tables, Aurora Global Database dan penghalaan kependaman Route 53. Anda berlatih AWS Solutions Architect menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan AWS Solutions Architect?
Tiada pengalaman terdahulu diperlukan. Pembelajaran AWS Solutions Architect di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.
Berapa lamakah pelajaran “Aktif-Aktif Berbilang Tapak dengan Jadual Global dan Route 53” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran AWS Solutions Architect ini?
Ya. Setiap pelajaran AWS Solutions Architect menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- RTO, RPO dan Tahap DR
- Sandaran dan Pemulihan
- Lampu Pandu dan Salinan Siap Sedia
- Aktif-Aktif Berbilang Tapak dengan Jadual Global dan Route 53