Azure Traffic Manager

Cuando queremos distribuir el tráfico entre diferentes máquinas virtuales o entre diferentes servicios pensamos automáticamente en los balanceadores de carga. En Azure podemos desplegar varios tipos de balanceadores de carga:

En muchos casos, los balanceadores de carga que podemos desplegar tienen como limitación que los recursos entre los que queremos balancear la carga deben encontrarse en la misma región, o en algunos casos en la misma VNet.

En este post queremos distribuir la carga entre recursos que se encuentran en diferentes regiones de Azure y para conseguir esto vamos a utilizar Azure Traffic Manager.

Supongamos el siguiente escenario:

Traffic Manager se basa en el servicio DNS para redirigir las peticiones al endpoint más adecuado. Los tipos de endpoints soportados por Traffic Manager son máquinas virtuales, Web Apps y Cloud Service. También es posible utilizar Traffic Manager para endpoints que no pertenezcan a Azure.

  1. En nuestro esquema el cliente hace una petición de un recurso, por ejemplo, una Web App. Mediante DNS la petición llega a nuestra instancia de Traffic Manager.
  2. Traffic Manager utiliza un método de enrutamiento para seleccionar el endpoint. Un poco más adelante veremos en este post cuáles son los métodos de enrutamiento que podemos usar.
  3. Traffic Manager devuelve la respuesta DNS al cliente. En esta respuesta ya ha seleccionado el endpoint.
  4. El cliente se conecta directamente al endpoint. Esta conexión no pasa a través de Traffic Manager.

Traffic Manager lleva a cabo comprobaciones de salud (Health Checks) periódicas de los endpoints, por lo que proporciona alta disponibilidad con failover automático.

Vamos a configurar Traffic Manager para distribuir el tráfico entre dos Web Apps que tendremos en las regiones de Central US y East US. Ya tenemos los Resource Groups creados:

Vamos a configurar Traffic Manager para distribuir el tráfico entre dos Web Apps que tendremos en las regiones de Central US y East US. Ya tenemos los Resource Groups creados:

Y empezamos a crear las Web Apps por la de Central US:

Le damos un nombre y le asociamos un App Service Plan de tipo F1 (Free):

Y repetimos el proceso para crear una Web App en la región East US:

Vemos que podemos acceder a cualquiera de ellas:

Y ahora vamos a crear la instancia de Traffic Manager para distribuir la carga entre las dos regiones. Creamos un Traffic Manager Profile:

Vemos que nos ofrece varios métodos de enrutamiento:

  • Performance: Se utiliza para redirigir las peticiones al endpoint que tenga la latencia más baja respecto al cliente.
  • Weighted: Nos permite especificar la cantidad de tráfico que va a recibir cada endpoint. Por ejemplo, si en Central US damos un peso de 7 y en East US un peso de 3, el 70% del tráfico irá a Central US y el resto a East US.
  • Priority: Se utiliza cuando queremos que un endpoint reciba todo el tráfico y el resto actúen como reservas si el primero falla.
  • Geographic: Redirige las peticiones en función de la localización geográfica más cercana al cliente, que no tiene por qué ser necesariamente la de menor latencia.
  • Multivalue: Se utiliza cuando lo endpoints son direcciones IPv4 o IPv6.
  • Subnet: Permite asignar rangos de direcciones IP origen a los endpoints de forma que cuando llega una petición se redirige al endpoint que tenga asignado el rango de IPs correspondiente.

Vamos a crear un perfil que utilice el tipo de enrutamiento Performance:

Una vez creado el perfil pasamos a configurarlo, para lo que vamos “Endpoints”:

Y añadimos las Web Apps que hemos creado como endpoints:

En pocos segundos nos aparecerán los dos endpoints y en “Monitor Status” veremos “Online”:

Esto significa que los dos están disponibles y Traffic Manager repartirá la carga entre ambos.

Es posible habilitar la característica Traffic View para obtener información sobre localizaciones, volumen de peticiones e información de latencia para las conexiones, aunque esto tiene un precio adicional:

Y por último vamos a comprobar que está funcionando Traffic Manager. Para esto vamos a la pestaña Overview y comprobamos nuestra URL: