Condividi tramite


Creare regole di affinità del server e del sito per le macchine virtuali

Si applica a: Azure Stack HCI, versioni 23H2 e 22H2

Usando Windows Admin Center o Windows PowerShell, è possibile creare facilmente regole di affinità e anti-affinità per le macchine virtuali in un cluster.

Nota

Il modo consigliato per creare e gestire macchine virtuali in Azure Stack HCI 23H2 usa il piano di controllo 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 macchine virtuali (VM), per tenerli insieme nello stesso server, cluster o sito. L'anti-affinità è l'opposto in quanto viene usato per mantenere le macchine virtuali o i gruppi di risorse specificati diversi tra loro, ad esempio due controller di dominio inseriti in server 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 tra loro o nella stessa zona.

Usando le regole di affinità e anti-affinità, qualsiasi macchina virtuale cluster rimane nello stesso nodo del cluster o non può essere insieme nello stesso nodo del cluster. In questo modo, l'unico modo per spostare una macchina virtuale fuori da un nodo 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.

Combinazione di regole di affinità e anti-affinità, è anche possibile configurare un cluster esteso tra due siti e mantenere le macchine virtuali nel sito in cui devono trovarsi.

Uso di Windows Admin Center

È possibile creare regole di affinità di base e anti-affinità usando Windows Admin Center.

Schermata macchine virtuali

  1. In Windows Admin Center home, in Tutte le connessioni selezionare il server o il cluster per cui si vuole creare la regola della macchina virtuale.
  2. In Strumenti selezionare Impostazioni.
  3. In Impostazioni selezionare Regole di affinità, quindi selezionare Crea regola in Regole di affinità.
  4. In Nome regola immettere un nome per la regola.
  5. In Tipo di regola selezionare Insieme (stesso server) o Apart (server diversi) per inserire le macchine virtuali nello stesso server o in server diversi.
  6. In Applica a, selezionare le macchine virtuali a cui si applica questa regola. Usare il pulsante Aggiungi per aggiungere altre macchine virtuali alla regola.
  7. Al termine, selezionare Crea regola.
  8. 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, è possibile configurare le regole da un computer remoto, anziché in un server host in un cluster. Questo computer remoto viene chiamato computer di gestione.

Quando si eseguono Windows PowerShell comandi da un computer di gestione, includere il -Name parametro o -Cluster con il nome del cluster che si sta gestendo. Se applicabile, è anche necessario specificare il nome di dominio completo (FQDN) quando si usa il -ComputerName parametro per un nodo server

Nuovi cmdlet di 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 si specifica il nome della regola e il tipo di regola, dove:

-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 per 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 che è. Se -Name non è specificato, elenca tutte le regole.

Esempio:

Get-ClusterAffinityRule -Name Rule1

Add-ClusterGroupToAffinityRule

Il Add-ClusterGroupToAffinityRule cmdlet viene usato per aggiungere un ruolo macchina virtuale o un nome di gruppo a una regola di affinità specifica, dove:

-Groups è il nome del gruppo o del ruolo da aggiungere alla regola

-Name è il nome della regola da aggiungere a

Esempio:

Add-ClusterGroupToAffinityRule -Groups Group1 -Name Rule1

Add-ClusterSharedVolumeToAffinityRule

Consente Add-ClusterSharedVolumeToAffinityRule alle macchine virtuali di rimanere insieme al volume condiviso del cluster in cui risiede il VHDX, dove:

-ClusterSharedVolumes è il disco CSV che si desidera aggiungere alla regola

-Name è il nome della regola da aggiungere a

Esempio:

Add-ClusterSharedVolumeToAffinityRule -ClusterSharedVolumes CSV1 -Name Rule1

Remove-ClusterAffinityRule

Elimina Remove-ClusterAffinityRule la regola specificata, dove -Name è il nome della regola.

Esempio:

Remove-ClusterAffinityRule -Name Rule1

