Scuola universitaria professionale della Svizzera italiana Dipartimento tecnologie innovative Load-balancer HTTP in Java Josip Lebic Bachelor of Science in Ingegneria informatica Fig. 1. Architettura tipica del Load-balancing Approfondimento in Architetture e sistemi software di rete Relatore: Raffaello Giulietti Correlatore: Sandro Pedrazzini Fig. 3. Load-balancer della Cisco System Josip Lebic [email protected] Abstract L’utilizzo sempre più intenso di internet, sia in ambito commerciale sia in quello multimediale, porta a cercare delle soluzioni per aumentare la scalabilità, l’affidabilità e la velocità nella fornitura dei servizi. Una delle tecniche utilizzate per riuscire in questi obiettivi◆ è quella del Load-balancing, una tecnica che consiste nel distribuire il carico di un servizio su un cluster di server al fine di ottenere il carico globale, proveniente da più client (p.es.: browser), equamente suddiviso su più server. Il progetto svolto consiste nello sviluppare un Loadbalancer per il protocollo HTTP/1.1 in Java, indipendente dalla piattaforma, che funga da proxy trasparente sul lato server. Obiettivi ◆◆ Familiarizzarsi con moderne librerie di programmazione concorrente e dei modelli soggiacenti. ◆◆ Approfondire le conoscenze sulla programmazione ◆ di rete, in particolare sui socket e sul protocollo HTTP. ◆◆ Costruire software robusto sul piano della tolleranza a interruzioni e sul piano della gestione delle risorse. ◆◆ Supportare la versione 1.1 del protocollo HTTP. Descrizione L’applicazione è stata sviluppata con l’ambiente di sviluppo Eclipse, si basa sulla piattaforma Java SE e sulla libreria Apache HttpComponents. I dati sui server sono contenuti dentro un file e vengono elaborati per identificare e stabilire le connessioni con i server. L’applicazione cattura le richieste provenienti dai client e le reindirizza ai server equilibrando il carico di lavoro di ogni server presente nel cluster. La robustezza e la tolleranza a errori e cadute di connessione permettono un aumento dell’affidabilità dell’architettura nel suo insieme. Attraverso la programmazione concorrente si è giunti a una realizzazione che utilizza le risorse solo quando se ne ha bisogno. Fig. 2. Logo della libreria Apache HttpComponents Conclusioni I risultati ottenuti hanno portato alla realizzazione di un Load-balancer funzionante, in grado di soddisfare il meccanismo di Load-balancing per il protocollo HTTP/1.1. L’applicativo sviluppato è molto rudimentale in quanto la configurazione del Loadbalancer è unica e necessiterebbe di ulteriori caratteristiche per renderlo maggiormente personalizzabile al fine di soddisfare anche configurazioni specifiche.