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.
- 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.
- Em Ferramentas, selecione Definições.
- Em Definições, selecione Regras de afinidade e, em seguida, selecione Criar regra em Regras de afinidade.
- Em Nome da regra, introduza um nome para a regra.
- Em Tipo de regra, selecione Juntos (mesmo servidor) ou Separados (servidores diferentes) para colocar as VMs no mesmo servidor ou em servidores diferentes.
- Em Aplica-se a, selecione as VMs às quais esta regra se aplica. Utilize o botão Adicionar para adicionar mais VMs à regra.
- Quando terminar, selecione Criar regra.
- 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 SameFaultDomain
o , 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 SameNode
o , 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.