Load-balancer HTTP in Java Josip Lebic Bachelor of Science in

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.