Configurare Azure Traffic Manager per migliorare la gestione del traffico web

Azure Traffic Manager è un servizio basato sul DNS che consente di distribuire il traffico web in modo ottimale e di offrire disponibilità elevata per le nostre applicazioni. Questo serivizio utilizza diversi metodi di routing del traffico e opzioni di monitoraggio degli endpoint per indirizzare le richieste client all’endpoint di servizio appropriato, che può essere ospitato all’interno o all’esterno di Azure.

Grazie al monitoraggio degli endpoint è possibile assicurare la disponibilità elevata delle applicazioni web critiche ed il failover automatico in caso di inattività di un endpoint. In più Azure Traffic Manager può migliorare la velocità di risposta delle applicazioni indirizzando il traffico all’endpoint con la minore latenza di rete per il client e potrete eseguire le operazioni pianificate di manutenzione delle applicazioni senza tempi di inattività.

Quando un client tenta di connettersi ad un’applicazione web è necessario prima risolvere il nome DNS del servizio con un indirizzo IP. Il client si connette quindi a questo indirizzo IP per accedere al servizio. Azure Traffic Manager risponde alle query DNS che arrivano dal server DNS utilizzato dal client ed è quindi importante considerarlo nel momento in cui si parla di latenza tra client ed applicazione web.

Il punto più importante da comprendere è che Azure Traffic Manager lavora a livello di DNS e usa il servizio DNS per indirizzare i client a specifici endpoint di servizio in base alle regole del metodo di routing del traffico. I client si connettono quindi direttamente all’endpoint selezionato. Traffic Manager non è un proxy o un gateway e non visualizza il traffico tra il client e il servizio.

Figura 1: Principio di funzionamento di Azure Traffic Manager

Le funzionalità offerta da Azure Traffic Manager sono anche disponibili on-premises grazie ai servizi DNS di Windows Server 2016 e successivi. Nell’articolo https://www.ictpower.it/sistemi-operativi/windows-server-2016-highlights-dns-server.htm ho già avuto modo di scrivere come sia possibile configurare dei criteri DNS per specificare come un server DNS risponde alle query che gli arrivano dai client.

In questa guida vi voglio mostrare come Azure Traffic Manager è in grado di gestire il traffico verificando la posizione geografica da cui provengono le query DNS e rispondendo in maniera diversa a seconda della zona di origine della richiesta di connessione, indirizzando gli utenti a endpoint specifici preventivamente configurati. Utilizzerò il Metodo di routing del traffico Geografico

Figura 2: Metodo di routing del traffico Geografico:

Ho creato due applicazioni web in Azure, una in West Europe ed un’altra in East US 2. Mentre in genere lo scopo di Azure Traffic Manager è quello di indirizzare i clienti verso gli stessi contenuti , qui è mia intenzione sottolineare che effettivamente si viene reindirizzati verso due Web App diverse e quindi le pagine principali delle due Web App mostrano chiaramente in quale zona la Web App viene eseguita.

Figura 3: Web App creata in West Europe

Figura 4: Sito eseguito in West Europe

Figura 5: Web App creata in East US 2

Figura 6: Sito eseguito in East US 2

Per creare un profilo di Azure Traffic Manager è sufficiente collegarsi al portale Azure e cercare Traffic Manager Profile nel Marketplace.

Figura 7: Creazione di un nuovo profilo di Traffic Manager

In questa guida creerò un profilo di tipo geografico, che permetterà di reindirizzare le connessioni proveniente dagli Stati Uniti verso la Web App ospitata in East US 2 e le connessioni provenienti dell’ Europa e dalle altre parti del mondo nella Web App ospitata in West Europe.

Quando un profilo è configurato per il routing geografico, ogni endpoint associato al profilo deve avere un set di aree geografiche assegnate. Un’area geografica può avere i seguenti livelli di granularità:

  • Mondo: qualsiasi area
  • Raggruppamento di aree: ad esempio Africa, Medio Oriente, Australia/Pacifico e così via.
  • Paese/area geografica: ad esempio Irlanda, Perù, Regione amministrativa speciale di Hong Kong e così via.
  • Stato/Provincia: ad esempio Stati Uniti-California, Australia-Queensland, Canada-Alberta e così via. Si noti che questo livello di granularità è supportato solo per gli stati e/o le province di Australia, Canada e Stati Uniti.

Quando un’area o un gruppo di aree è assegnato a un endpoint, tutte le richieste da tali aree vengono instradate solo a tale endpoint.

NOTA: Azure Traffic Manager usa l’indirizzo IP di origine della query DNS per determinare l’area da cui l’utente sta eseguendo la query, cioè l’indirizzo IP del resolver DNS locale che esegue la query per conto dell’utente. Le query DNS non vengono ricevute direttamente dai client.

Figura 8: Creazione di un nuovo profilo di Traffic Manager di tipo geografico

Modificate a vostro piacimento il time to live (TTL) del record di NS del vostro profilo di Traffic Manager, il monitoraggio degli endpoint e l’intervallo di probing verso gli endpoint.

Figura 9: Configurazioni del profilo di Azure Traffic Manager

A questo punto aggiungete gli endpoint al vostro profilo. Nel mio caso ho aggiunto prima l’endpoint che punta verso la Web App europea e poi un secondo endpoint che punta verso la Web App americana. Nella parte relativa al Geomapping inserite il regional grouping che più fa al caso vostro.

È importante sottolineare che un’area geografica può essere mappata ad un solo endpoint in un profilo di Traffic Manager quando il tipo di routing è quello geografico.

Figura 10: Aggiunta dell’endpoint che punta alla Web App europea

Figura 11: Aggiunta dell’endpoint che punta alla Web App Americana

La procedura è completata e i due endpoint sono visibili nel portale di Azure. Verificate che il Monitor status visualizzi che sono entrambe Online.

Figura 12: I due endpoint sono stati aggiunti al profilo di Azure Traffic Manager

Gestione del DNS

Per poter permettere che il vostro sito sia risolto in maniera corretta sarà necessario aggiungere un record cname che punti all’alias del profilo di Traffic Manager. Nel mio caso farò puntare il record www.ictpower.cloud all’alias ictpower.trafficmanager.net

Figura 13: Creazione del record CNAME che punta al nome del profilo di Azure Traffic Manager

Assicuratevi di aver creato anche un custom domain per entrambe le vostre il web application. Nella figura sotto è mostrata l’aggiunta del custom domain per il record www.ictpower.cloud, che deve essere fatto per entrambe le Web App.

Figura 14: Aggiunta del custom domain per la Web App

Provando a connettersi all’indirizzo www.ictpower.cloud
dall’Italia verrete reindirizzati alla Web App europea. Questo dimostra che il profilo sta funzionando correttamente.

Figura 15: Connessione alla Web App europea eseguita dall’Italia

Conclusioni

Azure Traffic Manager è un servizio di bilanciamento del carico basato sul DNS che consente di distribuire in modo ottimale il traffico indirizzato alle applicazioni web, offrendo al tempo stesso alta affidabilità e velocità di risposta elevate. Grazie a questo servizio è possibile migliorare le prestazioni e la disponibilità delle applicazioni web, eseguire la manutenzione senza tempi di inattività e distribuire il traffico combinando più metodi di routing per creare regole flessibili in grado di adattarsi alle esigenze di distribuzioni più complesse e di maggiori dimensioni.