Criar regras de afinidade de servidor e site para VMs

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

Usando Windows Admin Center ou Windows PowerShell, você pode facilmente criar regras de afinidade e anti-afinidade para suas VMs (máquinas virtuais) em um cluster.

Observação

A maneira recomendada de criar e gerenciar VMs no Azure Stack HCI 23H2 é usando o plano de controle do Azure Arc. Use o mecanismo descrito abaixo para gerenciar suas VMs somente se você precisar de funcionalidades que não estão disponíveis nas VMs do Azure Arc.

Afinidade é uma regra que estabelece uma relação entre dois ou mais grupos de recursos ou funções, como VMs (máquinas virtuais), para mantê-los juntos no mesmo servidor, cluster ou site. A antia afinidade é o oposto, pois ela é usada para manter as VMs ou grupos de recursos especificados separados entre si, como dois controladores de domínio colocados em servidores separados ou em sites separados para recuperação de desastre.

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

Usando regras de afinidade e antia afinidade, qualquer VM clusterizado permaneceria no mesmo nó de cluster ou seria impedida de ficar em conjunto no mesmo nó de cluster. Dessa forma, a única maneira de mover uma VM para fora de um nó seria fazer isso manualmente. Você também pode manter as VMs unidas com seu próprio armazenamento, como o CSV (Volume Compartilhado clusterizado) no qual seu VHDX reside.

Combinando regras de afinidade e antia afinidade, você também pode configurar um cluster estendido em dois sites e manter suas VMs no site em que elas precisam estar.

Como usar o Windows Admin Center

Você pode criar regras básicas de afinidade e antia afinidade usando Windows Admin Center.

Tela de máquinas virtuais

  1. Em Windows Admin Center página inicial, em Todas as conexões, selecione o servidor ou cluster para o qual você deseja criar a regra de VM.
  2. Em Ferramentas, selecione Configurações.
  3. Em Configurações, selecione Regras de afinidade e, em seguida, selecione Criar regra em Regras de afinidade.
  4. Em Nome da regra, insira um nome para sua regra.
  5. Em Tipo de regra, selecione Juntos (mesmo servidor) ou Separados (servidores diferentes) para colocar suas VMs no mesmo servidor ou em servidores diferentes.
  6. Em Aplica-se a, selecione as VMs às quais essa regra se aplica. Use o botão Adicionar para adicionar mais VMs à regra.
  7. Quando terminar, selecione Criar regra.
  8. Para excluir uma regra, basta selecioná-la e selecionar Excluir regra.

Usando o Windows PowerShell

Você pode criar regras mais complexas usando Windows PowerShell do que usando Windows Admin Center. Normalmente, você configura suas regras de um computador remoto, em vez de em um servidor host em um cluster. Esse computador remoto é chamado de computador de gerenciamento.

Ao executar Windows PowerShell comandos de um computador de gerenciamento, inclua o -Name parâmetro ou -Cluster com o nome do cluster que você está gerenciando. Se aplicável, você também precisa especificar o FQDN (nome de domínio totalmente qualificado) ao usar o -ComputerName parâmetro para um nó de servidor

Novos cmdlets do PowerShell

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

New-ClusterAffinityRule

O New-ClusterAffinityRule cmdlet é usado para criar novas regras. Com esse comando, você especificaria o nome da regra e o tipo de regra que ela é, 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 é usado para habilitar ou desabilitar uma regra, em que:

-Name é o nome da regra para habilitar ou desabilitar

-Enabled | Disabled habilita ou desabilita a regra

Exemplo:

Set-ClusterAffinityRule -Name Rule1 -Enabled

Get-ClusterAffinityRule

O Get-ClusterAffinityRule cmdlet é usado para exibir a regra especificada e qual tipo ela é. Se -Name não for especificado, ele listará todas as regras.

Exemplo:

Get-ClusterAffinityRule -Name Rule1

Add-ClusterGroupToAffinityRule

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

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

-Name é o nome da regra a ser adicionada a

Exemplo:

Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1

Add-ClusterSharedVolumeToAffinityRule

O Add-ClusterSharedVolumeToAffinityRule permite que suas VMs fiquem juntas com o Volume Compartilhado de Cluster em que o VHDX reside, em que:

-ClusterSharedVolumes é o(s) disco(s) CSV que você deseja adicionar à regra

-Name é o nome da regra a ser adicionada a

Exemplo:

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

Remove-ClusterAffinityRule

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

Exemplo:

Remove-ClusterAffinityRule -Name Rule1

Remove-ClusterGroupFromAffinityRule

O Remove-ClusterGroupFromAffinityRule remove um grupo de VMs ou uma função de uma regra específica, mas não desabilitar ou excluir a regra, em que:

-Name é o nome da regra

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

Exemplo:

Remove-ClusterGroupFromAffinityRule -Name Rule1 -Groups Group1

Remove-ClusterSharedVolumeFromAffinityRule

