Demo simple de GSLB con AVI

Una gran característica de AVI (NSX Advanced Load Balancer) es su servicio de Global Service Load Balancer (GSLB). Desarrollado principalmente para aplicar geo-localización a nuestros sitios distribuidos en diferentes regiones o paises.

Sin embargo, también lo podemos usar para migrar una aplicación a una nueva plataforma. Por ejemplo, desde servidores virtuales a Kubernetes en vSphere with Tanzu.

Escenario

Nuestra aplicación "App1" está alojada en máquinas virtuales. La nueva versión de la aplicación está alojada en un cluster de Kubernetes en nuestra plataforma de vSphere with Tanzu que utiliza AVI como motor de balanceo.

Qué hace GSLB

En forma muy simplificada, GSLB permite definir una aplicación, detrás de un FQDN gestionado por el servicio de DNS de AVI, que tiene varios destinos posibles. Cuando en nuestro navegador ingresamos la URL de la aplicación, GSLB "decide" (por geo-localización o prioridad) a cual destino enviarnos. Es, en esencia, un DNS dinámico.

Paso 1 - Configurar el servicio de DNS

En AVI navegamos Templates > IPAM/DNS Profiles > Create > DNS Profile

Ingresamos un nombre y agregamos el subdominio que va a controlar el DNS para el servicio de GSLB

Luego navegamos Infrastructure > Clouds, editamos el cloud correspondiente y en IPAM/DNS seleccionamos el profile que acabamos de crear.

Nos queda configurar el servicio, para ello navegamos Applications > Virtual Services > Create Virtual Service > Advanced Setup

Ingresamos un nombre, y seleccionamos el Application Profile "System-DNS". Veremos que el TCP/UDP Profile cambia automáticamente.

En la solapa "Static DNS Records" agregamos un registro estático solo para poder verificar que el servicio está funcionando correctamente.
Una vez creado el servicio, podremos obtener la IP navegando Applications > Virtual Services. Con esta IP podremos verificar si el servicio funciona correctamente. En un terminal podemos ejectuar un NSLookup o un DIG definiendo la IP del servicio como servidor DNS y el FQDN del registro estático que ingresamos previamente.

dig @ip_servicio_dns test.gslb.company.local +noall +answer
test.gslb.company.local.	30	IN	A	8.8.8.8

Con el servicio funcionando, es momento de delegar el subzona DNS en nuestros DNSs principales. Si usamos DNS de Microsoft, hacemos clic derecho en el dominio, en este caso "company.local",  seleccionamos New Delegation, agregamos el dominio delegado, que para esta demo sería "gslb", agregamos la IP del servicio de DNS de AVI y finalizamos.

Una vez configurada la delegación de dominio, verificamos que todo funcione repitiendo la consulta anterior pero consultando al servidor DNS principal de nuestro datacenter.

Configuración de GSLB

En AVI navegamos Infrastructure > GSLB > Site Configuration para configurar el servicio.

Deberemos ingresar un nombre, las credenciales de AVI, IP y puerto que ya estarán autocompletados

Agregamos el dominio que va a utilizar el servicio, para esta demo es "gslb.company.local"

Debemos definir el Service Engine Group. Para esta demo, seleccionamos "Default-Group" que ya existe en nuestra implementación de AVI para vSphere with Tanzu.

Luego de guardar los cambios, esperamos a que "Site Status" esté en verde. Si queda en rojo podemos recargar la página para que actualice el estado.

Hacemos clic en "Add Third-party Site" y sólo debemos definir un nombre. Estamos creando una categoría para luego agrupar los destinos externos de nuestras aplicaciones.

Una vez realizados los pasos anteriores, aparecerá un nuevo item "GSLB Service" cuando navegamos Applications

Seleccionamos Applications > GSLB Services > Create > Advanced Setup
Ingresamos los siguientes datos:
  • Name: El nombre de nuestro servicio
  • Application name: el "hostname" de nuestra URL
  • Subdomain: para esta demo "gslb.company.local"
Con estos datos, la URL que deberemos navegar para ingresar a la Aplicación es "app1.gslb.company.local".

Seleccionamos "Priority-based" como algoritmo de balanceo y hacemos clic en Add Pool

Vamos a agregar el destino externo, es decir, el que no depende de un servicio de AVI. Definimos un nombre, la prioridad, y en Pool Member definimos la IP o el FQDN del servicio externo.

Seleccionamos el "Third party Site" que creamos antes:

Agregamos un nuevo Pool, en este caso para el servicio balanceado por AVI. Ingresamos nombre, prioridad (menor a la anterior), seleccionamos "Virtual Service" y seleccionamos el servicio de AVI correspondiente a nuestra aplicación.

Al terminar veremos la lista de Pools que tiene nuestra aplicación.

Y... Listo! El pool que esté primero en la lista, el que tenga mayor prioridad, será el que veamos cuando navegamos nuestra URL (app1.gslb.company.local). Cambiando la prioridad de los Pools, cambiará la aplicación que estemos navegando.

Consumo de recursos

Cuando utilizamos GSLB con Geo-Localización, AVI consume más memoria y más cpu que lo habitual. Por esta razón se recomienda utilizar un Service Engine group separado. 

Sin embargo, si lo usamos para migrar aplicaciones en nuestro datacenter como en esta demo, el consumo es mínimo y podemos utilizar el Service Engine grupo que ya tenemos creado.

Conclusión

Si bien GSLB está pensado principalmente para grandes implementaciones, también podemos utilizarlo para migraciones de aplicaciones en nuestro datacenter. Una vez activado el servicio es muy sencillo de configurar y mantener.

Comentarios

Entradas populares de este blog

vRA8 - Definir redes disponibles por Projecto

Aria Automation - crear lista ordenada de key-value en custom forms con Orchestrator