Logo GH

Service Discovery we DNS

Service Discovery we DNS

1) Bu näme üçin zerur?

Paýlanan ulgamlarda düwünler peýda bolýar we ýitýär, müşderiler bolsa hyzmatyň iş nusgalaryny çalt we ygtybarly tapmalydyrlar. DNS - atlaryň ähliumumy gatlagy; service discovery - saglygy, agramy we ugrukdyryş syýasatyny göz öňünde tutup, hyzmatyň adyny hakyky endpointlere deňeşdirmek strategiýasy.

Esasy maksatlar:
  • efemer salgylarynyň ýerine durnukly atlar,
  • takyk, ýöne şowhunly täzelenme (tazelik bilen TTL arasyndaky deňagramlylyk),
  • doly ýykylmazdan pese gaçmak (failover/health-check),
  • müşderide iň az "çaklamalar": wagt, retralar, keş-syýasatlar.

2) service discovery modelleri

2. 1 Müşderi (client-side)

Müşderiniň özi ady endpointler toplumyna goýberýär we deňagramlaşdyrýar (round-robin, EWMA, açar boýunça heş). Çeşme - DNS (A/AAAA/SRV), hyzmat sanawy (Consul/Eureka), statik sanawy.

Artykmaçlyklary: merkezi SPOF-dan az, çeýe algoritmler.
Minuslar: müşderileriň birmeňzeşligi, logikany täzelemek has kyn.

2. 2 Serwer (serwer-side)

Müşderi front/LB (L4/L7, gateway/ingress) ugraýar. Deňagramlylyk we health-checking proxy/balanslaýjynyň tarapynda.

Artykmaçlyklary: syýasatyň ýeke-täk ýeri, syn edilmegi.
Minuslar: ýokary elýeterli perimetr gerek (N + 1, multi-AZ).

2. 3 Gibrid

DNS giriş nokatlarynyň toplumyny (sebitleýin LB) berýär, soňra - L7/mesh deňagramlylygy.

3) DNS: esaslar, ýazgylar we TTL

3. 1 Esasy görnüşleri

A/AAAA - IPv4/IPv6 salgylary.
CNAME - başga adyň aliasy (apex däl).
SRV — `_service._proto. name '→ host/port/agram/ileri (gRPC/LDAP/SIP we ş.m.).
TXT/HTTP/HTTPS - meta-maglumatlar/görkezijiler (şol sanda HTTP-discovery üçin).
NS/SOA - zona tabşyrmak we atributlar.

3. 2 TTL we nagt kaskad

Keş bar: OS rezolweri, lokal stub-rezolweri, düwünleri (NodeLocal DNS/CoreDNS), üpjün ediji, aralyk rekursorlary we kitaphananyň müşderisi. Hakyky täzelik = min (TTL, müşderiniň syýasaty). Negatiw nagt pul (NXDOMAIN) hem 'SOA arkaly kesilýär. MINIMUM`/`TTL`.

Teklipler:
  • Prod - TTL dinamiki ýazgylar üçin 30-120s, durnukly ýazgylar üçin 300-600s.
  • Geçiş üçin (feýlower) "ýangyn wagtynda" däl-de, öňünden azaldylan TTL taýýarlaň.
  • Kitaphananyň sticky-kesşini (Java/Go/Node) göz öňünde tutuň - zerur bolsa, TTL rezolwerini kärendäniň içinde sazlaň.

4) DNS-deňagramlylyk we şowsuzlyga çydamlylyk syýasaty

Weighted RR - A/AAAA/SRV agramy.
Failover - ilkinji/ikinji derejeli toplumlar (daşardan saglyk-barlag).
Geo/Latency - "iň ýakyn" ROP/sebite jogap.
Anycast - dürli POP (BGP) -de bir IP; sebitleýin şowsuzlyklara durnukly.
Split-horizon - VPC/on-prem we internetde dürli jogaplar.
GSLB - saglyk barlaglary we syýasatlary (latency, geo, capacity) bilen global deňagramlaşdyryjy.

5) Saglyk-barlag we täzelik

