Oggi vi volevo parlare di uno dei servizi della piattaforma Windows Azure. E' un servizio che mi è stato utile poco tempo fa per una delle nostre applicazioni SharePoint Online (Office 365). Sto parlando di Azure Traffic Manager, che non è nient’altro che un bilanciatore per altri servizi cloud disponibili sempre all'interno della piattaforma cloud di Microsoft.
Questo bilanciatore permette di spostare le richieste degli utenti finali sul servizio migliore per l’utente stesso. La scelta viene fatta secondo tre differenti algoritmi:

  1. Round robin – Questo metodo sposta le richieste sui diversi endpoint seguendo il noto algoritmo di bilanciamento "Round robin", appunto. Questo si occupa di dividere le varie richieste sui vari nodi, creando una coda e spostando automaticamente gli endpoint in questa coda. Così facendo c’è una distribuzione equa delle richieste su tutti i nodi configurati.

  2. Performance – Questo metodo sposta le richieste sull’endpoint geo-localizzato meglio rispetto all'utente che ha lanciato la richiesta.

  3. Failover – Questo metodo sposta le richiesta su un secondo endpoint, considerato l'endpoint di "backup" (o di "failover" appunto), nel caso in cui l'endpoint primario risulti non raggiungibile. Avete modo di scegliere l’algoritmo che preferite in fase di configurazione della vostra istanza di Azure Traffic Manager e di cambiarlo a vostro piacimento una volta in funzione.
Tramite questo componente avete quindi modo di applicare delle politiche di bilanciamento alle vostre applicazioni web, potendo sfruttare le informazioni di geo-localizzazione dell'utente finale, di garantire un migliore up-time o, più semplicemente, per effettuare attività di maintenance sull'applicazione.
In figura è schematizzato il funzionamento di Azure Traffic Manager, per quanto riguarda l’architettura di rete.



Questo l’elenco delle operazioni che vengono fatte per ogni richiesta:
  1. Il client fa la sua richiesta HTTP ad un particolare nome di dominio
  2. Il DNS, configurato appositamente, inoltra la richiesta all’endpoint di Azure Traffic Manager
  3. Azure Traffic Manager sceglie l'endpoint corretto, in base al meccanismo di bilanciamento scelto e lo manda al client
  4. Il client fa la sua richiesta HTTP all'endpoint scelto da Azure Traffic Manager
La cosa interessante è che questo servizio è disponibile sia per le "Web app" (quelli che erano chiamati prima "Web role", le applicazioni web per intenderci) sia per gli le macchine virtuali. Nel mio caso l’ho trovato veramente molto utile per installare una delle nostre ultime applicazioni SharePoint Online, in cui avevamo la necessità di garantire l’accesso ad utenti europei ed asiatici. Nei prossimi post vedremo come possiamo sfruttare questo componente assieme all'App-Model di Office 365.
Punto molto importante è legato al costo, almeno per le "Web app". Per sfruttare questo meccanismo è necessario che le "Web app" siano all'interno di un piano "Standard".
Questo significa che oltre al costo del Traffic Manager in sé per sé, dovete prevedere un certo tipo di costi di hosting delle vostre applicazioni o delle macchine virtuali.
Il costo del Traffic Manager non è alto, anzi. Provare per credere: http://prices.azure.com
Ma di certo se pensavate di utilizzare i piani gratuiti o shared, dovete mettervi l’anima in pace.

Creazione e configurazione
Ecco i passi per creare una nuova istanza di Azure Traffic Manager e configurarlo in modo tale da bilanciare il traffico su due differenti end-point, in base alla posizione di geo-localizzazione dell’utente che fa la richiesta.

Creiamo la nuova istanza facendo click sullo shortcut "+" che trovate in basso a sinistra, scegliete il percorso: "Network services > Traffic manager > quick create" ed inserite il nome della vostra istanza (che va quindi a formare l'URL del bilanciatore), assieme al metodo di bilanciamento che intendete utilizzare..



Create quindi le vostre due web app e ricordatevi di dimensionarle almeno all'interno del piano "Standard".





Come avete visto, io ne ho messa una in Europa ed una in Asia. Così da sfruttare a pieno la funzionalità di bilanciamento di Azure Traffic Manager e di riuscire quindi a servire i nostri utenti cinesi. Fatto questo, entrate all'interno della vostra istanza di Azure Traffic Manager e aggiungete i due endpoint (le due "Web app" appena create).




Nella precedente immagine potete vedere il warning che vi ricorda che solo le "Web app" dimensionate con il piano "Standard" possono essere utilizzate all'interno del Traffic Manager.
Una volta aggiunti i due endpoint, dovete dare tempo al bilanciatore di configurarsi.



Ora non dovete far altro che fare una richiesta all'indirizzo *.trafficmanager.net e controllare l’effettivo funzionamento del bilanciatore.

Conclusioni
Come vi dicevo, io mi sono trovato molto bene con questo servizio.
Ad oggi ho trovato solo due note dolenti:
  1. Al dominio trafficmanager.net non è stato allegato un certificato valido. Questo vuol dire che una volta che create una nuova istanza di Traffic Manager e la configurate in modo tale da rispondere alle richieste in HTTPS, il browser vi darà l'errore di certificato non valido. Questo accade anche se le App Service che avete configurato all’interno del bilanciatore sono state correttamente configurate in HTTPS.

  2. Una volta configurato Azure Traffic Manager con il metodo “Performance”, non è possibile applicare più di un endpoint per zona geografica. Il che è una scocciatura se c’è la necessità di applicare anche delle politiche di failover sulle vostre applicazioni web.
Vedremo nei prossimi post come fare per ovviare a al primo di questi due problemi.
Nel frattempo ho inserito una segnalazione sullo user voice di Azure:
http://feedback.azure.com/forums/34192--general-feedback/suggestions/7601493-add-a-valid-ssl-certificate-for-urls-trafficmana
Datemi una mano a farla salire, che così speriamo che ci sistemino questa cosa ;)