Criar regras de afinidade de servidor e site para VMs

Aplica-se a: Azure Stack HCI, versões 23H2 e 22H2

Ao utilizar Windows Admin Center ou Windows PowerShell, pode criar facilmente regras de afinidade e anti-afinidade para as suas máquinas virtuais (VMs) num cluster.

Nota

A forma recomendada de criar e gerir VMs no Azure Stack HCI 23H2 é utilizar o plano de controlo do Azure Arc. Utilize o mecanismo descrito abaixo para gerir as VMs apenas se precisar de funcionalidades que não estão disponíveis nas VMs do Azure Arc.

A afinidade é uma regra que estabelece uma relação entre dois ou mais grupos de recursos ou funções, como máquinas virtuais (VMs), para mantê-las juntas no mesmo servidor, cluster ou site. A antifinidade é o oposto na medida em que é utilizada para manter as VMs ou grupos de recursos especificados separados uns dos outros, como dois controladores de domínio colocados em servidores separados ou em sites separados para recuperação após desastre.

As regras de afinidade e antifinidade são utilizadas de forma semelhante à forma como o Azure utiliza Zonas de Disponibilidade. No Azure, pode configurar Zonas de Disponibilidade para manter as VMs em zonas separadas e longe umas das outras ou na mesma zona entre si.

Ao utilizar regras de afinidade e anti-afinidade, qualquer VM em cluster permaneceria no mesmo nó de cluster ou seria impedida de estar junta no mesmo nó de cluster. Desta forma, a única forma de mover uma VM para fora de um nó seria fazê-lo manualmente. Também pode manter as VMs juntas com o seu próprio armazenamento, como o Volume Partilhado de Cluster (CSV) em que reside o VHDX.

Ao combinar regras de afinidade e anti-afinidade, também pode configurar um cluster disperso em dois sites e manter as VMs no site onde precisam de estar.

Utilizar Windows Admin Center

Pode criar regras básicas de afinidade e anti-afinidade com Windows Admin Center.

Ecrã de máquinas virtuais

  1. Em Windows Admin Center home page, em Todas as ligações, selecione o servidor ou cluster para o qual pretende criar a regra de VM.
  2. Em Ferramentas, selecione Definições.
  3. Em Definições, selecione Regras de afinidade e, em seguida, selecione Criar regra em Regras de afinidade.
  4. Em Nome da regra, introduza um nome para a regra.
  5. Em Tipo de regra, selecione Juntos (mesmo servidor) ou Separados (servidores diferentes) para colocar as VMs no mesmo servidor ou em servidores diferentes.
  6. Em Aplica-se a, selecione as VMs às quais esta regra se aplica. Utilize o botão Adicionar para adicionar mais VMs à regra.
  7. Quando terminar, selecione Criar regra.
  8. Para eliminar uma regra, basta selecioná-la e selecionar Eliminar regra.

Utilizar o Windows PowerShell

Pode criar regras mais complexas com Windows PowerShell do que utilizar Windows Admin Center. Normalmente, configura as regras a partir de um computador remoto, em vez de num servidor anfitrião num cluster. Este computador remoto é denominado computador de gestão.

Ao executar Windows PowerShell comandos a partir de um computador de gestão, inclua o -Name parâmetro ou -Cluster com o nome do cluster que está a gerir. Se aplicável, também tem de especificar o nome de domínio completamente qualificado (FQDN) ao utilizar o -ComputerName parâmetro para um nó de servidor

Novos cmdlets do PowerShell

Para criar regras de afinidade para clusters, utilize os seguintes novos cmdlets do PowerShell:

New-ClusterAffinityRule

O New-ClusterAffinityRule cmdlet é utilizado para criar novas regras. Com este comando, especificaria o nome da regra e o tipo de regra que é, em que:

-Name é o nome da regra

-RuleType os valores são SameFaultDomain | SameNode | DifferentFaultDomain | DifferentNode

Exemplo:

New-ClusterAffinityRule -Name Rule1 -RuleType SameFaultDomain

