Network Load Balancing – Introduzione


Questo è il primo di una serie di post in cui parleremo di NLB: Network Load Balancing.


Nella prima parte faremo un’introduzione delle caratteristiche principali di questa tecnologia, mentre nelle successive ci focalizzeremo più in dettaglio su alcuni aspetti tecnici.


Panoramica generale


NLB è una tecnologia cluster implementata a livello di sistema operativo e disponibile in Windows Server 2000, 2003 e 2008.


Lo scopo principale è fornire scalabilità e alta disponibilità a servizi e applicazioni basati su TCP/IP come Internet Information Services (IIS), Virtual Private Networking (VPN), Internet Security and Acceleration (ISA) e Terminal Services (TS).


I servizi da bilanciare dovranno essere configurati in maniera identica su ogni host che partecipa al cluster NLB, e le richieste da parte dei client saranno gestite dai singoli server in base all’algoritmo di bilanciamento.


Le principali caratteristiche dell’NLB in Windows Server 2003 sono:



  • High availability

  • Efficiency

  • Scalability

  • Ease of maintenance

In Windows Server 2008 sono state introdotte e migliorate molte funzionalità tra cui le principali sono:



  • Supporto a IPv6

  • Supporto a NDIS 6.0

  • Migliore integrazione con ISA Server

La tecnologia NLB è in grado di fornire una soluzione economica e alternativa ai bilanciatori hardware e per le sue caratteristiche, l’utilizzo ottimale avviene in presenza di scenari con un grande numero di client e servizi stateless.


Architettura


NLB è un NDIS intermediate filter driver inserito tra la scheda di rete fisica (NIC) e i protocolli dello stack TCP/IP come illustrato nella seguente immagine:


Typical Configuration of a NLB Host


In Windows Server 2008 il driver è stato totalmente riscritto adottando il nuovo Lightweight Filters Driver model (LWF) che ha portato a miglioramenti nelle performance del driver stesso, mantenendo la retro compatibilità con le versioni NDIS precedenti.


 


Il driver deve essere installato su ogni server che partecipa al cluster, e agirà effettivamente come un rule-based filter per il traffico in ingresso verso l’host.


L’architettura così distribuita elimina la necessità di indirizzare le richieste verso un host specifico, il processo è quindi più veloce rispetto a ricevere, analizzare, riscrivere e rispedire le richieste; inoltre permette di massimizzare la disponibilità delle risorse: N host forniscono N-1 possibilità di failover mentre un classico dispacher deve essere ridondato per non creare un single point of failure.


Network Load Balancing automaticamente rileva e ricompone il cluster se un server ha un malfunzionamento o è disconnesso dalla rete, ma non è consapevole dello strato software che ha sopra, per cui i servizi e le applicazioni non vengono monitorate dal driver che continuerà a fare il suo lavoro anche se una di queste ha un qualsiasi problema. Per avere un monitoring delle applicazioni e dei servizi bilanciati bisogna ricorrere a dei software di management quali il Systems Center Operations Manager.


Algoritmo


L’algoritmo mappa le richieste dei client ad uno specifico host in base ad alcuni parametri, tutti gli host eseguono quest’operazione contemporaneamente per determinare quale di loro sarà designato a gestire la richiesta mentre gli altri la scarteranno.


L’algoritmo utilizzato da NLB è proprietario e quindi non è disponibile della documentazione pubblica che ne illustri il funzionamento, ma ci sono alcuni parametri che possono essere modificati per influenzare la distribuzione delle richieste:



  • Host priorities

  • Multicast o Unicast mode

  • Port rules

  • Affinity

  • Load percentage distribution

  • Client IP address

  • Client port number

  • Other internal load information

Il mapping rimarrà valido fino ad un eventuale cambiamento del numero di nodi o delle regole impostate.


Una nota importante per un corretto funzionamento dell’algoritmo: è essenziale che tutti i nodi ricevano le richieste in ingresso in quanto il processo decisionale per servire i client avviene separatamente su ogni singolo host.


Nei prossimi post vedremo le modalità di funzionamento Unicast e Multicast.


Maggiori informazioni e approfondimenti:



Alessandro Pasero
Senior Support Engineer
Microsoft Enterprise Platforms Support

Comments (5)

  1. Anonymous says:

    Ciao Alessandro,

    esatto, vorrei sapere se è possibile inserire in NLB server appartenenti a subnet diverse (geocluster) senza "lavorare" con delle stretched vlan.

    Per l’unicast ed il multicast: bell’articolo di approfondimento pure quello, purtroppo ho avuto modo di giocare con lo switch flooding molto prima della sua pubblicazione:-(.

    Grazie

    Luca

  2. Anonymous says:

    Purtroppo non è possibile, per fare quanto chiedi soltamente vengono deploiati singoli cluster NLB indipendenti nei vari siti, e combinati in un unico servizio tramite DNS Roun Robin.

    Una breve panoramica la trovi qui:

    MultiSite Network Load Balancing Clusters:

    http://technet.microsoft.com/en-us/library/cc776465.aspx

    Ciao

    Alessandro

  3. Anonymous says:

    Grande articolo molto ben fatto ed esplicativo, solo una domanda: è possibile attivare NLB su reti diverse?

    ciao e grazie

    Luca Terenzi

  4. itentblg says:

    Ciao Luca,

    Sono contento che ti sia piaciuto l’articolo, se ti interessa approfondire, dai un’occhiata anche alla seconda parte perchè spiega un pò meglio le differenti modalità, unicast e multicast.

    Per quanto riguarda la domanda, scusami ma non sono sicuro di aver capito cosa intendi, ti riferisci alla possibilità di fare dei Geo Cluster? cioè nodi in differenti siti?

    Alessandro

  5. stefano says:

    Ciao,

    ho letto l’articolo e volevo chiederti gentilmente se posso mettere in NLB macchine windows 2008 con macchine 2000 (devo fare una migrazione "dolce" di una applicazione che gira su 2000 verso 2008). Vorrei sapere se avevi dei link per documenti ufficial su quanto sopra.

    Grazie mille