lunes, 11 de diciembre de 2006

VI3 y la red.

Otro de los aspectos fundamentales de la virtualización es la red. De nada nos vale virtualizar cualquier servidor si este no puede comunicarse eficientemente con el resto de servidores o con los clientes.

Uno de los grandes avances de VI3 respecto a las versiones anteriores de ESX es una gestión de la conectividad de las máquinas virtuales francamente avanzada. Antes de proseguir, aclaremos un poco el concepto de "Virtual Networking".

Virtual Switches.

VMware VI3 crea una capa de abstracción entre las máquinas virtuales y las interfaces de red físicas de la máquina host mediante los "Virtual Switches". Un "virtual switch", tal y como su nombre indica, es un dispositivo de red virtual a cuyos "puertos" conectamos las máquinas virtuales y que puede (o no) disponer de un "uplink" o enlace externo hacia una (o varias) tarjeta(s) de red del servidor ESX (o una VLAN de la misma). Estos switches se comportan exactamente igual que ese Catalyst, 3com o nortel que tenéis en el CPD, con unas cuantas diferencias:

- No hay Spanning Tree que valga.
- No son configurables (en el sentido de que no se aplican configuraciones específicas por línea de comando)
- Soportan de 8 a 1016 puertos, y son configurables (y reconfigurables) en ese aspecto.
- Todos sus puertos son a gigabit.
- No son aplilables/estacables dentro del mismo host.
- El ancho de banda del backplane (o switching fabric) es configurable.
- No hablan 802.1q (VLANs, para los menos puestos).

Cuando un virtual switch no tiene asignada una tarjeta del servidor ESX, el tráfico se encamina localmente dentro del ESX. Esto es de especial utilidad para Heartbeats, redes cerradas donde una de las máquinas virtuales enruta paquetes entre un Virtual Switch interno y otro externo o, para los fanáticos de la seguridad, para crear entornos de test de penetración seguros.

Gestión de ancho de banda de los Virtual Switches.

¿Tantos switches gigabit como quiera? ¿Y cómo evito que un par de servidores se coman el ancho de banda disponible?... tranquilos. VMware, tal como enumeré antes, permite definir el ancho de banda del backplane del switch virtual (para que nos entendamos, cuánto le dejamos mover a TODOS los servidores conectados a ese switch). ESX permite la definición de tres valores para controlar el ancho de banda de esos switches: El ancho de banda medio garantizado (Average Bandwidth), el ancho de banda Pico (Peak Bandwith) y la cantidad de tráfico máximo que ESX te permitirá enviar por encima del Average Bandwidth (y por debajo del Peak) antes de que venga el tio paco con las rebajas, es decir, antes de empezar a descartar el diferencial entre el exceso y el ancho de banda medio)... vamos, que para los que conozcáis Frame Relay, algo así como CIR y EIR.

Port Groups.

Un Port Group (Grupo de Puertos) es un conjunto de puertos virtuales dedicados a una determinada función. Cada port group es independiente del resto de port groups definidos en un swith virtual... algo así como la segmentación en los hubs (¿recordáis?)... para los más modernos, son VLANs (dominios de colisión separados) sin posibilidad de 802.1q.

Tipos de redes.

VMware asigna tres roles específicos a sus conexiones de red, y estos son los siguientes:

Consola de Servicio (Service Console): Es una IP para la gestión y acceso a los servidores ESX. Es, por decirlo así, la tarjeta de red de la consola. Sólo es usada para el acceso a la consola de VMware, y no puede ser usada por las máquinas virtuales o el kernel de VMware. Cada una de estas conexiones usa un puerto del switch virtual. Pueden existir tantos como puertos haya disponibles.

Puerto del Kernel de VMware (VMkernel Port): Son puertos de acceso del kernel de VMware al exterior. Se usan para el acceso iSCSI, NFS o vMotion. No pueden ser usados para las máquinas virtuales. Ocupan un puerto del switch virtual. Pueden existir tantos como puertos haya disponibles.

Grupo de puertos de máquinas virtuales (Virtual Machine Port Groups): Son el conjunto de puertos asignados a máquinas virtuales. Ocupan todos los puertos libres de un switch virtual.

la siguiente figura muestra un ejemplo de un Virtual Switch configurado con los tres tipos de redes:

La asignación de puertos es dinámica. Si disponemos de un virtual switch de 24 puertos y configuramos dos VMkernel Ports y tres service console, al crear un Virtual Machine Port Group, nos asignará automáticamente el resto de los puertos virtuales, es decir, tendremos conexiones para 19 máquinas virtuales.

Virtual Machine Port Groups.

Este bonito gráfico (que debemos agradecer a VMware) ilustra cómo funciona el networking en VMware. Como puede observarse, el Virtual switch asbtrae totalmente a las máquinas virtuales, que acceden al mundo "real" con sus propias MACs individuales, tal y como si estuviesen conectadas a un switch real. Nótese que el gráfico llama "outbound adapter" a la tarjeta de red que hace de "uplink" entre el switch virtual y la red real... pero esto también puede realizarse a través de una VLAN definida en el "outbound adapter" del host ESX. Este es, precisamente, uno de los aspectos que más versatilidad y potencia (y más esfuerzo de configuración) nos ofrece. El siguiente dibujo (lo siento, es mío, y no dibujo tan bien como la gente de VMware), ilustra este escenario.
Esto significa que, si como yo, sois unos adeptos a dividir redes, podemos extender el manto de la virtualización prácticamente a cualquier parte de vuestra red. Esto resulta de especial importancia cuando, por ejemplo, queremos virtualizar un portal web, lo que nos obliga a llevar los tentáculos de nuestro VMware a zonas dispersas o separadas de nuestro entorno de producción interno.

Seguiremos hablando del tema del networking, en escenarios más complejos.

Un Saludo.

J.


1 comentario:

Alex Casanova dijo...

Apasionante todo lo que cuentas. Me he quedado con la boca abierta después de leer este post y con una depresión impresionante de ver todo lo que me queda por aprender.

Mandarte de nuevo todo mi apoyo para que continúes ilustrándonos a todos en este mundo de la virtualización.

Un saludo
Alex
www.bicubik.net