Înțeleg că DNS a fost conceput pentru rezoluția numelui, nu pentru echilibrarea încărcăturii.
Pentru ambele, deoarece (aproape) toate înregistrările pot fi setate, prin urmare, pentru o anumită întrebare, un client poate obține mai multe răspunsuri și apoi este liber să aleagă orice articol preferă.
De aceea, un tipar frecvent este round-robin printre răspunsuri, astfel încât clientul alege „primul” articol, dar acesta va fi diferit de fiecare dată.
Desigur, un client poate implementa un algoritm mai inteligent, special pentru trecerea la IPv6 cu A
și aaaa
înregistrări, vezi RFC 8305 „Happy Eyeballs Version 2: Better Connectivity Using Concurrency”, dar acesta nu mai este echilibrul de încărcare.
Deci totul depinde de ce cantitate de „inteligență” există din partea clientului.
SRV
înregistrările permit codificarea atât a unei priorități (fail over) cât și a unei greutăți (echilibru de încărcare) pentru orice protocol prin TCP sau UDP și permite să nu mai fie nevoie să codificați numerele de port. Din păcate, browserele nu l-au implementat niciodată.
Iterația mai nouă sunt SVCB
și HTTPS
înregistrări care permit cam același lucru.
Rețineți acest lucru de fapt în proiectul actual:
Înregistrările SRV specifică o „greutate” pentru echilibrarea sarcinii randomizate dezechilibrate. SVCB acceptă doar echilibrarea de încărcare aleatorie echilibrată, deși ponderile ar putea fi adăugate printr-un viitor SvcParam.
Ca urmare a:
Ce se întâmplă dacă vreau un algoritm de echilibrare a sarcinii mai complex în afară de round robin?
Astăzi, asta înseamnă SRV
înregistrări și ceva inteligență în aplicație (partea client). Sau un server de nume mai inteligent care își schimbă răspunsurile pe baza factorului dinamic extern (ceea ce fac CDN-urile, de exemplu).
Problema de bază cu care se confruntă echilibrarea încărcăturii la nivel DNS este adaptată la TTL-uri și pentru că unii rezolutori nu vor respecta valori prea mici pentru aceasta.
Trebuie să vă amintiți, de asemenea, că serverul de nume autorizat care are datele vede doar serverul de nume recursiv pe care clientul îl folosește de cele mai multe ori, nu clientul însuși. Deci, alegerile sale sunt limitate și de asta.