GH GambleHub

کشف سرویس и DNS

سرویس کشف и DNS

1) چرا شما به آن نیاز دارید

در سیستم های توزیع شده، گره ها ظاهر می شوند و ناپدید می شوند و مشتریان باید نمونه های کار سرویس را به سرعت و قابل اعتماد پیدا کنند. DNS - لایه نام جهانی ؛ کشف سرویس - یک استراتژی برای تطبیق نام سرویس با نقاط پایانی واقعی، با توجه به سیاست سلامت، وزن و مسیریابی.

اهداف کلیدی:
  • نام های پایدار به جای آدرس های کوتاه مدت،
  • به روز رسانی دقیق، اما نه پر سر و صدا (تعادل بین طراوت و TTL)،
  • تخریب بدون سقوط کامل (شکست/بررسی سلامت)،
  • حداقل «حدس زدن» در مشتری: زمان بندی، بازپرداخت، سیاست های کش.

2) مدل های کشف خدمات

2. 1 سمت مشتری

مشتری خود نام را به مجموعه ای از نقاط پایانی و تعادل (round-robin، EWMA، hash by key) حل می کند. منبع - DNS (A/AAAA/SRV)، رجیستری سرویس (Consul/Eureka)، لیست استاتیک.

مزایا: SPOF های مرکزی کمتر، الگوریتم های انعطاف پذیر.
منفی: ناهمگونی مشتری، آن را سخت تر برای به روز رسانی منطق است.

2. 2 سرور (سمت سرور)

مشتری به جلو/LB (دروازه L4/L7/ورودی) می رود. تعادل و بررسی سلامت - در سمت پروکسی/متعادل کننده.

مزایا: یک مکان واحد از سیاست، قابلیت مشاهده.
منفی: نیاز به یک محیط بسیار در دسترس (N + 1، چند AZ).

2. 3 ترکیبی

DNS مجموعه ای از نقاط ورود (LB های منطقه ای) را می دهد، سپس تعادل را L7/mesh می کند.

3) DNS: مبانی، سوابق و TTL

3. 1 انواع پایه

A/AAAA - آدرس های IPv4/IPv6

CNAME - نام مستعار به نام دیگری (نه به apex).
SRV - '_ service. _ proto. نام → میزبان/پورت/وزن/اولویت (برای gRPC/LDAP/SIP، و غیره).
TXT/HTTP/HTTPS - ابرداده/اشاره گر (از جمله برای کشف HTTP).
NS/SOA - نمایندگی منطقه و ویژگی ها.

3. 2 TTL و کش

حافظه پنهان در دسترس است: حل سیستم عامل، حل خرد محلی، گره (NodeLocal DNS/CoreDNS)، ارائه دهنده، recursers متوسط و مشتری کتابخانه. تازگی واقعی = دقیقه (TTL، سیاست مشتری). کش منفی (NXDOMAIN) نیز بر روی 'SOA ذخیره می شود. حداقل "/" TTL ".

توصیه ها:
  • تولید - TTL 30-120 ثانیه برای سوابق پویا، 300-600 ثانیه برای پایدار.
  • برای سوئیچ ها (feilover)، TTL کاهش یافته را از قبل آماده کنید، و نه «در هنگام آتش سوزی».
  • حافظه نهان چسبنده کتابخانه ها (Java/Go/Node) را در نظر بگیرید - در صورت لزوم، TTL حل کننده را در زمان اجرا پیکربندی کنید.

4) سیاست های تعادل DNS و تحمل خطا

وزن RR - وزن در A/AAAA/SRV.
شکست - مجموعه های اولیه/ثانویه (بررسی سلامت در خارج).
Geo/Latency - پاسخ به نزدیکترین POP/منطقه.

Anycast - یک IP در POP های مختلف (BGP) ؛ مقاوم در برابر اختلالات منطقه ای

Split-horizon - پاسخ های مختلف در داخل VPC/on-prem و در اینترنت.
GSLB یک تعادل جهانی با بررسی و سیاست های بهداشتی (تاخیر، جغرافیایی، ظرفیت) است.

5) بررسی سلامت و طراوت

خود DNS «گنگ» است: سلامت backend ها را نمی داند. بنابراین:
  • یا یک بررسی کننده سلامت خارجی سوابق/وزن را مدیریت می کند (نمونه های GSLB، Route53/Traffic-policy، dns + خارجی).
  • یا/مشتری مش باعث می شود فعال outlier-ejection و سعی کنید از بسیاری از نقاط پایانی.

6) Kubernetes: کشف خارج از جعبه

نام خدمات: svc فضای نام. اس وی سی خوشه بندی محلی ".
ClusterIP: IP مجازی پایدار + kube-proxy/ebpf.
سرویس بدون سر ('clusterIP: None'): سوابق A را به غلاف (یا زیر دامنه های آنها)، SRV برای پورت ها می دهد.
EndpointSlice: لیست مقیاس پذیر از نقاط پایانی (جایگزین Endpoints).
CoreDNS: حل کننده DNS خوشه ؛ پلاگین بازنویسی/قالب/جلو/کش; منطقه «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 را حل کند. پرداخت ها دانلود کنید. اس وی سی خوشه بندی محلی (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/میراث ؛ اغلب در رابطه با یک sidecar/دروازه.
Envoy/Istio: EDS/xDS (Endpoint Discovery) و SDS (secrets) خدمات از طریق کنترل هواپیما اعلام می شود.

8) امنیت DNS

