“Virtual DataCenter” o VDCenter
Hace unos años pensé en un proyecto que sería oro molido por la utilidad y ahorros que generaría un centro de cómputo virtual, es decir un conjunto de servidores que ejecutan diversas aplicaciones con muchas transacciones que “No requieren un centro de cómputo”. Probablemente en este momento algún lector diga que estoy un poco loco, y otro más no sepa ni de que estoy hablando pero bueno viviré con ello.
El problema
En mi antigua oficina yo tenía frente a mí a 200 agentes de reservaciones, con equipo que recientemente les habíamos adquirido. Para operarlas fue necesario hacer un precioso cuarto de cómputo o “Data Center” cuya obra civil incluida la seguridad, electricidad y cableado costó más de $100,000usd. Después se compraron los servidores, conmutador, UPS y equipos de red, la cifra fue grande en términos de dicho centro. Resultaba frustrante analizar el uso de los equipos y descubrir con sorpresa que cada agente solamente empleaba su equipo al 3% de su capacidad. Que el disco duro no guardaba casi nada (solo algunos archivos pequeños, el office, el Internet Explorer y windows).
En resumen había (supongo que ahora es más grande porque hay más usuarios) un desperdicio del 97% de la capacidad de cómputo de los equipos. Es decir se tenía el siguiente DESPERDICIO:
- 192 Procesadores apagados de 3Ghz
- 7.4 TeraBytes libres y sin usar (Discos de 40G que usan 3G cada uno)
Cabe aclarar que este desperdicio es una situación “permanente” es decir nunca aparecerían aplicaciones que requirieran su uso. La razón más importante para que esto ocurriera es que las aplicaciones críticas con las que trabajaban estaban todas en los servidores de 2 Datacenters uno local (descrito aquí) y otro muy remoto que tenía las aplicaciones que servía como páginas web.
Los recursos
Por otro lado existen varias tecnologías que nos servirán para plantear la solución al problema, si el problema tiene solución pero requiere mucho trabajo y la creación de un proyecto que conecte los puntos:
- Virtualizadores: Programas que hacen funcionar una computadora como si fueran varias
- Clusters: Conjunto de computadoras que funcionan como si fueran una sola (lo opuesto a virtualizadores en cierta forma).
- Almacenamiento unificado: Tecnologías (software y hardware) que permiten usar un gran grupo de discos duros como si fueran uno solo.
- Redes muy rápidas
Siempre me generaron algo de emoción la utilidad de los virtualizadores (software que te deja correr en una sola máquina varios sistemas como windows y linux juntos) de los cuales ya hablaré en otro artículo. Pero igualmente sonaba fantástico un proyecto más viejo, llamado Mosix; el cual derivó en un proyecto muy activo llamado OpenMosix (el cual…. sniff sniff, ha declarado que cierra por sentirse inservible). Y finalmente la posibilidad de unir muchos discos duros en una sola gran imágen aprovechando todos el mismo recurso, de aquí tenemos cosas como SAN (Storage Area Network), NAS (Network Area Storage) y un proyecto libre de IBM que se llama AFS (Andrew File System – Sistema de archivos distribuido).
Conectando los puntos
Aquí viene lo divertido y para ello haremos en el camino algunas suposiciones.
- Cada equipo de escritorio o desktop debe tener un virtualizador que permita partir en 2 a la PC, para ello puede usarse VMWare, Xen,VirtualBox o mejor aún KVM:
- Usuario: La primer mitad es para que el usuario pueda seguir trabajando normalmente con su teclado y pantalla. A esta se le asigna el 10% de capacidad del procesador (es muy sobrado pero debe ser transparente este cambio para el usuario y considerar horarios con picos de uso).
- Servidor: La segunda mitad será usada para funcionar como servidor, a esta se asignará el 90% de capacidad del equipo, en términos simples de un procesador de 3Ghz contaríamos con 2.7Ghz.
- Se instalaría un nodo con un controlador maestro de OpenMosix que conecte a todos los servidores (en el ejemplo tendríamos un cluster de 200 servidores con un procesador de 2.7Ghz c/u)
- Deben conectarse todos los equipos a la máxima velocidad posible (en el ejemplo todos los equipos contaban con una tarjeta de red que soportaba 1 giga bit por segundo)
- Debe instalarse un solo centro de almacenamiento para el que existen dos soluciones:
- Instalar en todos los equipos el sistema de archivos AFS para ver todos los discos como una gran imágen. El problema es la madurez que tiene esto, hoy ya existe gracias a RedHat en el último Kernel de Linux la posibilidad de manejarlo pero está en etapa experimental.
- Crear un muy económico NAS con el proyecto FreeNAS que nos permitirá una NAS con mucha capacidad y muy barata sin perder alta disponibilidad usando Raid. La desventaja es que se requiere un “servidor con muchas bahías y terminamos con un equipo dedicado”, sin embargo este también es virtualizable pues el trabajo fuerte lo haría una tarjeta Raid, así también puede usarse este equipo para un usuario.
- Ahora lo que requerimos es montar las aplicaciones en nuestro super servidor de 200 procesadores y apuntar los equipos de “usuarios” a ellas.
Voilá a gozar el ahorro de más de $200mil dolares solo en este caso.
Retos
- Que las aplicaciones puedan correr en cluster pensando en:
- Bases de datos (Oracle y MySQL si tiene forma de trabajar en cluster)
- Servidores de aplicaciones (Jboss, Bea, Websphere, Apache si pueden trabajar en cluster)
- Mensajería (si es Exchange esto puede ser un problema)
- Aplicaciones de legado “cliente-servidor” o las que emplean emuladores de AS400 u otros. (hay tanta capacidad que puede usarse servidores muy pequeños que tengan Windows u otros sistemas sin estar en cluster)
- Que el Storage AFS funcione adecuadamente, pero en el peor escenario FreeNAS si funciona adecuadamente, pero se desperdiciarían los discos duros de cada escritorio.
- Que una empresa quiera tomar el riesgo y probar, pues estamos hablando comúnmente de aplicaciones de misión crítica, sin embargo hay forma de probar y pilotear la idea sin arriesgar todo.
Referencias
Otros proyectos interesantes:
- Servidor distribuido para cualquier propósito como Salvapantallas
- Boinc (Computación voluntaria o en grid)
Hola Eduardo,
Totalmente de acuerdo en el desperdicio de recursos y la necesidad de encontrar sistemas más productivos y eficientes, así como rentables. Es como el que se compra un Mac Pro de 4 TB de disco duro y lo usa para… escribir cuentos infantiles.
Lo que yo haría con semejante centro de cómputo. Montaría dos cadenas de televisión online, cinco radios shoutcast y una red de blogs en todos los idiomas. Jojojo 😉
Sin duda nos presiona la industria para comprar lo último. En realidad con esa capacidad de cómputo tienes “super cómputo real”, podrías crear una película tipo Pixar y renderearla en esa granja.