Network Load Balancing (NLB) è una delle due funzionalità di Clustering disponibili in Windows Server 2000/2003/2008.
Scopo di questo post non è descrivere l'installazione e la configurazione di NLB (in Internet c'è materiale a sufficienza!), bensì di capire cos'è, a cosa server e quindi quando utilizzarlo.
Ovviamente la trattazione non ha nessuna pretesa di completezza e/o esaustività ma vuole semplicemente fare un pò di chiarezza sull'argomento.
NLB si colloca nell'ambito delle soluzioni hardware/software che mi garantiscono la Scalabilità di un Servizio.
In genere le soluzioni di Scalabilità comprendono anche l'Alta Disponibilità, mentre in generale non è vero il viceversa (si pensi ad un Cluster in configurazione Attivo/Passivo).
Cos'è la Scalabilità? E' sostanzialmente quell'insieme di soluzioni che mi permettono di mantenere inalterate le performance di un servizio all'aumentare del numero di richieste.
Innanzitutto distinguiamo due soluzioni di Scalabilità:
Scalabilità Verticale. Si ottiene aumentando le risorse del server che eroga il servizio (RAM, CPU, Dischi....). Tipicamente gli svantaggi di questa soluzione sono:
- l'aumento delle performance non cresce linearmente con l'aumentare delle risorse (con due CPU non raddoppio le performance rispetto ad una sola CPU, ad esempio). Anzi, addirittura ad un certo punto non ottengo più nessun beneficio anche se aumento le risorse!
- l'aumento delle risorse è comunque limitato dall'hardware e dal software (ad esempio su una scheda madre non posso montare più di un certo numero di CPU e/o il sistema operativo o l'applicazione non mi "vedono" più di un certo quantitavivo di RAM).
Scalabilità Orizzontale. Si ottiene aumentando il numero di server che erogano il servizio. In questi casi ci si trova però ad affrontare i seguenti problemi:
- Chi e come effettua la distribuzione dei carichi tra i vari nodi?
- Chi e come si preoccupa di mantenere sincronizzati i vari nodi?
- Chi e come gestisce l'inserimento di un nodo o la rimozione di un nodo esistente?
Le varie soluzioni di Scalabilità Orizzontale si differenziano appunto nelle risposte che diamo alle domande di cui sopra.
Vediamo qualche soluzione.
(1) DNS Round Robin.
Se in un dominio DNS sono presenti più record A con la stessa parte host ma con differenti indirizzi IP, ad esempio
www A IP1
www A IP2
www A IP3
allora quando un client chiede al DNS di risolvere il nome www il DNS alla prima richiesta risponderà
IP1, IP2, IP3
ed alle successive
IP2, IP3, IP1
IP3, IP1, IP2
IP1, IP2, IP3
IP2, IP3, IP1
IP3, IP1, IP2
....
In questo modo si ottiene un bilanciamento uniforme tra IP1, IP2 e IP3.
Il vantaggio principale di DNS Round Robin è che "è a gratis" ed è semplice da configurare, ma presenta i seguenti svantaggi:
- realizza solo una distribuzione uniforme
- la sincronizzazione dei vari nodi è manuale
- non tiene conto della presenza di un nuovo nodo o del malfunzionamento di uno dei nodi esistenti finchè non riconfiguro il DNS manualmente
(2) Dispatcher (Hardware o Software).
I vantaggi di questa soluzione sono, evidentemente,
- permettono di realizzare politiche sofisticate di distribuzione dei carichi di lavoro
- è possibile che tengano conto automaticamente della presenza di un nuovo nodo o del malfunzionamento di uno dei nodi esistenti
- come tutte le soluzioni dedicate in genere sono molto performanti
Tra gli svantaggi citiamo:
- hanno dei costi in termini di investimento iniziale e di gestione/manutenzione
- costituiscono un potenziale SPOF (Single Point of Failure) se non ridondati
(3) Microsoft Network Load Balancing (NLB).
Rientra nell'ambito delle soluzioni software. Sostanzialmente presenta gli stessi svantaggi e vantaggi dei Dispatcher con una fondamentale differenza: non c'è nessun SPOF poichè l'algoritmo NLB non viene eseguito da un server dedicato, bensì è un algoritmo distribuito tra i vari nodi che costituiscono il Cluster NLB (fino a 32).
Per cui non solo è garantita la Scalabilità del servizio ma anche la sua disponibilità fino al fallimento di (n-1) nodi tra quelli che costituiscono il Cluster NLB.
Questo è più o meno quanto.....
Tra i casi "da manuale" di utilizzo di NLB ricordiamo i server con ruoli Hub Transport e Client Access in una architettura Microsoft Exchange 2007.
Per approfondire:
Network Load Balancing Technical Overview