Remove-ClusterGroupFromAffinityRule

Rimuove Remove-ClusterGroupFromAffinityRule 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 del 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 da aggiungere a

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

Il nuovo -IgnoreAffinityRule commutatore ignora la regola e sposta il gruppo di risorse cluster in un altro nodo del cluster. Per altre informazioni su questo cmdlet, vedere Move-ClusterGroup.

Esempio:

Move-ClusterGroup -IgnoreAffinityRule -Cluster Cluster1

Nota

Se una regola di spostamento è valida (supportata), tutti i gruppi e i ruoli interessati verranno spostati anche. Se uno spostamento di una macchina virtuale viola in modo consapevole una regola, ma è necessario un'unica volta, usare l'opzione per consentire lo -IgnoreAffinityRule 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

Il nuovo -IgnoreAffinityRule commutatore ignora la regola e porta online il gruppo di risorse 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 server, cluster o sito. Ecco alcuni scenari comuni per la configurazione delle regole di affinità.

Scenario 1

Si supponga di avere una macchina virtuale SQL Server e una macchina virtuale server Web. Queste due macchine virtuali devono sempre rimanere nello stesso sito, ma non devono necessariamente trovarsi nello stesso nodo del cluster nel sito. L'uso SameFaultDomaindi , è 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 precedente, ad eccezione del fatto che le macchine virtuali devono risiedere nello stesso nodo del cluster. Usando SameNode, è possibile impostare questo comando 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 anti-affinità

Le regole anti-affinità sono regole "separate" che separano le risorse e le inseriscono in server, cluster o siti diversi.

Scenario 1

Sono disponibili due macchine virtuali che eseguono SQL Server nello stesso cluster multisito di Azure Stack HCI. Ogni macchina virtuale usa molte risorse di memoria, CPU e archiviazione. Se i due si trovano nello stesso nodo, questo può causare problemi di prestazioni con uno o entrambi, perché competono per memoria, CPU e cicli di archiviazione. Usando una regola anti-affinità con DifferentNode come tipo di regola, queste macchine virtuali rimarranno sempre in nodi del cluster diversi.

I comandi di esempio per questa operazione sono i seguenti:

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

Scenario 2

Si supponga di avere un cluster esteso di Azure Stack HCI con due siti (domini di errore). Sono disponibili due controller di dominio da mantenere in siti separati. Usando una regola anti-affinità con DifferentFaultDomain come tipo di regola, questi controller di dominio rimarranno sempre in siti diversi. I comandi di esempio per questa operazione sono i seguenti:

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

Per visualizzare questa regola e come è configurata, usare il Get-ClusterAffinityRule cmdlet per visualizzare l'output:

Get-ClusterAffinityRule -Name DC -Cluster Cluster1

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

Esempi di regole combinate

Combinando le regole di affinità e anti-affinità, è possibile configurare facilmente varie combinazioni di macchine virtuali in un cluster multisito. In questo scenario, ogni sito ha tre macchine virtuali: SQL Server (SQL), Web Server (WEB) e controller di dominio (DC). Per ognuna delle combinazioni, è possibile usare le regole di affinità con SameFaultDomain per mantenerle tutte nello stesso sito. È anche possibile impostare i controller di dominio per ogni sito con regole anti-affinità e DifferentFaultDomain mantenere le macchine virtuali del controller di dominio in siti separati, come illustrato di seguito:

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

Per visualizzare le regole e come sono configurate, usare il Get-ClusterAffinityRule cmdlet senza l'opzione -Name ed è possibile visualizzare tutte le regole create e il relativo 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

Regole di affinità di archiviazione

È anche possibile mantenere una macchina virtuale e il relativo VHDX in un volume condiviso cluster (CSV) nello stesso nodo del cluster. In questo modo il reindirizzamento CSV non si verifica, 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 del cluster nello stesso nodo del cluster. 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 Azure Stack HCI usando Windows Admin Center.