Creación de reglas de afinidad de sitio y máquina para máquinas virtuales
Se aplica a: Azure Local, versiones 23H2 y 22H2
Con Windows Admin Center o Windows PowerShell, puede crear fácilmente reglas de afinidad y antiafinidad para máquinas virtuales (VM) en la instancia local de Azure.
Nota
La manera recomendada de crear y administrar máquinas virtuales en Azure Local, versión 23H2, usa el plano de control de Azure Arc. Use el mecanismo que se describe a continuación para administrar las máquinas virtuales solo si necesita funcionalidad que no está disponible en máquinas virtuales de Azure Arc.
Affinity es una regla que establece una relación entre dos o más grupos de recursos o roles, como máquinas virtuales, para mantenerlos juntos en la misma máquina, sistema o sitio. La antiafinidad es lo contrario en que se usa para mantener las máquinas virtuales o grupos de recursos especificados entre sí, como dos controladores de dominio colocados en máquinas independientes o en sitios independientes para la recuperación ante desastres.
Las reglas de afinidad y antiafinidad se utilizan de forma similar a como Azure usa las zonas de disponibilidad. En Azure, puede configurar zonas de disponibilidad para mantener las máquinas virtuales en zonas independientes y alejarlas entre sí o en la misma zona entre sí.
Con las reglas de afinidad y antiafinidad, cualquier máquina virtual en clúster permanecería en la misma máquina o se impediría que estuvieran juntas en la misma máquina. De este modo, la única manera de mover una máquina virtual fuera de una máquina sería hacerlo manualmente. Asimismo puede mantener las máquinas virtuales junto con su almacenamiento como, por ejemplo, con el volumen compartido de clúster (CSV) en el que reside su VHDX.
Puede crear reglas básicas de afinidad y antiafinidad mediante Windows Admin Center.
- En Inicio de Windows Admin Center, en Todas las conexiones, seleccione la máquina o el sistema para el que desea crear la regla de máquina virtual.
- En Herramientas, seleccione Configuración.
- En Configuración, seleccione Reglas de afinidad y, a continuación, seleccione Crear regla en Reglas de afinidad.
- En Nombre de la regla: escriba un nombre para la regla.
- En Tipo de regla, seleccione Juntos (misma máquina) o Apart (diferentes máquinas) para colocar las máquinas virtuales en la misma máquina o en máquinas diferentes.
- En Se aplica a, seleccione las máquinas virtuales a las que se aplica esta regla. Use el botón Agregar para agregar más máquinas virtuales a la regla.
- Cuando termine, seleccione Crear regla.
- Para eliminar una regla, selecciónela y seleccione Eliminar regla.
Puede crear reglas más complejas con Windows PowerShell que con Windows Admin Center. Normalmente, configura las reglas desde un equipo remoto, en lugar de en un equipo host de un sistema. Este equipo remoto se denomina equipo de administración.
Al ejecutar comandos de Windows PowerShell desde un equipo de administración, incluya el -Name
parámetro o -Cluster
con el nombre del sistema que administra. Si procede, también debe especificar el nombre de dominio completo (FQDN) al usar el -ComputerName
parámetro para una máquina.
Para crear reglas de afinidad para clústeres, utilice los siguientes cmdlets nuevos de PowerShell:
El cmdlet New-ClusterAffinityRule
se utiliza para crear nuevas reglas. Con este comando, especificaría el nombre de la regla y el tipo de regla que es, donde:
-Name
es el nombre de la regla.
Los valores de -RuleType
son SameFaultDomain
| SameNode
| DifferentFaultDomain
| DifferentNode
Ejemplo:
New-ClusterAffinityRule -Name Rule1 -RuleType SameFaultDomain
El cmdlet Set-ClusterAffinityRule
se utiliza para habilitar o deshabilitar una regla, donde:
-Name
es el nombre de la regla que se va a habilitar o deshabilitar.
-Enabled
| Disabled
habilita o deshabilita la regla.
Ejemplo:
Set-ClusterAffinityRule -Name Rule1 -Enabled
El cmdlet Get-ClusterAffinityRule
se utiliza para mostrar la regla especificada y qué tipo es. Si -Name
no se especifica, enumera todas las reglas.
Ejemplo:
Get-ClusterAffinityRule -Name Rule1
El cmdlet Add-ClusterGroupToAffinityRule
se utiliza para agregar un nombre de grupo o rol de máquina virtual a una regla de afinidad específica, donde:
-Groups
es el nombre del grupo o rol que se va a agregar a la regla.
-Name
es el nombre de la regla a la que se va a agregar.
Ejemplo:
Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1
El cmdlet Add-ClusterSharedVolumeToAffinityRule
permite que las máquinas virtuales permanezcan juntas con el volumen compartido de clúster en el que reside el VHDX, donde:
-ClusterSharedVolumes
es el disco CSV que desea agregar a la regla.
-Name
es el nombre de la regla a la que se va a agregar.
Ejemplo:
Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1
El Remove-ClusterAffinityRule
elimina la regla especificada, donde -Name
es el nombre de la regla.
Ejemplo:
Remove-ClusterAffinityRule -Name Rule1
Remove-ClusterGroupFromAffinityRule
quita un grupo de máquinas virtuales o un rol de una regla específica, pero no deshabilita ni elimina la regla, donde:
-Name
es el nombre de la regla.
-Groups
son los grupos o roles que desea quitar de la regla.
Ejemplo:
Remove-ClusterGroupFromAffinityRule -Name Rule1 -Groups Group1
El Remove-ClusterSharedVolumeFromAffinityRule
cmdlet se usa para quitar los volúmenes compartidos de clúster de una regla específica, pero no deshabilita ni elimina la regla, donde:
-ClusterSharedVolumes
es el disco CSV que desea quitar de la regla.
-Name
es el nombre de la regla a la que se va a agregar.
Ejemplo:
Remove-ClusterSharedVolumeFromAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1
Con la llegada de los nuevos cmdlets, también hemos agregado nuevos modificadores adicionales a algunos cmdlets existentes.
El nuevo -IgnoreAffinityRule
modificador omite la regla y mueve el grupo de recursos del clúster a otra máquina. Para más información sobre este cmdlet, consulte Move-ClusterGroup.
Ejemplo:
Move-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1
Nota
Si una regla de movimiento es válida, es decir, se admite, también se moverán todos los grupos y roles afectados. Si el movimiento de una máquina virtual infringe una regla, pero se necesita una sola vez, use el modificador -IgnoreAffinityRule
para permitir que se produzca el movimiento. En este caso, se mostrará una advertencia de infracción de la máquina virtual. Después, puede volver a habilitar la regla según sea necesario.
El nuevo -IgnoreAffinityRule
modificador omite la regla y pone el grupo de recursos del clúster en línea en su ubicación actual. Para más información sobre este cmdlet, consulte Start-ClusterGroup.
Ejemplo:
Start-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1
Las reglas de afinidad son reglas de "juntos" que mantienen los recursos en la misma máquina, sistema o sitio. Estos son algunos escenarios comunes de configuración de las reglas de afinidad.
Supongamos que tiene una máquina virtual con SQL Server y una máquina virtual de servidor web. Estas dos máquinas virtuales deben permanecer siempre en el mismo sitio, pero no necesariamente deben estar en la misma máquina. Con SameFaultDomain
, esto es posible, como se muestra:
New-ClusterAffinityRule -Name WebData -Ruletype SameFaultDomain -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1 –Name WebData -Cluster Cluster1
Set-ClusterAffinityRule -Name WebData -Enabled 1 -Cluster Cluster1
Para ver esta regla y cómo está configurada, use el Get-ClusterAffinityRule
cmdlet para ver la salida:
Get-ClusterAffinityRule -Name WebData -Cluster Cluster1
Name RuleType Groups Enabled
---- --------- ------ -------
WebData SameFaultDomain {SQL1, WEB1} 1
Vamos a usar el mismo escenario, excepto especificar que las máquinas virtuales deben residir en la misma máquina. Con SameNode
, establézcalo de la siguiente manera:
New-ClusterAffinityRule -Name WebData1 -Ruletype SameNode -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1 –Name WebData1 -Cluster Cluster1
Set-ClusterAffinityRule -Name WebData1 -Enabled 1 -Cluster Cluster1
Para ver la regla y cómo está configurada, use el Get-ClusterAffinityRule
cmdlet para ver la salida:
Get-ClusterAffinityRule -Name WebData1 -Cluster Cluster1
Name RuleType Groups Enabled
---- -------- ------ -------
DC SameNode {SQL1, WEB1} 1
Las reglas de antiafinidad son reglas "separadas" que separan los recursos y los colocan en diferentes máquinas, sistemas o sitios.
Tiene dos máquinas virtuales que ejecutan SQL Server en el mismo sistema multisitio local de Azure. Cada máquina virtual emplea una gran cantidad de recursos de memoria, de CPU y de almacenamiento. Si los dos terminan en la misma máquina, esto puede provocar problemas de rendimiento con uno o ambos, ya que compiten por los ciclos de memoria, CPU y almacenamiento. El uso de una regla de antiafinidad con DifferentNode
como tipo de regla, estas máquinas virtuales siempre permanecerán en diferentes máquinas.
Los comandos de ejemplo serían:
New-ClusterAffinityRule -Name SQL -Ruletype DifferentNode -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL1,SQL2 –Name SQL -Cluster Cluster1
Set-ClusterAffinityRule -Name SQL -Enabled 1 -Cluster Cluster1
Para ver la regla y cómo está configurada, use el Get-ClusterAffinityRule
cmdlet para ver la salida:
Get-ClusterAffinityRule -Name SQL -Cluster Cluster1
Name RuleType Groups Enabled
---- ----------- ------- -------
SQL DifferentNode {SQL1, SQL2} 1
También puede mantener una máquina virtual y su VHDX en un volumen compartido de clúster (CSV) en la misma máquina. Si lo hace, se evitaría que se produjera el redireccionamiento de CSV, lo que puede ralentizar el inicio o la detención de una máquina virtual. Teniendo en cuenta el escenario combinado de afinidad y antiafinidad anteriormente, puede mantener la máquina virtual de SQL y el volumen compartido de clúster en la misma máquina. Para ello, utilice los comandos siguientes:
New-ClusterAffinityRule -Name SQL1CSV1 -Ruletype SameNode -Cluster Cluster1
New-ClusterAffinityRule -Name SQL2CSV2 -Ruletype SameNode -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL1 –Name SQL1CSV1 -Cluster Cluster1
Add-ClusterGroupToAffinityRule -Groups SQL2 –Name SQL2CSV2 -Cluster Cluster1
Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name SQL1CSV1 -Cluster Cluster1
Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV2 -Name SQL2CSV2 -Cluster Cluster1
Set-ClusterAffinityRule -Name SQL1CSV1 -Enabled 1 -Cluster Cluster1
Set-ClusterAffinityRule -Name SQL2CSV2 -Enabled 1 -Cluster Cluster1
Para ver estas reglas y cómo están configuradas, use el Get-ClusterAffinityRule
cmdlet sin el -Name
modificador y vea la salida.
Get-ClusterAffinityRule -Cluster Cluster1
Name RuleType Groups Enabled
---- -------- ------ -------
Site1Trio SameFaultDomain {SQL1, WEB1, DC1} 1
Site2Trio SameFaultDomain {SQL2, WEB2, DC2} 1
TrioApart DifferentFaultDomain {DC1, DC2} 1
SQL1CSV1 SameNode {SQL1, <CSV1-GUID>} 1
SQL2CSV2 SameNode {SQL2, <CSV2-GUID>} 1
Aprenda a administrar las máquinas virtuales. Consulte Administración de máquinas virtuales en Azure Local mediante Windows Admin Center.