Mostrando entradas con la etiqueta VDI. Mostrar todas las entradas
Mostrando entradas con la etiqueta VDI. Mostrar todas las entradas

lunes, 9 de enero de 2012

El perfecto Thin Client

Sorprendido me he quedado cuando he encontrado esta pequeña maravilla: el HDMI Dongle de Allways Innovating. Aunque está orientado al entorno doméstico/personal, la aplicación para entornos VDI me vino de inmediato a la cabeza. Primero veamos una imagen del juguete en cuestión:

Pues sí. Es justo lo que parece. Un dongle que conectamos a un monitor/televisor por HDMI, lo alimentamos por USB y.. ¡¡ voilá!!! todo un Android ICS (IceCream Sandwich) listo para funcionar. El juguete en cuestión viene equipado con lo siguiente:

  • Procesador Dual Cortex-A9 OMAP4, con velicidades de 1 a 1.8 Ghz
  • de 256 a 1 GB de RAM dependiendo del modelo
  • Almacenamiento MiniSD
  • SOporte Full HD y decodificación H.264
  • Wi-Fi 802.11 b/g/m, Bluetooth 2.1
  • Soporte NFC
  • Control de voz
  • Acelerómetro en el mando a distancia.
Las tripas del juguete nos muestran la simplicidad del dispositivo:
Y aquí el mando a distancia:
Nada más verlo, me imaginé conectándolo a mi televisor, asociando el teclado bluetooth y descargando el cliente PCoIP o ICA HDX.... el resto ya podéis imaginarlo.

Aquí os dejo un vídeo demostrativo de una demostración del juguete en cuestión en un televisor del hotel, hecha por Grègoire Gentil, CEO de la compañía.


Aparte del factor de forma, el uso de android como sistema operativo del thin client nos permite ofrecer un entorno autónomo, libre de licencias, sin plataforma de gestión propietaria y a un coste ridículo, a la vez que permitimos a nuestro usuario el uso de correo e internet (como poco) en su thin client (que sincronizará con su smartphone o tablet). Allways Innovating estima el coste entre los 50 y 80€, dependiendo de la configuración.

La portabilidad del mismo permite a los usuarios móviles acceder a su entorno profesional desde, por ejemplo, el televisor de un hotel.
No hace fata decir que será mi próximo gadget.

domingo, 30 de octubre de 2011

Citrix VDI in a Box - Parte I


Si ha habido un producto disgresor y con una orientación diametralmente opuesta a la de los “espadas” en esto de la virtualización del desktop, ha sido Kaviza VDI in a Box.  En pocas palabras, frente a la necesidad de infraestructuras más o menos pesadas que engloban las propuestas de fabricantes como Citrix, VMware y otros, Kaviza apostó por la simplicidad.


Conocí kaviza de la mano de Guise Bule, uno de los grandes en esto de los virtual desktops, y de su compañia, tuCloud, que me invitaron a conocer y evaluar VDI in a Box cuando todavía era Kaviza. No sólo me invitaron a conocer el producto (cosa que jamás podré agradecer lo suficiente) sino a revisar su implementación como plataforma IaaS/DaaS en sus clientes, entre los que se cuenta el Laboratorio Nacional Lawrence Livermore (Lawrence Livermore National Laboratory), donde VDI in a Box gestiona un parque de más de 2000 desktops simultáneos que dan soporte a 5000 usuarios.

El producto se presentaba como un simple appliance virtual que contenía todo lo necesario para echar a andar un entorno VDI clásico, aportando la novedad de que no requería de infraestructura compartida. Por otro lado, y bajo la filosofía de ¿para qué entrar en una guerra que es difícil ganar?, llegaron a un acuerdo con Citrix para usar HDX como protocolo de presentación de alto rendimiento, sin olvidar RDP para entornos menos exigentes en lo que a presentación se refiere. Por otro lado, en lugar de apostar por infraestructuras de virtualización centralizadas, heredadas de los entornos de servidor y que el transcurso del tiempo ha demostrado que no siempre son eficientes, Kaviza apostó por el VDI distribuído,  donde para nada se hablaba de entornos centralizados (tipo VMware View, Xendesktop o similares) sino en una malla de infraestructuras independientes sincronizadas entre sí, con infraestructura de bajo coste y sin tecnología compartida… básicamente algo en la filosofía del desktop de usuario: máximo rendimiento al menor coste.
Kaviza fue adquirida por Citrix este año, dentro de la impresionante campaña de adquisiciones de esta última, entre las que contamos, además a Netviewer, EMS-Cortex, cloud.com, Ringcube y Sharefile.
Citrix ha renombrado el producto como Citrix VDI in a Box, y lo ha posicionado en el tramo SMB, creando incluso una línea de negocio, donde ha colocado a Krishna Subramanian, anterior CCO de Kaviza, como responsable de la unidad.

Arquitectura de VDI-in-a-box.

A diferencia del resto de productos, VDI-in-a-box gestiona hosts, no infraestructuras. Cada hypervisor dentro de un despliegue VDI-in-a-box está gestionado individualmente por un appliance, que toma el control del mismo y lo incorpora al Grid, unidad única de gestión del entorno. Cada appliance gestiona y controla el hypervisor , integrando los recursos del mismo dentro del conjunto de los hypervisores, asegurándose adicionalmente de que ese hypervisor ofrece las VM, plantillas y configuraciones del conjunto de la infraestructura. A este conjunto, VDI-in –a-box le llama Grid.


