Sigo cerrando posts sobre Hyper-V y Windows 2012 que tenía pendientes. En este caso afinación de configuración.
Como continuación al Post sobre la afinación en la configuración de nuestro Cluster Hyper-V Windows 2012 (este), dejamos pendiente la configuración a través de Powershell dividida en las siguientes partes, Preferred Owners, Proceso de Failover, Mejoras en el Orden de arranque de las VM y Reglas de Afinidad y Antiafinidad.
AFINIDAD Y ANTI-AFINIDAD
Para empezar debemos entender que son y cómo funcionan este tipo de reglas.
- Reglas de afinidad VM – VM ==> Mantener ejecutándose juntas en el mismo Host.
- Reglas de anti-afinidad VM – VM ==> Mantener ejecutándose siempre separadas en distintos Hosts.
Parace complejo pero con un ejemplo claro lo vais a ver. ¿Queremos que los Controladores de Dominio se ejecuten todos en el mismo Host de virtualización? ¿Qué pasaría si se nos cae dicho host? Adios dominio. Otro ejemplo, tenemos dos servidores que consumen mas del 50% de la memoria RAM de un Host ¿Queremos tenerlos trabajando juntos sobre el mismo hosts? ¿Podemos?
Centrándonos sobre todo en reglas de Anti-afinidad, para Hyper-V utilizaremos la propiedad AntiAffinityClassNames (paradójicamente existe desde Windows Server 2003). A dicha propiedad no se puede acceder desde la consola de gestión de Failover Cluster pero si desde nuestro gran amigo y ya compañeros Powershell. La forma de interactuar sobre dicha propiedad nos va a dar diversas posibilidades. Yo os las ordeno de mas fácil a más complicada, según mi criterio.
Script de Powershell Configure-AntiAffinity.ps1.
Michel de Rooij, para facilitarnos el trabajo, ha escrito el siguiente scritp de powershell que nos permite configurar la anti-afinidad, Configure-AntiAffinity.ps1. Como ejemplo, no queremos que ninguno de los controladores de nuestro dominio, robezno.com, estén en el mismo Host de virtualización:
Configure-AntiAffinity.ps1 -Cluster Hyper-VCluster.robezno.com -Groups dc01.robezno.com, dc01.robezno.com, dc01.robezno.com -Class DCAntiAffinity -Verbose
Explicamos los parámetros a configurar:
- Cluster.- especificamos el cluster en el que queremos crear la regla.
- Groups.- especificamos los Cluster Groups (o sea, las VM) que queremos configurar.
- Class.- Podemos poner un nombre a la regla.
Resto de opciones.-
Repetimos nuestro ejemplo con los controladores de dominio.
- Cluster.exe.- Esta opción fue despreciada desde Windows Server 2008 R2. Lo que hacemos es configurar la propiedad AntiAffinityClassNames. Sería:
cluster.exe group «dc01.robezno.com» /prop AntiAffinityClassNames=»DCAntiAffinity»
cluster.exe group «dc02.robezno.com» /prop AntiAffinityClassNames=»DCAntiAffinity»
cluster.exe group «dc03.robezno.com» /prop AntiAffinityClassNames=»DCAntiAffinity»
- Powershell.- Nuevamente configuraremos la propiedad AntiAffinityClassNames directamente. Os dejo unos ejemplos, el nuestro de los Controladores de dominio y otro de un grupo de Anti-Afinidad cuando tenemos varios servidores de ficheros formando un cluster:
(Get-ClusterGroup dc01.robezno.com).AntiAffinityClassNames = «Domain Controlers»
(Get-ClusterGroup fs03.robezno.com).AntiAffinityClassNames = «File Servers»
(Get-ClusterGroup dc01.robezno.com).AntiAffinityClassNames += «File Servers»
- Hyper-V Server o Server Core.- Os dejo diversos ejemplos, el de Controladores de dominios, el de poder incluir una VM en varios grupos de anti-afinidad, o el de restablecer o resetear dicha anti-afinidad.
DISM /ONLINE /ENABLE-FEATURE /FEATURENAME:FailoverCluster-CmdInterface
cluster group dc01.robezno.com /prop AntiAffinityClassNames = «Domain Controlers»
cluster group xxxx /prop AntiAffinityClassNames = «Domain Controlers»,»Critical Servers»
cluster group xxxx /prop AntiAffinityClassNames = «»
- System Center Virtual Machine Manager 2012 con Service Pack 1.- Lo realizaremos desde la consola de gestión. Hardware Configuration ==> Advanced and Availability. Pulsaremos el botón de Manage availability sets y crearemos nuestra regla:
- Windows Server 2012 R2 con Hyper-V.- Tengo que comprobar cómo está configurado este parámetro para Hyper-V 2012 R2…… ¿tal vez ya esté integrado en la consola de Hyper-V?
Hasta la vista, babe.
Bibliografia