Application Load Balancer

Bilancia il carico del traffico HTTP e HTTPS con un instradamento delle richieste avanzato mirato alla distribuzione di applicazioni moderne.

Perché usare Application Load Balancer?

Application Load Balancer opera a livello di richiesta (livello 7), instradando il traffico verso le destinazioni designate (istanze EC2, container, indirizzi IP e funzioni Lambda) a seconda dei contenuti delle richieste. Ideale per il bilanciamento avanzato di traffico HTTP e HTTPS, Application Load Balancer offre un instradamento avanzato delle richieste mirato alle architetture applicative più moderne, tra cui microservizi e applicazioni basate su container. I sistemi Application Load Balancer semplificano e migliorano la sicurezza delle applicazioni, perché garantiscono l'utilizzo costante dei protocolli e della crittografia SSL/TLS più aggiornati.

Page Topics

Funzionalità

Funzionalità

Il protocollo TLS reciproco è un protocollo per l'autenticazione bidirezionale tra client e server che utilizzano identità basate su certificati x509. Con questa funzionalità, l'ALB autenticherà i certificati dei clienti ed eseguirà controlli di revoca per i certificati emessi sia dalle autorità di certificazione (CA) di terze parti che dall'autorità di certificazione privata (ACM PCA). Il sistema di bilanciamento del carico invierà inoltre le informazioni sui certificati del client alle destinazioni, che possono essere utilizzate per le decisioni di autorizzazione da parte dell'applicazione. 

I pesi di destinazione automatici (ATW) utilizzano un nuovo algoritmo di bilanciamento del carico casuale ponderato che migliora la disponibilità delle applicazioni anche quando gli obiettivi dell'applicazione sono compromessi. L'algoritmo analizza i codici di stato HTTP e i tassi di errore TCP/TLS per identificare le destinazioni con tassi di errore più elevati rispetto ai peer dello stesso gruppo di destinazione. Quando ATW identifica obiettivi con prestazioni insufficienti, questa funzione regola il volume di traffico diretto a ciascun obiettivo in base alle prestazioni, aiutando la destinazione in difficoltà a recuperare con successo.

Puoi bilanciare il carico del traffico HTTP/HTTPS verso le destinazioni (istanze Amazon EC2, microservizi e container) in base agli attributi della richiesta (come le intestazioni X-Forwarded-For).

Quando è in uso un Amazon Virtual Private Cloud (VPC), puoi creare e gestire gruppi di sicurezza associati ad Elastic Load Balancing per fornire opzioni di rete e di sicurezza aggiuntive. Puoi configurare un Application Load Balancer in modo che sia connesso a Internet oppure creare un sistema di bilanciamento del carico privo di indirizzi IP pubblici con funzione di sistema di bilanciamento del carico interno (non connesso a Internet).

ALB supporta l'implementazione delle protezioni Desync basate sulla libreria http_desync_guardian. Grazie a questa nuova funzionalità, le applicazioni dei clienti sono protette dalle vulnerabilità HTTP dovute a Desync senza compromettere seriamente la disponibilità e/o la latenza. I clienti hanno anche la possibilità di scegliere il proprio livello di tolleranza alle richieste sospette in base all'architettura dell'applicazione.

Application Load Balancer (ALB) supporta AWS Outposts, un servizio completamente gestito che estende l'infrastruttura, i servizi e gli strumenti AWS praticamente a qualsiasi data center, spazio di co-locazione o struttura on-premises per un'esperienza ibrida realmente coerente. I clienti possono effettuare il provisioning degli ALB sui tipi di istanza supportati e l'ALB aumenterà automaticamente fino alla capacità disponibile sul rack per soddisfare diversi livelli di carico delle applicazioni senza interventi manuali. Inoltre, i clienti possono ricevere notifiche che li aiutano a gestire le esigenze di capacità relative al bilanciamento del carico. I clienti possono utilizzare la stessa console AWS, le stesse API e la stessa CLI per il provisioning e la gestione degli ALB su Outposts così come fanno oggi con gli ALB nella Regione.

Un sistema Application Load Balancer supporta la terminazione HTTPS fra i client e il sistema di bilanciamento del carico. I sistemi Application Load Balancer offrono inoltre la gestione dei certificati SSL mediante AWS Identity and Access Management (IAM) e AWS Certificate Manager per policy di sicurezza predefinite.

HTTP/2 è una nuova versione del protocollo HyperText Transfer Protocol (HTTP) che utilizza una singola connessione multiplex per permettere l'invio di più richieste tramite la medesima connessione. Inoltre, comprime i dati d'intestazione prima di inviarli in formato binario e supporta connessioni SSL ai client.

