يجب ألا تعتمد الخدمة (Serving) على Manager
يبقى مسار الاستعلام (Query path) على عقدة DNS وآخر حالة تم التحقق منها.

AUTHORITATIVE DNS / GLOBAL TRAFFIC
تجتمع إدارة API-first للحالة المطلوبة في DNS وValidation وImmutable Revision وBlue/Green Delivery وHealth-aware Routing وDNSSEC ودورة حياة العقد في عملية واحدة، بينما يبقى Query Path مستقلاً عن Manager.
مكوّنات 4SO GeoDNS: مسار الاستعلام مستقل عن مسار التحكم
مشكلة المنتج
يجب أن يكون Authoritative DNS سريعاً ومتاحاً دائماً، وأن تكون تغييراته في الوقت نفسه دقيقة وقابلة للتدقيق (Audit) والتراجع (Rollback). يفصل GeoDNS مسار الإعداد (Configuration) عن مسار الخدمة (Serving).
يبقى مسار الاستعلام (Query path) على عقدة DNS وآخر حالة تم التحقق منها.
تتحول السجلات (Record) والسياسات (Policy) أولاً إلى Revision، ثم تمر بمرحلتي Stage وVerify.
تأتي صحة Endpoint وأهليته من Observation مقبولة، لا من حالة مصطنعة في المتصفح.
يجب أن تخضع المفاتيح (Key) والتوقيع (Sign) وRollover والاستعادة لتحكم لا يقل عن إدارة Zone.
لمحة عن القدرات
إلى جانب Authoritative Records، يعدّ GeoDNS كلاً من Delivery وTraffic Management ودورة حياة العقد جزءاً من المنتج نفسه.
Forward/Reverse Zone، ومجموعات RRset من نوع Typed، وImport/Export مضبوط.
Changeset وSnapshot Hash وRevision لأغراض Audit وRollback.
Stage على Color غير النشط، ثم قراءة الحالة، ثم Cutover ذرّي.
Endpoint وPool وRegion وHealth Perspective وسياسة الإجابة (Policy).
Signing وأدلة DS وRollover وRestore/Reconcile.
TSIG وAXFR/IXFR وCatalog Zone ودورة حياة Secondary Provider.
Onboard وDrain وReplace وRemove وFleet rollout.
Health وMetrics وAlert وIncident وSynthetic DNS Probe.
يبقى مسار Query المعتاد قصيراً: Resolver → عقدة DNS → بيئة التشغيل النشطة → الحالة المحلية. ولا يعتمد أي Query عادي في الإجابة على Manager أو على Database عابرة للمناطق.
نموذج النشر
الحد الأدنى من طوبولوجيا المنتج بسيط، وليس HA أو Multi-region شرطاً للبدء؛ إذ تُضاف العقد والمناطق (Region) تدريجياً.
| الملف | Control Plane | Serving Plane | الاستخدام |
|---|---|---|---|
| أساسي | Manager واحد | عقدة DNS واحدة | إعداد بسيط ومتكامل لـ Authoritative DNS |
| متعدد العقد | Manager مركزي | عدة عقد DNS | تكرار Serving وRollout مضبوط |
| مواقع (Site) متعددة | Control Plane واحد | عقد في مواقع (Site) متعددة | فصل نطاقات الأعطال والقرب من Resolver |
| Multi-region | إدارة مركزية مع عمليات إقليمية | Serving مستقل في مناطق (Region) متعددة | Global Traffic ومرونة واسعة النطاق |
المعمارية
يجب أن يمر تغيير DNS عبر Validation وRevision وDelivery، أما إجابة DNS فتُقدَّم مباشرةً من بيئة التشغيل المُتحقَّق منها على العقدة.
| الطبقة | Component | المسؤولية | Fail-safe behavior |
|---|---|---|---|
| Product API | FastAPI + scoped RBAC | Zone/RRset وtraffic policy وnode lifecycle وtyped validation | لا يعدّل Browser بيئة runtime الخاصة بـ DNS مباشرةً |
| Authority | PostgreSQL + transactional outbox | Desired state وaudit وحالة job/revision | Mutation وevent publication ضمن حدّ معاملاتي واحد |
| Delivery | Worker + mTLS Node Agent | Stage inactive color وread-back وverify وatomic cutover | يتوقف Failed delivery قبل الوصول إلى serving |
| DNS Edge | dnsdist | Stable serving entry واختيار active PowerDNS color | لا يعتمد Query path على Manager |
| Authoritative Runtime | PowerDNS blue/green + local PostgreSQL | تقديم آخر revision مُتحقَّق منها | عند Control-plane outage تستمر إجابات DNS من آخر state سليمة |
| Security | DNSSEC · TSIG · transfer policy | Signing وrollover وzone-transfer trust | لا تدخل Secret material إلى Panel/Audit/Evidence |
Geo-routing & Health Contract. يُقرأ قرار DNS من policy مُجمَّعة وsnapshot محلية؛ ولا ينفّذ Query Path أي health-check شبكي لحظة الإجابة.
| المجال | المُدخل / Mechanism | العقد التقني |
|---|---|---|
| Client locality | ECS أو Recursive Resolver IP | يُستخدم ECS الصالح عندما يكون مسموحاً به؛ وإلا يكون Resolver IP أساس الاختيار. |
| Geo / network match | CIDR، ASN/Organization، Country/Subdivision/Continent/City | تُقيَّم Overrides الدقيقة وgeography وفق priority رقمية وترتيب deterministic. |
| Native GeoIP | PowerDNS geoip backend + Country/ASN MMDB | يعمل GeoIP إلى جانب gpgsql؛ ولا تُنقل Zone data من authority الأساسية إلى YAML/GeoIP backend. |
| Health | TCP/UDP/HTTP/HTTPS/TLS/DNS/gRPC/ICMP probes | تُحسب Health خارج Query Path، وتُسجَّل حالات مثل HEALTHY/DEGRADED/SUSPECT/UNHEALTHY في snapshot ذات إصدار. |
| Policy compiler | Structured policy → trusted runtime material | لا يُقبل Arbitrary Lua؛ ويُنتج compiler مخرجات reproducible مع hash مرتبط بـ Revision. |
| Simulation | Resolver/ECS/time/health/dataset inputs | يمكن محاكاة Rule match وselected pool/endpoint وfallback path وanswer وTTL قبل publish. |
| ECS cache isolation | Policy-aware cache keying | يجب ألا تتسرّب الإجابات المعتمدة على client network عبر cache بين سياقات ECS غير المرتبطة. |
دورة الحياة
الانتقال من Edit إلى Publish ليس مجرد بضع نقرات؛ فلكلٍّ من Validation وRevision وStage وقراءة الحالة والاستعادة حالة محددة.
ملفات القدرات
لكل طبقة، من Authoritative Data إلى Global Traffic وSecurity، Profile تشغيلي مستقل.
إدارة Zone وRRset عبر Revision.
إجابة مبنية على Endpoint وPolicy.
Trust وTransfer security داخل المنتج.
دورة حياة عقد Serving.
إطلاق آمن وقابل للتراجع.
حماية حالة الإدارة.
تدفق Job وCutover وRecovery
عمليات Mutation هي idempotent وproject-scoped؛ ولا تبقى node mutation وfleet rollout وcertificate rotation مفتوحة في وقت واحد على العقدة نفسها. ويُحصَّن Worker ownership عبر lease وexecution epoch.
يتم DNS read-back قبل تبديل Active Color.
لا ينفّذ Query path أي probe شبكي في لحظة الطلب.
يرتبط DR action بـ readiness hash وtopology freeze.
يُجهَّز التغيير (stage) أولاً على color غير النشط.
تُحاكى Geo/Network policy قبل publish.
لا تنضم Node إلى fleet إلا بعد trust وserving verification.
تجري Key lifecycle مع overlap وserving acknowledgement.
يرتبط Restore وsite failover بـ readiness evidence.
تؤثر Health وNode replacement مباشرةً في جودة Serving، ولذلك يجب أن يكون لكل منهما Flow مستقل.
تُجمع Health خارج Query hot path وتتحول إلى snapshot ذات إصدار.
لا تخرج Node القديمة إلا بعد جاهزية Replacement وServing verification.
| Action / Flow | Admission / Preconditions | Execution / Lock | Success Criterion | Failure / Recovery |
|---|---|---|---|---|
| Publish Zone / RRset | Typed validation وrevision وpolicy compile قبل delivery | Stage على inactive color → node read-back → atomic cutover | تأكيد Authoritative answer/TTL وactive revision من serving path | لا يغيّر Failed stage حالة serving؛ وrollback إلى color السليم المحفوظ |
| Traffic Policy | Structured policy وpriority وsimulation دون conflict | Compiler material ذات إصدار؛ وتُستهلك health snapshot خارج query path | تطابق Matched rule/pool/endpoint وsynthetic DNS behavior مع revision | يُرفض Arbitrary Lua؛ ويفشل policy conflict قبل publish |
| Node Onboarding / Replace | Identity/mTLS وpreflight وتوفّر node mutation | Durable job مع node lock؛ ويُرفض تداخل onboarding/day-2/fleet/cert-rotation | Node مرصودة بحالة healthy وrollout eligibility واضحة | لا يتحول Node onboarding failure إلى generic retry؛ وقد يلزم fresh bootstrap |
| DNSSEC / Certificate | Key/identity lifecycle وapproval في العمليات الحساسة | Stage/overlap/ack وrotation workflow خاص بالمالك (owner-specific) | تطابق Signing/serving أو certificate observation مع generation المتوقعة | رفض Stale rotation/fleet mutation المتزامنة؛ وحذف secret material من public job projection |
| Control-plane Restore | يجب أن تكون Backup بحالة READY وrepository-verified ومعها snapshot/hash evidence | Preflight → approval → execution → cutover | RESTORED فقط بعد preflight binding وruntime verification | Worker interruption/unknown external state → RECONCILE_REQUIRED؛ ويُمنع blind retry |
| DR Failover / Failback | يلزم Readiness job وtopology freeze وfencing وrollback وRPO acknowledgement | يرتبط Action بـ readiness state/hash وprofile revision | وصول Active site/traffic/database state إلى phase المتوقعة | رفض Stale readiness أو topology mismatch؛ ولا يُسمح بـ failback إلا من FAILED_OVER |
تصنيف إعادة المحاولة صريح للمشغّل: SAFE_TO_RETRY، RECONCILE_REQUIRED، FRESH_BOOTSTRAP_REQUIRED أو FRESH_HEALTH_REQUEST_REQUIRED. وفقدان Lease في workflows المُخِلّة بالخدمة (disruptive) لا يُعدّ أبداً إذناً بـ replay أعمى.
كتالوج العمليات
يستخدم المشغّل العملية نفسها في المنتج وAudit trail ذاته لتغيير Record أو Rollout العقد أو DNSSEC.
يتحكّم 4SO GeoDNS في التغييرات من دون إدخال Control Plane في مسار إجابة DNS.