Despliegue típico de Citrix VDI in a Box
El grid es una entidad conjunta de gestión, por lo que no importa en qué appliance configuremos qué parámetro o característica para que todo el Grid quede configurado. Cuando definimos una imagen de un desktop, esta es automáticamente replicada a los servidores miembros. Así mismo, el Grid es tolerante a fallos, y no depende de ninguno de sus miembros para sobrevivir (salvo, evidentemente, del último).  Comparemos ahora con una estructura tradicional que ofrezca el mismo nivel de tolerancia:
Despliegue típico VDI

Grid vs Entornos tradicionales.

Como observamos, los productos tradicionales requieren de una total interrelación entre distintos subsistemas externos totalmente al entorno VDI. Tradicionalmente, el bróker VDI no “habla” directamente con los hypervisores (algunos, de hecho, no lo permiten), sino con la plataforma de gestión de virtualización, que para alcanzar el entorno de redundancia requerido, ha de usar productos de alta disponibilidad y/o almacenamiento compartido (clásico cluster, que tampoco ofrece el nivel tolerancia requerido: las bases de datos y la configuración siguen estando en un solo sitio). Así mismo, es necesario cierto nivel de tolerancia en los brokers, ya sea mediante su clusterizado o mediante la réplica de la base de datos.
Por otro lado, existe la dependencia del bróker respecto a Directorio Activo. Si este no autentica a un usuario que intenta acceder a su desktop, no hay credenciales cacheadas que valgan…. Aunque posteriormente el desktop sí te deje acceder con ellas. También el uso mandatorio que algunos brokers realizan de Active Directory incrementa la complejidad de los entornos, especialmente aquellos donde AD no se usaba o donde sólo se usaba por las capacidades de gestión del desktop (Despliegue o control con GPO’s), que dentro del mundo VDI pueden no ser necesarias. Recordemos que Active Directory requiere CAL (Client Access Licenses)
Al gestionar una infraestructura común, el uso de almacenamiento compartido es poco menos que mandatorio: Ya sea SAN o NAS, tanto las templates, las imágenes y los propios desktops deben ser accesibles por todos los hipervisores. Evidentemente un entorno tan crítico como el desktop del usuario debe tener cierta protección en lo que al almacenamiento se refiere.
Todos estos elementos complican la gestión e incrementan los costes, lo que a veces obliga a integrar el entorno VDI dentro de nuestro entorno de virtualización de servidores, lo que no suele ser buena idea, como apunté en la serie Repensando VDI cuando hablé de, entre otras cosas, de los requerimientos de entrada/salida de un entorno VDI.

VDI in a box, en resumen, opera en un modo muy similar a active directory: Ningún servidor es imprescindible para el funcionamiento del  entorno, algo a mi parecer muy de agradecer.

Gestión.
Otro de los aspectos diferenciales de VDI in a Box es la capacidad de gestión. Al eliminar elementos compartidos, se elimina, consecuentemente, su gestión. No hay SAN/NAS que gestionar (si quieres que no la haya, claro), ni servidores de gestión de infraestructura virtual (vCenter, SCVMM or XenCenter)… simplemente desktops y usuarios. Esto tiene capital importancia cuando hay que delegar loa gestión del entorno VDI a personal no familiarizado con la infraestructura virtual. Al no compartir más infraestructura que la red, los administradores del entorno virtual como los del almacenamiento no tienen que dedicar tiempo extra a la supervisión de la infraestructura de escritorios. En pocas palabras, cada uno a lo suyo y en lo suyo.
Seguiremos hablando de VDI in a Box…

miércoles, 7 de septiembre de 2011

Virtualización de Aplicaciones / Parte 1


Junto con la de servidores, la llamada virtualización de aplicaciones es uno de las tecnologías que en estos últimos años ha acaparado más post y notas técnicas. La tecnología VDI también ha impulsado la evolución de las soluciones que permiten ejecutar una aplicación sin instalarla previamente.
Quien, como yo hasta hace poco, reinstalaba su PC cada cierto tiempo, conoce la sensación de pérdida de tiempo que supone la instalación de las aplicaciones. En casi cualquier sistema operativo,  prácticamente todas las aplicaciones modifican el o el estado del mismo, o su configuración o sus archivos. En el particular caso de Windows, la instalación de una aplicación supone modificaciones en las dll registradas, controles, entradas del registro y una buena cantidad de modificaciones en el árbol de ficheros. Así mismo, estas modificaciones no sólo afectan a la aplicación, sino al estado global del sistema, lo que puede impedirnos la instalación de otras o alterar su funcionamiento. Por ejemplo, mantener distintas versiones del browser de internet es a menudo imposible.
Por otro lado, una vez instalada, y como una buena novia, desinstalarla suele dejar trazas en nuestro sistema (basta echar un ojo al siempre creciente – como la prima de riesgo – directorio c:\windows\winsxs para comprobarlo), y en ocasiones estas trazas pueden interferir con futuras aplicaciones.
En entornos VDI, este comportamiento supone un dolor de cabeza adicional, ya que estas dificultades pueden obligarnos a tener que trabajar con múltiples imágenes maestras, cada una con la configuración necesaria, lo que puede convertirse en una auténtica pesadilla a la hora de actualizar copias maestras.
Tradicionalmente, soluciones como Citrix Metaframe (hoy XenApp) y Terminal services nos ayudaban en este problema: Desplegábamos la aplicación en los desktops mediante una sesión con el servidor que la hospedaba. Esto desplaza el “problema” a una ignota granja de servidores en donde los nunca totalmente considerados ingenieros Citrix/TS  toreaban el problema como buenamente podían (hay aplicaciones que deberían ser usadas como prueba de cargo en un juicio contra sus desarrolladores) la coexistencia. Muchas veces, para bien o para mal, no hay más remedio que añadir servidores a la granja.