ALB può instradare e bilanciare il carico del traffico gRPC tra microservizi o tra client e servizi abilitati a gRPC. Ciò consente la perfetta introduzione della gestione del traffico gRPC nelle architetture senza modificare alcuna infrastruttura soggiacente sui client o sui servizi dei clienti. gRPC utilizza HTTP/2 per il trasporto e si sta trasformando nel protocollo preferito per le comunicazioni tra servizi nelle architetture dei microservizi. Presenta funzionalità come efficiente serializzazione binaria e supporto per numerosi linguaggi, oltre a vantaggi intrinseci di HTTP/2, come minore ingombro di rete, compressione e streaming bidirezionale, che lo rendono migliore dei protocolli legacy come REST.

È possibile creare un ascoltatore HTTPS che utilizza connessioni crittografate (note anche come ripartizione del carico SSL). Questa funzionalità consente la crittografia del traffico tra il sistema di bilanciamento del carico e i client che avviano le sessioni SSL o TLS. Application Load Balancer supporta la conclusione della sessione TLS del client. Ciò consente di ripartire il carico delle attività di conclusione TLS al sistema di bilanciamento del carico, conservando al contempo l'indirizzo IP di origine per le applicazioni back-end. Puoi scegliere tra vari criteri di sicurezza predefiniti per i tuoi listener TLS per soddisfare gli standard di conformità e sicurezza. AWS Certificate Manager (ACM) o AWS Identity and Access Management (IAM) possono essere utilizzati per gestire i certificati dei tuoi server.

Puoi utilizzare SNI per più siti web sicuri utilizzando un unico listener TLS. Se al nome host nel client corrispondono più certificati, il sistema di bilanciamento del carico seleziona il miglior certificato da utilizzare in base a un algoritmo di selezione intelligente.

Le sessioni permanenti costituiscono un meccanismo per instradare richieste dallo stesso client alla stessa destinazione. Gli Application Load Balancer supportano sia i cookie basati sulla durata che i cookie basati sulle applicazioni. Per gestire le sessioni permanenti è fondamentale determinare per quanto tempo il sistema di bilanciamento del carico deve indirizzare costantemente la richiesta dell'utente alla stessa destinazione. Le sessioni permanenti sono abilitate a livello di gruppo di destinazione. È possibile utilizzare una combinazione di permanenza basata sulla durata, permanenza basata sull'applicazione e nessuna permanenza in tutti i gruppi di destinazione.

Application Load Balancer supporta il protocollo IPv6 (Internet Protocol versione 6) nativo in un VPC. Questo permette ai clienti di collegarsi a sistemi Application Load Balancer tramite IPv4 o IPv6.

Application Load Balancer inietta una nuova intestazione HTTP "X-Amzn-Trace-Id" di identificatore personalizzato in tutte le richieste in uscita dal sistema di bilanciamento del carico. Il monitoraggio delle richieste permette di seguire il percorso di una richiesta tramite il suo ID mentre si muove attraverso i diversi servizi che compongono i siti Web o le applicazioni distribuite. Puoi usare l'identificatore univoco per individuare problemi di prestazioni o di tempistica nello stack di applicazione con una granularità a livello di singola richiesta.

Application Load Balancer può reindirizzare le richieste in entrata da un URL a un altro. In questo modo è possibile reindirizzare richieste HTTP verso richieste HTTPS, facilitando il raggiungimento degli obiettivi di conformità in relazione a esplorazione, posizionamento nei motori di ricerca e livello di protezione SSL/TLS dei siti Web. È anche possibile utilizzare questa funzionalità per inoltrare gli utenti su un sito Web differente, ad esempio per reindirizzare da una versione obsoleta di un'applicazione a quella nuova.

Application Load Balancer può controllare quali richieste del client devono essere servite dalle applicazioni. In questo modo il sistema di bilanciamento del carico può rispondere alle richieste in entrata con codici di errore corrispondenti a errori HTTP o con messaggi di errore personalizzati, senza inoltrare tutte le richieste all'applicazione.

WebSockets permette a un server di scambiare messaggi in tempo reale con gli utenti finali senza che questi ultimi debbano richiedere un aggiornamento al server. Il protocollo WebSockets fornisce canali di comunicazione bidirezionali fra un client e un server tramite una connessione TCP di lunga durata.

L'estensione SNI è un'estensione del protocollo TLS mediante la quale un cliente indica l'hostname per connettersi all'inizio dell'handshake TLS. Il sistema di bilanciamento del carico può presentare più certificati tramite lo stesso listener sicuro, il che consente il supporto di più siti Web sicuri utilizzando un solo listener sicuro. Application Load Balancer supporta inoltre un algoritmo intelligente di selezione dei certificati con SNI. Se l'hostname indicato da un client corrisponde a più certificati, il sistema di bilanciamento del carico stabilisce il certificato migliore da usare sulla base di diversi fattori, tra cui le capacità del client.