DNS-iň özi "samsyk": arka taraplaryň saglygyny bilmeýär. Şonuň üçin:
  • Ýa-da daşarky saglyk barlagçysy ýazgylary/agramlary dolandyrýar (GSLB, Route53/Traffic-policy, external-dns + synaglary).
  • Ýa-da müşderi/mesh köp sanly endpointlerden işjeň outlier-ejection we retry edýär.

6) Kubernetes: gutudan discovery

Hyzmat atlary: 'svc. namespace. svc. cluster. local`.
ClusterIP: durnukly wirtual IP + kube-proxy/ebpf.
Headless Service ('clusterIP: None'): A-ýazgylary pod 'lara (ýa-da olaryň alt domenine), portlar üçin SRV berýär.
EndpointSlice: giňeldilip bilinýän endpoints sanawy.
CoreDNS: klaster DNS rezolweri; pluginleri rewrite/template/forward/cache; 'kube-dns' zonasy.
NodeLocal DNSCache: düwündäki lokal kesiş → az latency we artykmaç rezolwer problemalarynyň öňüni almak.

Mysal: Headless + SRV

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

Müşderi '_ grpc. _ tcp. payments. prod. svc. cluster. local '(SRV) we host/port/agram almak.

CoreDNS (ConfigMap bölegi)

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 (ideýalar):
  • DaemonSet lokal rezolwer bilen '169. 254. 20. 10`; kubelet bu nokady görkezýär.
  • p99 name-resolution-y peseldýär we "flapdan" apstrim-DNS-i goraýar.

7) Service discovery daşynda K8s

Consul: agent, health-checks, hyzmat katalogy, DNS interfeýsi ('.consul'), konfigurasiýalar üçin KV.
Eureka/ZooKeeper/etcd: JVM/legacy üçin sanawlar; köplenç sidecar/şlýuz bilen bilelikde.
Envoy/Istio: EDS/xDS (Endpoint Discovery) we SDS (syrlar); hyzmatlar control-plane arkaly yglan edilýär.

8) DNS howpsuzlygy

DNSSEC: ýazgylaryň bitewiligini goramak (zolaklaryň goly). Jemgyýetçilik domenleri üçin möhüm.
DoT/DoH: rekursor üçin kanalyň şifrlenmegi (içerki syýasatlar, laýyklyk).
ACL we split-horizon: hususy zona - diňe VPC/VPN-den.
Kesh zäherlenmesinden goramak: port/ID randomizasiýasy, dinamika üçin gysga TTL.
Egress syýasaty: DNS-e diňe ynanylan rezolwerlerde rugsat beriň, journalurnalyň.

9) Müşderileriň özüni alyp barşy we retra

TTL-e hormat goýuň: tükeniksiz kesişmäň, ýygy-ýygydan "çäklendirmäň" (gaýtalaýjy tupan).
Happy Eyeballs (IPv4/IPv6), birnäçe A/AAAA paralel konnektler tail azaldýar.
Retralar diňe idempotent haýyşlarynda; jitler, budget retraýlarynyň çäklendirilmegi.

Rentaime rezolwerini inçe sazlamak:
  • Java: `networkaddress. cache. ttl`, `networkaddress. cache. negative. ttl`.
  • Go: `GODEBUG=netdns=go`/`cgo`, `Resolver. PreferGo`, `DialTimeout`.
  • Node: `dns. setDefaultResultOrder('ipv4first')`, `lookup` `all bilen:true`.

10) GSLB/DNS-geçiş: tejribe

TTL-i meýilleşdirilen geçişden 24-48 sagat öň 300 → 60-dan peseldiň.
Tassyklamak üçin pes agramly endpointleriň kanar toplumyny saklaň.
A ýazgylarynyň köpçülikleýin täzelenmesiniň ýerine weighted + health-check ulanyň.
Statika/edge üçin - Anycast; API üçin - Geo/Latency + çalt L7 feylower.

11) At üçin synlamak we SLO

Metrikler:
  • Rate/latency DNS-soraglary, cache hit-ratio, görnüşleri boýunça ýalňyşlyklar (SERVFAIL/NXDOMAIN).
  • Stale-jogaplar bilen soraglaryň paýy (stale-cache ulanýan bolsaňyz).
  • Ýazgylar çalşylanda ulanyjy amallarynyň üstünligi (business-SLI).
  • p95/p99 resolve-time programmalarda.
