GH GambleHub

اكتشاف الخدمة и DNS

اكتشاف الخدمة и DNS

1) لماذا تحتاجه

في الأنظمة الموزعة، تظهر العقد وتختفي، ويجب على العملاء العثور على حالات عمل للخدمة بسرعة وموثوقية. DNS - طبقة أسماء عالمية ؛ اكتشاف الخدمة - استراتيجية لمطابقة اسم الخدمة مع نقاط النهاية الحقيقية، مع مراعاة سياسة الصحة والوزن والتوجيه.

الأهداف الرئيسية:
  • أسماء ثابتة بدلاً من عناوين سريعة الزوال،
  • تحديث دقيق، ولكن ليس صاخبًا (التوازن بين النضارة و TTL)،
  • التدهور دون سقوط كامل (الفشل/الفحص الصحي)،
  • الحد الأدنى من «التخمين» على العميل: المهلة، إعادة التصوير، سياسات التخزين المؤقت.

2) نماذج اكتشاف الخدمة

2. 1 جانب العميل

يحل العميل نفسه الاسم إلى مجموعة من نقاط النهاية والتوازنات (round-robin، EWMA، التجزئة حسب المفتاح). المصدر - DNS (A/AAAA/SRV)، سجل الخدمات (القنصل/يوريكا)، القائمة الثابتة.

الإيجابيات: عدد أقل من SPOFs المركزية، خوارزميات مرنة.
السلبيات: عدم تجانس العملاء، من الصعب تحديث المنطق.

2. 2 خادم (جانب الخادم)

يذهب العميل إلى الأمام/LB (بوابة/دخول L4/L7). الموازنة والتحقق من الصحة - على جانب الوكيل/التوازن.

الإيجابيات: مكان واحد للسياسة، إمكانية الملاحظة.
السلبيات: تحتاج إلى محيط متاح للغاية (N + 1، multi-AZ).

2. 3 هجين

تعطي DNS مجموعة من نقاط الدخول (LBs الإقليمية)، ثم L7/mesh التوازن.

3) DNS: الأساسيات والسجلات و TTL

3. 1 الأنواع الأساسية

A/AAAA - عناوين IPv4/IPv6.
CNAME - اسم مستعار لاسم آخر (وليس القمة).
SRV - '_ خدمة. _ بروتو. اسم → المضيف/الميناء/الوزن/الأولوية (بالنسبة لـ gRPC/LDAP/SIP، إلخ).
TXT/HTTP/HTTPS - البيانات الوصفية/المؤشرات (بما في ذلك اكتشاف HTTP).
NS/SOA - تفويض المنطقة وخصائصها.

3. 2 TTL و Cache

يتوفر ذاكرة التخزين المؤقت على العنوان التالي: OS resolver, local stub resolver, nodeLocal DNS/CoreDNS), provider, mediate recurservers and library client. النضارة الفعلية = دقيقة (TTL، سياسة العملاء). يتم أيضًا تخزين ذاكرة التخزين المؤقت السلبية (NXDOMAIN) فوق SOA. الحد الأدنى '/' TTL '.

التوصيات:
  • Prod - TTL 30-120s للسجلات الديناميكية، 300-600s للاستقرار.
  • للمفاتيح (feilover)، قم بإعداد TTL منخفض مقدمًا، وليس «أثناء الحريق».
  • ضع في اعتبارك ذاكرة التخزين المؤقت اللاصقة للمكتبات (Java/Go/Node) - إذا لزم الأمر، قم بتكوين TTL للحاسم داخل وقت التشغيل.

4) سياسات الموازنة والتسامح مع الأخطاء DNS

RR المرجح - الأوزان على A/AAAA/SRV.
الفشل - مجموعات أولية/ثانوية (فحص صحي بالخارج).
Geo/Latency - response to the «أقرب» POP/region.
Anycast - IP واحد في POP مختلف (BGP) ؛ قادرة على مواجهة الاضطرابات الإقليمية.
تقسيم الأفق - إجابات مختلفة داخل VPC/on-prem وعلى الإنترنت.
GSLB هو موازن عالمي مع الفحوصات والسياسات الصحية (الكمون، الجيوالقدرة).

5) الفحوصات الصحية والنضارة

DNS نفسها «غبية»: فهي لا تعرف صحة الخلف. لذلك:
  • أو يقوم مدقق صحي خارجي بإدارة السجلات/الأوزان (GSLB، Route53/Traffic-policy، والعينات الخارجية + العينات).
  • أو يقوم العميل/الشبكة بعمل طرد نشط وإعادة المحاولة من العديد من نقاط النهاية.

