lunes, 31 de julio de 2017

Node fairness: Controlando el Balanceo de maquinas virtuales en Hyper-V 2016

En Windows Server 2016, Microsoft introdujo una nueva característica de Failover Clustering disponible exclusivamente para el rol Hyper-V. Se trata de Node Fairness, una funcionalidad pensada para mantener balanceada la carga de los nodos del cluster redistribuyendo maquinas virtuales cuando detecta que algún nodo esta sobrecargado. Las maquinas virtuales se mueven a nodos con menor carga mediante migraciones en vivo y por lo tanto sin disrupción de servicios.



El feature viene activo por defecto y ya sea mediante Powershell o la consola de Failover Cluster Manager, puede desactivarse, configurar cuando entrará en acción y ajustar la agresividad de la heuristica que utiliza el cluster para determinar cuando un nodo esta sobrecargado.

AutoBalancerLevel

Hay 3 niveles de agresividad para esta heuristica:

AutoBalancerLevel Agresividad Porcentaje de carga del Host
1 Baja 80%
2 Media 70%
3 Alta 60%


Para visualizar el valor por defecto:

PS C:\Users\Administrador.CONTOSO> Get-Cluster -Name cluster01 | fl autobalancerlevel
AutoBalancerLevel : 1

Como puede verse, AutoBalancerLevel esta por defecto establecido en 1, un valor bastante relajado, que indica que si la CPU o memoria llegan al 80% de uso deberá empezar a hacer migraciones en vivo de maquinas virtuales a otros nodos del cluster.

Para ajusta el valor de AutoBalancerLevel con PowerShell:

PS C:\Users\Administrador.CONTOSO> (Get-Cluster).AutoBalancerLevel = 2


AutoBalancerMode

Otro valor configurable es AutoBalancerMode, que determina en que momentos se verificará la carga de trabajo de los nodos, por defecto viene establecido 2, lo cual hace uso de los nuevos nodos agregados al cluster para rebalancear la carga de VMs y también controla cada 30 minutos que ningún nodo este sobrecargado, de forma que si algún nodo del cluster falla y las maquinas virtuales migran a otros nodos, Node Fairness se encargará de corregir la distrubución de carga de VMs en los nodos sobrevivientes.

AutoBalancerMode Comportamiento
0 Deshabilitado
1 Balancear solo al agregar nuevos nodos
2 Balancear al agregar nodos y cada 30 minutos

Para cambiar este valor con PowerShell:

PS C:\Users\Administrador.CONTOSO> (Get-Cluster).AutoBalancerMode = 1  


Para modificar estos valores desde la consola Failover Cluster Manager, en las propiedades del clúster, modificar las opciones de la pestaña equilibrador:



Salvo excepciones por necesidades específicas, la configuración por defecto es apropiada para la mayoría de los escenarios. Node Fairness respeta las políticas existentes de anti-affinity y possible owners configuradas en el cluster.

Balanceo de VMs en Virtual Machine Manager

En un clúster manejado por VMM, Node Fairness se desactiva automáticamente en favor del feature Dynamic Optimization presente desde Virtual Machine Manager 2012, cuya funcionalidad es equivalente e incluso va un poco mas allá, permitiendo configurar que el balanceo ocurra en schedules establecidos por el administrador.


sábado, 29 de julio de 2017

Virtual Machine Manager: Error durante fase "specialize" al crear VM desde plantilla

Recientemente estuve realizando un deployment del controlador SDNv2 de Microsoft Network Controller en un ambiente de pruebas, para esto utilice la plantilla de servicio para VMM disponible en el Github de Microsoft. La tarea terminaba con un warning e inspeccionando la consola de las 3 máquinas virtuales en todas aparecía el siguiente error:

Error durante el sysprep de los nodos de Network Controller
 
Luego de otros intentos fallidos tratando de determinar si se trataba de que el VHD de Windows Server 2016 estuviese dañado, me fijé en un detalle mas básico que omití modificar en el template de VMM, la zona horaria establecida en la plantilla era distinta a la del Domain Controller del lab, y para complicar aún mas el escenario, el servidor VMM también tenía otra zona horaria. Luego de corregido este detalle el deployment del servicio finalizó correctamente. Si bien este no era mi caso, otra causa de este error podría ser que la cuenta especificada en la plantilla para unir el equipo al dominio no cuente con privilegios para hacerlo.

En otros casos donde el origen del error no sea tan evidente, puede montarse el VHD de la VM problemática y revisarse la ruta %WINDIR%\Panther\ para investigar que datos arroja el log del sysprep.