È possibile bilanciare il carico di qualsiasi applicazione ospitata in AWS o in locale utilizzando gli indirizzi IP dei back-end dell'applicazione come destinazioni. Questo consente il bilanciamento del carico verso il back-end di un'applicazione ospitata su qualsiasi indirizzo IP e qualsiasi interfaccia in un'istanza. Ogni applicazione ospitata nella stessa istanza può avere un gruppo di sicurezza associato e usare la stessa porta. Inoltre, è possibile utilizzare gli indirizzi IP come destinazioni per bilanciare il carico di applicazioni ospitate on-premise (su una connessione Direct Connect o VPN), VPC in peering ed EC2-Classic (utilizzando ClassicLink). La possibilità di bilanciare il carico tra le risorse AWS e quelle on-premise facilita la migrazione sul cloud, il burst nel cloud o il failover nel cloud.

Application Load Balancer supporta il richiamo di funzioni Lambda per rispondere alle richieste degli HTTP, permettendo agli utenti di accedere ad applicazioni senza server da qualsiasi client HTTP, inclusi i browser web. È possibile registrare le funzioni Lambda come destinazioni per un sistema di bilanciamento del carico e sfruttare il supporto per le regole di instradamento basate su contenuto per instradare le richieste a diverse funzioni Lambda. È possibile usare un Application Load Balancer come endpoint HTTP comune per applicazioni che usano server ed elaborazioni serverless. È possibile creare un intero sito Web utilizzando le funzioni Lambda o combinare istanze EC2, container, server on-premise e funzioni Lambda per creare applicazioni.

Se l'applicazione è composta da diversi servizi singoli, un Application Load Balancer può indirizzare una richiesta a un servizio in base al contenuto della richiesta, ad esempio campo Host, URL del percorso, intestazione HTTP, metodo HTTP, stringa di query o indirizzo IP di origine.

Routing in base all'host: è possibile instradare una richiesta del client in base al campo Host dell'intestazione HTTP per poter eseguire il routing su più domini dallo stesso sistema di bilanciamento del carico.

Routing in base al percorso: è possibile instradare una richiesta del client in base all'URL dell'intestazione HTTP.

Routing in base all'intestazione HTTP: è possibile instradare una richiesta del client in base al valore di qualsiasi intestazione HTTP standard o personalizzata.

Routing in base al metodo HTTP: è possibile instradare una richiesta del client in base a qualsiasi metodo HTTP standard o personalizzato.

Routing in base ai parametri della stringa di query: è possibile indirizzare una richiesta del client in base alla stringa di query o ai parametri di query.

Routing in base al CIDR dell'indirizzo IP di origine: è possibile instradare una richiesta del client in base al routing interdominio senza classi (Classless Inter-Domain Routing, CIDR) dell'indirizzo IP di origine dal quale ha origine la richiesta.

Application Load Balancer offre supporto avanzato per container bilanciando il carico su più porte in una singola istanza Amazon EC2. Grazie all'integrazione ottimizzata con Amazon Elastic Container Service (ECS), è possibile ottenere una soluzione per container completamente gestita. ECS permette di specificare una porta dinamica nell'ambito della definizione del task ECS, assegnando al container una porta libera quando viene pianificato su un'istanza EC2. L'utilità di pianificazione di ECS aggiungerà automaticamente il task al sistema di bilanciamento del carico utilizzando questa porta.

Ora è possibile utilizzare AWS WAF per proteggere le applicazioni Web sui tuoi sistemi Application Load Balancer. AWS WAF è un firewall che aiuta a proteggere le applicazioni Web dagli exploit Web che possono intaccare la disponibilità delle applicazioni, compromettere la sicurezza o consumare risorse.

Application Load Balancer supporta un algoritmo di bilanciamento del carico round robin. Inoltre, il sistema supporta una modalità di avvio rallentato con algoritmo round robin che permette di aggiungere nuove destinazioni senza sommergerle subito di richieste. Con questa modalità di avvio rallentato, le destinazioni raggiungeranno la quantità di richieste in modo progressivo secondo un intervallo di tempo personalizzato. Si tratta di una funzione molto utile per applicazioni che dipendono dalla cache e necessitano di un periodo di warm-up per poter rispondere alle richieste offrendo prestazioni ottimali.

È possibile scaricare la funzionalità di autenticazione delle app in Application Load Balancer. Il sistema permetterà l'autenticazione degli utenti mediante l'accesso alle applicazioni cloud. Application Load Balancer si integra infatti con Amazon Cognito, che permette agli utenti finali di autenticarsi tramite provider di identità social, ad esempio Google, Facebook e Amazon, e aziendali, ad esempio Microsoft Active Directory via SAML o qualsiasi provider di identità compatibile con OpenID Connect. Se è già disponibile una soluzione di provider di identità compatibile con OpenID Connect, il sistema Application Load Balancer permetterà agli utenti aziendali l'autenticazione tramite le loro credenziali aziendali.