شبكات AWS والهوية

Route 53 واستراتيجيات DNS

18 دقيقة الدرس 5 من 28

Route 53 واستراتيجيات DNS

Amazon Route 53 هو خدمة DNS الموثوقة من AWS وطبقة إدارة حركة المرور العالمية. على خلاف محوّل DNS البسيط، يتيح لك Route 53 تضمين ذكاء التوجيه مباشرةً في استجابات DNS — تحويل حركة المرور بناءً على الزمن الكامن والموقع الجغرافي لمصدر الطلب وصحة نقطة النهاية أو أوزان اعتباطية. على نطاق الشركات الكبرى، يُمثّل Route 53 خط الدفاع الأول للتوافر: يُبعد حركة المرور عن نقاط النهاية غير السليمة قبل أن تصل أي حزمة بيانات واحدة إلى بنيتك التحتية. يُعدّ فهم معماريته وسياسات التوجيه الخاصة به أمرًا أساسيًا لأي مهندس يُصمّم نظامًا إنتاجيًا على AWS.

المناطق المستضافة (Hosted Zones): حدود مساحة أسماء DNS

المنطقة المستضافة هي حاوية Route 53 لسجلات DNS الخاصة بنطاق ما. وهي تتوافق مباشرةً مع منطقة DNS بالمعنى المحدد في RFC. يوجد نوعان:

  • منطقة مستضافة عامة — تُقدّم استجابات DNS لأي محوّل على الإنترنت العام. عند تسجيل نطاق (أو تفويض نطاق موجود إلى Route 53)، تُنشئ منطقة مستضافة عامة ويُوفّر Route 53 أربعة سجلات خوادم أسماء (NS) عبر شبكته Anycast لتحقيق التوافر العالي.
  • منطقة مستضافة خاصة — مرئية فقط داخل واحدة أو أكثر من Amazon VPCs المرتبطة بها. تُستخدم لاكتشاف الخدمات الداخلية: payments.internal، db-primary.prod.internal. يتلقى المحوّلون خارج VPCs المرتبطة استجابة NXDOMAIN. يمكنك ربط نفس المنطقة الخاصة بـVPCs في حسابات AWS مختلفة لاكتشاف الخدمات عبر الحسابات.
يُحصّل Route 53 رسومًا لكل منطقة مستضافة شهريًا ($0.50) ولكل مليون استعلام DNS. على أحجام استعلام الإنتاج (مليارات الاستعلامات شهريًا للمنصات الكبيرة)، قد تصبح تكاليف DNS كبيرة. ادمج المناطق الداخلية حيثما أمكن — منطقة prod.internal واحدة أقل تكلفةً وأسهل إدارةً من عشرات المناطق لكل خدمة.

سجلات Alias: سجل A الأصيل في AWS

قبل التعمق في سياسات التوجيه، افهم سجلات Alias — امتداد Route 53 الاحتكاري لـDNS القياسي. يُشير سجل Alias إلى مورد AWS (ALB، توزيع CloudFront، نقطة نهاية موقع S3، سجل Route 53 آخر في نفس المنطقة) ويتصرف كسجل A على مستوى DNS لكن مع ميزتين رئيسيتين:

  • لا CNAME عند قمة المنطقة — تحظر مواصفات DNS سجلات CNAME عند قمة المنطقة (example.com). تتجاوز سجلات Alias هذا القيد، مما يتيح لك توجيه example.com مباشرةً إلى ALB أو توزيع CloudFront.
  • استعلامات مجانية — استعلامات DNS على سجلات Alias التي تحوّل إلى موارد AWS مجانية. وهذا توفير ملحوظ عند أحجام الاستعلامات العالية.

استخدم دائمًا سجلات Alias (لا CNAME) عند الإشارة إلى موارد AWS. ذلك أرخص وأصحّ من الناحية التقنية عند قمة المنطقة.

سياسات التوجيه: الذكاء في DNS

يدعم Route 53 سبع سياسات توجيه. الأربع التي ستستخدمها أكثر في الإنتاج هي: البسيطة، والموزونة، والقائمة على الزمن الكامن، والتجاوز عند الفشل. كل سياسة تُغيّر كيفية اختيار Route 53 للقيمة المُرجَعة عند استعلام محوّل عن اسم سجل ونوع معيّن.

Route 53 routing policies comparison Route 53 Routing Policies Weighted Traffic split by numeric weight Canary deployments A/B testing Latency Route to lowest latency region Multi-region active active serving Failover Primary + Standby health-checked Active-passive DR Hot standby Geolocation Route by user country/continent GDPR data residency Localization DNS Resolver Query api.example.com A Health Checks HTTP / HTTPS / TCP Guards Failover + Weighted routing
سياسات التوجيه الأربع الرئيسية في Route 53 وكيفية تكامل فحوصات الصحة مع توجيه Failover والتوجيه الموزون.

التوجيه الموزون (Weighted Routing)

