Riconoscimento dei domini di errore
Il clustering di failover consente a più server di interagire per garantire un'elevata disponibilità, o in altri termini, per offrire tolleranza di errore di nodo. Tuttavia, le aziende richiedono oggi una sempre maggiore disponibilità dalla infrastruttura. Per ottenere tempi di attività di tipo cloud si deve disporre di una protezione anche in casi estremi, ad esempio problemi di chassis, interruzioni di rack o calamità naturali. Per questo motivo, il clustering di failover in Windows Server 2016 introduce anche una tolleranza d'errore per chassis, rack e sito.
Domini di errore e tolleranza di errore
I concetti di domini di errore e tolleranza di errore sono strettamente correlati. Un dominio di errore è un set di componenti hardware che condividono un singolo punto di errore. Per un sistema a tolleranza di errore a un certo livello sono necessari più domini di errore per tale livello. Ad esempio, per una tolleranza di errore di rack, i server e i dati devono essere distribuiti in più rack.
Questo breve video presenta una panoramica di domini di errore in Windows Server 2016.
Informazioni sulla presenza di un dominio di errore in Windows Server 2019
La consapevolezza del dominio di errore è disponibile in Windows Server 2019, ma è disabilitata per impostazione predefinita e deve essere abilitata tramite il Registro di sistema di Windows.
Per abilitare la consapevolezza del dominio di errore in Windows Server 2019, passare al Registro di sistema di Windows e impostare (Get-Cluster). Chiave del Registro di sistema AutoAssignNodeSite su 1.
(Get-Cluster).AutoAssignNodeSite=1
Per disabilitare la consapevolezza del dominio di errore in Windows Server 2019, passare al registro di Windows e impostare la chiave di registro (Get-Cluster).AutoAssignNodeSite su 0.
(Get-Cluster).AutoAssignNodeSite=0
Vantaggi
Spazi di archiviazione, inclusi Spazi di archiviazione diretta, usa i domini di errore per massimizzare la sicurezza dei dati. La resilienza in Spazi di archiviazione è concettualmente simile ai RAID distribuiti definiti da software. Più copie di tutti i dati vengono mantenute sincronizzate, e se si verifica un errore hardware e una copia viene persa, le altre copie vengono usate per ripristinare la resilienza. Per ottenere la migliore resilienza possibile, le copie devono essere conservate in domini di errore separati.
Il Servizio di integrità usa i domini di errore per offrire avvisi più utili. Ogni dominio di errore può essere associato a metadati del percorso che verranno inclusi automaticamente in tutti gli avvisi successivi. Questi descrittori possono aiutare il personale addetto alle operazioni o alla manutenzione e ridurre gli errori eliminando l'ambiguità dell'hardware.
Il clustering esteso usa domini di errore per l'affinità di archiviazione. Il clustering di estensione consente ai server lontani di essere aggiunti a un cluster comune. Per ottenere prestazioni ottimali, le applicazioni o le macchine virtuali devono essere eseguite su server vicini a quelli che offrono lo spazio di archiviazione. La consapevolezza del dominio di errore abilita questa affinità di archiviazione.
Livelli di domini di errore
Sono disponibili quattro livelli canonici di domini di errore: sito, rack, chassis e nodo. I nodi vengono individuati automaticamente; ogni livello aggiuntivo è facoltativo. Ad esempio, se la distribuzione non usa server blade, il livello di chassis non è importante.
Utilizzo
È possibile usare PowerShell o markup XML per specificare i domini di errore. Entrambi gli approcci sono equivalenti e offrono funzionalità complete.
Importante
Specificare i domini di errore prima di abilitare Spazi di archiviazione diretta, se possibile. Ciò consente la configurazione automatica per preparare il pool, i livelli e le impostazioni quali resilienza e numero di colonne, per la tolleranza di errore chassis o rack. Dopo avere creato il pool e i volumi, i dati non si spostano retroattivamente in risposta alle modifiche della topologia di dominio di errore. Per spostare i nodi tra chassis o rack dopo l'abilitazione di Spazi di archiviazione diretta, è necessario innanzitutto rimuovere il nodo con le relative unità dal pool usando Remove-ClusterNode -CleanUpDisks
.
Definizione di domini di errore con PowerShell
Windows Server 2016 introduce i cmdlet seguenti per lavorare con i domini di errore:
Get-ClusterFaultDomain
Set-ClusterFaultDomain
New-ClusterFaultDomain
Remove-ClusterFaultDomain
Questo breve video illustra l'utilizzo dei comandi PowerShell del dominio di errore del cluster.
Usare Get-ClusterFaultDomain
per visualizzare la topologia del dominio di errore corrente. Questo elenca tutti i nodi del cluster, oltre a qualsiasi chassis, rack o siti creati. È possibile applicare un filtro usando parametri come -Type o -Name, ma non è obbligatorio.
Get-ClusterFaultDomain
Get-ClusterFaultDomain -Type Rack
Get-ClusterFaultDomain -Name "server01.contoso.com"
Usare New-ClusterFaultDomain
per creare nuovi chassis, rack o siti. I parametri -Type
e -Name
sono obbligatori. I possibili valori per -Type
sono Chassis
, Rack
e Site
. -Name
può essere una stringa qualsiasi. (Per i domini di errore di tipo Node
, il nome deve essere il nome effettivo del nodo impostato automaticamente).
New-ClusterFaultDomain -Type Chassis -Name "Chassis 007"
New-ClusterFaultDomain -Type Rack -Name "Rack A"
New-ClusterFaultDomain -Type Site -Name "Shanghai"
Importante
Windows Server non può verificare che eventuali domini di errore creati corrispondano a domini reali. (Può sembrare ovvio, ma è importante capirlo.) Se, nel mondo fisico, i nodi si trovano tutti in un rack, la creazione di due domini di errore -Type Rack
nel software non fornisce magicamente la tolleranza ai guasti del rack. Gli amministratori sono responsabili per garantire che la topologia creata usando questi cmdlet corrisponda alla disposizione effettiva dell'hardware.
Usare Set-ClusterFaultDomain
per spostare un dominio di errore in un altro. I termini "padre" e "figlio" vengono comunemente usati per descrivere la relazione di nidificazione. I parametri -Name
e -Parent
sono obbligatori. In -Name
, specificare il nome del dominio di errore da spostare; in -Parent
, specificare il nome della destinazione. Per spostare contemporaneamente più domini di errore, elencare i relativi nomi.
Set-ClusterFaultDomain -Name "server01.contoso.com" -Parent "Rack A"
Set-ClusterFaultDomain -Name "Rack A", "Rack B", "Rack C", "Rack D" -Parent "Shanghai"
Importante
Quando si spostano i domini di errore, vengono anche spostati i relativi domini figlio. Nell'esempio precedente, se Rack A è l'elemento padre di server01.contoso.com, quest'ultimo non deve essere spostato separatamente nel sito Shanghai perché si trova già nel sito insieme all'elemento padre.
È possibile visualizzare le relazioni padre-figlio nell'output di Get-ClusterFaultDomain
, nelle colonne ParentName
e ChildrenNames
.
È inoltre possibile usare Set-ClusterFaultDomain
per modificare altre proprietà dei domini di errore. Ad esempio, è possibile specificare metadati facoltativi -Location
o -Description
per ogni dominio di errore. Se specificate, queste informazioni vengono incluse nell'invio di avvisi sull'hardware dal servizio di integrità. È inoltre possibile rinominare i domini di errore tramite il parametro -NewName
. Non rinominare i domini di errore di tipo Node
.
Set-ClusterFaultDomain -Name "Rack A" -Location "Building 34, Room 4010"
Set-ClusterFaultDomain -Type Node -Description "Contoso XYZ Server"
Set-ClusterFaultDomain -Name "Shanghai" -NewName "China Region"
Usare Remove-ClusterFaultDomain
per rimuovere chassis, rack o siti creati in precedenza. Il parametro -Name
è obbligatorio. Non è possibile rimuovere un dominio di errore che include elementi figlio; innanzitutto, rimuovere gli elementi figlio oppure spostarli all'esterno tramite Set-ClusterFaultDomain
. Per spostare un dominio di errore all'esterno di tutti gli altri domini di errore, impostare -Parent
con una stringa vuota (""). Non è possibile rimuovere domini di errore di tipo Node
. Per spostare contemporaneamente più domini di errore, elencare i relativi nomi.
Set-ClusterFaultDomain -Name "server01.contoso.com" -Parent ""
Remove-ClusterFaultDomain -Name "Rack A"
Definizione di domini di errore con markup XML
I domini di errore possono essere specificati tramite una sintassi XML. Si consiglia di usare un editor di testo, ad esempio Visual Studio Code (disponibile gratuitamente qui) o Blocco note, per creare un documento XML da salvare e usare di nuovo.
Questo breve video illustra l'uso di XML per specificare i domini di errore in clustering di failover.
In PowerShell, eseguire il cmdlet seguente: Get-ClusterFaultDomainXML
. Questo comando restituisce il dominio di errore corrente per il cluster, in formato XML. Questo riflette ogni <Node>
individuato, inserito in tag di apertura e chiusura <Topology>
.
Eseguire il comando seguente per salvare l'output in un file.
Get-ClusterFaultDomainXML | Out-File <Path>
Aprire il file e aggiungere i tag <Site>
, <Rack>
e <Chassis>
per specificare come questi nodi vengono distribuiti attraverso siti, rack e chassis. Ogni tag deve essere identificato da un nome univoco. Per i nodi, è necessario mantenere il nome specificato automaticamente.
Importante
Anche se tutti i tag aggiuntivi sono facoltativi, devono comunque essere conformi alla gerarchia transitiva Site > Rack > Chassis > Node e chiusi in maniera corretta.
Oltre ai nomi, è possibile aggiungere ai tag descrittori di testo libero come Location="..."
e Description="..."
.
Esempio: due siti con un rack ciascuno
<Topology>
<Site Name="SEA" Location="Contoso HQ, 123 Example St, Room 4010, Seattle">
<Rack Name="A01" Location="Aisle A, Rack 01">
<Node Name="Server01" Location="Rack Unit 33" />
<Node Name="Server02" Location="Rack Unit 35" />
<Node Name="Server03" Location="Rack Unit 37" />
</Rack>
</Site>
<Site Name="NYC" Location="Regional Datacenter, 456 Example Ave, New York City">
<Rack Name="B07" Location="Aisle B, Rack 07">
<Node Name="Server04" Location="Rack Unit 20" />
<Node Name="Server05" Location="Rack Unit 22" />
<Node Name="Server06" Location="Rack Unit 24" />
</Rack>
</Site>
</Topology>
Esempio: due chassis, server blade
<Topology>
<Rack Name="A01" Location="Contoso HQ, Room 4010, Aisle A, Rack 01">
<Chassis Name="Chassis01" Location="Rack Unit 2 (Upper)" >
<Node Name="Server01" Location="Left" />
<Node Name="Server02" Location="Right" />
</Chassis>
<Chassis Name="Chassis02" Location="Rack Unit 6 (Lower)" >
<Node Name="Server03" Location="Left" />
<Node Name="Server04" Location="Right" />
</Chassis>
</Rack>
</Topology>
Per impostare la nuova specifica di dominio di errore, salvare il codice XML ed eseguire il comando seguente in PowerShell.
$xml = Get-Content <Path> | Out-String
Set-ClusterFaultDomainXML -XML $xml
Questa guida illustra due esempi, ma i tag <Site>
, <Rack>
, <Chassis>
e <Node>
possono essere combinati e associati in molti modi per riflettere la topologia fisica della distribuzione. Questi esempi illustrano la flessibilità dei tag e il valore dei descrittori di percorso con testo libero per evitare ambiguità.
Facoltativo: metadati di posizione e descrizione
È possibile specificare metadati facoltativi di Posizione o Descrizione per ogni dominio di errore. Se specificate, queste informazioni vengono incluse nell'invio di avvisi sull'hardware dal servizio di integrità.
Questo breve video illustra il vantaggio di aggiungere descrittori di percorso a domini di errore.