Por otro lado, aparecieron soluciones basadas en el streaming de la aplicación al desktop bajo demanda. Este es el caso de SoftGrid (renombrada App-V tras ser adquirida por Microsoft). Softgrid actúa como servidor de los ejecutables y ficheros relacionados con las aplicaciones, desplegando su entorno completo de ejecución (aplicación, dlls y demás) en el cliente según fuera requerido.

Desafortunadamente, siempre hay aplicaciones, ya por diseño, ya por requerimientos, que no son susceptibles de ser desplegadas por este medio y siempre terminan instaladas en el PC local, o lo que es peor, en un VDI dedicado y personalizado (que requiere otra serie de medidas, como son el backup específico)
Frente a estas tecnologías, que desplazan de una u otra manera los problemas inherentes a la instalación de aplicaciones hacia el servidor, nace otra visión.
¿Qué una aplicación modifica el sistema? Pues usemos una capa de abstracción entre la aplicación y el sistema que recree los requerimientos específicos de la aplicación durante su ejecución y que estos desaparezcan al dejar de utilizar la misma. Es lo que normalmente es conocido como “virtualización de aplicaciones”, aunque yo veo más acertado denominarlo como “empaquetado del entorno de ejecución”.
Este método requiere de la ejecución de una delgada capa de software que recree el entorno que la aplicación instalada espera encontrar: dll, entradas de registro y modificaciones del filesystem.
Esta capa “aprende” las modificaciones durante el paso previo de la paquetización: es decir, la instalación de la aplicación se realiza sobre un sistema operativo “limpio” y es monitorizada por un aplicativo que toma una “foto” del sistema antes de la instalación y otra después, comparando ambos entornos. El diferencial se empaqueta en un archivo que, además de este, incluye la capa de software antes mencionada. Dependiendo del producto usado, el resultado será un ejecutable o un ejecutable más un archivo que contiene ese diferencial.
Cuando ejecutamos este, el Appvisor (llamemos así a la capa de abstracción del sistema operativo tal como lo hace el “hypervisor” del hardware) genera en base al contenido del archivo de imagen diferencial el entorno que la aplicación espera, y procede a ejecutarla. El AppVisor introduce conceptos como el registro virtual (lo que le permite añadir las entradas y configuraciones que la aplicación espera encontrar y/o espera escribir) y un sistema de ficheros virtual (donde la aplicación encuentra y/o escribe lo que espera encontrar y espera escribir). La suma de estos dos conceptos es lo que viene siendo llamado VOS o Virtual Operating System.
En lo referente al registro virtual, el appvisor simplemente “incrusta” las claves de registro que ha generado la aplicación de forma que esta pueda encontrarlas tal y como si estuviesen en el registro del sistema. En lo referente al filesystem, el appvisor hace algo parecido al chroot de unix: Cambia el path relativo del filesystem virtual a absoluto… es decir, si  ejecutamos nuestra aplicación virtual en c:\app\virtual\app1 y la aplicación fue instalada en c:\archivos de programa\app1, el hypervisor hace ese “chroot” para que la aplicación encuentre los ficheros que necesita (ejecutables, dll, etc) donde espera encontrarlos.
Como resumen, vaya esta gráfico:



Sin ánimo de entrar en polémicas sobre cuál de las aproximaciones descritas es la mejor, suena evidente el hecho de que esta última no requiere de servidores o infraestructura externa al propio desktop para ejecutar una aplicación virtual y así evitar el inconveniente de las instalaciones locales.

Modos de interacción con el sistema.

Adicionalmente, el appvisor suministra varios modos de interacción con el sistema que ejecuta la aplicación virtual, basadas en la permanencia de los cambios que está puede o no realizar en el sistema operativo donde se ejecuta.
Modo integrado: En este modo, los cambios que la aplicación haga tanto en el filesystem (en lo referente a archivos de datos generados por la misma, no por sus dll o ejecutables) se realizan en el sistema operativo real. Esto permite, por ejemplo, que se graben entradas de registro o ficheros de datos que permanecerán en sistema operativo tras cerrar la aplicación. En un ejemplo real, un Outlook virtualizado dejaría el PST en el disco duro del Windows donde lo ejecutemos. Así mismo, las modificaciones que la aplicación realice al sistema (ficheros o registro) quedarían plasmadas en el sistema. Por otro lado, la aplicación virtualizada tendría acceso a los archivos del sistema (Un Outlook virtualizado, por ejemplo, podría acceder a un documento existente para enviarlo como fichero adjunto). Si ese Outlook descargase un adjunto, podría hacerlo en el filesystem del sistema operativo.
Modo Mixto: En este modo, la app virtual tiene acceso de lectura al filesystem real, pero todos los cambios que realice en el mismo, sólo se reflejarán en el VOS. Por seguir el ejemplo del Outlook, este podrá adjuntar ficheros existentes, pero si descarga un adjunto, este se almacenará en el VOS. Lo mismo aplica a entradas de registro.
Modo aislado: En este modo la aplicación virtual no tiene visibilidad del sistema operativo.  Sólo podrá acceder a los archivos contenidos en el VOS. Los datos generados por la misma serán almacenados en el VOS. En este modo, el Outlook virtual no podría acceder a un documento previamente  almacenado en el disco del PC ni podría escribir en el mismo.
Veamos todo esto en una tabla resumen:
Modo
Visibilidad del sistema
Modificación de la app virtual
Modificación del sistema
Nuevos elementos
Mixto
Completa(*)
VOS
VOS
VOS
Integrado
Completa(*)
VOS
Sistema
Sistema
Aislado
No visible
VOS
No accesible
VOS
(*) En caso de coincidencia de un elemento en la aplicación virtual y en el sistema operativo, prevalece siempre el contenido del filesystem del VOS. Ejemplo Outlook: Si existe en el sistema la carpeta c:\attach y también existe en el VOS, prevalecerá el contenido de este último.
Cada producto implementa estas características con ligeras variaciones, pero básicamente todas las aproximaciones son similares.