6) Kubernetes: اكتشاف خارج الصندوق

أسماء الخدمة: 'svc. فضاء الاسم. svc. المجموعة. المحلية ".
ClusterIP: IP + kube-proxy/ebpf.
خدمة مقطوعة الرأس («clusterIP: None»): تعطي سجلات A للقرون (أو مناطقها الفرعية)، SRV للمنافذ.
EndpointSlice: قائمة نقاط النهاية القابلة للتطوير (استبدال نقاط النهاية).
CoreDNS: cluster DNS resolver; إعادة كتابة الملحقات/القالب/الأمام/المخبأ ؛ منطقة "kube-dns'.
NodeLocal DNSCache: ذاكرة التخزين المؤقت المحلية على العقدة → كمون أقل واعتراض مشاكل حل المنبع.

مثال: مقطوع الرأس + SRV

yaml apiVersion: v1 kind: Service metadata: { name: payments, namespace: prod }
spec:
clusterIP: None selector: { app: payments }
ports:
- name: grpc port: 50051 targetPort: 50051

يمكن للعميل حل '_ grpc. _ tcp. المدفوعات. حث. svc. المجموعة. المحلية (SRV) والحصول على أوزان المضيف/الميناء/الأوزان.

CoreDNS (جزء ConfigMap)

yaml apiVersion: v1 kind: ConfigMap metadata: { name: coredns, namespace: kube-system }
data:
Corefile:
.:53 {
errors health ready cache 30 loop forward. /etc/resolv. conf prometheus:9153 reload
}
NodeLocal DNS (أفكار):
  • DaemonSet مع محلل محلي في 169. 254. 20. 10`; يحدد kubelet هذه النقطة.
  • يقلل من دقة الاسم p99 ويحمي من رفرف DNS في المنبع.

7) вне اكتشاف الخدمة K8s

القنصل: الوكيل، الفحوصات الصحية، دليل الخدمة، واجهة DNS ('.consul')، KV للتكوينات.
Eureka/ZooKeeper/etcd: سجلات JVM/Legacy ؛ في كثير من الأحيان بالاقتران مع سيارة جانبية/بوابة.
المبعوث/إستيو: EDS/xDS (نهاية نقطة الاكتشاف) و SDS (أسرار) ؛ يتم الإعلان عن الخدمات عبر طائرة التحكم.

8) أمن DNS

DNSSEC: حماية سلامة السجل (توقيع المنطقة). أمر بالغ الأهمية للميادين العامة.
DoT/DoH: قناة إلى التشفير المتكرر (السياسات الداخلية، التوافق).
الرباط الصليبي الأمامي والأفق المنقسم: منطقة خاصة - فقط من VPC/VPN.
الحماية من تسمم المخبأ: التوزيع العشوائي للمنافذ/المعرفات، TTLs القصيرة للديناميكيات.
السياسات الخاصة بالخروج: اسمح لـ DNS فقط على الحلول الموثوقة، سجل.

9) سلوك العملاء والتراجع

احترام TTL: لا تخبأ إلى ما لا نهاية، ولا «تخرج عن القانون» بقرارات متكررة (عاصفة إلى متكررة).
Happy Eyeballs (IPv4/IPv6)، اتصالات موازية لعدة AA/AAAs تقلل الذيل.
إعادة التدوير فقط للطلبات الخفية ؛ جيتر، يحد من إعادة تشغيل الميزانية.

ضبط جهاز حل وقت التشغيل:
  • Java: 'networkaddress. ذاكرة التخزين المؤقت. tl ',' networkaddress. ذاكرة التخزين المؤقت. سلبية. tl '.
  • اذهب: "GODEBUG = netdns = go "/" cgo"، "Resolver. أفضل Go، "DialTimeout'.
  • العقدة: 'dns. SetDefaultResultOrder ("ipv4first')،" lookup "с" all: true ".

10) تبديل GSLB/DNS: الممارسة

قم بخفض TTL من 300→60 24-48 ساعة قبل التبديل المقرر.
احمل مجموعة من نقاط النهاية منخفضة الوزن للتحقق من صحتها.
استخدم المرجح + التحقق الصحي بدلاً من التحديث الكتلي اليدوي للسجلات A.
لـ statics/edge - Anycast ؛ لواجهة برمجة التطبيقات - Geo/Latency + fast L7-feiler.

11) إمكانية الرصد و SLO للاسم

المقاييس:
  • معدل/زمن انتقال استفسارات DNS، نسبة إصابة المخبأ، الأخطاء حسب النوع (SERVFAIL/NXDOMAIN).
  • النسبة المئوية للطلبات ذات الاستجابات القديمة (إذا كانت تستخدم مخبأ قديم).
  • نجاح عمليات المستخدمين في التغييرات المسجلة (SLI الأعمال).
  • p95/p99 وقت الحسم في التطبيقات.
التشخيص:
  • طبقي المسار: العميل → مخبأ محلي → مخبأ عقدي → تكرار مزود → حل المجموعة.
  • مسار NXDOMAIN (الاسم/أخطاء التيبو) و SERVFAIL (قضايا التكرار/حدود الموارد) ارتفاعات.

12) أمثلة التكوين

CoreDNS: إعادة الكتابة ومنطقة الكعب

yaml
.:53 {
log errors cache 60 rewrite name suffix. svc. cluster. local. svc. cluster. local forward. 10. 0. 0. 2 10. 0. 0. 3
}

example. internal:53 {
file /zones/example. internal. signed dnssec
}

تم حل النظام

ini
[Resolve]
DNS=169. 254. 20. 10
FallbackDNS=1. 1. 1. 1 8. 8. 8. 8
Domains=~cluster. local ~internal
DNSSEC=yes

المبعوث: تحديث DNS الديناميكي

yaml dns_refresh_rate: 5s dns_failure_refresh_rate:
base_interval: 2s max_interval: 30s respect_dns_ttl: true

خارجي (دعم المنطقة العامة)

yaml args:
- --source=service
- --source=ingress
- --domain-filter=example. com
- --policy=upsert-only
- --txt-owner-id=cluster-prod

13) قائمة التنفيذ المرجعية (0-30 يومًا)

0-7 أيام

دليل اسم الخدمة، اختيار النموذج (العملاء/جانب الخادم/الهجين).
Basic TTL, enable NodeLocal DNSCache, DNS metrics dashboards.
حظر «الملكية الفكرية الصلبة» في التحضير/الرمز.

8-20 يومًا

خدمات مقطوعة الرأس + SRV لـ gRPC ؛ تم تمكين EndpointSlice.
GSLB/مرجحة للخارجية ؛ الفحوصات الصحية والكناري.
يتم إعداد ميزانية المهلة/إعادة الدفع وإعادة الدفع للعملاء.

21-30 يومًا

) أ (المناطق المنقسمة الأفق والخاصة ؛ DoT/DoH حسب السياسة.
اختبار التبديل (بواسطة TTL) و feilover ؛ بعد التحليل.
تم تمكين سياسات الطرد من الشبكة/EDS.

14) الأنماط المضادة

TTL = 0 في عاصفة → عاصفة تتكرر، تأخيرات لا يمكن التنبؤ بها.
IP/port hardcode, no CNAME/aliases for levels.
تغيير السجلات «يدويًا» بدون فحوصات صحية وكناري.
حاسم عالمي واحد بدون عقدة مخبأ (عنق الزجاجة).
تجاهل ذاكرة التخزين المؤقت السلبية (ارتفاعات NXDOMAIN).
محاولات «شفاء» فشل قاعدة بيانات عبر DNS بدلاً من طبقة البيانات/feilover.

15) مقاييس النضج

100٪ من الخدمات تستخدم الأسماء ؛ لا توجد حالات صعبة الملكية الفكرية.
CoreDNS/NodeLocal في المبيعات، نسبة إصابة المخبأ> 90٪ على العقد.
GSLB مع الفحوصات الصحية، TTL الموثق ومفاتيح runbook.
SRV/EndpointSlice لـ stateful/gRPC، p99 وقت حل في التطبيقات ≤ 20-30 مللي ثانية.
تنبيهات SERVFAIL/NXDOMAIN وتحلل نسبة الإصابة المخبأة.
الشيكات في CI: حظر ': الأحدث' و IP الصلب في الرسوم البيانية/التكوينات.

16)

اكتشاف الخدمة هو عقد اسم ثابت وانضباط ذاكرة التخزين المؤقت. بناء نموذج هجين: توفر DNS تسجيل دخول سريعًا وسهلاً، L7/mesh - الصحة والسياسات الذكية. حافظ على TTL الذكي وذاكرة التخزين المؤقت للمضيف والخدمات مقطوعة الرأس و SRV عند الحاجة، واستخدم GSLB/Anycast للحدود الإقليمية، وراقب NXDOMAIN/SERVFAIL و p99 وقت التصميم. ثم سيكون اسمك موثوقًا به مثل الخدمة نفسها.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.