He estado usando VMWare durante muchos años, ejecutando docenas de servidores de producción con muy pocos problemas. Pero nunca intenté alojar más de 20 máquinas virtuales en un solo host físico. Aquí está la idea:
- Una versión simplificada de Windows XP puede vivir con 512 MB de RAM y 4 GB de espacio en disco.
- $ 5,000 me consigue una máquina de clase de servidor de 8 núcleos con 64 GB de RAM y cuatro espejos SAS.
- Dado que 100 máquinas virtuales mencionadas anteriormente se ajustan a este servidor, el costo de mi hardware es de solo $ 50 por máquina virtual, lo cual es muy bueno (más barato que alquilar máquinas virtuales en GoDaddy o en cualquier otra tienda de alojamiento).
¿Me gustaría ver si alguien puede lograr este tipo de escalabilidad con VMWare? Hice algunas pruebas y me topé con un problema extraño. El rendimiento de la máquina virtual comienza a degradarse dramáticamente una vez que inicia 20 máquinas virtuales. Al mismo tiempo, el servidor host no muestra ningún cuello de botella de recursos (los discos están inactivos al 99%, la utilización de la CPU es inferior al 15% y hay mucha RAM libre).
¡Te agradeceré si puedes compartir tus historias de éxito sobre el escalado de VMWare o cualquier otra tecnología de virtualización!
fuente
Respuestas:
Sí tu puedes. Incluso para algunas cargas de trabajo de Windows 2003, tan solo 384MiB son suficientes, por lo que 512MiB es una muy buena estimación, ya sea un poco alta. La RAM no debería ser un problema, tampoco la CPU.
Un 100 VM es un poco empinado, pero es factible, especialmente si las VM no van a estar muy ocupadas. Ejecutamos fácilmente 60 servidores (Windows 2003 y RHEL) en un único servidor ESX.
Suponiendo que está hablando de VMware ESX, también debe saber que puede comprometer en exceso la memoria. Las máquinas virtuales casi nunca usan su ración de memoria completa, por lo que ESX puede comprometer más de la cantidad de RAM disponible para las máquinas virtuales y ejecutar más máquinas virtuales de las que realmente tiene 'oficialmente' RAM.
Lo más probable es que su cuello de botella no sea CPU o RAM, sino IO. VMware cuenta con grandes cantidades de IOPS en su comercialización, pero cuando se trata de empujar, los conflictos de reserva de SCSI y el ancho de banda limitado lo detendrán por completo antes de que se acerque a los alardes de IOPS VMware.
De todos modos, no estamos experimentando la degradación del rendimiento de 20 VM. ¿Qué versión de ESX estás usando?
fuente
Un problema importante con un entorno grande como ese sería la prevención de desastres y la protección de datos. Si el servidor muere, 100 máquinas virtuales mueren con él.
Debe planear algún tipo de conmutación por error de las máquinas virtuales y planificar algún tipo de administración "extra-VM" que proteja sus máquinas virtuales en caso de falla. Por supuesto, este tipo de redundancia significa un aumento en el costo, lo cual es probablemente la razón por la cual muchas veces ese gasto no se aprueba hasta después de que sus beneficios se hayan visto en la práctica (por su ausencia).
Recuerde también que el host VM es solo uno de varios puntos únicos de falla:
Estos son solo algunos: una infraestructura masiva de VM requiere una atención cuidadosa para prevenir la pérdida de datos y prevenir la pérdida de VM.
fuente
No hay una declaración sobre la viabilidad de esto en la producción, pero hay una demostración de NetApp muy interesante donde aprovisionan 5440 escritorios XP en 32 hosts ESX (eso es 170 por host) en aproximadamente 30 minutos usando muy poco espacio en disco debido a la deduplicación contra la VM común imágenes
http://www.youtube.com/watch?v=ekoiJX8ye38
Supongo que sus limitaciones provienen del subsistema de disco. Parece que ha tenido en cuenta la memoria y el uso de la CPU en consecuencia.
fuente
Nunca lo hice, pero prometo que gastará mucho más que en almacenamiento para obtener suficientes IOP para admitir tantas máquinas virtuales que en el hardware del servidor. Necesitará muchos IOP si los 100 están activos al mismo tiempo. No suena negativo, pero ¿también ha considerado que está poniendo muchos huevos en una canasta (parece que está buscando una solución de servidor único?)
fuente
Me preocuparía más la contención de la CPU con 100 máquinas virtuales en un solo host. Debe recordar que el procesador NO está virtualizado, por lo que cada máquina tendrá que esperar para acceder a la CPU. Puede comenzar a ver la contención mirando ESXTOP. Los ingenieros de VMWare me han dicho que algo más de 5 en el campo% RDY es muy malo.
En mi experiencia, he visto unos 30 - 40 servidores ejecutándose en un host (sin hacer demasiado).
fuente
Tenía 10 hosts en VMWare Server 1.0.6 (en Windows 2003) y se topaba con problemas de E / S de forma regular (y si las compilaciones nocturnas se superponían con otra cosa, entonces tendrían problemas). Después de actualizar de Windows a ESXi U3, descubrimos que nuestros problemas de rendimiento desaparecieron (las compilaciones nocturnas ya no fallaban).
También tenga en cuenta que si bien los SSD tienen una tasa de E / S mucho más alta que los medios giratorios, hay algunos casos en los que eso no se cumple, como ciertos tipos de patrones de escritura (muchas pequeñas escrituras dispersas en la unidad matarán el rendimiento a menos que el controlador tenga un caché de búfer de escritura inteligente que hace un buen trabajo en escrituras dispersas
Recomiendo investigar / probar tener los archivos SWAP en diferentes unidades si se encuentra con problemas.
fuente
Si va a hacer eso, le recomiendo encarecidamente que use los nuevos procesadores Intel 'Nehalem' Xeon 55xx series: están diseñados para ejecutar máquinas virtuales y su ancho de banda de memoria adicional también será de gran ayuda. Ah, y si puede usar más discos más pequeños que pocos, grandes, eso ayudará mucho. Si puede usar ESX v4 sobre 3.5U4 también.
fuente
Tengo 20 máquinas virtuales XP que se ejecutan con 512M de RAM cada una en una máquina con 16G de ram. Menos que esto y se intercambian en disco y eso da el cuello de botella. Sin embargo, estas siempre son máquinas virtuales XP activas.
VMware y su función OverCommit deberían permitirle empujar más ram a cada máquina XP. Una máquina similar compartirá las mismas páginas, por lo que podría reducir la escritura en disco. Es algo que me gustaría considerar para nuestra configuración para tratar de agregar más máquinas, ya que nuestras máquinas virtuales XP están haciendo 10-20meg de tráfico continuo en disco.
fuente
No pudimos lograr 100 invitados felices en VMWare Server, pero luego descubrimos que ESXi está haciendo un trabajo mucho mejor. Por lo tanto, parece que 100 XP vms no es un problema si usa ESXi y un servidor decente (algunos espejos de disco para distribuir las E / S, un par de chips I7 y 64 GB de RAM). No existe un retraso visible para los usuarios finales y los recursos del host no están al máximo (el más popular es la CPU, pero generalmente está inactivo al menos en un 70%).
PD. Esta pregunta fue publicada por mí cuando estábamos luchando con VMWare Server.
fuente
La última vez que lo verifiqué, VMware recomienda no más de 4 VM por núcleo de procesamiento para ESX, suponiendo una vCPU por VM.
Esto sugiere que los gastos generales de gestión se conviertan en un factor.
Estoy muy interesado en ver si realmente puede lograr un factor 4x en una caja de 8 núcleos.
fuente