Azure Application delivery: quale servizio di load balancing scegliere?

La transizione verso soluzioni cloud per erogare le applicazioni è una tendenza che procede a un ritmo molto elevato e garantire un accesso rapido, sicuro ed affidabile a tali applicazioni è un’attività sfidante che deve essere indirizzata adottando le giuste soluzioni. Microsoft Azure mette a disposizione una vasta gamma di servizi per garantire una erogazione ottimale delle applicazioni, ma nella valutazione di quale soluzione di load-balancing adottare ci sono diversi aspetti da prendere in considerazione. Questo articolo vuole fare chiarezza sugli elementi che è opportuno valutare per adottare la soluzione Azure più idonea in questo ambito.

L’esigenza di distribuire i carichi di lavoro su più risorse di elaborazione può essere data dalla necessità di ottimizzare l’uso delle risorse, massimizzare il throughput, ridurre al minimo i tempi di risposta ed evitare di sovraccaricare ogni singola risorsa. Inoltre, può essere rivolta anche a migliorare la disponibilità delle applicazioni condividendo un carico di lavoro tra risorse di elaborazione ridondanti.

Servizi di load balancing di Azure

Per erogare servizi di load-balancing di Azure troviamo i seguenti componenti.

Azure Load Balancer e cross-region Azure Load Balancer: si tratta di componenti che consentono il bilanciamento del carico Layer-4 per tutti i protocolli TCP e UDP, garantendo alte prestazioni e bassissime latenze. Azure Load Balancer è un componente zone-redundant, pertanto offre un’elevata disponibilità tra le Availability Zones.

Figura 1 – Panoramica di Azure Load Balancer e cross-region Azure Load Balancer

Azure Application Gateway: si tratta di un servizio gestito dalla piattaforma Azure, con funzionalità intrinseche di alta disponibilità e scalabilità. L’Application Gateway è un load balancer applicativo (OSI layer 7) per il traffico web, che consente di governare il traffico HTTP e HTTPS delle applicazioni (URL path, host based, round robin, session affinity, redirection). L’Application Gateway è in grado di gestire in modo centralizzato i certificati per la pubblicazione applicativa, tramite policy SSL ed effettuando SSL offload quando necessario. L’Application Gateway può avere assegnato un indirizzo IP Privato oppure un indirizzo IP Pubblico, se la ripubblicazione applicativa deve avvenire verso Internet. In particolare, in quest’ultimo caso, è consigliato attivare la funzionalità di Web Application Firewall (WAF), che consente di ottenere una protezione applicativa, basandosi su regole OWASP core rule sets. Il WAF protegge l’applicativo da vulnerabilità e da attacchi comuni, come ad esempio attacchi X-Site Scripting e SQL Injection.

Figura 2 – Panoramica di Azure Application Gateway

Front Door: è un application delivery network che fornisce bilanciamento del carico a livello globale e un servizio di site accelleration per le applicazioni web. Offre funzionalità Layer-7 per la pubblicazione applicativa come ad esempio SSL offload, path-based routing, fast failover, caching, al fine di migliorare le prestazioni e l’alta disponibilità delle applicazioni.

Figura 3 – Panoramica di Azure Front Door

Traffic Manager: è un servizio di bilanciamento del carico basato su DNS che consente di distribuire il traffico in modo ottimale ai servizi distribuiti in differenti region di Azure, fornendo al contempo alta disponibilità e responsività. Sono disponibili diversi metodi di instradamento per determinare verso quale endpoint dirigere il traffico. Basandosi su DNS, il failover può non essere immediato a causa delle sfide comuni relative al caching DNS e ai sistemi che non rispettano i TTL del DNS.

Figura 4 – Panoramica di Azure Traffic Manager (performance traffic-routing method)

Aspetti da valutare nella scelta dei servizi di load balancing di Azure

Ogni servizio ha le proprie caratteristiche e per scegliere quello più opportuno è bene fare una classificazione rispetto ai seguenti aspetti.

Servizi di load-balancing: globali vs regionali

  • Global load-balancing: vengono utilizzati per distribuire il traffico verso i backend distribuiti globalmente su più region, i quali possono essere dislocati in ambienti cloud oppure ibridi. Rientrano in questa categoria Azure Traffic Manager, Azure Front Door ed i cross-region Azure Load Balancer.
  • Regional load-balancing: consentono di distribuire il traffico verso le macchine virtuali attestate su una specifica virtual network oppure verso endpoint in una specifica region. Rientrano in questa categoria gli Azure Load Balancer e gli Azure Application Gateway.

Tipologia di traffico: HTTP(S) vs non-HTTP(S)

Un’altra importante discriminante nella scelta della soluzione di load-balancing da adottare è la tipologia di traffico che si deve gestire:

  • HTTP(S): è consigliata l’adozione di servizi di load-balancing Layer-7 che accettano solo traffico HTTP(S). Sono adatti per questa tipologia di traffico Azure Front Door ed Azure Application Gateway. Tipicamente vengono utilizzati per applicazioni web oppure per altri endpoint HTTP(S) e includono funzionalità come: SSL offload, web application firewall, path-based load balancing, e session affinity.
  • Non-HTTP(S): viene richiesto l’utilizzo di servizi di load-balancing che permettono di contemplare il traffico non-HTTP(S), come Azure Traffic Manager, cross-region Azure Load Balancer e Azure Load Balancer.

Nella valutazione del servizio Azure di load-balancing da adottare è opportuno far rientrare anche considerazioni riguardanti i seguenti aspetti:

Per facilitare la scelta della soluzione di load-balancing è possibile utilizzare come base di partenza il seguente diagramma di flusso, che indirizza la scelta su una serie di aspetti chiave:

Figura 5 – Flowchart per la scelta della soluzione Azure di load-balancing

NOTA: Questo flowchart non contempla i cross-region Azure Load Balancer in quanto al momento (11/2020) sono in preview.

Questo diagramma di flusso è un ottimo punto di inizio per le proprie valutazioni, ma siccome ogni applicazione ha requisiti unici è bene effettuare un’analisi specifica più di dettaglio.

Se l’applicazione è composta da più workload è opportuno valutare ciascuno di questi in modo separato, in quanto può essere necessario adottare una o più soluzioni di bilanciamento del carico.

I vari servizi di load load-balancing possono essere utilizzati in combinazione tra loro per garantire un accesso applicativo affidabile e sicuro ai servizi erogati in ambienti IaaS, PaaS oppure on-premises.

Figura 6 – Possibile esempio di come combinare i vari servizi di load-balancing di Azure

Conclusioni

Grazie ad un’ampia gamma di servizi globali e regionali Azure è in grado di garantire performance, sicurezza ed alta disponibilità nell’accesso agli applicativi. Per stabilire l’architettura più idonea alle proprie esigenze sono diversi gli elementi da valutare, ma la giusta combinazione delle soluzioni di Application Delivery di Azure permette di fornire un notevole valore alle organizzazioni IT, garantendo una distribuzione veloce, sicura ed affidabile delle applicazioni e dei dati all’utente.

Please follow and like us: