Active-Active และ Active-Passive แบบหลายรีเจียน
กำหนดเส้นทางการรับส่งข้อมูลไปยังหลายรีเจียนพร้อมกันด้วยการกำหนดเส้นทางตามเวลาแฝงของ Route 53 หรือสลับไปยังระบบสำรองที่พร้อมใช้งานด้วยการสลับตามการตรวจสอบสุขภาพ
Active-Active และ Active-Passive แบบหลายรีเจียน เป็นบทเรียน AWS Solutions Architect ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AWS Solutions Architect และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
เหตุใดจึงต้องใช้สถาปัตยกรรมแบบหลายภูมิภาค
Multi-AZ ป้องกันความล้มเหลวของ AZ เดียวได้ แต่ AWS Region ทั้งภูมิภาคอาจไม่พร้อมใช้งานระหว่างภัยพิบัติขนาดใหญ่ เหตุขัดข้องครั้งสำคัญ หรือเมื่อมีข้อกำหนดด้านกฎระเบียบ สถาปัตยกรรมแบบหลายภูมิภาค แก้ปัญหานี้ด้วยการทำงานในสองภูมิภาคขึ้นไปที่แยกจากกันทางภูมิศาสตร์ มีรูปแบบหลักสองแบบ ได้แก่ Active-Passive (ภูมิภาคหนึ่งให้บริการทราฟฟิก ขณะที่อีกภูมิภาครออยู่ในสถานะ Standby) และ Active-Active (ทั้งสองภูมิภาคให้บริการทราฟฟิกพร้อมกัน)
Active-Passive: รูปแบบ Warm Standby
ในการตั้งค่าแบบหลายภูมิภาคที่เป็น Active-Passive ภูมิภาคหลักจะจัดการทราฟฟิกสำหรับระบบจริงทั้งหมด ภูมิภาครองจะทำงานด้วยสำเนาที่ลดขนาดลงแต่ยังใช้งานได้ และคงสถานะพร้อมอยู่เสมอ ข้อมูลจะถูกจำลองจากภูมิภาคหลักไปยังภูมิภาครองอย่างต่อเนื่อง เมื่อภูมิภาคหลักล้มเหลว คุณจะเลื่อนภูมิภาครองให้เป็น Active โดยใช้การกำหนดเส้นทางแบบ Failover ของ Route 53 รูปแบบนี้มีค่าใช้จ่ายต่ำกว่า Active-Active แต่มี RTO สูงกว่า (เนื่องจากต้องใช้เวลาเลื่อนบทบาทและขยาย Standby)
# 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 แบบ Asynchronous ไปยัง Bucket ในอีกภูมิภาคหนึ่ง DynamoDB Global Tables ซึ่งให้การจำลองแบบหลายมาสเตอร์และหลายภูมิภาคพร้อมความสอดคล้องในที่สุด และ 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 เพื่อตรวจจับความล้มเหลวของภูมิภาค การตรวจสอบสถานะสามารถตรวจสอบ Endpoint (HTTP/HTTPS/TCP), การแจ้งเตือนของ CloudWatch หรือคำนวณจากการตรวจสอบสถานะอื่น ๆ ได้ Route 53 จะตรวจสอบ Endpoint ของคุณอย่างต่อเนื่องจากหลายตำแหน่งทั่วโลก เมื่อการตรวจสอบล้มเหลว 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 ไปยัง Endpoint ที่เหมาะสมที่สุด ต่างจากการสลับ DNS ของ Route 53 (ซึ่งขึ้นอยู่กับ TTL) Global Accelerator ตรวจจับความล้มเหลวของ Endpoint ได้ภายใน 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 ประหยัดค่าใช้จ่ายกว่า เนื่องจาก Standby ทำงานด้วยความจุที่ลดลง 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 ชั่วโมงและให้ความสำคัญกับค่าใช้จ่าย ให้ใช้ Backup and Restore ไปยังอีกภูมิภาคหนึ่ง หาก RTO อยู่ในระดับนาที ให้ใช้ Active-Passive พร้อม Warm Standby หาก 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 มีภูมิภาค Standby ที่จะเปิดใช้งานเมื่อเกิดความล้มเหลว Active-Active ให้บริการทราฟฟิกจากหลายภูมิภาคพร้อมกัน และ DynamoDB Global Tables กับ Aurora Global Database เป็นบริการสำคัญสำหรับการจำลองข้อมูลหลายภูมิภาค การตรวจสอบสถานะของ Route 53 และ Global Accelerator จัดการการตัดสินใจด้านการกำหนดเส้นทางทราฟฟิก บทถัดไป เราจะสำรวจการตรวจสอบสถานะ ตัวตัดวงจร และตรรกะการลองใหม่
คำถามที่พบบ่อย
บทเรียน “Active-Active และ Active-Passive แบบหลายรีเจียน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “Active-Active และ Active-Passive แบบหลายรีเจียน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AWS Solutions Architect ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AWS Solutions Architect มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “Active-Active และ Active-Passive แบบหลายรีเจียน”
กำหนดเส้นทางการรับส่งข้อมูลไปยังหลายรีเจียนพร้อมกันด้วยการกำหนดเส้นทางตามเวลาแฝงของ Route 53 หรือสลับไปยังระบบสำรองที่พร้อมใช้งานด้วยการสลับตามการตรวจสอบสุขภาพ คุณปฏิบัติ AWS Solutions Architect ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AWS Solutions Architect หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AWS Solutions Architect บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “Active-Active และ Active-Passive แบบหลายรีเจียน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AWS Solutions Architect นี้ได้ไหม
ได้ บทเรียน AWS Solutions Architect ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- HA เทียบกับความทนทานต่อข้อขัดข้อง: นิยามและข้อแลกเปลี่ยน
- รูปแบบ Multi-AZ สำหรับบริการที่มีสถานะ
- Active-Active และ Active-Passive แบบหลายรีเจียน
- การตรวจสอบสุขภาพ เซอร์กิตเบรกเกอร์ และตรรกะการลองใหม่