HA Slot Size

Esta es, para mi, la parte que mas me costo de entender de HA (si es que lo he llegado a conseguir), el Slot Size, afecta a la política de admisión Host failures the cluster tolerates que ya hemos visto anteriormente y que usualmente es la mas utilizada ya que es la que configura HA por defecto.

Intentare explicar en que consiste el Slot Size de forma que sea entendible.

Un Slot es la medida lógica de los recursos necesarios de Memoria y CPU que necesita una VM para funcionar.

VMware calcula el tamaño de el slot (Slot Size) en base a dos cálculos, de entre todas las VMs del cluster escoje la que tenga una mayor reserva de CPU y define ese valor como el Slot Size de CPU y realiza lo mismo con la que tenga una mayor reserva de RAM y le suma el valor de "Memory Overhead". De este modo define el Slot Size de CPU y el Slot Size de Memoria.

De no existir reservas en las VMs, a nivel de CPU usara el valor por defecto (32 Mhz. en vSphere 5) y a nivel de RAM usara el valor de "Memory Overhead" mas alto.



Imagenes. VM sin reservas.

Por ejemplo, si en el cluster hubieran las siguientes VMs:

VMHB01 | Reserva de CPU (1500Mhz.), Reserva de memoria (1024Mb.)

VMHB02 | Reserva de CPU (500Mhz.), Reserva de memoria (4096Mb.)

VMHB03 | Sin reserva de CPU (32Mhz.), Sin reserva de memoria ("124Mb." Memory Overhead)

VMHB04 | Reserva de CPU (2000Mhz.), Reserva de memoria (512Mb.)


HA definiria como Slot Size de CPU (2000Mhz.) y como Slot Size de Memoria (4096Mb.), al ser los valores de reserva mas altos de entre todas las VMs.

Con esto, HA ya tiene los Slots Size de CPU y Memoria del cluster, ahora ha de calcular la capacidad de failover, es decir, cuantos Slots podrá contener el Cluster disponibles para VMs productivas y cuantos slots "reservados" para realizar el failover.

Lo que hará es dividir el total de CPU del host y dividirlo entre el Slot Size de CPU, el resultado sera el numero de slots de CPU del host.

Realizara lo mismo con el total de Memoria RAM del host y el resultado sera el numero de slots de RAM del host.

Ejemplo, pongamos que el Cluster consta de 3 hosts con los siguientes recursos y slots:

ESXi_HB01 | CPU Total (40000Mhz.), Dividido entre el Slot Size de CPU (2000Mhz.) = 20 Slots de CPU.
ESXi_HB01 | RAM Total (40960MB.), Dividido entre el Slot Size de RAM (4096Mb.) = 10 Slots de RAM.

ESXi_HB02 | CPU Total (20000Mhz.), Dividido entre el Slot Size de CPU (2000Mhz.) = 10 Slots de CPU.
ESXi_HB02 | RAM Total (24576MB.), Dividido entre el Slot Size de RAM (4096Mb.) = Slots de RAM.

ESXi_HB03 | CPU Total (20000Mhz.), Dividido entre el Slot Size de CPU (2000Mhz.) = 10 Slots de CPU.
ESXi_HB03 | RAM Total (24576MB.), Dividido entre el Slot Size de RAM (4096Mb.) = Slots de RAM.
Una vez tiene el total de todos los hosts los sumara y así obtendrá el numero máximo de Slots de CPU y Memoria que puede contener el cluster.

Ejemplo,

ESXi_HB01 | 20 Slots de CPU y 10 Slots de RAM

ESXi_HB02 | 10 Slots de CPU y Slots de RAM

ESXi_HB03 | 10 Slots de CPU y Slots de RAM



20 Slots de CPU (ESXi_HB01) + 10 Slots de CPU (ESXi_HB02) + 10 Slots de CPU (ESXi_HB03) = 40 Slots de CPU.

10 Slots de RAM (ESXi_HB01) + 6 Slots de RAM (ESXi_HB02) + 6 Slots de RAM (ESXi_HB03) = 22 Slots de RAM.


Llegados a este punto escogerá el valor mas restrictivo (el de menor numero) y sera finalmente el numero de slots del cluster. En este caso, el cluster dispondra de 22 Slots.

Ahora es donde entra la política de control de admisión y el numero de hosts en fallo que puede tolerar, asumiendo que se ha indicado 1.
Imagen. Host failures the cluster tolerates.

HA quitara del calculo de slots al host de mayor recursos del cluster reduciendo el numero de slots disponibles y aumentando el numero de slots para failover, preparando asi el entorno para el peor de los casos, la caida del host con mas disponibilidad de recursos.



Imagen. Vista del tamaño de Slot Size, slots utilizados, disponibles y de failover.
Siguiendo con el ejemplo anterior, HA quitara del calculo a ESXi_HB01, ya que es el host con mayor cantidad de recursos del cluster. De ahi que las buenas practicas de VMware aconsejen utilizar hosts lo mas equilibrados posibles en recursos, de lo contrario podria suponer un desaprovechamiento de recursos.


Imagen. En la primera imagen la tolerancia es de 1 host, en la segunda, de 2, los slots disponibles han disminuido drasticamente y los de failover se han visto incrementados.

Esta forma de calcular el Slot Size puede ser extremadamente restrictiva en algunos casos, por ejemplo, en el caso de tener 50 VMs sin reservas (calculara 32 Mhz y Memory Overhead) y una o dos maquinas con reservas de 2000 Mhz y 10240 MB. de RAM, HA calculara el slot size de memoria basándose en las de mayor reserva y el numero de slots sera muy inferior al que realmente podría tener basándose en los recursos del cluster. En estos casos se puede modificar a mano en las configuraciones avanzadas los limites de calculo para CPU y memoria.


das.slotCpuInMHz

das.slotMemInMB

No es recomendable modificar estos valores, lo recomendable es utilizar shares cuando sea posible, en lugar de usar reservas y límites.

También es posible modificar el comportamiento de HA al llegar al máximo de Slots disponibles en el cluster respecto a las VMs, es posible configurar que permita iniciarlas aunque no es recomendable, deshabilitando la política de control de admisión.
De haber masVMs en marcha de las que los slots de failover puede contener, en caso de caída de uno de ellos, el resto de hosts podrían quedarse literalmente colapsados al realizar el failover.

La opción que permite iniciar las maquinas es (Allow VMs to be powered on even if they violate availability constraints).

Imagen. Habilitar y deshabilitar el control de admisión a nivel de Cluster HA