Il bilanciamento del carico distribuisce le richieste di servizio in entrata tra più server in modo da rendere la distribuzione del carico trasparente per gli utenti. Il bilanciamento del carico consente di ottimizzare l'utilizzo delle risorse, massimizzando la velocità effettiva, riducendo al minimo il tempo di risposta ed evitando il sovraccarico.
Il bilanciamento del carico NSX supporta due motori di bilanciamento del carico. Il bilanciamento del carico di livello 4 è basato su pacchetti e fornisce un'elaborazione con percorso rapido. Il bilanciamento del carico di livello 7 è basato su socket e supporta strategie di gestione del traffico avanzate e attenuazione DDOS per i servizi back-end.
Il bilanciamento del carico per un gateway edge NSX Data Center for vSphere viene configurato nell'interfaccia esterna perché il gateway edge esegue il bilanciamento del carico del traffico in entrata dalla rete esterna. Quando si configurano server virtuali per il bilanciamento del carico, specificare uno degli indirizzi IP disponibili presenti nel VDC dell'organizzazione.
Concetti e strategie del bilanciamento del carico
Una strategia di bilanciamento del carico basato su pacchetti viene implementata a livello di TCP e UDP. Il bilanciamento del carico basato su pacchetti non interrompe la connessione e non invia l'intera richiesta al buffer. Dopo la modifica del pacchetto lo invia invece direttamente al server selezionato. Le sessioni TCP e UDP vengono gestite nel bilanciamento del carico in modo che i pacchetti di una singola sessione vengano indirizzati allo stesso server. È possibile selezionare Accelerazione abilitata sia nella configurazione globale sia nella configurazione del server virtuale appropriato per abilitare il bilanciamento del carico basato su pacchetti.
Una strategia di bilanciamento del carico basato su socket viene implementata oltre all'interfaccia del socket. Vengono stabilite due connessioni per una singola richiesta, ovvero una connessione verso il client e una verso il server. La connessione verso il server viene stabilita dopo la selezione del server. Per l'implementazione basata su socket HTTP, l'intera richiesta viene ricevuta prima di inviarla al server selezionato con modifica L7 facoltativa. Per l'implementazione basata su socket HTTPS, le informazioni di autenticazione vengono scambiate nella connessione verso il client o nella connessione verso il server. Il bilanciamento del carico basato su socket è la modalità predefinita per i server virtuali TCP, HTTP e HTTPS.
I concetti chiave del bilanciamento del carico NSX sono server virtuale, pool di server, membro del pool di server e monitor del servizio.
- Server virtuale
- Astrazione di un servizio di applicazioni, rappresentata da una combinazione univoca di IP, porta, protocollo e profilo di applicazione come TCP o UDP.
- Pool di server
- Gruppo di server back-end.
- Membro del pool di server
- Rappresenta il server back-end come membro di un pool.
- Monitor del servizio
- Definisce la modalità di verifica dello stato di integrità di un server back-end.
- Profilo applicazione
- Rappresenta TCP, UDP, persistenza e configurazione del certificato per una determinata applicazione.
Panoramica della configurazione
Si inizia impostando opzioni globali per il bilanciamento del carico. Si crea quindi un pool di server contenente membri del server back-end e si associa un monitor del servizio al pool per gestire e condividere i server back-end in modo efficiente.
Si crea quindi un profilo di applicazione per definire il comportamento comune dell'applicazione in un bilanciamento del carico, ad esempio SSL client, SSL server, X-Forwarded-For (XFF) o persistenza. La persistenza invia richieste successive con caratteristiche simili, ad esempio un indirizzo IP di origine o un cookie deve essere distribuito allo stesso membro del pool, senza eseguire l'algoritmo di bilanciamento del carico. Il profilo dell'applicazione può essere riutilizzato nei server virtuali.
Si crea quindi una regola dell'applicazione facoltativa per configurare impostazioni specifiche dell'applicazione per la gestione del traffico, ad esempio la corrispondenza di un determinato URL o nome host, in modo che richieste diverse possano essere gestite da pool diversi. Successivamente si crea un monitor del servizio specifico dell'applicazione oppure è possibile utilizzare un monitor del servizio esistente se soddisfa le proprie esigenze.
Facoltativamente, è possibile creare una regola di applicazione per supportare le funzionalità avanzate dei server virtuali L7. Alcuni casi d'uso per le regole delle applicazioni includono passaggio di contenuti, modifica dell'intestazione, regole di sicurezza e protezione DOS.
Infine, si crea un server virtuale che connette il pool di server, il profilo dell'applicazione e tutte le eventuali regole delle applicazioni.
Quando il server virtuale riceve una richiesta, l'algoritmo di bilanciamento del carico valuta la configurazione del membro del pool e lo stato di runtime. L'algoritmo calcola quindi il pool appropriato per distribuire il traffico che include uno o più membri. La configurazione del membro del pool include impostazioni quali il volume, il numero massimo di connessioni e lo stato della condizione. Lo stato di runtime include informazioni sulle connessioni correnti, sul tempo di risposta e sullo stato di controllo di integrità. I metodi di calcolo possono essere Round Robin, Weighted Round Robin, Least Connection, Source IP Hash, Weighted Least Connection, URL, URI o intestazione HTTP.
Ogni pool viene monitorato dal monitor del servizio associato. Quando il bilanciamento del carico rileva un problema relativo a un membro del pool, viene contrassegnato come Non raggiungibile. Quando si sceglie un membro del pool dal pool di server, viene selezionato solo il server raggiungibile. Se il pool di server non è configurato con un monitor del servizio, tutti i membri del pool sono considerati raggiungibili.