يُخصّص التوجيه الموزون وزنًا رقميًا لكل مجموعة سجلات تحمل نفس الاسم والنوع. يُعيد Route 53 كل سجل بنسبة وزنه إلى الإجمالي. الوزن 0 يُزيل سجلًا من التناوب دون حذفه — الطريقة المعيارية لتصريف حركة المرور من نقطة نهاية قبل النشر أو نافذة الصيانة.

حالات الاستخدام الإنتاجية: نشر Canary (أرسل 5% من حركة المرور إلى الإصدار الجديد، راقب معدلات الأخطاء، ثم انقل 100%)، اختبارات A/B، وإدخال المنطقة تدريجيًا (أطلق منطقة جديدة بوزن 1، تحقق منها، ثم ارفع وزنها إلى المستوى الطبيعي).

# Create two weighted A records for a canary deployment # "stable" version: weight 95 aws route53 change-resource-record-sets \ --hosted-zone-id Z1234567890EXAMPLE \ --change-batch '{ "Changes": [ { "Action": "UPSERT", "ResourceRecordSet": { "Name": "api.example.com", "Type": "A", "SetIdentifier": "stable-v1", "Weight": 95, "AliasTarget": { "HostedZoneId": "Z35SXDOTRQ7X7K", "DNSName": "alb-stable-123.us-east-1.elb.amazonaws.com.", "EvaluateTargetHealth": true } } }, { "Action": "UPSERT", "ResourceRecordSet": { "Name": "api.example.com", "Type": "A", "SetIdentifier": "canary-v2", "Weight": 5, "AliasTarget": { "HostedZoneId": "Z35SXDOTRQ7X7K", "DNSName": "alb-canary-456.us-east-1.elb.amazonaws.com.", "EvaluateTargetHealth": true } } } ] }'

التوجيه القائم على الزمن الكامن (Latency-Based Routing)

يُوجّه التوجيه القائم على الزمن الكامن كل استعلام إلى منطقة AWS ذات أقل زمن كامن مقيس من منظور المحوّل. تحتفظ AWS بجدول زمن كامن بين شبكتها الحافة والمناطق؛ يرجع إليه Route 53 وقت الاستعلام. تُنشئ سجلًا واحدًا لكل منطقة بنفس الاسم والنوع، يُشير كل منها إلى نقطة نهاية تلك المنطقة.

هذا الخيار الافتراضي للمعماريات متعددة المناطق النشطة-النشطة. مستخدم في طوكيو يُوجَّه إلى ap-northeast-1، ومستخدم في لندن إلى eu-west-1، دون أي خرائط جغرافية يدوية. تتحدث قياسات الزمن الكامن باستمرار مع تغيّر ظروف شبكة AWS.

اضبط EvaluateTargetHealth: true على سجلات Alias القائمة على الزمن الكامن التي تُشير إلى ALBs. إذا أصبحت المنطقة ذات أقل زمن كامن غير سليمة (جميع أهداف ALB غير سليمة)، يتراجع Route 53 تلقائيًا إلى المنطقة السليمة ذات أقل زمن كامن تالية. يمنحك هذا تجاوزًا تلقائيًا للفشل عبر المناطق بتكلفة هندسية صفرية إضافية.

توجيه تجاوز الفشل (Failover Routing)

ينفّذ توجيه Failover طبولوجيا صريحة لنظام أساسي/ثانوي. تُعيّن سجلًا كـPRIMARY وآخر كـSECONDARY. يُعيد Route 53 سجل PRIMARY طالما اجتاز فحص الصحة المرتبط به. عند فشل الفحص، يُعيد Route 53 تلقائيًا سجل SECONDARY. تضمن TTL لـDNS الانتشار في غضون ثوان إلى دقائق.

يتوافق هذا مباشرةً مع تصميم التعافي من الكوارث النشط-السلبي. يمكن أن يكون الثانوي موقع S3 ثابتًا (صفحة "عذرًا، نظام تحت الصيانة")، أو نسخة للقراءة فقط مُرقّاة إلى كاتب، أو منطقة ساخنة احتياطية كاملة.

فحوصات الصحة: طبقة الحراسة

فحوصات الصحة هي آلية Route 53 لإزالة نقاط النهاية غير السليمة من استجابات DNS. تعمل باستقلالية عن خدمة DNS — فاحصو صحة Route 53 المخصصون حول العالم يستطلعون نقاط نهايتك على فاصل زمني قابل للتهيئة (10 أو 30 ثانية) وعتبة معينة. تُعلَن نقطة النهاية غير سليمة عندما يفشل عدد الفحوصات المتتالية المُهيّأة.

ثلاثة أنواع:

  • فحوصات صحة نقطة النهاية — يُرسل Route 53 مسحات HTTP أو HTTPS أو TCP إلى عنوان IP أو نطاق مُحدد. لـHTTP/HTTPS، يمكنك اشتراط رمز استجابة محدد ومطابقة نص في الجسم (أول 5,120 بايت).
  • فحوصات الصحة المحسوبة — تجميع منطقي (AND/OR) لفحوصات صحة أخرى. مفيد للإعلان عن سلامة نقطة نهاية فقط عند سلامة تبعيات متعددة في آنٍ واحد.
  • فحوصات صحة تنبيهات CloudWatch — تعكس فحوصات الصحة حالة تنبيه CloudWatch. يتيح لك هذا التعبير عن منطق صحة معقد (زمن كامن p99 فوق العتبة، معدل أخطاء فوق 1%، عمق طابور فوق الحد) دون بناء نقطة نهاية استطلاع مخصصة.