Diagnostika:
  • Ýoly düzüň: müşderi → ýerli keş → nod keş → klaster rezolweri → üpjün edijiniň rekursory.
  • NXDOMAIN (atlaryň ýalňyşlyklary/ýalňyşlyklar) we SERVFAIL (rekursor problemalary/çeşme çäkleri) partlamalaryny yzarlaň.

12) Konfigurasiýa mysallary

CoreDNS: rewrite we stub zonasy

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
}

systemd-resolved

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

Envoy: dinamiki DNS-refresh

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

external-dns (köpçülik zolagyny goldamak)

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

13) Giriş çek-sanawy (0-30 gün)

0-7 gün

Hyzmat atlarynyň katalogy, modeli saýlamak (client-/server-side/gibrid).
Esasy TTL, NodeLocal DNSCache, DNS metrik daşbordlary goşuň.
Konfigada/kodda "gaty IP" gadaganlygy.

8-20 gün

gRPC üçin Headless-services + SRV; EndpointSlice açyldy.
Daşarky üçin GSLB/weighted; saglyk barlaglary we kanareýa.
Müşderileriň wagtlary/retraýlary we retraýlaryň býudjeti sazlandy.

21-30 gün

Split-horizon we hususy zolaklar; Syýasat boýunça DoT/DoH.
Geçiş synagy (TTL boýunça) we feýlower; post-derňew.
Mesh/EDS, outlier-ejection syýasatlary girizildi.

14) Anti-patternler

TTL = 0 -da → rekursorlara tupan, garaşylmadyk gijikdirmeler.
IP/port hardcode, derejeler üçin CNAME/alias ýoklugy.
Saglyk barlaglary we kanareýalar bolmazdan "el bilen" ýazgylary üýtgetmek.
Düwünlerde kesişsiz bir global rezolver (dar ýer).
Negatiwleri äsgermezlik etmek (NXDOMAIN partlamalary).
Maglumat/feýlower derejesiniň ýerine DNS arkaly DB şowsuzlygyny "bejermek" synanyşyklary.

15) Kämillik ölçegleri

Hyzmatlaryň 100% -i atlary ulanýar; nol hard-IP halatlary.
CoreDNS/NodeLocal prodda, cache hit-ratio> 90% düwünlerde.
TTL we runbook geçişleri bilen resminamalaşdyrylan saglyk barlaglary bilen GSLB.
SRV/EndpointSlice stateful/gRPC üçin, p99 resolve-time programmalarda ≤ 20-30 ms.
SERVFAIL/NXDOMAIN we degradasiýa boýunça alertler cache hit-ratio.
CI barlaglary: charts/konfigurasiýalarda ': latest' we hard-IP gadaganlygy.

16) Netijenama

Service discovery - durnukly at we kesh düzgüni hakynda şertnama. Gibrid model guruň: DNS çalt we ýönekeý giriş berýär, L7/mesh - saglyk we akylly syýasatçylar. Akylly TTL-leri, düwünlerdäki nagt pullary, headless-hyzmatlary we SRV-leri zerur ýerlerde saklaň, sebitleriň çäkleri üçin GSLB/Anycast ulanyň, NXDOMAIN/SERVFAIL we p99 resolve-time yzarlaň. Şonda adyňyz hyzmatyň özi ýaly ygtybarly aktiw bolar.

Contact

Biziň bilen habarlaşyň

Islendik sorag ýa-da goldaw boýunça bize ýazyp bilersiňiz.Biz hemişe kömek etmäge taýýar.

Telegram
@Gamble_GC
Integrasiýany başlamak

Email — hökmany. Telegram ýa-da WhatsApp — islege görä.

Adyňyz obýýektiw däl / islege görä
Email obýýektiw däl / islege görä
Tema obýýektiw däl / islege görä
Habar obýýektiw däl / islege görä
Telegram obýýektiw däl / islege görä
@
Eger Telegram görkezen bolsaňyz — Email-den daşary şol ýerden hem jogap bereris.
WhatsApp obýýektiw däl / islege görä
Format: ýurduň kody we belgi (meselem, +993XXXXXXXX).

Düwmäni basmak bilen siz maglumatlaryňyzyň işlenmegine razylyk berýärsiňiz.