Set-ClusterAffinityRule

O Set-ClusterAffinityRule cmdlet é utilizado para ativar ou desativar uma regra, em que:

-Name é o nome da regra para ativar ou desativar

-Enabled | Disabled ativa ou desativa a regra

Exemplo:

Set-ClusterAffinityRule -Name Rule1 -Enabled

Get-ClusterAffinityRule

O Get-ClusterAffinityRule cmdlet é utilizado para apresentar a regra especificada e que tipo é. Se -Name não for especificado, lista todas as regras.

Exemplo:

Get-ClusterAffinityRule -Name Rule1

Add-ClusterGroupToAffinityRule

O Add-ClusterGroupToAffinityRule cmdlet é utilizado para adicionar uma função de VM ou nome de grupo a uma regra de afinidade específica, em que:

-Groups é o nome do grupo ou função a adicionar à regra

-Name é o nome da regra a adicionar a

Exemplo:

Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1

Add-ClusterSharedVolumeToAffinityRule

O Add-ClusterSharedVolumeToAffinityRule permite que as suas VMs se mantenham juntas com o Volume Partilhado de Cluster em que o VHDX reside, em que:

-ClusterSharedVolumes é o(s) disco(s) CSV que pretende adicionar à regra

-Name é o nome da regra a adicionar a

Exemplo:

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

Remove-ClusterAffinityRule

O Remove-ClusterAffinityRule elimina a regra especificada, em que -Name é o nome da regra.

Exemplo:

Remove-ClusterAffinityRule -Name Rule1

Remove-ClusterGroupFromAffinityRule

Remove Remove-ClusterGroupFromAffinityRule um grupo ou função de VM de uma regra específica, mas não desativa ou elimina a regra, em que:

-Name é o nome da regra

-Groups são os grupos ou funções que pretende remover da regra

Exemplo:

Remove-ClusterGroupFromAffinityRule -Name Rule1 -Groups Group1

Remove-ClusterSharedVolumeFromAffinityRule

O Remove-ClusterSharedVolumeFromAffinityRule cmdlet é utilizado para remover os Volumes Partilhados de Cluster de uma regra específica, mas não desativa ou elimina a regra, em que:

-ClusterSharedVolumes é o(s) disco(s) CSV que pretende remover da regra

-Name é o nome da regra a adicionar a

Exemplo:

Remove-ClusterSharedVolumeFromAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

Cmdlets do PowerShell existentes

Com o advento dos novos cmdlets, também adicionámos novos comutadores adicionais a alguns cmdlets existentes.

Move-ClusterGroup

O novo -IgnoreAffinityRule comutador ignora a regra e move o grupo de recursos em cluster para outro nó de cluster. Para obter mais informações sobre este cmdlet, veja Move-ClusterGroup.

Exemplo:

Move-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Nota

Se uma regra de movimentação for válida (suportada), todos os grupos e funções afetados também serão movidos. Se uma movimentação de VM violar conscientemente uma regra, mas for necessária de forma temporária única, utilize o -IgnoreAffinityRule comutador para permitir que a movimentação ocorra. Neste caso, será apresentado um aviso de violação para a VM. Em seguida, pode voltar a ativar a regra conforme necessário.

Start-ClusterGroup

O novo -IgnoreAffinityRule comutador ignora a regra e coloca o grupo de recursos em cluster online na sua localização atual. Para obter mais informações sobre este cmdlet, veja Start-ClusterGroup.

Exemplo:

Start-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Exemplos de regras de afinidade

As regras de afinidade são regras "em conjunto" que mantêm os recursos no mesmo servidor, cluster ou site. Eis alguns cenários comuns para configurar regras de afinidade.

Cenário 1

Suponha que tem uma VM SQL Server e uma VM de Servidor Web. Estas duas VMs têm de permanecer sempre no mesmo site, mas não precisam necessariamente de estar no mesmo nó de cluster no site. Com SameFaultDomaino , isto é possível, conforme mostrado abaixo:

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 regra e como está configurada, utilize o Get-ClusterAffinityRule cmdlet para ver o resultado:

