Las opiniones reflejadas en este Blog son personales. La información se proporciona "como está" sin garantías de ninguna clase, y no otorga ningún derecho.
Hola
He recibido en los últimos meses muchas consultas acerca de como dimensionar una solución de alta disponibilidad basada en el Failover Cluster de Windows Server 2008, generalmente relacionadas también con el mundo de la virtualización.
En este libro de Excel he intentado plasmar sin demasiadas pretensiones gran parte de las variables que se tienen que tener en cuenta para empezar. Me gustaría compartirla con vosotros para que comprobarais que no he metido la pata y me hicieseis sugerencias acerca de cómo mejorarla. El enlace está al final del post, como un adjunto.
Antes de nada, un par de aclaraciones previas. En primer lugar, este tipo de clúster esta pensado para ofrecer alta disponibilidad por tolerancia a fallos. Y dado que de lo que se trata es que si algún servidor falla o debe dejar de dar servicio por tareas de mantenimiento su pérdida pase lo más desapercibida posible, todo el sistema debe estar sobredimensionado para que los restantes miembros del clúster puedan asumir sin problemas su carga de trabajo. Esto hace que la solución sea cara, dado que la mayor parte del tiempo tendremos recursos que no estaremos utilizando para nada. La segunda es que éste es precisamente uno de los principales talones de Aquiles de todo esto. Tener recursos sin utilizar es algo que suele gustar poco a quienes han pagado dinero por ellos, y la tentación de dar trabajo a la infraestructura “ociosa” es muy tentadora. Pero si lo hacemos y algo sucede, harán una película sobre nosotros por no tener suficientes botes salvavidas para todos los pasajeros del barco.
Dicho esto, vamos a ver como se usa el juguete:
Las cuentas que hace la hoja combinan todos esos parámetros de forma que nos indica cuanto podemos cargar cada nodo, tanto para configuraciones Activo/Activo (se ignora el número de nodos pasivos) como Activo/Pasivo (para el número número de nodos pasivos especificados). En el caso de que el numero de nodos que fallen sea mayor que el numero de nodos pasivos existentes, se sobreentiende que el resto de nodos activos han de asumir carga de trabajo.
Un par de ejemplos:
Dos nodos, con un witness adicional (necesario en este caso). Solo puede fallar un nodo, y si estamos montando un clúster es porque asumimos que puede fallar. Reservamos un 10% de los recursos de cada host para su propio uso.
El nada sorprendente resultado es que en una configuración Activo/Activo cada uno de los nodos deberá cargarse de servicios clusterizados hasta alcanzar un 45% de uso de recursos, y en una configuración Activo/Pasivo el nodo activo puede cargarse hasta el 90%. En ambos casos, si un nodo cae, el otro se queda con el 90% de carga, que es justo lo que queremos.
Vamos ahora a un caso menos trivial. 9 nodos, 8 activos y 1 pasivo, y pensamos que, todo lo mas, se nos pueden llegar a caer 3 nodos simultánemaente. En 9 nodos 5 son mayoría, luego podemos perder 4. Si ponemos un witness adicional nos salen 10 votos, pero en este caso una mayoría son 6 a 4, es decir, que solo podemos perder 4 nodos. Por tanto aquí usar o no un disco de quorum o un file share como witness es irrelevante:
En este caso, no deberíamos sobrecargar cada host activo con más de un 67% de carga de trabajo. Si prescindimos del nodo pasivo la cifra se reduce a 60%.
En la segunda hoja del libro hay una tabla rápida en la que la única variable es el número de nodos pasivos que puede ayudar a centrar un poco el tiro (o directamente nos acaba de confundir por completo):
La parte más discutible de todo esto es precisamente que significan esos porcentajes de carga de trabajo. En el fondo eso lo decide cada uno con mayor o menor acierto (el “performance tunning” es más un arte que una ciencia), pero digamos que representa una media ponderada de RAM, CPU, IO de disco e IO de red. Simplificando mucho las cosas, he incluido los dos primeros para hacernos una idea de lo que esto supone en términos de RAM en Gb y CPU en número de cores. Multiplicando por ese porcentaje nos saldrían los topes de memoria y el número de cores totalmente saturados (al 100% de CPU) que pueden llegarse a consumir por cada nodo y en total para todo el sistema clúster. La diferencia de estos valores con respecto al total de recursos disponibles es el precio que pagamos por la alta disponibilidad.
Hablando ahora de virtualización, ¿cuantas máquinas virtuales me caben si…?. Pues depende. Considerando (incorrectamente) una VM como un mero conjunto de RAM y CPU podemos echar unas cuentas rápidas. Apiñar VMs para intentar demostrar que en una solución equivalente metes más VMs que tu competidor es una práctica muy peligrosa. La cosa debe transcurrir al revés. ¿Que rendimiento deben dar mis máquinas virtuales?. ¿Cómo estaban/están dimensionadas en físico?. ¿Que usos medios de RAM y CPU utilizan?. En función de eso decidimos cuanta RAM y cuantos procesadores virtuales necesitaremos para cada VM, y luego ya podemos dividir.
Supongamos una estructura de VMs homogénea (VDI, servidores estandarizados, etc.). Tenemos la RAM en Gb de cada VM, el número de procesadores que queremos asignarles. Tenemos que decidir un ratio de procesadores virtuales por core físico. Lo normal es que un equipo no esté todo el rato al 100% de CPU. Si está al 25-30% podemos usar razonablemente un ratio 1:4. El numero máximo de VMs que podemos meter en la infraestructura será la que antes sature la memoria o los procesadores.
Veamos un caso. 16 nodos, 2 pasivos, 2 en fallo, con nodos de 32 Gb de RAM y dos procesadores quad-core, a los que les reservamos un 5%: VMs de 512 MB y un solo procesador:
Usamos por tanto 14 nodos y nos caben, redondeando a la baja, 30 VMs por host, y 420 en total. Fijaros que aquí mandan las CPUs. Subir el ratio a posteriori es trampa. Pero si metemos hosts de 4 procesadores quad-core la cosa sube a 60 VMs por host y 840 VMs en total, y en ese caso quien impone la limitación es la memoria.
Cuidado con estas cuentas. ¿Soportarán el almacenamiento y la red estas cantidades?. ¿Y nuestros debilitados corazones?.
Saludos
David Cervigón
P.D: Enhorabuena por llegar hasta aquí. Insisto. Repasadme las cuentas y comunicadme cualquier error o sugerencia que encontréis.
Una pequeña corrección, y no precisamente sobre las cuentas... Se dice "talón de Aquiles", y no tendón de Aquiles.
En cuanto a lo demás del post... muy currado, como siempre. Ya está en los favoritos.
Pues a Brad Pit le atravesaban el tendon con la flecha en la peli... :-)
Gracias
Si es que ya no vamos a poder fiarnos ni de las pelis "históricas"...
Cuidadín con los clusters que almacenan el quorum en un fileserver, hasta ahora al tener almacenado este es una cabina con comunicación de fibra o iscsi, no nos ha importado la velocidad de la comunicación de los nodos con el quorum, ahora la comunicación es más lenta y afecta desde los cables utp hasta el i/o del juego de discos del almacenamiento, pasando por el switch, por supuesto gigabit y si hay más de 500milisegundos mal vamos.
¡Saludos!.