Criteri di failover per le istanze del cluster di failover

Si applica a:SQL Server

In un'istanza del cluster di failover di SQL Server (FCI, Failover Cluster Instance), solo un nodo può possedere il gruppo di risorse del cluster WSFC (Windows Server Failover Cluster) in un particolare momento. Le richieste del client vengono gestite attraverso questo nodo nell'FCI. In caso di guasto e di riavvio non riuscito, la proprietà del gruppo viene spostata a un altro nodo WSFC nell'FCI. Questo processo viene chiamato failover. SQL Server aumenta l'affidabilità di rilevamento dell'errore e offre criteri di failover flessibili.

Un'istanza FCI di SQL Server dipende dal servizio WSFC sottostante per il rilevamento del failover. Pertanto, due meccanismi determinano il comportamento del failover per l'istanza FCI: la prima è la funzionalità di WSFC nativa e la seconda è la funzionalità aggiunta dall'installazione di SQL Server.

  • Il cluster WSFC mantiene la configurazione del quorum, che assicura una destinazione di failover univoca in caso di failover automatico. Il servizio WSFC determina se il cluster si trova costantemente in uno stato di quorum ottimale e, di conseguenza, porta il gruppo di risorse online o offline.

  • L'istanza attiva di SQL Server segnala periodicamente una serie di dati diagnostici del componente al gruppo di risorse WSFC tramite una connessione dedicata. Il gruppo di risorse WSFC gestisce i criteri del failover che definiscono le condizioni di errore che attivano operazioni di riavvio e failover.

In questo argomento viene illustrato il secondo meccanismo. Per altre informazioni sul funzionamento di WSFC per la configurazione del quorum e il rilevamento dello stato di integrità, vedere Modalità quorum e configurazione del voto di WSFC (SQL Server).

Importante

I failover automatici da e verso un'FCI non sono consentiti in un gruppo di disponibilità Always On. Tuttavia, i failover manuali da e verso un'istanza FCI sono consentiti in un gruppo di disponibilità AlwaysOn.

Panoramica dei criteri di failover

Il processo del failover si può essere suddiviso nei passaggi indicati di seguito.

  1. Monitoraggio dello stato di integrità

  2. Identificazione dei guasti

  3. Risposta agli errori

Monitoraggio dello stato di integrità

Tre sono i tipi di stato di integrità che vengono monitorati per l'istanza FCI:

Stato del servizio SQL Server

Il servizio WSFC esegue il monitoraggio lo stato iniziale del servizio SQL Server sul nodo FCI attivo per rilevare quando viene arrestato il servizio SQL Server.

Velocità di risposta dell'istanza di SQL Server

Durante l'avvio di SQL Server, il servizio WSFC utilizza la DLL risorse del motore di database di SQL Server per creare una nuova connessione a un thread separato utilizzata esclusivamente per il monitoraggio dello stato di integrità. In tal modo si garantisce che l'istanza SQL disponga delle risorse necessarie per segnalare il proprio stato di integrità mentre è sotto carico. Tramite questa connessione dedicata, SQL Server esegue la stored procedure di sistema sp_server_diagnostics (Transact-SQL) in modalità ripetuta per segnalare periodicamente alla DLL di risorse lo stato di salute dei componenti di SQL Server.

La DLL di risorse verifica la capacità di risposta dell'istanza SQL utilizzando un timeout del controllo di integrità. La proprietà HealthCheckTimeout definisce per quanto tempo la DLL della risorsa deve attendere la stored procedure sp_server_diagnostics prima di segnalare al servizio WSFC che l'istanza SQL non risponde. Questa proprietà è configurabile tramite T-SQL oltre che tramite lo snap-in Gestione cluster di failover. Per altre informazioni, vedere Configurazione delle impostazioni HealthCheckTimeout. Di seguito viene descritta l'influenza di questa proprietà sulle impostazioni del timeout e dell'intervallo di ripetizione:

  • La DLL di risorse chiama la stored procedure sp_server_diagnostics e imposta l'intervallo di ripetizione su un terzo dell'impostazione di HealthCheckTimeout.

  • Se la stored procedure sp_server_diagnostics è lenta o non restituisce informazioni, la DLL della risorsa attenderà l'intervallo specificato da HealthCheckTimeout prima di segnalare al servizio WSFC che l'istanza SQL non risponde.

  • Se la connessione dedicata viene persa, la DLL risorse ritenterà la connessione all'istanza di SQL per il tempo specificato da HealthCheckTimeout prima che riporti al servizio WSFC che l'istanza SQL non risponde.

Diagnostica dei componenti di SQL Server

La procedura archiviata di sistema sp_server_diagnostics raccoglie periodicamente informazioni di diagnostica sui componenti nell'istanza di SQL Server. Le informazioni diagnostiche raccolte vengono visualizzate in una riga per ognuno dei componenti seguenti e passate al thread chiamante.

  1. sistema

  2. risorsa

  3. processo di interrogazione

  4. IO_sottosistema

  5. eventi

I componenti system, resource e query process vengono utilizzati per il rilevamento di errori. I componenti io_subsytem ed events vengono utilizzati solo per scopi diagnostici.

