VMware Global Community
xcolome
Contributor
Contributor

Preguntas Resource Pools ESX 3.5

Hola, he leído mucho sobre Resource Pools pero siempre me llevan a confusión. Es por ello que me gustaría conocer, a modo de ejemplo una situación en concreto y ver si alguien puede ayudarme. Ahí va:

Mi objetivo es configurar dos resource pools en un clúster HA/DRS con 'N' Hosts ESX. Un resource pool para VMs de pruebas y otro para VMs de producción. Mi entorno es ESX 3.5.

Mi pregunta es: Cómo configurar ambos resource pools?

He pensado por ejemplo en darle un 60% de potencia (CPU/RAM) al pool de producción y el 40% restante al pool de pruebas. Para ello sumo los MHz y los GB de todos los Hosts ESX del clúster y hago el cálculo. Por ejemplo si todos los hosts del clúster suman 100 GB de RAM y 10000 MHz de CPU, pues configuro:

- Una reserva en el pool de producción de 60 GB de RAM y 6000 MHz de CPU.

- Una reserva en el pool de pruebas de 40 GB de RAM y 4000 MHz de CPU.

Me surgen dudas, en este caso. Por ejemplo:

- Si configuro ambos pools con la opción de Expandable. Si un pool requiere más potencia la pedirá a su padre. Bien, pero en este caso, ¿podrá pedir algo? Ya que el resto de potencia está reservada al otro pool y por lo tanto el clúster no tendrá nada que darle al primero?

- En caso de competencia de recursos entre un pool y otro, la reserva de CPU y RAM siempre quedará garantizada pero si los shares del pool de producción está configurado en High y el del pool del pruebas en normal, ¿Si el pool de producción compite por recursos, cogerá recursos del pool de pruebas?, en ese caso, hasta qué limite llegará a coger? <-- le dejará al pool de pruebas la reserva, entiendo, pero le podrá quitar el resto de potencia que haya adquirido?

Por otra parte, desconozco si la idea de reservar en cada uno de los pools un % de la potencia de todo el clúster, es correcto. ¿Existe un método para calcular todo esto? Otro método que se me ocurre es el siguiente:

Antes de crear el clúster definitivo y los resource pools, creo dos clusters nuevos, uno con las VMs de pruebas y otro con las de producción. Lo dejo funcionando durante 'N' meses y luego observo las gráficas de cada cluster: gráficas de uso de RAM y CPU. Hago una lectura del máximo uso de estos recursos para cada clúster, por ejemplo, veo que en el clúster de producción se han llegado a consumir 20 GB de RAM como máximo y 8000 MHz de CPU como máximo.

Sabiendo estos datos y los del clúster de pruebas, elimino ambos clusters y creo uno nuevo con todos los hosts ESX. Luego creo los dos Resource Pools, uno para pruebas y otro para producción. Configuro el de producción con una reserva de 20 GB de RAM y 8000 MHz de CPU, que son los valores máximos que he obtenido de la lectura de 'N meses anteriores. El pool de pruebas lo configuro siguiendo la misma técnica.

¿Todo esto sería correcto?

Por otra parte he leído que para configurar la reserva de un resource pool lo que hay que hacer es ver qué VMs van a correr en ese pool y reservar la suma de GB de RAM y de MHz de todas las VMs. ¿Es correcto?

En fin, me gustaría que este llegase a ser un post de referencia para los que buscamos la luz, en el caso de Resource Pools.

Gracias.

0 Kudos
1 Reply
Amnexi
Enthusiast
Enthusiast

Probablemente ya tengas estos documentos, pero por si acaso te los dejo aquí:

  • Si configuro ambos pools con la opción de Expandable. Si un pool requiere más potencia la pedirá a su padre. Bien, pero en este caso, ¿podrá pedir algo? Ya que el resto de potencia está reservada al otro pool y por lo tanto el clúster no tendrá nada que darle al primero?

Tienes un ejemplo de "Expandable" en el primer link, pag 28.

En el caso que indicas, SÍ, podrá pedir algo. Aunque reservers recursos, si NO se están usando, pueden asignarse a otras VMs. Se lo pediría al padre (que sería el Root Resource Pool, invisible en el VIC), y éste sacaría los recursos de su otro hijo. Lo tienes en la página 17 del primer link:

CPU Reservation Unused: Total CPU resources of this host that are not currently reserved. Consider a virtual machine with reservation=2GHz that is totally idle. It has 2GHz reserved, but it is not actually using any of its reservation.

- Other virtual machines cannot reserve these 2GHz.

- Other virtual machines can use these 2GHz, that is, idle CPU reservations are not wasted.

  • En caso de competencia de recursos entre un pool y otro, la reserva de CPU y RAM siempre quedará garantizada pero si los shares del pool de producción está configurado en High y el del pool del pruebas en normal, ¿Si el pool de producción compite por recursos, cogerá recursos del pool de pruebas?, en ese caso, hasta qué limite llegará a coger? <-- le dejará al pool de pruebas la reserva, entiendo, pero le podrá quitar el resto de potencia que haya adquirido?

Creo que estás equivocado con el temas de Shares. Los shares generan priorizaciones de competencia de recursos (por defecto, con el Ratio High 4 : Normal 2: Low 1), pero siempre entre VMs dentro del mismo Resource Pool. Primer link, página 20:

Specifying shares makes sense only with regard to sibling virtual machines or resource pools, that is, virtual machines or resource pools with the same parent in the resource pool hierarchy

Lo que ocurre es que existe la opción de configurar los Shares desde un Resource Pool, para no tener que hacerlo en cada VM.

Por lo tanto, en el escenario que indicas, configurar los Shares NO tendrá ninguna repercusión por competencia de recursos ENTRE los dos Resource Pools.

Por otra parte, desconozco si la idea de reservar en cada uno de los pools un % de la potencia de todo el clúster, es correcto. ¿Existe un método para calcular todo esto? Otro método que se me ocurre es el siguiente:

Lo que indicas de crear dos clusters no creo que sea necesario (puedes estudiar los consumos de las VMs, sin configurar nada de reservas, y ponerlos después).

En general, mi recomendación es NO usar para nada Resource Pools, siempre que se pueda. Si tienes recursos de sobra en los hosts, no los uses y deja que los ESX "piensen por ti" y asignen los recursos. En mi caso, montamos un cluster independiente por cada entorno (Producción, Pre, Desarrollo, Lab...), sin ningún Resource Pool (excepto el root, claro), pero entiendo que esto puede no ser viable en cualquier empresa, dependiendo de volumen de VMs y de costes.

Si configuras los RPs, te recomiendo poner reservas sólo en el de Producción. ¿Cuánto??? Pues si queres puedes estudiar 1 o 2 semanas los consumos de las VMs de Producción, le sumas un porcentaje de "colchón", y pones eso. Pero me parece un trabajo arduoque quizá no merezca la pena.

En el RP de Pruebas NO pongas ninguna reserva (en todo caso, deberías poner un límite, pero no es en absoluto recomendable por varias razones).

Por otra parte he leído que para configurar la reserva de un resource pool lo que hay que hacer es ver qué VMs van a correr en ese pool y reservar la suma de GB de RAM y de MHz de todas las VMs. ¿Es correcto?

Hombre, es una manera de hacerlo. Sobre lo "Correcto" o no, realmente no hay nada escrito. Me parece una buena opción, y te quitarías el estudiar los consumos. Por lo tanto, mi recomendación final es que pongas reserva sólo en el RP de Producción (sumando CPU y RAM de las VMs), en el otro nada, y en ambos marcando la opción Expandable.

Salu2