GH GambleHub

Service Discovery и DNS

Service Discovery и DNS

1) Ինչո՞ ւ է դա անհրաժեշտ

Բաշխված համակարգերում բջիջները հայտնվում և անհետանում են, իսկ հաճախորդները պետք է գտնեն աշխատանքային օրինակներ արագ և հուսալի։ III - անունների համընդհանուր շերտ; www.covery-ը իրական էնդպոինտների տերմինալի ռազմավարություն է 'հաշվի առնելով առողջությունը, քաշը և ուղղման քաղաքականությունը։

Հիմնական նպատակները

կայուն անուններ էֆեմերական հասցեների փոխարեն,

ճշգրիտ, բայց ոչ աղմկոտ ապդեյթ (հավասարակշռություն թարմ և TTL-ի միջև),

քայքայումը առանց անկման (failover/health-intk),

կլիենտում առնվազն «գուշակություններ» 'թայմաուտներ, ռեգրաններ, քեշի քաղաքականություն։

2) wwww.covery մոդելները

2. 1 Հաճախորդ (client-side)

Հաճախորդը ինքն է թույլ տալիս անունը էնդպոինտների հավաքածուի մեջ և հավասարակշռում է (round-robin, EWMA, hash բանալին)։ Աղբյուրը 'CSA (A/AAAA/MSV), ծառայությունն-ռուսական (Consul/Eureka), ստատիկ ցուցակը։

Պլյուսներ ՝ SPOF-ից ավելի քիչ, ճկուն ալգորիթմներ։

Մինուսները 'հաճախորդների երկիմաստությունը, ավելի դժվար է թարմացնել տրամաբանությունը։

2. 2 Սերվերի (server-side)

Հաճախորդը գնում է front/LB (L4/L7, gateway/ingress)։ Հավասարակշռությունը և health-interking-ը 'շարժիչի/հավասարակշռիչի կողմում։

Պլյուսներ ՝ քաղաքականության միասնական տեղը, դիտարկումը։

Մինուսներ 'անհրաժեշտ է բարձր հասանելի պարիմետր (N + 1, multi-AZ)։

2. 3 Հիբրիդ

RF-ն տալիս է մուտքի կետերի մի շարք (տարածաշրջանային LB), այնուհետև 'L7/mesh հավասարակշռություն։

3) IV 'հիմքեր, ձայնագրություններ և TTL-ներ։

3. 1 Հիմնական տեսակներ

A/AAAA-ն IPv4/IPv6 է։

CNAME-ը այլ անունով ալիս է (ոչ apex)։

SRV — `_service._proto. name '07/պորտ/գերակայություն (gRPC/LDAP/SIP և այլն)։

TXT/HTTTPS/HTTPS - մետատվյալներ/ցուցիչներ (ներառյալ HTTP-discovery-ի համար)։

NS/SOA-ը գոտու լուծարումն ու ատրիբուտներն են։

3. 2 TTL և քաշ կասկադ

Քեշը ունի 'ՕՀ-ի ռեզոլվերներ, www.stub-ռեզոլվերներ, հանգույցներ (NodeEntal III/Windows III), պրովայդեր, միջանկյալ ռեքսուրներ և գրադարանի հաճախորդի մոտ։ Իրական թարմություն = min (TTL, հաճախորդի քաղաքականություն)։ Բացասական քեշը (NXDOMAIN) նույնպես քշվում է "SOA-ով։ MINIMUM`/`TTL`.

Առաջարկություններ

Prod - TTL 30-120s դինամիկ ձայնագրությունների համար, 300-600s կայուն համար։

Անցումների համար (ֆեյլովեր) պատրաստեք կրճատված TTL-ը նախապես, ոչ թե «հրդեհի ժամանակ»։

Հաշվի առեք sticky-cash գրադարանները (Java/Go/Node), անհրաժեշտության դեպքում TTL ռեզոլվերները տեղադրեք ռանտայմի ներսում։

4) ՌՖԻ հավասարակշռության և անկայունության քաղաքականությունը

Weighted RR - քաշը A/AAAA/VPV-ում։

Failover-ը առաջնային/ստացիոնար հավաքածուներ է (դրսում health-71 k)։

Geo/Latency-ը «ամենամոտ» ROR/տարածաշրջանի պատասխանն է։