DNSSEC: حفاظت از یکپارچگی رکورد (امضای منطقه). انتقاد از حوزه های عمومی

DoT/DoH: کانال رمزگذاری بازگشتی (سیاست های داخلی، سازگاری).
ACL و تقسیم افق: منطقه خصوصی - فقط از VPC/VPN.
حفاظت در برابر مسمومیت کش: تصادفی سازی پورت/شناسه، TTL های کوتاه برای پویایی.
Policies on egress: اجازه می دهد DNS تنها در حل کننده های قابل اعتماد، ورود به سیستم.

9) رفتار مشتری و عقب نشینی

احترام به TTL: بی وقفه ذخیره نکنید، با قطعنامه های مکرر «بی قانون» نباشید (طوفان به بازگشتی).
Happy Eyeballs (IPv4/IPv6)، اتصالات موازی به چندین A/AAAAs دم را کاهش می دهد.
Retrays فقط برای درخواست idempoint ؛ jitter، محدود کردن بازپرداخت بودجه.

تنظیم دقیق حل کننده زمان اجرا:
  • جاوا: آدرس شبکه. کش. tt 'l،' آدرس شبکه. کش. منفی است. بهش بگو.
  • برو: 'GODEBUG = netdns = go '/' cgo', 'Resolver. ترجیحاً «Go»، «DialTimeout».
  • گره: DNS. setDefaultResultOrder ('ipv4first') ',' lookup 'с' all: true '.

10) تعویض GSLB/DNS: تمرین

TTL را از 300 → 60 24-48 ساعت قبل از تعویض برنامه ریزی شده کاهش دهید.
نگه داشتن یک مجموعه قناری از نقاط پایانی وزن کم برای اعتبار.
استفاده از وزن + بررسی سلامت به جای به روز رسانی توده دستی از سوابق A.
برای استاتیک/لبه - Anycast ؛ برای API - Geo/Latency + L7-feiler سریع.

11) قابلیت مشاهده و SLO برای نام

معیارها:
  • نرخ/تأخیر پرس و جوهای DNS، نسبت ضربه کش، خطاهای نوع (SERVFAIL/NXDOMAIN).
  • درصد درخواستها با پاسخهای قدیمی (در صورت استفاده از stale-cache).
  • موفقیت عملیات کاربر در تغییرات رکورد (SLI کسب و کار).
  • p95/p99 زمان حل و فصل در برنامه های کاربردی.
تشخیص:
  • لایه بندی مسیر: client → local cache → nodal cache → cluster resolver → provider recursion.
  • پیگیری 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-refresh پویا

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

dns خارجی (پشتیبانی از منطقه عمومی)

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

13) چک لیست پیاده سازی (0-30 روز)

0-7 روز

دایرکتوری نام سرویس، انتخاب مدل (client-/server-side/hybrid).
TTL پایه، داشبورد معیارهای NodeLocal DNSCache، DNS را فعال کنید.
ممنوعیت «IP سخت» در پیکربندی/کد.

8-20 روز

خدمات بی سر + SRV برای gRPC ؛ EndpointSlice فعال شده است.
GSLB/وزن برای خارجی ؛ چک های بهداشتی و قناری.
زمانبندی/بازپرداخت مشتری و بودجه بازپرداخت پیکربندی شده است.

21-30 روز

مناطق تقسیم افق و خصوصی ؛ سیاست گذاری DoT/DoH

تست سوئیچینگ (توسط TTL) و feilover ؛ پس از تحلیل

Mesh/EDS، سیاست های خروجی بیرونی فعال می شوند.

14) ضد الگوهای

TTL = 0 در تولید → طوفان به بازگشت، تاخیر غیر قابل پیش بینی.
کد سخت IP/پورت، بدون CNAME/نام مستعار برای سطوح.
تغییر سوابق «دستی» بدون سلامت چک و قناری.
یک حل کننده جهانی بدون حافظه پنهان گره (تنگنا).
نادیده گرفتن کش منفی (NXDOMAIN spikes).
تلاش برای «التیام» خرابی پایگاه داده از طریق DNS به جای لایه data/feilover.

15) معیارهای بلوغ

100٪ از خدمات از نام استفاده می کنند ؛ صفر موارد سخت IP.
CoreDNS/NodeLocal در فروش، کش ضربه نسبت> 90٪ در گره.
GSLB با چک های بهداشتی، TTL مستند و سوئیچ های runbook.
SRV/EndpointSlice برای حالت/gRPC، زمان حل و فصل p99 در برنامه های کاربردی ≤ 20-30 ms.
هشدار برای SERVFAIL/NXDOMAIN و تخریب نسبت ضربه کش.
چک در CI: ممنوعیت ': آخرین' و سخت IP در نمودار/پیکربندی.

16) نتیجه گیری

کشف سرویس یک قرارداد نام پایدار و نظم و انضباط کش است. ساخت یک مدل ترکیبی: DNS ورود سریع و آسان، L7/mesh - سلامت و سیاست های هوشمند را می دهد. حفظ TTL هوشمند، حافظه پنهان میزبان، خدمات بدون سر و SRV در صورت نیاز، استفاده از GSLB/Anycast برای مرزهای منطقه ای، نگه داشتن چشم در NXDOMAIN/SERVFAIL و P99 حل و فصل زمان. سپس نام شما به عنوان یک دارایی قابل اعتماد به عنوان خدمات خود خواهد بود.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.