VOS. ¿Cómo gestiona el filesystem?

Bien. Vamos a centrarnos en el sistema de ficheros.  Una aplicación “real”, es decir, instalada en el sistema operativo, toma como referencia la unidad lógica (nuestro C:, D: etc) del sistema donde se ejecuta para interacturar con los datos. Es decir… sabe que está instalada en c: o d: y que los datos han de ser guardados en estas unidades. En  lo referente a la instalación, este path suele ser inamovible: Si movemos la aplicación de c:\Program Files\app1 (que es donde la instalamos) a d:\program files\app2, lo más probable es que perdamos un par de horas en un académicamente instructivo per nada práctico paseo por el registro y por las utilidades de Windows para rendirnos horas más tarde. El appvisor “engaña” a la aplicación mostrándole una o varias unidades lógicas que, dependiendo del modo de empaquetado (ver tabla anterior) puede o no coincidir con las existentes en el sistema operativo real.  En modo integrado, por ejemplo, la aplicación modificará el fichero “c:\windows\system\readme.txt” en su localización original. En modo mixto, no podrá acceder a ese fichero, ya que el appvisor le “redirigirá” a la carpeta contenida en el VOS, y en modo aislado, no podrá acceder a ese fichero. El appvisor introduce un filtro que, dependiendo del modo, redirigirá hacia el sistema operativo real o a una carpeta que contiene el sistema operativo virtual. Esta localización variará dependiendo del modo y el producto. Veamos un gráfico.

Esta imagen ilustra un posible escenario aislado. Como puede observarse, la aplicación virtual al ser ejecutada e invocada por el appvisor, crea una estructura de directorios bajo la carpeta donde hayamos copiado el ejecutable (esto también puede variar) y despliega el filesystem virtual. A partir de ese momento, la app virtual verá el contenido de la carpeta VOS como el filesystem del sistema.
Esto nos permite, por ejemplo, llevarnos nuestro manido Outlook virtual (con sus pst) en un pen drive…. O colgarlo de una unidad de red. ¿No os parece que para VDI esta última posibilidad resulta de interés?
Jugando con los diferentes modos, conseguiremos mayor o menos visibilidad de los archivos generados por la app virtual desde otras aplicaciones (virtualizadas o no)

El lado oscuro.

Por supuesto, tiene sus contras. No todas las aplicaciones admiten ser virtualizadas, o requieren de especiales opciones de instalación o tuneo posterior del paquete para que funcionen. Los productos que requieren activación (especialmente los de Microsoft) suelen requerir de tunning específico.
Así mismo, cuidado con los updates. En muchos casos, actualizar una aplicación no puede ser delegado a su propio mecanismo de actualización y es posible que se requiera el despliegue de una nueva versión de la aplicación virtualizada. También el licenciamiento puede verse afectao, especialmente si no disponemos de licenciamiento enterprise (una sola key o activación para toda la compañía) y la aplicación pide esta durante el proceso de instalación (léase Office 2003 retail, por ejemplo).

Productos comerciales.

Tenemos los siguientes (hasta donde yo sé, claro).
  •           Appzero
  •           Argo Application installer
  •           BoxedApp
  •           Cameyo
  •           InstallFree
  •           JauntePE
  •           Microsoft v-App (Modo standalone)
  •           Ringcube MojoPack
  •           Symantec Workspace Virtualization
  •           VMware ThinApp
  •           LanDesk Application Virtualization
  •           MoleBox

Ya está bien por hoy. En el próximo post hablaré de la íntima relación entre la tecnología de desktop virtual y la virtualización de aplicaciones. 

viernes, 2 de septiembre de 2011

Repensando VDI - Parte III y final


Bueno… como vimos en los post anteriores, ya tenemos en la mano el diseño de una solución VDI para nuestro proyecto en particular. Ahora, antes de lanzarnos a hacer pedidos parémonos a reflexionar.
Para unos doscientos desktops disponemos encima de la mesa de tres servidores de alta gama, una SAN en la que hemos perdido un entretenido rato en diseñar nuestra SAN teniendo en cuenta aspectos como los IOPS.
Por otro lado, y como parte de un buen diseño, vemos que la granularidad en la escalabilidad de la solución se nos torna baja. Me explico… para 10 desktops más, hemos de adquirir un equipo similar, con un coste que os recuerdo roza los 14K.
Además, y desde el punto de vista de la gestión, hemos añadido la gestión de la SAN y del almacenamiento, lo que dependiendo del departamento de IT del cliente, supone una nueva carga de trabajo, que requerirá cierta monitorización y ajustes durante la vida del entorno.

Todo esto que resumo en unas cuantas líneas supone un nuevo sistema crítico en el entorno del cliente, con los mismos, si no mayores, requerimientos de gestión y monitorización que su entorno de servidores…. Y todo para un entorno, el de PCs, que no requiere, en un entorno de desktop físico, de tanto nivel de administración y conocimiento de las tecnologías implicadas.

