neen Jelastic PaaS: le soluzioni di load balancing con NGINX

neen Jelastic PaaS: le soluzioni di load balancing con NGINX
05 ottobre 2016
0 commenti

Abbiamo già visto in un articolo precedente che uno dei maggiori punti forza di una soluzione PaaS è rappresentato dalla possibilità di scalare le risorse in corrispondenza di picchi di traffico inaspettati, garantendo a sviluppatori e clienti alta flessibilità a un prezzo contenuto. In una struttura tradizionale il carico di lavoro, ovvero il numero di chiamate effettuate verso il server, viene gestito tramite i bilanciatori di carico (load balancer).

I bilanciatori sono in grado, soprattutto nelle strutture complesse, di garantire alte prestazioni del sistema attraverso la distribuzione del carico di lavoro tra più componenti. La piattaforma neen Jelastic PaaS mette a disposizione dei propri utilizzatori diverse tipologie di bilanciatori di carico, in grado di rispondere alle diverse esigenze di progetto. Vediamo nel dettaglio quali sono queste tipologie e il loro funzionamento.

 

Bilanciatori di carico condiviso

Lo Shared Load Balancer è il tipo di bilanciatore più comune nell’ambiente PaaS. Costituito da un server proxy NGINX inserito tra il client (browser) e l’applicazione sviluppata sul cloud Jelastic. Il bilanciatore gestisce le richieste in entrata inviandole a un domain name ({user_domain}.{hoster_domain}) di un application server o un database, che non dispone di un punto d’ingresso collegato a un indirizzo IP pubblico.

Shared balancing con NGINX su neen Jelastic PaaS

In questo modo il bilanciatore è in grado di elaborare tutte le richieste inviate a tutte le applicazioni presenti all’interno dello stesso nodo hardware. Al fine di garantire una maggiore sicurezza contro gli attacchi DDoS, in automatico il bilanciatore limita le connessioni fino a un massimo di 50 simultanee per indirizzo sorgente della richiesta.

L’utilizzo del bilanciatore di carico condiviso è consigliato soprattutto per gli ambienti di deployment e test, mentre per gli ambienti di produzione, che sono destinati a gestire traffico più elevato, è più opportuno utilizzare il proprio IP pubblico per il recupero e l’elaborazione delle richieste.

 

Bilanciatori di carico HTTP

La business continuity è uno dei fattori che può fare davvero la differenza in ambito web. Negli anni, l’esigenza di essere sempre e comunque online è cresciuta sempre più, fino a diventare una necessità imprescindibile. Come si possono minimizzare i tempi di down in caso di guasti o manutenzione di un sito? Sfruttando la ridondanza di componenti multipli. Il bilanciatore di carico HTTP utilizza uno dei più popolari web server del mondo, NGINX: il suo successo è da attribuire in gran parte all’elevata affidabilità e alla facilità di utilizzo (non richiede infatti una pre-configurazione per essere utilizzato).

In questo caso il sistema di bilanciamento funge da frontend raccogliendo tutte le richieste http e distribuendole poi al backend (application server). In sostanza vengono creati due livelli di bilanciamento basati su due cookie:

  • cookie 1: node ID
  • cookie 2: group ID

Il primo cookie (node ID) reindirizza la richiesta al nodo primario. Se questo nodo improvvisamente dovesse smettere di funzionare, il bilanciatore smetterà di indirizzare traffico su di esso a favore del server che risulterà ancora funzionante. Questo server viene individuato con l’aiuto del secondo cookie (group ID) dal gruppo dei nodi che condivide un processo comune a quello del nodo che ha smesso di funzionare.  

HTTP balancer con NGINX su neen Jelastic PaaS


Oltre a NGINX sulla piattaforma neen Jelastic PaaS sono disponibili altri bilanciatori HTTP, come ad esempio Varnish e Ha-Proxy, tutti configurabili tramite soluzioni one-click.

 

Bilanciatori di carico TCP

Vi è infine una terza tipologia di bilanciatore, che sfrutta sempre il web server NGINX, denominato bilanciatore di carico TCP. Questo bilanciatore è particolarmente indicato per gestire richieste inoltrate a database, mail server o altre applicazioni distribuite attraverso il network di rete.
In questo caso, il bilanciatore riceve le richieste tramite un socket di rete da un’applicazione client. Il socket decide quale nodo dell’ambiente deve ricevere la richiesta. Quando la connessione viene avviata, le richieste provenienti dal client continuano ad essere inoltrate tramite la stessa connessione sul nodo stabilito dall’algoritmo. È quindi impossibile per l’applicazione determinare quale istanza sia selezionata.

Nel caso in cui si verifichi una perdita di connessione, alla successiva richiesta instradata dal bilanciatore viene attivata in automatico un nuova connessione, in grado di raggiungere qualsiasi istanza dell’ambiente.

 

La piattaforma neen Jelastic PaaS

neen mette a disposizione di DevOps e software house neen Jelastic PaaS, la piattaforma as a service che unisce l’elasticità dello IaaS alla semplicità di utilizzo del PaaS. A differenza della altre soluzioni PaaS presenti sul mercato, neen Jelastic PaaS non richiede alcuna modifica di codice, né obbliga gli sviluppatori ad utilizzare sistemi di API (comunque disponibili). Inoltre, grazie alla tecnologia a Container, è possibile creare istanze “pacchettizzate”, trasferibili e portabili tra diversi sistemi e Cloud.
L’affidabilità hardware è garantita in modo nativo attraverso i meccanismi di live migration, in grado di operare una migrazione a caldo dei servizi in caso di eventuali failure hardware. L’alta affidabilità applicativa è invece soddisfatta attraverso meccanismi di load balancing descritti, che distribuiscono il carico dell’applicazione su più server cloud; ogni server è istanziato su diversi hardware a garanzia di ulteriore ridondanza.

Inizia subito a utilizzare neen Jelastic PaaS: su neen.it è possibile accedere alla versione trial della piattaforma. Se invece desideri maggiori informazioni scrivi a sales@neen.it o chiama il numero 02.45485420

 

Jessica  Ventura Social Media Manager