Introduzione
L’elevata diffusione di Internet e la disponibilità di reti sempre più veloci hanno cominciato a mettere in seria crisi i siti Web di maggiore interesse, provocando rallentamenti durante la loro consultazione.
I Server Load Balancer sono nati proprio per supplire a questa inefficienza: operando a livelli superiori di quello IP sono, infatti, in grado di esaminare in tempo reale i pacchetti in ingresso, analizzando anche la porta TCP o UDP al quale il client vuole accedere, e quindi di stabilire a quale server/applicazione la richiesta deve essere effettivamente destinata.
Lo scopo primario dei Load Balancer è quello di bilanciare il traffico fra i vari server presenti facendo in modo che più server reali e omogenei vengano visti dall’ utente finale come un unico e potente server virtuale.
Questo si traduce in un miglioramento delle prestazioni grazie alla scelta automatica del server (normalmente all’apertura di una nuova sessione) all’interno di un insieme di server reali omogenei dal punto di vista del servizio.
L’utilizzo di meccanismi atti a bilanciare il traffico tra più server non rappresenta comunque una novità: già da molti anni sono implementate soluzioni del genere con strumenti quali i DNS.
Attualmente il dibattito sulla supremazia fra le varie architetture è molto acceso tra i vari costruttori: chi sostiene la causa degli appliance fa leva sulla maggiore flessibilità, mentre chi offre soluzioni basate sullo switch HW di livello 4-7 evidenzia le migliori performance che offrono gli Asic. A loro volta, i produttori di queste ultime soluzioni sottolineano come elemento distintivo e qualificante la possibilità di fare a meno, nell’architettura complessiva della rete, rispettivamente, di uno switch/router, perchè i loro apparati già integrano tali funzioni.
Un esempio può essere la gestione Web.
Caratteristiche del servizio
Si tratta del comune servizio per la navigazione in Internet; il server risponde normalmente alla porta TCP 80 e utilizza il protocollo HTTP per lo scambio di informazioni con il client. Una variante del protocollo è la secure HTTP (HTTPs che risponde alla porta TCP 443) basato sul protocollo SSL (Secure Socket Layer), in grado di proteggere le informazioni confidenziali mediante meccanismi di autenticazione, crittografia dei dati e loro protezione.
Health-Check del Servizio
Il SLB deve essere in grado interrogare ciclicamente i web server al fine della loro messa in servizio/disservizio. Per fare questo l’apparato di load balancing deve poter eseguire un controllo della presenza del servizio interrogando la porta HTTP (80). Nel caso ideale dovrebbe essere in grado di verificare oltre alla presenza del servizio anche la presenza di contenuti operando direttamente delle richieste di pagine html.
Criticità
L’introduzione del protocollo HTTP 1.1 (supportato sia da Internet Explorer e sia da Netscape) ha notevolmente semplificato l’impegno di un web server perchè, a differenza della versione 1.0, in cui venivano aperte tante sessioni TCP quante erano gli oggetti presenti all’interno del documento html, il server instaura una sola connessione a livello TCP all’interno della quale vengono effettuate tutte le successive GET degli oggetti. Questo nuovo modo di funzionamento del protocollo http complica però il lavoro del load balancer perchè non gli permette di bilanciare il contenuto di una pagina html 1 operando solo a livello 4. Per continuare ad operare come nel caso di HTTP 1.0, il load balancer deve diventare un apparato del tipo content-aware. Vale a dire analizzare, a livello 7 dello stack e per ogni pacchetto ricevuto, tutte le stringhe GET contenute all’interno della stessa sessione TCP.