Keep it simple
Quizá debamos revisar nuestra concepción de un entorno como el que nos ocupa. Empecemos por los servidores.
Es indiscutible, al menos bajo los parámetros tradicionales, que la densidad es el secreto del éxito en un entorno VDI. Es decir, cuántos más VM “metamos” en un servidor, mejor… ¿mejor?. Servidores más grandes son más caros, y ante el fallo de uno, el impacto es mayor: Enel ejemplo en el que estamos trabajando en el que hemos añadido un tercer servidor sólo por si acaso (recordemos que la pregunta no es si fallará, sino cuando lo hará). Este tercer servidor además nos permite asumir sin paradas las tareas de mantenimiento de la infraestructura, lo que sigue obligándonos a desconectar a cien usuarios de uno de ellos para que se conecten a otro. Así mismo, y tal y como recordamos antes, la granularidad es baja: Ampliamos nuestra infraestructura por mor a la uniformidad de entornos de 100 en 100 desktops.
Por otro lado, el almacenamiento. Según nuestros cálculos, necesitamos al menos 15 discos para satisfacer el hambre de IOPS de nuestra instalación. Nos vemos dimensionando una SAN de un coste respetable (discos de 15K, multipath, etc) únicamente por las necesidades de IOPS….

Servidores: Enanos vs Gigantes
Si incrementamos el número de nodos, disminuyendo a la par la especialización del hardware (nada de memoria ECC, SATA en lugar de SAS, Placas base de desktop con procesadores de alto rendimiento) observamos  que,  a igual número de cores y memoria, la factura baja sustancialmente… más que nada en lo referente a la redundancia. Si sustituimos cada nodo de los antes descritos por 4 0 5 Core I7 980/990 con 24 Gb de RAM, el importe de la factura en lo referente a servidores descenderá bastante, manteniendo (e incluso decrementando) el número de desktops por core. El coste de la redundancia (ese servidor extra) también se reduce (ya que la configuración propuesta cuesta posiblemente entre tres y cinco veces menos).
Almacenamiento: Divide y vencerás.
Respecto al almacenamiento…. Olvidémonos de la SAN. Discos locales SSD de hasta un Tb en / si queremos, configuración RAID. Hoy en día un disco SSD de 500 Gb (que nos va a dar más IOPS que TODA una SAN tradicional)  de 500 MB/sec de lectura/escritura, ronda los 1200€… más que suficiente para un entorno de 20-30 desktops por servidor.  Discos algo más modestos del orden de 300 Gb con ratios de 270/205 MB/s de lectura y escritura rondan los 50 0€.

Un equipo de estas características (dependiendo de si ponemos o no el disco SSD en RAID) puede oscilar entre los 2000 y 3000€. Si volvemos  al coste de los servidores propuestos (13K por servidor x 3), vemos que con el mismo presupuesto (39000€), podremos adquirir  entre  13 y 19 de estos equipos, suministrando entre 78 cores/ 312 Gb de RAM y 114 cores con 459 Gb de RAM comparados con los 72 Cores y 288 Gb de RAM de la solución inicial. En lo referente al almacenamiento,  la solución SSD provee entre 3000 y 6000 IOPS por microservidor frente a 3500-4000 para toda la infraestructura del ejemplo inicial.

¡Almacenamiento local! ¿Vade retro?
No tiene porqué. Hay cierta tendencia a reevaluar el valor del almacenamiento local, sobre todo con SSD, en entornos VDI. Citrix ya plantea usar los discos locales de los servidores como caché para eliminar accesos a la SAN/NAS (Intellicache), y otras tecnologías más disruptivas como nutanix ya hablan directamente de sustituir a la SAN/NAS como almacenamiento de runtime de entornos de virtual desktops.
Caso aparte es el de Kaviza, recientemente adquirida por Citrix, que con su concepto de Grid elimina la necesidad de almacenamiento compartido.

Brokers.

Xendesktop.
Mediante el uso de Intellicaché, nos podemos plantear el uso de un servidor NFS que almacene las gold copy para que posteriormente Intellicache las despliegue en los SSD locales: Cualquier NAS tipo IOMEGA Storcenter, TheCus o similar, que nos suministran NFS a costes inferiores a los 1200€ resulta suficiente. También Windows 2008 nos ofrece un servidor NFS de alto rendimiento, con el añadido de que esta misma máquina puede usarse para los perfiles de los usuarios.


Kaviza.
Kaviza parte de la premisa de que no existe almacenamiento compartido, aunque puede usarse. El controlador de Kaviza se instala en cada uno de los equipos como una máquina virtual, se agrupan entre ellos en un grid, y hagas lo que hagas en uno de ellos, se replica al grid sin configuración adicional. Así mismo el grid se encarga de proveer de tolerancia a fallos, redirigiendo al usuario de un nodo al otro en caso de caída del primero. Esta característica nos permite reducir el número de microservers, al no ser necesarios más de uno o dos para proveer de tolerancia a fallos al entorno. Así mismo, el grid se encarga de replicar las gold images entre todos sus miembros sin necesidad de configuración extra.




Otra ventaja de kaviza es el hecho de no requerir plataforma de gestión de hypervisor (vCenter o similar) ya que habla directamente con cada hypervisor.
En el caso de kaviza, los microservers irían equipados con un disco adicional SATA para almacenar el appliance y las gold copys (no vamos a desperdiciar SSD en eso, ¿no?)
Ya hablaré sobre kaviza en mayor profundidas en futuros post.

El hypervisor.
Bueno, este entorno evidentemente eleva el número de licencias de los hipervisores, aunque en determinado caso, el de ESX, nos puede reducir la cuenta gracias al maravilloso licenciamiento que nos ha calzado VMware… básicamente porque cada host se mantiene en los límites de memoria de la edición más económica (que además no incluye nada que necesitemos, incluyendo vMotion o HA).


Foto final
Pues venga, dibujemos el entorno final:



A simple vista se percibe la sencillez del modelo. Es un modelo en una sola capa, y que escala añadiendo unidades adicionales a un coste limitado. Cada ampliación incrementa los IOPS globales del sistema con una granularidad elevada (15-25 desktops), y a un coste totalmente mantenible. Eliminamos la SAN y la red FC de la ecuación, creando un entorno simple de gestionar, y dependiendo del broker elegido, puede ser mantenido por personal no experto en entornos virtuales.

