Compartir vía


Creación de reglas de afinidad de sitio y servidor para máquinas virtuales

Se aplica a: Azure Stack HCI, versiones 23H2 y 22H2

Con Windows Admin Center o Windows PowerShell, puede crear fácilmente reglas de afinidad y de antiafinidad para las máquinas virtuales de un clúster.

Nota

La manera recomendada de crear y administrar máquinas virtuales en Azure Stack HCI 23H2 es usar 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.

La afinidad 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 el mismo servidor, clúster 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 servidores 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í.

Mediante el uso de las reglas de afinidad y antiafinidad, cualquier máquina virtual en el clúster permanecerá en el mismo nodo de clúster o se evitará que esté en el mismo nodo. De esta manera, la única manera de trasladar una máquina virtual fuera de un nodo sería 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.

Al combinar reglas de afinidad y antiafinidad, también puede configurar un clúster extendido entre dos sitios y mantener las máquinas virtuales en el sitio en el que deben estar.

Uso de Windows Admin Center

Puede crear reglas básicas de afinidad y antiafinidad mediante Windows Admin Center.

Pantalla Máquinas virtuales

  1. En la página principal de Windows Admin Center, en Todas las conexiones, seleccione el servidor o clúster para el que desea crear la máquina virtual.
  2. En Herramientas, seleccione Configuración.
  3. En Configuración, seleccione Reglas de afinidad y, a continuación, seleccione Crear regla en Reglas de afinidad.
  4. En Nombre de la regla: escriba un nombre para la regla.
  5. En Tipo de regla, seleccione Juntas (mismo servidor) o Separadas (servidores diferentes) para colocar las máquinas virtuales en el mismo servidor o en servidores diferentes.
  6. 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.
  7. Cuando termine, seleccione Crear regla.
  8. Para eliminar una regla, simplemente selecciónela y seleccione Eliminar regla.

Uso de Windows PowerShell

Puede crear reglas más complejas con Windows PowerShell que con Windows Admin Center. Normalmente, las reglas se configuran desde un equipo remoto, en lugar de hacerlo en un servidor host de un clúster. Este equipo remoto se denomina equipo de administración.

Al ejecutar comandos Windows PowerShell desde un equipo de administración, incluya el -Name parámetro o -Cluster con el nombre del clúster que está administrando. Si procede, también debe especificar el nombre de dominio completo (FQDN) al usar el -ComputerName parámetro para un nodo de servidor.

Nuevos cmdlets de PowerShell

Para crear reglas de afinidad para clústeres, utilice los siguientes cmdlets nuevos de PowerShell:

New-ClusterAffinityRule

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

Set-ClusterAffinityRule

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

Get-ClusterAffinityRule

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

Add-ClusterGroupToAffinityRule

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 que se va a agregar.

Ejemplo:

Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1

Add-ClusterSharedVolumeToAffinityRule

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 o discos CSV que quiere 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

Remove-ClusterAffinityRule

El Remove-ClusterAffinityRule elimina la regla especificada, donde -Name es el nombre de la regla.

Ejemplo:

Remove-ClusterAffinityRule -Name Rule1

Remove-ClusterGroupFromAffinityRule

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

Remove-ClusterSharedVolumeFromAffinityRule

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 o discos CSV que desea quitar de la regla.

-Name es el nombre de la regla que se va a agregar.

Ejemplo:

Remove-ClusterSharedVolumeFromAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

Cmdlets de PowerShell existentes

Con la llegada de los nuevos cmdlets, también hemos agregado nuevos modificadores adicionales a algunos cmdlets existentes.

Move-ClusterGroup

El nuevo modificador -IgnoreAffinityRule omite la regla y mueve el grupo de recursos de clúster a otro nodo de clúster. 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.

Start-ClusterGroup

El nuevo modificador -IgnoreAffinityRule omite la regla y activa el grupo de recursos de clúster en su ubicación actual. Para más información sobre este cmdlet, consulte Start-ClusterGroup.

Ejemplo:

Start-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Ejemplos de reglas de afinidad

Las reglas de afinidad son reglas de "unión" que mantienen los recursos en el mismo servidor, clúster o sitio. Estos son algunos escenarios comunes de configuración de las reglas de afinidad.

Escenario 1

