Introduzione
L'Azure Application Gateway è una componente chiave nell'ecosistema di servizi cloud di Microsoft, progettata per gestire il routing e l'equilibrio del carico del traffico delle applicazioni. In questo articolo approfondiremo il funzionamento di Azure Application Gateway, focalizzandoci su come accetta le richieste in arrivo e le instrada verso i backend appropriati.
Accettazione delle Richieste
Prima che un client invii una richiesta a un gateway dell'applicazione, risolve il nome di dominio del gateway utilizzando un server DNS. Microsoft Azure gestisce l'entry DNS poiché tutti i gateway delle applicazioni si trovano nel dominio azure.com. Una volta ottenuto l'indirizzo IP dalla risoluzione DNS, il gateway accetta il traffico in arrivo attraverso uno o più listener configurati con un indirizzo IP front-end, un protocollo e un numero di porta.
Se è attivo un firewall dell'applicazione web (WAF), il gateway controlla gli header e il corpo della richiesta, se presente, rispetto alle regole del WAF. Questo processo determina se la richiesta è valida o rappresenta una minaccia per la sicurezza. Se la richiesta è valida, viene instradata ai backend; altrimenti, se il WAF è in modalità di prevenzione, viene bloccata come minaccia. In modalità di rilevamento, la richiesta viene valutata, registrata e comunque inoltrata ai server di backend.
Utilizzo come Bilanciatore di Carico
Azure Application Gateway può fungere da bilanciatore di carico interno o esterno. Nel caso di un gateway rivolto a Internet, utilizza indirizzi IP pubblici e il suo nome DNS è risolvibile pubblicamente. D'altro canto, i gateway interni utilizzano solo indirizzi IP privati e richiedono un DNS interno risolvibile per funzionare correttamente.
Instradamento delle Richieste
Se una richiesta supera con successo le verifiche del WAF, il gateway valuta la regola di instradamento associata al listener. Questa azione determina a quale pool di backend instradare la richiesta. In base alla regola di instradamento, il gateway può instradare tutte le richieste a un pool di backend specifico, instradare richieste a diversi pool di backend in base al percorso dell'URL o reindirizzare le richieste a un altro sito o porta esterna.
Le regole sono elaborate nell'ordine in cui sono elencate nel portale per SKU v1. Una volta selezionato il pool di backend, il gateway inoltra la richiesta a uno dei server di backend sani nel pool. Se il pool contiene più server, il gateway utilizza un algoritmo round-robin per bilanciare il carico tra i server sani.
Risoluzione DNS dei Server di Backend
Quando un server in un pool di backend è configurato con un FQDN, l'Application Gateway esegue una ricerca DNS per ottenere gli indirizzi IP associati al nome di dominio. Queste informazioni vengono memorizzate nella cache del gateway per un periodo pari al TTL del record DNS e vengono utilizzate per instradare il traffico verso la destinazione corretta.
Modifiche alle Richieste
Prima di inoltrare le richieste ai backend, l'Application Gateway inserisce sei header aggiuntivi. Questi includono x-forwarded-for, x-forwarded-port, x-forwarded-proto, x-original-host, x-original-url, e x-appgw-trace-id. Questi header forniscono informazioni utili per gestire la connessione tra il client e il backend.
Conclusioni
In conclusione, Azure Application Gateway rappresenta una soluzione avanzata per gestire il traffico delle applicazioni in ambiente cloud. Comprendere il suo funzionamento è fondamentale per ottimizzare le prestazioni e garantire una corretta instradamento delle richieste ai server di backend. Per ulteriori dettagli e approfondimenti sulle funzionalità dell'Application Gateway, consulta la documentazione ufficiale di Azure.