Ejecución de 100 máquinas virtuales en un solo servidor host VMWare

24

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:

  1. Una versión simplificada de Windows XP puede vivir con 512 MB de RAM y 4 GB de espacio en disco.
  2. $ 5,000 me consigue una máquina de clase de servidor de 8 núcleos con 64 GB de RAM y cuatro espejos SAS.
  3. 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!

user9517 es compatible con GoFundMonica
fuente
44
¿Qué producto VMware planeas usar? ESX? ESXi? ¿Servidor?
wzzrd
2
Puede ejecutar XP con 256 sin mucha dificultad, especialmente si se trata de tareas livianas. Microsoft requiere 64 pero 128 es "suficiente" technet.microsoft.com/en-us/library/bb457057.aspx
Matt Rogish
1
¿de dónde compras tus servidores? Quiero uno :)
Warren
1
5000 USD solamente, ¿puedes venderme dos? :)
Taras Chuhay el
Tiene "esta cantidad de CPU" en su servidor de alojamiento y cada VM obtendrá una parte de ella. Además, esxi tendrá gastos generales: "cambie a esta VM, adminístrela, cambie a la siguiente, etc.", muchas veces por segundo. Significa que cada VM obtendrá solo una fracción de la CPU total. Cuantas más máquinas virtuales, más divide su CPU (y más sobrecarga también agrega, lo que significa que en lugar de tener 100 vms, de hecho, tiene un poco más).
Olivier Dulac

Respuestas:

15

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?

wzzrd
fuente
Gracias Wzzrd! Actualmente estoy usando VMWare Server 2.0, pero planeo probar ESX muy pronto. He estado observando las E / S en todas las matrices de host con mucho cuidado, y la única forma en que pude maximizarlo fue reiniciando varios invitados a la vez. Cuando los invitados realizan una carga de trabajo ligera o permanecen inactivos, los discos del host están inactivos en un 99%. Entonces, sospecho que algo más que CPU e IO está causando que todas las máquinas virtuales se desaceleren. Por cierto, se ralentizan drásticamente: se tarda 20 segundos en abrir el menú Inicio, y si ejecuto el Administrador de tareas dentro de una máquina virtual, el administrador de tareas ocupa un 90% de CPU, ¡extraño!
Dennis Kashkin
2
Eso sería porque está utilizando VMware Server. VMware Server es una plataforma de virtualización sobre otra plataforma (Linux, con mayor frecuencia), mientras que ESX es una plataforma de virtualización básica. Muy diferente, tanto en concepto como en la forma en que funciona.
wzzrd
Lamentablemente, cuando el día del parche viene con 100 vm, reiniciarás una gran parte del tapete al mismo tiempo;) Y el parche en sí es difícil. Cuidado con un paquete de servicios, que es cuando comienza el verdadero dolor;)
TomTom
Dejen de engañarse pensando que el metal desnudo es algo especial. ESXi es solo un Linux despojado. Si Linux.
dresende
2
@dresende. No lo es. Créeme.
wzzrd
11

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:

  • Red: ¿qué sucede si la tarjeta de red del host VM se cae?
  • Memoria: ¿qué sucede si una parte de la memoria del host VM se daña?
  • CPU: si un núcleo de CPU muere, ¿qué pasa con las máquinas virtuales?
  • Alimentación: ¿hay solo uno o dos cables de alimentación?
  • Puerto de administración: ¿y si no puede acceder a la administración de host de la VM?

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.

Mei
fuente
2
Escucha a David. Necesitará una configuración N + 1, lo que significa que necesita al menos una máquina inactiva de repuesto que sea capaz de absorber toda la carga de trabajo de otra máquina en caso de que falle. Mi recomendación es un clúster de dos servidores que distribuya la carga de manera uniforme pero que pueda manejar de forma independiente toda la carga de trabajo en caso de que una máquina falle.
Jason Pearce
4

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.

Kevin Kuphal
fuente
3

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?)

Jeff Hengesbach
fuente
2
Definitivamente crearía múltiples "canastas" y configuraría algunas copias de seguridad automáticas. Los cuellos de botella de E / S se pueden resolver fácilmente con unidades SSD en estos días. He estado usando unidades Intel MLC de 160 GB en producción y son espectaculares. Básicamente, obtiene un rendimiento de E / S aleatorio 5 veces mejor que las unidades SAS de primera línea (en configuraciones RAID simples).
Dennis Kashkin
1

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).

Zypher
fuente
1

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.

Walter
fuente
1

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.

Chopper3
fuente
1

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.

Ryaner
fuente
1

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.

Dennis Kashkin
fuente
0

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.

Hans Malherbe
fuente
1
Eso es pre ESX 3.5U2 entonces: el documento de configuración máxima para la actualización 2 dice 8 para fines generales, pero eso aumenta a 11 para las cargas de trabajo de VDI. Estoy bastante seguro de que vi algo que no puedo encontrar a mano que aumentó esa recomendación de VDI a 19 con la Actualización 3 o 4. Para vSphere, ese límite ahora es 20. Busque VMware ESX Configuration Maximums para los documentos oficiales de VMware.
Helvick
Mis máquinas virtuales permanecen inactivas la mayoría de las veces. La gente se conecta unas cuantas veces al día para ejecutar un software ligero. He confirmado que estas máquinas virtuales crean una sobrecarga de CPU muy pequeña en el host cuando están inactivas (20 máquinas virtuales agregan hasta un 9% de utilización de la CPU según el sistema de cuatro núcleos). ¿Podría recordar cómo se justifica el límite de cuatro VM por CPU? ¿Están pensando en servidores web o instancias de SO de escritorio?
Dennis Kashkin