Creare regole di affinità del computer e del sito per le macchine virtuali
Si applica a: Locale di Azure, versioni 23H2 e 22H2
Usando Windows Admin Center o Windows PowerShell, è possibile creare facilmente regole di affinità e anti-affinità per le macchine virtuali (VM) nell'istanza locale di Azure.
Nota
Il modo consigliato per creare e gestire macchine virtuali in Azure Locale, versione 23H2 consiste nell'usare il piano di controllo di Azure Arc. Usare il meccanismo descritto di seguito per gestire le macchine virtuali solo se sono necessarie funzionalità non disponibili nelle macchine virtuali di Azure Arc.
L'affinità è una regola che stabilisce una relazione tra due o più gruppi di risorse o ruoli, ad esempio le macchine virtuali, per tenerle insieme nello stesso computer, sistema o sito. L'anti-affinità è l'opposto in quanto viene usato per mantenere le macchine virtuali o i gruppi di risorse specificati separati tra loro, ad esempio due controller di dominio posizionati in computer separati o in siti separati per il ripristino di emergenza.
Le regole di affinità e anti-affinità vengono usate in modo analogo al modo in cui Azure usa zone di disponibilità. In Azure è possibile configurare zone di disponibilità per mantenere le macchine virtuali in zone separate e lontane l'una dall'altra o nella stessa zona.
Usando le regole di affinità e anti-affinità, qualsiasi macchina virtuale in cluster rimarrà nello stesso computer o non potrà essere insieme nello stesso computer. In questo modo, l'unico modo per spostare una macchina virtuale da un computer consiste nel farlo manualmente. È anche possibile mantenere le macchine virtuali insieme alla propria risorsa di archiviazione, ad esempio il volume condiviso cluster (CSV) in cui risiede il VHDX.
Uso di Windows Admin Center
È possibile creare regole di affinità di base e anti-affinità usando Windows Admin Center.
- Nella home page di Windows Admin Center, in Tutte le connessioni, selezionare il computer o il sistema per cui si vuole creare la regola della macchina virtuale.
- In Strumenti selezionare Impostazioni.
- In Impostazioni selezionare Regole di affinità, quindi selezionare Crea regola in Regole di affinità.
- In Nome regola immettere un nome per la regola.
- In Tipo di regola selezionare Insieme (stesso computer) o Apart (computer diversi) per posizionare le macchine virtuali nello stesso computer o in computer diversi.
- In Si applica a selezionare le macchine virtuali a cui si applica questa regola. Usare il pulsante Aggiungi per aggiungere altre macchine virtuali alla regola.
- Al termine, selezionare Crea regola.
- Per eliminare una regola, selezionarla e selezionare Elimina regola.
Tramite Windows PowerShell
È possibile creare regole più complesse usando Windows PowerShell rispetto all'uso di Windows Admin Center. In genere, si configurano le regole da un computer remoto, anziché in un computer host in un sistema. Questo computer remoto è denominato computer di gestione.
Quando si eseguono comandi di Windows PowerShell da un computer di gestione, includere il -Name
parametro o -Cluster
con il nome del sistema che si sta gestendo. Se applicabile, è necessario specificare anche il nome di dominio completo (FQDN) quando si usa il -ComputerName
parametro per un computer.
Nuovi cmdlet PowerShell
Per creare regole di affinità per i cluster, usare i nuovi cmdlet di PowerShell seguenti:
New-ClusterAffinityRule
Il New-ClusterAffinityRule
cmdlet viene usato per creare nuove regole. Con questo comando è necessario specificare il nome della regola e il tipo di regola in cui si trova:
-Name
è il nome della regola
-RuleType
i valori sono SameFaultDomain
| SameNode
| DifferentFaultDomain
| DifferentNode
Esempio:
New-ClusterAffinityRule -Name Rule1 -RuleType SameFaultDomain
Set-ClusterAffinityRule
Il Set-ClusterAffinityRule
cmdlet viene usato per abilitare o disabilitare una regola, dove:
-Name
è il nome della regola da abilitare o disabilitare
-Enabled
| Disabled
abilita o disabilita la regola
Esempio:
Set-ClusterAffinityRule -Name Rule1 -Enabled
Get-ClusterAffinityRule
Il Get-ClusterAffinityRule
cmdlet viene usato per visualizzare la regola specificata e il tipo. Se -Name
non viene specificato, elenca tutte le regole.
Esempio:
Get-ClusterAffinityRule -Name Rule1
Add-ClusterGroupToAffinityRule
Il Add-ClusterGroupToAffinityRule
cmdlet viene usato per aggiungere un ruolo o un nome di gruppo di macchine virtuali a una regola di affinità specifica, dove:
-Groups
è il nome del gruppo o del ruolo da aggiungere alla regola.
-Name
è il nome della regola a cui aggiungere.
Esempio:
Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1
Add-ClusterSharedVolumeToAffinityRule
Add-ClusterSharedVolumeToAffinityRule
consente alle macchine virtuali di rimanere insieme al volume condiviso del cluster in cui risiede il VHDX, dove:
-ClusterSharedVolumes
è il disco CSV che si vuole aggiungere alla regola
-Name
è il nome della regola da aggiungere a
Esempio:
Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1
Remove-ClusterAffinityRule
Remove-ClusterAffinityRule
Elimina la regola specificata, dove -Name
è il nome della regola.
Esempio:
Remove-ClusterAffinityRule -Name Rule1
Remove-ClusterGroupFromAffinityRule
Remove-ClusterGroupFromAffinityRule
Rimuove un gruppo di macchine virtuali o un ruolo da una regola specifica, ma non disabilita o elimina la regola, dove:
-Name
è il nome della regola
-Groups
sono i gruppi o i ruoli che si desidera rimuovere dalla regola
Esempio:
Remove-ClusterGroupFromAffinityRule -Name Rule1 -Groups Group1
Remove-ClusterSharedVolumeFromAffinityRule
Il Remove-ClusterSharedVolumeFromAffinityRule
cmdlet viene usato per rimuovere i volumi condivisi cluster da una regola specifica, ma non disabilita o elimina la regola, dove:
-ClusterSharedVolumes
è il disco CSV che si vuole rimuovere dalla regola.
-Name
è il nome della regola a cui aggiungere.
Esempio:
Remove-ClusterSharedVolumeFromAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1
Cmdlet di PowerShell esistenti
Con l'avvento dei nuovi cmdlet, sono state aggiunte anche nuove opzioni aggiuntive a alcuni cmdlet esistenti.
Move-ClusterGroup
La nuova -IgnoreAffinityRule
opzione ignora la regola e sposta il gruppo di risorse del cluster in un altro computer. Per altre informazioni su questo cmdlet, vedere Move-ClusterGroup.
Esempio:
Move-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1
Nota
Se una regola di spostamento è valida (supportata), verranno spostati anche tutti i gruppi e i ruoli interessati. Se lo spostamento di una macchina virtuale viola intenzionalmente una regola, ma è necessaria una sola volta, usare l'opzione -IgnoreAffinityRule
per consentire lo spostamento. In questo caso verrà visualizzato un avviso di violazione per la macchina virtuale. È quindi possibile abilitare nuovamente la regola in base alle esigenze.
Start-ClusterGroup
La nuova -IgnoreAffinityRule
opzione ignora la regola e porta online il gruppo di risorse del cluster nella posizione corrente. Per altre informazioni su questo cmdlet, vedere Start-ClusterGroup.
Esempio:
Start-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1
Esempi di regole di affinità
Le regole di affinità sono regole "insieme" che mantengono le risorse nello stesso computer, sistema o sito. Ecco alcuni scenari comuni per la configurazione delle regole di affinità.
Scenario 1
Si supponga di avere una macchina virtuale di SQL Server e una macchina virtuale server Web. Queste due macchine virtuali devono rimanere sempre nello stesso sito, ma non devono necessariamente trovarsi nello stesso computer. L'uso SameFaultDomain
di è possibile, come illustrato di seguito:
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
Per visualizzare questa regola e come è configurata, usare il Get-ClusterAffinityRule
cmdlet per visualizzare l'output:
Get-ClusterAffinityRule -Name WebData -Cluster Cluster1
Name RuleType Groups Enabled
---- --------- ------ -------
WebData SameFaultDomain {SQL1, WEB1} 1
Scenario 2
Si userà lo stesso scenario, ad eccezione del fatto che le macchine virtuali devono trovarsi nello stesso computer. Usando SameNode
, impostarlo come segue:
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
Per visualizzare la regola e la configurazione, usare il Get-ClusterAffinityRule
cmdlet per visualizzare l'output:
Get-ClusterAffinityRule -Name WebData1 -Cluster Cluster1
Name RuleType Groups Enabled
---- -------- ------ -------
DC SameNode {SQL1, WEB1} 1
Esempi di regole di anti-affinità
Le regole anti-affinità sono regole "separate" che separano le risorse e le inseriscono in computer, sistemi o siti diversi.
Scenario 1
Sono disponibili due macchine virtuali che eseguono SQL Server nello stesso sistema multisito locale di Azure. Ogni macchina virtuale usa molte risorse di memoria, CPU e archiviazione. Se i due si trovano nello stesso computer, questo può causare problemi di prestazioni con uno o entrambi i cicli di memoria, CPU e archiviazione. Usando una regola di anti-affinità con DifferentNode
come tipo di regola, queste macchine virtuali rimarranno sempre in computer diversi.
I comandi di esempio sono:
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
Per visualizzare la regola e la configurazione, usare il Get-ClusterAffinityRule
cmdlet per visualizzare l'output:
Get-ClusterAffinityRule -Name SQL -Cluster Cluster1
Name RuleType Groups Enabled
---- ----------- ------- -------
SQL DifferentNode {SQL1, SQL2} 1
Regole di affinità di archiviazione
È anche possibile mantenere una macchina virtuale e il relativo VHDX in un volume condiviso cluster (CSV) nello stesso computer. In questo modo si impedisce che si verifichi il reindirizzamento CSV, che può rallentare l'avvio o l'arresto di una macchina virtuale. Tenendo conto dell'affinità combinata e dello scenario anti-affinità in precedenza, è possibile mantenere la macchina virtuale SQL e il volume condiviso cluster nello stesso computer. A tale scopo, usare i comandi seguenti:
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
Per visualizzare queste regole e come sono configurate, usare il Get-ClusterAffinityRule
cmdlet senza l'opzione -Name
e visualizzare l'output.
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
Passaggi successivi
Informazioni su come gestire le macchine virtuali. Vedere Gestire le macchine virtuali in Locale di Azure con Windows Admin Center.