Evolución del modelo.
Sobre este modelo se me ocurre que, al ser la unidad de crecimiento tan económica.... ¿porqué no plantearnos un entorno distribuído?

No hace demasiado demostraba a alguien que en un entorno VDI el movimiento de datos entre el puesto local (ficheros, corta y pega, etc) puede suponer un gran impacto en la infraestructura de acceso a los VDI. Su uno de nuestros usuarios decide subir desde su PC una imagen ISO de 2 Gb desde su disco local, el resto de los usuarios lo van a sufrir a menos que establezcamos mecanismos de control de ancho de banda más o menos avanzados para impedirlo. En escenarios donde hay grandes grupos de usuarios que acceden a los VDI contra el centro de datos, el ancho de banda y los protocolos de display remoto deben ser exprimidos al máximo para facilitar una experiencia de usuario cercana a la que está habituado. Mientras nadie se plantea localizar servidores de gama alta en oficinas de 20-30 usuarios, este entorno (especialmente  con los brokers nombrados), nos permiten desplegar "caches" locales a costes razonables, eliminando la necesidad de dispositivos de control de ancho de banda y mejorando la experiencia del usuario al acceder a los desktops a velocidad LAN.

Este tipo de arquitecturas no debieran de sorprendernos... sin ir más lejos ya hace mucho que los accesos a internet utilizan proxyes o las centralitas IP cuelgan de una central.



Conclusión.
Alguien que conozco siempre me dice que hay más de una manera de coger un pájaro, y no deberíamos olvidar que la tecnología no debiera estar limitada a los pdf de los fabricantes. ¡Nos pagan para pensar!





lunes, 8 de agosto de 2011

Repensando VDI - Parte II

En el post anterior de esta serie os proponía una reflexión sobre los despliegues VDI. En este, vamos a aplicar las ideas expuestas a un caso particular.