Supongamos que tiene una máquina virtual con SQL Server y una máquina virtual de servidor web. Estas dos máquinas virtuales siempre deben permanecer en el mismo sitio, pero no necesariamente deben estar en el mismo nodo de clúster del sitio. Con SameFaultDomain, esto es posible, como se muestra a continuación:

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

Escenario 2

Vamos a usar el mismo escenario anterior, excepto especificar que las máquinas virtuales deben residir en el mismo nodo de clúster. Con SameNode, puede establecerlo 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

Ejemplos de reglas de antiafinidad

Las reglas de antiafinidad son reglas de "separación" que separan los recursos y los colocan en diferentes servidores, clústeres o sitios.

Escenario 1

Supongamos que cuenta con dos máquinas virtuales que ejecutan SQL Server en el mismo clúster multisitio de Azure Stack HCI. Cada máquina virtual emplea una gran cantidad de recursos de memoria, de CPU y de almacenamiento. Si las dos terminan en el mismo nodo, esto puede causar problemas de rendimiento con una o ambas, ya que compiten por los ciclos de almacenamiento, CPU y memoria. Mediante el uso de una regla de antiafinidad con DifferentNode como tipo de regla, estas máquinas virtuales se mantienen siempre en nodos de clúster diferentes.

Los comandos de ejemplo para esto 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

Escenario 2

Supongamos que tiene un clúster extendido de Azure Stack HCI con dos sitios (dominios de error). Tiene dos controladores de dominio que desea conservar en sitios independientes. Con una regla de antiafinidad con DifferentFaultDomain como tipo de regla, estos controladores de dominio permanecerán siempre en sitios diferentes. Los comandos de ejemplo para esto serían:

New-ClusterAffinityRule -Name DC -Ruletype DifferentFaultDomain -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups DC1,DC2 –Name DC -Cluster Cluster1

Set-ClusterAffinityRule -Name DC -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 DC -Cluster Cluster1

Name    RuleType                Groups        Enabled
----    --------                -------       -------
DC      DifferentFaultDomain    {DC1, DC2}       1

Ejemplos de reglas combinadas

Si se combinan las reglas de afinidad y antiafinidad, se puede configurar fácilmente varias combinaciones de máquinas virtuales en un clúster de varios sitios. En este escenario, cada sitio tiene tres máquinas virtuales: SQL Server (SQL), servidor web (WEB) y controlador de dominio (DC). Para cada una de las combinaciones, puede usar reglas de afinidad con SameFaultDomain para mantenerlas todas en el mismo sitio. También puede establecer los controladores de dominio de cada sitio con reglas antiafinidad y DifferentFaultDomain para mantener las máquinas virtuales del controlador de dominio en sitios independientes, como se muestra a continuación:

New-ClusterAffinityRule -Name Site1Trio -Ruletype SameFaultDomain -Cluster Cluster1

New-ClusterAffinityRule -Name Site2Trio -Ruletype SameFaultDomain -Cluster Cluster1

New-ClusterAffinityRule -Name TrioApart -Ruletype DifferentFaultDomain -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL1,WEB1,DC1 –Name Site1Trio -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups SQL2,WEB2,DC2 –Name Site2Trio -Cluster Cluster1

Add-ClusterGroupToAffinityRule -Groups DC1,DC2 –Name TrioApart -Cluster Cluster1

Set-ClusterAffinityRule -Name Site1Trio -Enabled 1 -Cluster Cluster1

Set-ClusterAffinityRule -Name Site2Trio -Enabled 1 -Cluster Cluster1

Set-ClusterAffinityRule -Name TrioApart -Enabled 1 -Cluster Cluster1

Para ver las reglas y cómo están configuradas, use el Get-ClusterAffinityRule cmdlet sin el -Name modificador y puede ver todas las reglas creadas y su 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

Reglas de afinidad de almacenamiento

También puede mantener una máquina virtual y su VHDX en un volumen compartido de clúster (CSV) en el mismo nodo de clúster. Esto evitará que se produzca la redirección 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 anterior, puede mantener la máquina virtual con SQL y el volumen compartido de clúster en el mismo nodo de clúster. 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 modificador -Name 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

Pasos siguientes

Aprenda a administrar las máquinas virtuales. Consulte Administración de máquinas virtuales en Azure Stack HCI mediante Windows Admin Center.