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: مسیر Query جدا از مسیر کنترل
مسئلهی محصول
Authoritative DNS باید هم سریع و همیشه در دسترس باشد و هم تغییراتش دقیق، قابل Audit و قابل Rollback. GeoDNS مسیر Configuration را از مسیر Serving جدا میکند.
Query path روی نود DNS و آخرین وضعیت تأییدشده باقی میماند.
Record و Policy ابتدا به Revision تبدیل میشوند و بعد Stage و Verify میشوند.
Endpoint health و eligibility از Observation پذیرفتهشده میآیند، نه وضعیت ساختگی Browser.
Key، Sign، Rollover و بازیابی باید بهاندازهی مدیریت Zone کنترلشده باشند.
نمای قابلیتها
GeoDNS علاوه بر Authoritative Records، 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 را mutate نمیکند |
| Authority | PostgreSQL + transactional outbox | Desired state، audit، job/revision state | 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 | Serve آخرین 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 | Overrideهای دقیق و 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 محاسبه میشود و stateهایی مثل 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 نباید بین contextهای ECS نامرتبط cache-leak شوند. |
چرخهی عمر
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 روی یک node همزمان باز نمیمانند. Worker ownership با lease و execution epoch fence میشود.
DNS read-back قبل از جابهجایی Active Color انجام میشود.
Query path هیچ probe شبکهای را همان لحظه اجرا نمیکند.
DR action به readiness hash و topology freeze متصل است.
تغییر ابتدا روی color غیرفعال stage میشود.
Geo/Network policy قبل از publish شبیهسازی میشود.
Node فقط بعد از trust و serving verification عضو fleet میشود.
Key lifecycle با overlap و serving acknowledgement انجام میشود.
Restore و site failover به readiness evidence bind هستند.
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 versioned؛ health snapshot خارج از query path مصرف میشود | Matched rule/pool/endpoint و synthetic DNS behavior مطابق revision | Arbitrary Lua رد میشود؛ policy conflict قبل از publish fail میشود |
| Node Onboarding / Replace | Identity/mTLS، preflight و node mutation availability | Durable job با node lock؛ onboarding/day-2/fleet/cert-rotation overlap رد میشود | Node observed 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 مورد انتظار match کند | 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 bind میشود | Active site/traffic/database state به phase مورد انتظار برسد | Stale readiness یا topology mismatch رد؛ failback فقط از FAILED_OVER مجاز است |
Retry classification اپراتوری صریح است: SAFE_TO_RETRY، RECONCILE_REQUIRED، FRESH_BOOTSTRAP_REQUIRED یا FRESH_HEALTH_REQUEST_REQUIRED. Lease loss در workflowهای disruptive هرگز مجوز replay کور نیست.
کاتالوگ عملیات
اپراتور برای تغییر Record، Rollout نود یا DNSSEC از همان فرایند محصول و Audit trail استفاده میکند.
4SO GeoDNS تغییرات را کنترل میکند، بدون اینکه Control Plane را وارد مسیر پاسخ DNS کند.