Anycript - մեկ IP տարբեր POP (BGP); դիմացկուն է անհաջողություններին։

Split-horizon - տարբեր պատասխաններ SDC/on-prem և ինտերնետում։

GSLB-ը գլոբալ հավասարակշռող է health-ստուգումների և քաղաքական գործիչների հետ (latency, geo, capacity)։

5) Health-winks և թարմ

ԲԿՄԱ-ն ինքնին «հիմար» է, նա չգիտի բեքենդերի առողջությունը։ Այսպիսով,

Կամ արտաքին health-interker-ը կառավարում է ձայնագրությունները/քաշները (GSLB, Route53/Traffic-policy, external-105 + փորձարկումներ)։

Կամ հաճախորդը/mesh կատարում է ակտիվ www.ier-ej.ru և retry բազմաթիվ էնդպոինտներից։

6) Kubernetes: www.covery տուփից

Ծառայողական անուններ ՝ "svc. namespace. svc. cluster. local`.

ClusterIP: կայուն վիրտուալ IP + kube-proxy/ebpf։

Headless Express («clusterIP: None»), տալիս է A-գրառումները pod-ի վրա (կամ նրանց ենթաբաժինը), XXV-ը մրցույթի համար։

EndpointSlice: Endpoints-ի լայնացված ցանկը (փոխարինումը Endpoints)։

Պիտեր III 'RF ռեզոլեր 2019; plagines rewrite/template/forward/cache; «kube-105» գոտի։

NodeContal DNSCache-ը 'տեղական քեշը հաճախորդների վրա ավելի քիչ է, քան latency-ը և apstrim-ռեզոլվերի խնդիրների ընդհատումը։

Օրինակ ՝ Headless + VI

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. payments. prod. svc. cluster. Altal '(VPV) և ստանալ 108/պորտ/քաշը։

DigMaP (SystigMap հատվածը)

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
}

NodeEntal III (գաղափարներ)

DaemonLine-ը տեղական ռեզոլմենտով '169։ 254. 20. 10`; kubelet ցույց է տալիս այս կետը։

Նվազեցնում է p99 name-resolution-ը և պաշտպանում է apstrim-III-ի «ֆլամպից»։

7) Service discovery вне K8s

Consul 'գործակալ, health-interks, ծառայողական-կատալոգը, SNA ինտերֆեյսը («.consul»), KV ուլիգների համար։

Eureka/ZooKeeper/etcd: JVM/legacy; հաճախ sidecar/դարպասի հետ։

Envoy/Istio: EDS/xDS (Endpoint Discovery) և SDS (գաղտնիքները); ծառայությունները հայտարարվում են www.l-plane միջոցով։

8) RF անվտանգությունը

DNSSEC 'ձայնագրությունների ամբողջականության պաշտպանություն (գոտիների ստորագրություն)։ Քննադատական է հանրային օրինագծերի համար։

DoT/DoH 'ջրանցքի կոդավորումը ռեկուրսորի (ներքին քաղաքականությունը, համատեղելիությունը)։

ACL-ը և split-horizon-ը 'մասնավոր տարածքը միայն SDC/MSN-ից։

Պաշտպանությունը քեշ թունավորումից 'randomations/ID, կարճ TTL դինամիկայի համար։

Egress. Թույլ տվեք CSKA-ին միայն վստահելի ռեզոլիվներ, ամսագրեր։

9) Հաճախորդների վարքագիծը և ռետրան

Հարգեք TTL: Մի հապաղեք անվերջ, մի՛ «վերափոխեք» հաճախակի ռեզոլվամներով (փոթորիկ դեպի ռեկուրսոր)։

Happy Eyeballs (IPv4/IPv6), զուգահեռ կոնեկտները մի քանի A/AAAA-ին նվազեցնում են tail-ը։

Retrai միայն idempotent պահանջների դեպքում։ ջիտթեր, budget retrav սահմանափակումը։

Rantaima ռետոլվերի նուրբ ուղղումը

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/RF-2019. պրակտիկա

Նվազեցրեք TTL-ը 300-60-ից 24-48 ժամվա ընթացքում մինչև պլանային։

Պահեք էնդպոինտների կանարյան հավաքածու, որը մի փոքր կշռում է վալիդացիայի համար։

Օգտագործեք weighted + health-link-ը 'A-գրառումների ձեռքով զանգվածային ապդեյտի փոխարեն։