Ogni set di righe di informazioni viene scritto anche nel log di diagnostica dei cluster di SQL Server. Per altre informazioni, vedere Visualizzare e leggere il log diagnostico dell'istanza del cluster di failover.

Suggerimento

La stored procedure sp_server_diagnostic viene usata dalla tecnologia SQL Server AlwaysOn, ma è anche disponibile per essere usata da qualsiasi istanza di SQL Server per il rilevamento e la risoluzione dei problemi.

Determinazione di errori

La DLL della risorsa del Motore di database di SQL Server determina se lo stato di integrità rilevato costituisce una condizione di errore irreversibile in base alla proprietà FailureConditionLevel. La proprietà FailureConditionLevel definisce quali stati di integrità rilevati causano riavvii o failover. Sono disponibili più livelli di opzioni, da nessun riavvio o failover automatico a tutte le possibili condizioni di errore che comportano un riavvio o un failover automatico. Per altre informazioni su come configurare questa proprietà, vedere Configurare le impostazioni della proprietà FailureConditionLevel.

Le condizioni di errore sono impostate su una scala crescente. In ognuno dei livelli 1-5 sono incluse tutte le condizioni dei livelli precedenti oltre alle proprie condizioni specifiche. Pertanto, in ogni livello la probabilità di un failover o di un riavvio è maggiore. I livelli delle condizioni di errore sono descritti nella tabella seguente.

Rivedere sp_server_diagnostics (Transact-SQL), poiché questa stored procedure di sistema gioca un ruolo importante nei livelli di condizione di errore.

Livello Condizione Descrizione
0 Nessun failover o riavvio automatico Viene indicato che con qualsiasi condizione di errore non verrà attivato automaticamente alcun failover o riavvio. Questo livello serve solo per scopi di manutenzione del sistema.
1 Failover o riavvio in caso di arresto del server Viene indicato che verrà attivato un riavvio o un failover del server se si verifica la condizione seguente:

Indisponibilità del servizio SQL Server.
2 Failover o riavvio se il server non risponde Viene indicato che verrà attivato un riavvio o un failover del server se si verifica una qualsiasi delle condizioni seguenti:

Indisponibilità del servizio SQL Server.

L'istanza di SQL Server non risponde (la DLL risorse non può ricevere dati da sp_server_diagnostics entro le impostazioni HealthCheckTimeout).
3* Failover o riavvio in caso di errori critici del server Viene indicato che verrà attivato un riavvio o un failover del server se si verifica una qualsiasi delle condizioni seguenti:

Indisponibilità del servizio SQL Server.

L'istanza di SQL Server non risponde (la DLL risorse non può ricevere dati da sp_server_diagnostics entro le impostazioni HealthCheckTimeout).

La stored procedure di sistema sp_server_diagnostics restituisce il messaggio 'system error'.
4 Failover o riavvio in caso di errori del server con gravità moderata Viene indicato che verrà attivato un riavvio o un failover del server se si verifica una qualsiasi delle condizioni seguenti:

Indisponibilità del servizio SQL Server.

L'istanza di SQL Server non risponde (la DLL risorse non può ricevere dati da sp_server_diagnostics entro le impostazioni HealthCheckTimeout).

La stored procedure di sistema sp_server_diagnostics restituisce l'errore di sistema.

La stored procedure di sistema sp_server_diagnostics restituisce 'errore di risorsa'.
5 Failover o riavvio in caso di qualsiasi condizione di errore qualificata Viene indicato che verrà attivato un riavvio o un failover del server se si verifica una qualsiasi delle condizioni seguenti:

Indisponibilità del servizio SQL Server.

L'istanza di SQL Server non risponde (la DLL risorse non può ricevere dati da sp_server_diagnostics entro le impostazioni HealthCheckTimeout).

La stored procedure di sistema sp_server_diagnostics restituisce l'errore di sistema.

La stored procedure di sistema sp_server_diagnostics restituisce l'errore di risorsa.

La stored procedure di sistema sp_server_diagnostics restituisce l'errore di elaborazione query.

*Valore predefinito

Risposta agli errori

Una volta rilevata una o più condizioni di errore, il servizio WSFC risponde agli errori in base allo stato del quorum WSFC e alle impostazioni di riavvio e failover del gruppo di risorse di FCI. Se l'FCI ha perso il quorum WSFC, allora l'intero FCI viene messo non in linea e l'FCI perde l'alta disponibilità. Se l'FCI mantiene ancora il quorum WSFC, il servizio WSFC potrebbe rispondere tentando prima di riavviare il nodo non riuscito e quindi effettuando il failover se i tentativi di riavvio non hanno esito positivo. Le impostazioni di riavvio e failover sono configurate nello snap-in Gestione cluster di failover. Per altre informazioni su queste impostazioni, vedere <Proprietà> risorsa: scheda Criteri.

Per altre informazioni sulla gestione dell'integrità del quorum, vedere Modalità quorum WSFC e configurazione del voto (SQL Server).

Vedi anche

ALTER SERVER CONFIGURATION (Transact-SQL)