Escenario.
Hagamos números para un despliegue de VDI de unos 200 desktops con capacidad de tolerancia a fallos de al menos la mitad de la infraestructura. Tenemos tres gold images (copias maestras) de unos 40 Gb y pretendemos utilizar tecnología de linked clones para al menos el 80% (unos 160 desktops). El resto, son desktop completos.
Localizaciones.
El 100% de los usuarios accederán desde las 3 oficinas de la compañía, (aproximadamente, 60 usuarios por localización), aunque se estima que diez usuarios requerirán acceso más o menos constante desde localizaciones móviles. A corto plazo, se pretende extender el número de oficinas (entre 3 y 15 personas) en varios países europeos.
Aplicaciones.
Aparte de las ofimáticas (Microsoft Office y Open Office en algunos casos), hay que añadir el ERP corporativo, bases de datos Access para algunos departamentos, tres aplicaciones específicas del negocio basadas en web.
Otras actividades.
La navegación web y las descargas de ciertos documentos y archivos debe ser fluída, ya que gran parte de la actividad de la compañía se basa en el procesamiento de datos externos.
Experiencia de usuario.
En lo referente a la experiencia de usuario, nuestro entorno requerirá que al menos un 10% de nuestros usuarios dispongan de audio bidireccional para telefonía IP (disponemos, por ejemplo, de un Asterisk usando softphones), y al menos unos 15 usuarios requerirán de capacidades medias de manipulación de gráficos (composición de documentos ricos y/o manipulación de imágenes). La impresión (sí, señor, el eterno dolor de cabeza) se realiza en impresoras conectadas a servidores de impresión IP. El uso de dispositivos USB se limita a pen-drives y, opcionalmente, alguna cámara digital para la adquisición de fotografías previamente tomadas con estas. Se requiere de interacción entre determinados puestos locales y los desktops virtuales, al menos durante el primer año. Esta interacción se basa en el traspaso de datos entre la aplicación de un cliente y los empleados de la compañía desplazados al mismo.
Servidores.
Para ello utilizaremos tres host con las siguientes características
- 2 Procesadores de 12 cores
- 96 Gb de RAM
- 2 Fiber channel dual de 4 Gb
- RAID 1 x 3 discos de 73
El equipo seleccionado es un dell R715, equipado con dos Opteron 6180SE de 12 cores, doble fuente de alimentación.
Según el configurador de Dell (por poner un ejemplo), cada host nos cuesta unos 13.072€ (Calculemos un +- 15% entre descuentos y preferencias de configuración)
Con esta configuración, en la que minimizamos el número de host para evitar problemas con el licenciamiento, ya sea del hypervisor o plataforma de gestión, el coste de los host se eleva a 39.216€, lo que nos supone, aproximadamente, unos 196€ por desktop en lo referente a los servidores.
Almacenamiento.
Pasemos al almacenamiento. Una cabina de gama media-alta, con soporte FC y su correspondiente switch puede rondar los 30.000-40.000€ (dependiendo, claro, del fabricante).
Los IOPS (Input/Output Operations per Second)
Los IOPS (Input/Output Operations per Second) también serán determinantes a la hora de configurar el número de discos y los RAIDs correspondientes. Sumerjámonos en el siempre interesante mundo del almacenamiento.
Los discos.
Como referencia, tengamos en cuenta los IOPS medios de los discos actualmente en el mercado:
RPM
IOPS
SSD
4000-6000
15.000
170-180
10.000
110-130
7.200
70-78
5.400
45-50
Para los que nos gusta calcular estas cosas, si queremos tener una estimación de IOPS de nuestros discos, usaremos los siguientes parámetros para evaluar los IOPS de nuestros discos)
Velocidad de rotación: Número de revoluciones por minuto que dan los platos de los discos. Este parámetro está íntimamente relacionado con los otros dos que usaremos para el cálculo: Latencia Media y Tiempo medio de búsqueda.
Latencia media: Es el tiempo que tarda un sector del disco determinado en posicionarse bajo la cabeza de lectura/escritura del disco.
Tiempo medio de búsqueda: Es el tiempo medio que la cabeza tarda en posicionarse sobre un sector determinado para escribir o leer.
IOPS aproximados= Divide 1 por la suma de la latencia media del disco en milisegundos (aL) más el tiempo médio de búsqueda del disco también en miligegundos (aS)
IOPS=1/(aL+aS)
El gran Scott Lowe nos lo explica claramente en este post publicado en TechRepublic., Así mismo en el siguiente artículo en zdnet hay más datos interesantes sobre las RPM.
El RAID
Adicionalmente, hemos de contar con la posible penalización en escritura que el RAID de nuestra cabina nos imponga. Es importante tener claro que el RAID nos penalizará en escritura, mientras que puede (dependiendo del tipo de RAID) beneficiarnos en escritura. En un RAID0, por ejemplo, las operaciones de lectura se realizarán a la velocidad de uno de los discos de la SAN, ya que al estar los datos almacenados en un solo disco, estos nos serán devueltos a la velocidad del mismo. En un RAID 5, sin embargo, son todos los discos del RAID los que nos devuelven el dato, ya que este está dividido entre ellos).
A efectos de escritura, la siguiente tabla ilustra las distintas penalizaciones que, desde el punto de vista de la escritura, nos imponen los diferentes tipos de RAID.
Tipo de RAID
Penalización
RAID 0
0 (Una sola escritura en un disco)
RAID 1
2 (Dos escrituras en dos discos)
RAID 5
4 (lectura dato existente, lectura de paridad, escritura de nuevo dato, escritura de paridad)
RAID 6
6 (lectura de dato existente, lectura de paridad 1, lectura paridad 2, escritura de nuevo dato, escritura de paridad 1, escritura de paridad 2)
RAID 10
2 (igual que RAID 1)
RAID DP
2 (Escritura de dato, Escritura de paridad)
(Se admiten correcciones, opiniones y demás sobre el contenido de esta tabla)
Para más información: Niveles de RAID Estándar, Niveles de RAID no estándar según Wikipedia… recordad que cada fabricante puede “aliñar” los niveles de RAID para obtener un máximo rendimiento.
Para calcular el rendimiento de nuestra SAN el número de discos es crucial. No nos dará los mismos IOPS un volumen de 500Gb formado por 3 discos que por 6.
También el uso del disco es determinante. Me refiero al porcentaje de lecturas frente al de escrituras. No es lo mismo, a efectos de IOPS de la SAN, que el 80% del tiempo nos lo pasemos escribiendo y el 20% leyendo que al contrario (por aquello de las penalizaciones de escritura y beneficios de lectura)
Para no entrar en demasiadas controversias sobre las lecturas y escrituras que genera o no un Virtual Desktop (que dependerán, evidentemente, del diseño de la VM y del “opinador” en cuestión), estimemos un porcentaje de 80% de lecturas por un 20% de escrituras
Para calcularlo, usemos las siguientes fórmulas:
IOPS Brutos= Nº de discos(nD) * los IOPS de cada disco individual(iD)
IOPS Netos=((IOPS brutos * Porcentaje de escritura)/Penalización tipo RAID)+(IOPS Brutos * Porcentaje de lectura)
En base a estos datos, podemos definir una fórmula que nos indique cuántos discos necesitamos para calcular cuántos discos y en qué tipo de RAID hemos de montarlos para obtener un nivel de IOPS determinado.
Nº de discos=((IOPS * Porcentaje de lectura + (IOPS * Porcentaje de escritura * Penalización RAID)/IOPS individuales de cada disco)
Os dejo por aquí otro post que profundiza en los niveles de RAID.
Caches y otras hierbas…
Por si no fuese poco, a todo el lío que os he montado, añadid los caches, etc. Los fabricantes, conscientes de las limitaciones de las IOPS en entornos RAID, intentan minimizar el impacto de estas mediante el uso de Caches. Los que hayáis trabajado con RAID5 (con o sin SAN) estáis acostumbrados al concepto de cache, es decir, la controladora escribe en un caché de RAM alimentado por batería, difiriendo la escritura en el tiempo, de forma que podamos trabajar a velocidades RAM en lugar de a velocidades RAID. El problema es que la RAM se queda corta, así que no es extraño oir hablar de caches en flash, o directamente de un pool de discos SSD donde escribimos (por aquello del tamaño), y la SAN, posteriormente, mueve el contenido de los SSD/Flash a los RAID.´
El impacto de estos métodos en el rendimiento del RAID no son predecibles a priori, ya que dependerá de tamaño del caché, su tecnología y el método que use la SAN para mover los datos del caché a los discos. Vuestro comercial de almacenamiento seguro que dispone de un par de toneladas de PDFs que os lo aclararán.
A lo que íbamos.
Después de tamaño rollazo sobre el tema del almacenamiento (insisto y soy pesado con esto porque si en entornos de servidores es CRUCIAL para alcanzar altos ratios de consolidación, en VDI no os quiero contar), veamos como aplica esto a nuestro caso…
Estimando los requerimientos de IOPS entre 10 y 20 por Desktop (dependerá del sistema operativo, las aplicaciones, dónde se almacenen perfiles y datos y la arquitectura de la VM maestra – en negrita para destacar su importancia), nuestros 200 desktops requerirán de entre 2000 y 4000 IOPS, más incluso dependiendo de las operaciones de encendido, procesos de escaneo de antivirus y operaciones de despliegue masivo.
Si dimensionamos para la media, tendremos unas necesidades de entre 2000 IOPS y hasta 4000 si dimensionamos para el pico. Ahora es el momento de usar la formulita que os dejé para calcular cuántos discos necesitaríamos, me sale (ser admiten correcciones), que para dimensionar al pico (es decir, a 4000), necesito entre 18 y 36 discos de 15000 RPM y 178 IOPS. Una cantidad nada despreciable… Añadidle que los discos vayan en FC… ¿Porqué y no iSCSI? Si estimamos un rango de 10-20 IOPS por segundo en los desktops (más teórico que práctico) y descartamos el pico (lo que implica que en determinados momentos el I/O se habrá colapsado), tendremos que cada host puede generar constantemente unos 1000/2000 IOPS de media. Si el pico (arranque de VDIs, por ejemplo) se elevase al doble (unos 3000 IOPS) la latencia inherente a iSCSI (no olvidemos que sigue siendo IP, además de ser SCSI) puede resultar determinante. No obstante, y para que no se diga, en determinadas configuraciones iSCSI puede obtener rendimientos envidiables (véase 1,000,000 IOPS with iSCSI - That's Not a Typo...) También es verdad que una SAN de esas características no está al alcance de cualquiera…. Salvo que deseemos “montárnosla” por nuestra cuenta.. Ya sea con un servidor Windows Server y el Target iSCSI o con soluciones Open tipo Nexenta, Open-e o similares... opciones nada desdeñables y de las que escribiré otro día.
Bueno. Ya hemos acabado nuestro diseño, y salvo el coste de lo ya definido, ¿ya estamos listos para el despliegue? pues va a ser que la respuesta, en el próximo post.

viernes, 29 de julio de 2011

Repensando VDI - Parte I

Si observamos el estado actual de las soluciones VDI, podemos constatar un par de hechos
  • La densidad de Desktops por server es crucial.
  • A partir de un determinado volumen, Las soluciones requieren de infraestructura datacenter.
El primer punto es evidente: Hay que rentabilizar las inversiones en hardware (servidores y almacenamiento) y las software (licencias y mantenimientos).
Es evidente que, por un lado, el incremento de cores en los procesadores y la mejora continua de arquitecturas, y por otro, la reducción del precio de las memorias, favorecen densidades de 80-100 desktops por server, cuando no hace demasiado, hablar de 50 desktops por server hacía temblar a más de un experto. Todas estas innovaciones permiten reducir la factura de los servidores y, consecuentemente, el coste del software asociado (Ya sean licencias de hypervisor, sistemas de gestión de la infraestructura, etc).
Respecto al segundo punto, y siguiendo el paradigma actual de “todo al datacenter”, requerimos de servicios centralizados como son el almacenamiento, la seguridad o las comunicaciones, por no hablar del backup, restore e infraestructura de protección ante desastres y/o continuidad de negocio.
Respecto al primer punto, el elevar el ratio a niveles de 90:1 debido al mayor rendimiento de CPUs y memorias genera, por otro lado, el problema de la congestión de I/O, es decir, la lucha por el acceso a disco y en menor manera, a la red.
Por muy Windows XP, 7 o Linux que sean, siguen siendo máquinas virtuales con requerimientos de acceso a disco. A diferencia de una sesión de terminal server (o citrix XenApp), la sesión de un usuario no implica una instancia más de la aplicación en un sistema operativo server (que suelen estar más optimizados en lo referente al I/O que uno de desktop), sino TODO el conjunto del sistema operativo se instancia para dar servicio a un único usuario. De ahí que, a igual hardware, un servidor de terminales pueda albergar muchísimos más usuarios simultáneos que ese mismo servidor ejecutando una infraestructura VDI. Básicamente la diferencia se encuentra en cuántos recursos (Disco, RAM y CPU) se requieren en el entorno VDI frente al escenario con Terminal Services o Citrix XenApp
Esta sobrecarga de I/O se puede ver incrementada con las habituales aplicaciones o servicios asociadas al desktop: Antivirus, updates (tanto de OS como de aplicaciones, aunque en algunos escenarios se desactive), o por operaciones vinculadas al entorno VDI como el despliegue de nuevos desktops o el refresco de los mismos. Es cierto también que las tecnologías de linked clones disminuyen el acceso a disco eliminando el uso que supone replicar una y otra vez un disco maestro. Recomiendo la lectura del documento “Windows 7 IOPS for VDI: Deep Drive” de Jim Moyle para una visión detallada de la relación entre desktops Windows 7 y los IOPS generados. Recomiendo la lectura adicional de un caso de aplicación donde los IOPS fueron determinantes. Está publicado aquí.
Desde el punto de vista del coste de un despliegue VDI, satisfacer los requerimientos de IO de la infraestructura puede resultar una sorpresa bastante cara.
Aprovechar la infraestructura actual de virtualización (es decir, host y almacenamiento) puede redundar en una pérdida de rendimiento dramática del entorno de servidores y afectar, como no, a la infraestructura VDI.
En algunos proyectos, el estudio de costes saltó hecho añicos cuando en mitad del despliegue hubo que plantear la adquisición de una unidad de almacenamiento específica para el entorno VDI (Y no de las entry level, precisamente). Aún dedicando una unidad SAN/NAS de almacenamiento exclusivamente a VDI, los problemas de rendimiento puede que no desaparezcan, dándose la paradoja de que se requiera una SAN más avanzada para el entorno VDI que la desplegada para los servidores.
Seguimos otro día.
Un saludo.