Ստատիկ/edge - Anycript; API-ի համար - Geo/Latency + արագ L7-ֆեյլերը։

11) Դիտողությունն ու SLO-ն անունի համար

Մետրիկները

Rate/latency III հարցումները, cache hit-ratio, տեսակների սխալները (SERFAIL/NXDOMAIN)։

Stale-պատասխանների հետ հարցումների մասնաբաժինը (եթե օգտագործում եք stale-cache)։

Օգտագործողի վիրահատությունների հաջողությունը ձայնագրությունների փոփոխության ժամանակ (բիզնես-SLI)։

p95/p99 resolve-time ծրագրերում։

Ախտորոշումը

Հեռացրեք ձեր ճանապարհը. Հաճախորդը տեղական քասշ է, իսկ կլաստերային ռեզոլերը ՝ պրովայդերի ռեկորդակիր։

Հետևեք NXDOMAIN-ի (անունների/տպագրության սխալները) և SERFAIL-ի (ռեկուրսորի/ռեսուրս-լիմիտի խնդիրները)։

12) Միգրացիայի օրինակներ

DIA: rewrite և stub գոտի

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
}

delemd-resolved (ֆորս resolver)

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

Envoy: դինամիկ MS-refresh

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

external-2019 (հանրային գոտու աջակցություն)

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/հիբրիդ)։

Հիմնական TTL-ը, միացրեք NodeEngal DNSCache-ը, dashbords III-մետրիկը։

«Կոշտ IP» արգելքը դելգայում/կոդում։

8-20 օր

Headless-ծառայություններ + MSV gRPC-ի համար; EndpointSlice-ը ներառված է։

GSLB/weighted արտաքին համար; health-winks և կանարեյկա։

Timauts/retray հաճախորդների և retrav բյուջեին։

21-30 օր

Split-horizon և մասնավոր տարածքներ; DoT/DoH քաղաքականության մասին։

Անցումների թեստը (TTL) և ֆեյլերը։ փոստի վերլուծություն։

Mesh/EDS քաղաքականությունները, www.ier-ej.ru-ը ներառված են։

14) Anti-patterna

TTL = 0-ը վաճառում է փոթորիկը ռեկուրսորների, անկանխատեսելի ուշացումների համար։

Hardcod IP/2019, CNAME/aliass մակարդակների համար։

«Ձեռքով» ձայնագրությունների փոփոխությունը առանց health-winks և կանարեկների։

Մի գլոբալ ռեզոլեր առանց քեշի հանգույցների վրա (նեղ տեղ)։

Բացասական քեշի անտեսումը (NXDOMAIN)։

Փորձեր «բուժել» BD-ի հրաժարումը RF-ի միջոցով տվյալների/ֆեյլերի մակարդակի փոխարեն։

15) Հասունության մետրերը

Ծառայությունների 100 տոկոսը օգտագործում են անուններ։ զրոյական դեպքեր hard-IP։

MS/NodeEngal-ը վաճառում է, cache hit-ratio> 90 տոկոսը հանգույցներում։

GSLB-ը health-winks-ից, որոնք փաստարկվել են TTL-ի և runbook-ի միջոցով։

MSV/EndpointSlice-ը ստատեֆուլ/gRPC-ի համար, p99 resolve-time-ը 20-30 MS ծրագրերում։

Ալերտները SERFAIL/NXDOMAIN-ով և cache hit-ratio-ի դեգրադացիան։

Ստուգումներ CI-ում 'արգելք' latest 'և hard-IP գծապատկերներում/գրամներում։

16) Եզրակացություն

Windowery-ը կայուն անվան և քեշի կարգապահության պայմանագիր է։ Կառուցեք հիբրիդային մոդել 'RF-ն տալիս է արագ և պարզ ստանդարտ, L7/mesh - առողջություն և խելացի քաղաքականություն։ Աջակցեք խելացի TTL-ին, քեշին հանգույցներում, headless-ծառայություններում և SVV-ում, որտեղ պետք է օգտագործեք GSLB/Anycript-ը տարածաշրջանների սահմանների համար, հետևեք NXDOMAIL/SERVAIL և P99 RESSOLOLVE E E TTiMTTE TiME TiME E TE TE TiMTE E Այդ դեպքում ձեր անունը նույնքան հուսալի կլինի, որքան ծառայությունը։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։