O Remove-ClusterSharedVolumeFromAffinityRule cmdlet é usado para remover os Volumes Compartilhados clusterizados de uma regra específica, mas não desabilitar ou excluir a regra, em que:

-ClusterSharedVolumes é o(s) disco(s) CSV que você deseja remover da regra

-Name é o nome da regra a ser adicionada a

Exemplo:

Remove-ClusterSharedVolumeFromAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

Cmdlets existentes do PowerShell

Com o advento dos novos cmdlets, também adicionamos novas opções extras a alguns cmdlets existentes.

Move-ClusterGroup

A nova -IgnoreAffinityRule opção ignora a regra e move o grupo de recursos clusterizado para outro nó de cluster. Para obter mais informações sobre esse cmdlet, consulte Move-ClusterGroup.

Exemplo:

Move-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Observação

Se uma regra de movimentação for válida (com suporte), todos os grupos e funções afetados também serão movidos. Se uma movimentação de VM violar conscientemente uma regra, mas ela for necessária temporariamente, use a opção -IgnoreAffinityRule para permitir que a movimentação ocorra. Nesse caso, um aviso de violação para a VM será exibido. Em seguida, você pode habilitar a regra de volta conforme necessário.

Start-ClusterGroup

A nova -IgnoreAffinityRule opção ignora a regra e coloca o grupo de recursos clusterizado online em seu local atual. Para obter mais informações sobre esse cmdlet, consulte Start-ClusterGroup.

Exemplo:

Start-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Exemplos de regra de afinidade

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

Cenário 1

Suponha que você tenha uma VM SQL Server e uma VM do Servidor Web. Essas duas VMs precisam permanecer sempre no mesmo site, mas não precisam necessariamente estar no mesmo nó de cluster no site. Usando SameFaultDomain, isso é 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 essa regra e como ela está configurada, use o Get-ClusterAffinityRule cmdlet para ver a saída:

Get-ClusterAffinityRule -Name WebData -Cluster Cluster1

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

Cenário 2

Vamos usar o mesmo cenário acima, exceto especificar que as VMs devem residir no mesmo nó de cluster. Usando SameNode, você pode definir isso da seguinte maneira:

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 ela está configurada, use o Get-ClusterAffinityRule cmdlet para ver a saída:

Get-ClusterAffinityRule -Name WebData1 -Cluster Cluster1

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

Exemplos de regra antia afinidade

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

Cenário 1

Você tem duas VMs executando SQL Server no mesmo cluster de vários sites do Azure Stack HCI. Cada VM utiliza muita memória, CPU e recursos de armazenamento. Se os dois acabarem no mesmo nó, isso poderá causar problemas de desempenho com um ou ambos, pois eles competem por ciclos de memória, CPU e armazenamento. Usando uma regra anti-afinidade com DifferentNode como o tipo de regra, essas VMs sempre permanecerão em nós de cluster diferentes.

Os comandos de exemplo para isso 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 ela está configurada, use o Get-ClusterAffinityRule cmdlet para ver a saída:

Get-ClusterAffinityRule -Name SQL -Cluster Cluster1

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

Cenário 2

Digamos que você tenha um cluster estendido do Azure Stack HCI com dois sites (domínios de falha). Você tem dois controladores de domínio que deseja manter em sites separados. Usando uma regra anti-afinidade com DifferentFaultDomain como um tipo de regra, esses controladores de domínio sempre permanecerão em sites diferentes. Os comandos de exemplo para isso 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 essa regra e como ela está configurada, use o Get-ClusterAffinityRule cmdlet para ver a saída:

Get-ClusterAffinityRule -Name DC -Cluster Cluster1

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

Exemplos de regras combinadas

Combinando regras de afinidade e antia afinidade, você pode facilmente configurar várias combinações de VM em um cluster de vários sites. Nesse 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, você pode usar regras de afinidade com SameFaultDomain para mantê-las todas no mesmo site. Você também pode definir os controladores de domínio para cada site com regras anti-afinidade 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 elas estão configuradas, use o Get-ClusterAffinityRule cmdlet sem a opção -Name e você pode ver todas as regras criadas e a saída delas.

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

Você também pode manter uma VM e seu VHDX em um CSV (Volume Compartilhado clusterizado) no mesmo nó de cluster. Isso impediria que o redirecionamento CSV ocorresse, o que pode retardar a inicialização ou a interrupção de uma VM. Levando em conta o cenário combinado de afinidade e antia afinidade anteriormente, você pode manter a VM do SQL e o Volume Compartilhado de Cluster no mesmo nó de cluster. Para fazer isso, use 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 essas regras e como elas estão configuradas, use o Get-ClusterAffinityRule cmdlet sem a opção -Name e exiba a 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
SQL1CSV1    SameNode               {SQL1, <CSV1-GUID>}  1
SQL2CSV2    SameNode               {SQL2, <CSV2-GUID>}  1

Próximas etapas

Saiba como gerenciar suas VMs. Consulte Gerenciar VMs no Azure Stack HCI usando Windows Admin Center.