# Create an HTTPS health check with string matching aws route53 create-health-check \ --caller-reference "api-hc-$(date +%s)" \ --health-check-config '{ "Type": "HTTPS", "FullyQualifiedDomainName": "api.example.com", "Port": 443, "ResourcePath": "/health", "RequestInterval": 10, "FailureThreshold": 3, "SearchString": "\"status\":\"ok\"", "EnableSNI": true, "Regions": ["us-east-1", "eu-west-1", "ap-northeast-1"] }' # Associate the health check ID with a DNS record (add HealthCheckId field) # Then check current health status aws route53 get-health-check-status \ --health-check-id a1b2c3d4-e5f6-7890-abcd-ef1234567890
خطأ تهيئة شائع في الإنتاج: إرفاق فحص صحة بنقطة نهاية داخلية فحسب لا يمكن لفاحصي صحة Route 53 الوصول إليها. فاحصو صحة Route 53 ينشأون من نطاقات IP عامة — لا يمكنهم الوصول إلى نقاط نهاية VPC الخاصة أو الموارد خلف مجموعة أمان تحجب حركة المرور الخارجية. لنقاط النهاية الخاصة، استخدم بدلًا من ذلك فحص صحة مرتبط بتنبيه CloudWatch: يُصدر تطبيقك مقياسًا (أو تشغيل Lambda تركيبي داخل VPC)، ويقود التنبيه حالة فحص الصحة.

تركيبات سياسات التوجيه وسياسات حركة المرور

تُسلسل معماريات DNS الإنتاجية الحقيقية سياسات توجيه متعددة باستخدام Traffic Policies في Route 53 (محرر التدفق البصري) أو بتداخل مجموعات السجلات. نمط شائع ثلاثي الطبقات:

  1. طبقة Geolocation الخارجية — يُحوَّل مستخدمو الاتحاد الأوروبي إلى سجل نطاق الاتحاد الأوروبي؛ مستخدمو الولايات المتحدة إلى سجل نطاق أمريكا الشمالية (استيفاءً لمتطلبات إقامة بيانات GDPR).
  2. طبقة Latency الوسطى — داخل كل نطاق جغرافي، يُوجَّه المرور إلى المنطقة المتاحة ذات أقل زمن كامن.
  3. طبقة Failover الداخلية — داخل كل منطقة، الأساسي هو ALB الحي؛ الثانوي هو نقطة نهاية بوضع منخفض الجودة أو صفحة S3 ثابتة.

تعالج هذه المعمارية المتداخلة النطاق الكامل من سيناريوهات الفشل: انقطاع منطقي، تدهور عبر المناطق، والتعافي الكامل من الكوارث — كلها عبر DNS دون أي تغييرات في كود التطبيق أو تهيئة موازن الحمل أثناء الحوادث.

قيم TTL لـDNS رافعة تشغيلية حرجة. يتيح لك Route 53 ضبط TTL بأدنى قيمة 0 للسجلات غير Alias (سجلات Alias دائمًا تُعيد 60 ثانية من جانب AWS). قبل الصيانة المخططة أو النشر، اخفض TTL إلى 60 ثانية، انتظر فترة TTL واحدة لتفريغ ذواكر التخزين المؤقت، ثم أجرِ التحويل. بعده ارفع TTL مرة أخرى إلى 300 أو أعلى لتقليل تحميل المحوّل وتكاليف الاستعلام. إبقاء TTL عند 60 ثانية دائمًا مريح تشغيليًا لكنه مُبدّد للمال على نطاق واسع.

DNS الخاص ومحوّل VPC

للخدمات الدقيقة الداخلية، استخدم منطقة مستضافة خاصة مرتبطة بـVPC الخاصة بك. المحوّل المدمج في VPC (متاح عند قاعدة CIDR الخاصة بـVPC زائد اثنين، مثلًا 10.0.0.2) يعالج كل من بحوث المنطقة الخاصة الداخلية ويُعيد توجيه كل شيء آخر إلى تسلسل DNS العام. تُمكّن نقاط نهاية Route 53 Resolver من توسيع هذا: نقطة نهاية واردة تقبل استعلامات DNS من شبكتك المحلية عبر Direct Connect أو VPN (حتى تتمكن محوّلات الشبكة المحلية من حل مناطق AWS الخاصة)، ونقطة نهاية صادرة مع قواعد محوّل تُعيد توجيه الاستعلامات لنطاقات الشبكة المحلية المحددة إلى خوادم DNS المحلية.

ES
Edrees Salih
منذ ساعة

We are still cooking the magic in the way!