Get-ClusterAffinityRule -Name WebData -Cluster Cluster1

Name        RuleType          Groups        Enabled
----        ---------         ------        -------
WebData     SameFaultDomain   {SQL1, WEB1}     1

Cenário 2

Vamos utilizar o mesmo cenário acima, exceto especificar que as VMs têm de residir no mesmo nó de cluster. Com SameNodeo , pode definir o seguinte:

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 a regra e como está configurada, utilize o Get-ClusterAffinityRule cmdlet para ver o resultado:

Get-ClusterAffinityRule -Name WebData1 -Cluster Cluster1

Name    RuleType    Groups        Enabled
----    --------    ------        -------
DC      SameNode    {SQL1, WEB1}     1

Exemplos de regras de antifinidade

As regras de antifinidade são regras "separadas" que separam os recursos e os colocam em servidores, clusters ou sites diferentes.

Cenário 1

Tem duas VMs em execução SQL Server no mesmo cluster multilocais do Azure Stack HCI. Cada VM utiliza muita memória, CPU e recursos de armazenamento. Se os dois acabarem no mesmo nó, isto pode causar problemas de desempenho com um ou ambos enquanto competem por ciclos de memória, CPU e armazenamento. Ao utilizar uma regra anti-afinidade com DifferentNode como o tipo de regra, estas VMs permanecerão sempre em nós de cluster diferentes.

Os comandos de exemplo para tal seriam:

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 a regra e como está configurada, utilize o Get-ClusterAffinityRule cmdlet para ver o resultado:

Get-ClusterAffinityRule -Name SQL -Cluster Cluster1

Name    RuleType        Groups        Enabled
----    -----------     -------       -------
SQL     DifferentNode   {SQL1, SQL2}     1

Cenário 2

Suponhamos que tem um cluster disperso do Azure Stack HCI com dois sites (domínios de falha). Tem dois controladores de domínio que pretende manter em sites separados. Ao utilizar uma regra de antifinidade com DifferentFaultDomain o tipo de regra, estes controladores de domínio permanecerão sempre em sites diferentes. Os comandos de exemplo para tal seriam:

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 regra e como está configurada, utilize o Get-ClusterAffinityRule cmdlet para ver o resultado:

Get-ClusterAffinityRule -Name DC -Cluster Cluster1

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

Exemplos de regras combinadas

Ao combinar regras de afinidade e anti-afinidade, pode configurar facilmente várias combinações de VMs num cluster de vários sites. Neste cenário, cada site tem três VMs: SQL Server (SQL), Web Server (WEB) e controlador de domínio (DC). Para cada uma das combinações, pode utilizar regras de afinidade com SameFaultDomain para mantê-las todas no mesmo site. Também pode definir os controladores de domínio para cada site com regras de antifinidade e DifferentFaultDomain manter as VMs do controlador de domínio em sites separados, conforme mostrado abaixo:

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 as regras e como estão configuradas, utilize o Get-ClusterAffinityRule cmdlet sem o -Name comutador e pode ver todas as regras criadas e a respetiva saída.

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

Regras de afinidade de armazenamento

Também pode manter uma VM e o respetivo VHDX num Volume Partilhado de Cluster (CSV) no mesmo nó de cluster. Isto impediria que o redirecionamento de CSV ocorresse, o que poderia abrandar o início ou a paragem de uma VM. Tendo em conta o cenário de afinidade e antiafinidade combinados anteriormente, pode manter a VM do SQL e o Volume Partilhado de Cluster no mesmo nó de cluster. Para tal, utilize os seguintes comandos:

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 regras e como estão configuradas, utilize o Get-ClusterAffinityRule cmdlet sem o comutador -Name e veja o resultado.

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

Passos seguintes

Saiba como gerir as suas VMs. Veja Gerir VMs no Azure Stack HCI com Windows Admin Center.