GH GambleHub

Service Discovery и DNS

Service Discovery и 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 вне 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: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.

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.