Server DNS di bilanciamento del carico: UDP / TCP


10

Mi è stato chiesto di ricostruire la nostra infrastruttura di bilanciamento del carico nel data center.

La richiesta originale era di bilanciare il carico dei server FTP. Ho provato a farlo utilizzando l'attuale bilanciamento del carico ( Piranha / LVS), ma non sono riuscito a farlo funzionare. Non solo perché c'è poca o nessuna documentazione per questo software. Dato che Piranhaè considerato deprecato, ci sono passato HAProxydopo un paio di giorni a provare, che ha fatto il lavoro in una frazione del tempo trascorso Piranha.

Quindi ho installato il bilanciamento del carico FTP (modalità passiva). Ora, mi è stato chiesto di sostituire l'intero bilanciamento del carico Piranha nel data center. Nell'attuale configurazione Piranha, abbiamo diversi server Web, server IIS .... aaaand DNS .

No, ecco il punto:
HAProxysembra essere un LB comunemente usato, ma non è in grado di gestirloUDP load balancing . Questo è un peccato, dal momento che mi piace come HAProxyfunziona. Quindi ho cercato su Google molto e ho trovato diverse cose. Molte persone sembrano usare LVScome LB per DNS (TCP / UDP). Alcuni usano dlbDNS, altri usano lbnamede altri usano netfilter / iptables.

Dal momento che vorrei attenermi HAProxyai server FTP, HTTP, IIS, mi sono confuso nell'usarlo fianco a fianco LVS.

Requisiti:
2 istanze LB con failover
2 server DNS (già esistenti) con failover
Più server back-end (http, applicazione, ecc ...)

Domande:
è possibile? È necessario il bilanciamento del carico UDP sui server DNS? C'è qualche tipo di risorsa che potrebbe mostrarmi come iniziare con quello? Oppure esiste una soluzione LB in grado non solo di gestire TCP / HTTP, ma anche di bilanciamento del carico UDP?

PS: la soluzione LB dovrebbe essere non hardware e open source / licenza GPL / gratuita.

Qualsiasi aiuto o aiuto alle rispettive risorse è molto apprezzato!


Controlla Nginx nginx.com/blog/announcing-udp-load-balancing questo sembra rispondere alla tua domanda dns
user433519

Risposte:


15

Non bilanciare il carico del DNS.

È un protocollo incredibilmente leggero - avresti bisogno di un'enorme quantità di traffico per avere bisogno di più di un box (nel qual caso ti limiterai comunque a strozzare il tuo bilanciamento del carico), e c'è resilienza integrata perché puoi utilizzare più record NS nella tua delegazione (altri server verranno utilizzati se uno è inattivo).


Usa sicuramente più record NS, poiché TCP diventa più comune per il DNS e lascia che si bilanci da solo. Reinventare la ruota è doloroso per una ragione.
cpt_fink,

Più server DNS offrono ridondanza e prevengono errori totali, ma un server DNS inattivo causerebbe comunque ritardi nella risoluzione dei nomi.
200_successo

Ok, ha senso per me. Il fatto è che avrei ancora bisogno di un IP virtuale per scopi di failover se non sbaglio, perché avremo 2 macchine che conterranno HAProxy e LVS per il routing. Come mi avvicinerei a questo?
Mosh Pit,

2
@MoshPit vrrpd o keepalived sono buone opzioni.
Shane Madden,

Presumo che tu stia parlando di un'impostazione Attivo - Attivo Hot Standby, giusto?
Mosh Pit,

11

Non mi sento a mio agio con queste domande e risposte perché non è stato ancora stabilito quale tipo di server DNS stai parlando. Ci sono alcune idee sbagliate significative quando si tratta della resilienza del DNS ricorsivo ed è importante che le persone che navigano attraverso i motori di ricerca non abbandonino questa discussione con un falso senso di sicurezza.

  • DNS autorevole : per i server DNS autorevoli, le conoscenze comuni sulla resilienza del DNS sono piuttosto esatte. Finché hai più server DNS autorevoli che sono geo-ridondanti, stai bene. Il motivo principale per l'aggiunta dell'alta disponibilità per singoli IP è se si ospitano molte zone autorevoli. Ciò consente di aumentare il numero di server senza dover modificare le impostazioni del registrar per ogni dominio ospitato.

  • DNS ricorsivo : utilizzare sempre una qualche forma di soluzione ad alta disponibilità. (BGP, apparecchio, ecc.) Qui è dove si possono avere seri problemi. Tutte le librerie del resolver non sono create uguali: i client DNS di Windows eseguiranno il robottaggio del server iniziale utilizzato tra le query, ma la maggior parte dei sistemi basati su Unix scorrerà sempre l'elenco in sequenza. Ciò che è ancora meno noto è che queste librerie Unix dovranno scadere su ogni combinazione del dominio di ricerca prima di passare al server successivo. Se hai configurato più domini di ricerca e il primo server nell'ordine di ricerca del resolver è morto, questo può creare ritardi significativi nella risoluzione DNS per ogni singola richiesta: più che sufficiente per causare problemi nelle tue applicazioni critiche.

Quando si tratta di DNS ricorsivo, tenere presente che l'infrastruttura del server è resiliente solo come la configurazione client più efficiente. Man mano che la tua azienda cresce, questo è qualcosa su cui non hai mai il controllo. Non fare ipotesi di progettazione basate su un ambiente operativo server omogeneo, poiché le cose raramente rimangono le stesse in un'azienda in crescita. Questo sicuramente morderà qualcuno se non hai intenzione di farlo.


Finora stiamo usando bind / named come servizio DNS.
Mosh Pit,

Un buon punto: stavo assumendo autorevolezza nella mia risposta, ma hai ragione, potrebbe essere un ricorsore.
Shane Madden,

1
@MoshPit Il tuo commento sul "servizio DNS" non ha chiarito se si trattava di un metodo ricorsivo o autorevole. L'autorevole è quando si ospitano domini. Ricorsivo è qualcosa che useresti per ottenere l'indirizzo IP dei domini che non ospiti. I server che fanno entrambi sono "misti", il che è contrario alle migliori pratiche di sicurezza.
Andrew B,

1
Mi scuso per questo, ho notato che quando hai pubblicato quel commento. Abbiamo il controllo dei nostri server DNS e questi sono autorevoli.
Mosh Pit,

Non utilizzare un bilanciamento del carico per l'alta disponibilità.
womble

2

In questi giorni è possibile utilizzare dnsdistda PowerDNS

Dal README

dnsdist è un bilanciamento del carico altamente sensibile al DNS, al DoS e agli abusi. Il suo obiettivo nella vita è indirizzare il traffico verso il miglior server, offrendo le massime prestazioni agli utenti legittimi mentre deviando o bloccando il traffico offensivo.

dnsdist è dinamico, nel senso che la sua configurazione può essere modificata in fase di esecuzione e che le sue statistiche possono essere interrogate da un'interfaccia simile a una console.

https://github.com/PowerDNS/pdns/tree/master/pdns/dnsdistdist

Forniscono repository per sistemi operativi comuni: https://repo.powerdns.com/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.