Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server su Linux
Questo articolo illustra come gestire un'istanza del cluster di failover di SQL Server in Linux. Per creare una FCI di SQL Server su Linux, vedere Configurare un'istanza del cluster di failover su Linux (RHEL).
Descrizione dell'architettura
Il livello di clustering si basa sull'add-on Red Hat Enterprise Linux (RHEL) HA costruito sopra Pacemaker. Corosync e Pacemaker coordinano le comunicazioni del cluster e la gestione delle risorse. L'istanza di SQL Server è attiva su un nodo alla volta.
Il diagramma seguente illustra i componenti in un cluster Linux con SQL Server.
Per maggiori informazioni sulla configurazione del cluster, sulle opzioni degli agent delle risorse e sulla gestione, visita la documentazione di riferimento RHEL.
Failover
Il failover per le istanze del cluster di failover è simile a quello di un Windows Server Failover Cluster (WSFC). Se il nodo del cluster che ospita l'FCI subisce un guasto, l'FCI dovrebbe eseguire automaticamente il failover su un altro nodo. A differenza di un cluster WSFC, non esiste alcun modo per impostare proprietari preferiti. Il nodo che sarà il nuovo host per l'istanza del cluster di failover (FCI) viene quindi scelto da Pacemaker.
A volte potresti voler eseguire manualmente il failover dell'FCI su un altro nodo. Il processo non è uguale a quello delle istanze di failover del cluster in un WSFC. In un cluster WSFC, il failover delle risorse avviene a livello di ruolo. In Pacemaker, scegli una risorsa da spostare e, se tutti i vincoli sono corretti, anche tutto il resto si sposta.
Il modo di eseguire il failover dipende dalla distribuzione Linux. Segui le istruzioni per la tua distribuzione Linux.
Failover manuale (RHEL o Ubuntu)
Per eseguire un failover manuale, nei server Red Hat Enterprise Linux (RHEL) o Ubuntu eseguire la procedura seguente.
Immettere il comando seguente:
sudo pcs resource move <FCIResourceName> <NewHostNode><FCIResourceName>è il nome della risorsa Pacemaker per la FCI di SQL Server, ed<NewHostNode>è il nome del nodo del cluster che vuoi ospitare la FCI.Durante un failover manuale, Pacemaker crea un vincolo di posizione per la risorsa scelta per lo spostamento manuale. Per visualizzare questo vincolo, eseguire
sudo pcs constraint.Dopo il completamento del failover, rimuovere il vincolo:
sudo pcs resource clear <FCIResourceName>
Failover manuale (SLES)
Note
A partire da SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) non è supportato. Per SQL Server 2022 (16.x) e versioni precedenti, è supportata solo SLES 15.
In SUSE Linux Enterprise Server (SLES) usare il comando migrate per effettuare manualmente il failover di un'istanza del cluster di failover di SQL Server. Per esempio:
crm resource migrate <FCIResourceName> <NewHostNode>
<FCIResourceName> è il nome della risorsa per l'istanza del cluster di failover, ed <NewHostNode> è il nome del nuovo host di destinazione.
Monitorare un cluster di failover
Visualizzare lo stato corrente del cluster:
sudo pcs status
Visualizza lo stato in tempo reale del cluster e delle risorse:
sudo crm_mon
Visualizza i log degli agenti di risorse su /var/log/cluster/corosync.log.
Aggiungere un nodo a un cluster
Controllare l'indirizzo IP per ogni nodo. Lo script seguente mostra l'indirizzo IP del nodo corrente.
ip addr showIl nuovo nodo ha bisogno di un nome unico che abbia 15 caratteri o meno. Imposta il nome del computer aggiungilo a
/etc/hosts. Lo script seguente consente di modificare/etc/hostsconvi.sudo vi /etc/hostsL'esempio seguente mostra
/etc/hostscon aggiunte per tre nodi denominatisqlfcivm1,sqlfcivm2esqlfcivm3.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2 10.128.14.26 sqlfcivm3Il file deve essere lo stesso in ogni nodo.
Arrestare il servizio SQL Server nel nuovo nodo.
Segui le istruzioni per montare la directory del file di database nella posizione condivisa.
Dal server NFS, installare
nfs-utils:sudo yum -y install nfs-utilsAprire il firewall nei client e nel server NFS:
sudo firewall-cmd --permanent --add-service=nfs sudo firewall-cmd --permanent --add-service=mountd sudo firewall-cmd --permanent --add-service=rpc-bind sudo firewall-cmd --reloadModificare il file
/etc/fstabper includere il comando mount:<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intrEseguire
mount -aper rendere effettive le modifiche.Nel nuovo nodo creare un file per archiviare nome utente e password di SQL Server per l'accesso a Pacemaker. Il comando seguente crea e popola questo file:
sudo touch /var/opt/mssql/secrets/passwd echo "<loginName>" | sudo tee -a /var/opt/mssql/secrets/passwd echo "<password>" | sudo tee -a /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdCaution
La password deve seguire la politica predefinita di SQL Server password. Per impostazione predefinita, la password deve essere composta da almeno otto caratteri e contenere caratteri di tre delle quattro categorie seguenti: lettere maiuscole, lettere minuscole, cifre in base 10 e simboli. Le password possono contenere fino a 128 caratteri. Usare password il più possibile lunghe e complesse.
Nel nuovo nodo aprire le porte del firewall di Pacemaker. Per aprire queste porte con
firewalld, eseguire il comando seguente:sudo firewall-cmd --permanent --add-service=high-availability sudo firewall-cmd --reloadSe stai usando un altro firewall che non ha una configurazione ad alta disponibilità integrata, apri le seguenti porte per Pacemaker per comunicare con altri nodi nel cluster:
- TCP: porte 2224, 3121, 21064
- UDP: porta 5405
Installare i pacchetti Pacemaker nel nuovo nodo.
sudo yum install pacemaker pcs fence-agents-all resource-agentsImpostare la password per l'utente predefinito creato durante l'installazione dei pacchetti Pacemaker e Corosync. Usare la stessa password dei nodi esistenti.
sudo passwd haclusterAbilitare e avviare il servizio
pcsde Pacemaker. Il nuovo nodo può rientrare nel cluster dopo un riavvio. Eseguire il comando seguente nel nuovo nodo.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemakerInstallare l'agente delle risorse FCI per SQL Server. Eseguire il comando seguente nel nuovo nodo.
sudo yum install mssql-server-haSu un nodo esistente nel cluster, autentica il nuovo nodo e aggiungilo al cluster:
sudo pcs cluster auth <nodeName3> -u hacluster sudo pcs cluster node add <nodeName3>
Rimuovere i nodi da un cluster
Per rimuovere un nodo da un cluster, eseguire il comando seguente:
sudo pcs cluster node remove <nodeName>
Modifica la frequenza di monitoraggio delle risorse
sudo pcs resource op monitor interval=<interval>s <sqlResourceName>
Il seguente esempio imposta l'intervallo di monitoraggio a 2 secondi per la mssqlha risorsa:
sudo pcs resource op monitor interval=2s mssqlha
Troubleshoot
Nella risoluzione dei problemi del cluster, può essere utile conoscere il modo in cui i tre daemon interagiscono per gestire le risorse cluster.
| Daemon | Description |
|---|---|
| Corosync | Fornisce l'appartenenza al quorum e la messaggistica tra i nodi del cluster. |
| Stimolatore cardiaco | Funziona sopra Corosync e fornisce le macchine a stati per le risorse. |
| PCSD | Gestisce sia Pacemaker che Corosync tramite gli strumenti pcs |
Per usare gli strumenti pcs, è necessario che PCSD sia in esecuzione.
Stato corrente del cluster
sudo pcs status restituisce le informazioni di base sullo stato di cluster, quorum, nodi, risorse e daemon per ogni nodo.
L'esempio seguente mostra un output corretto del quorum di Pacemaker:
Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2024 Last change: Wed Oct 31 11:00:00 2024 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1 (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured
Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]
Full list of resources:
mssqlha (ocf::sql:fci): Started sqlvmnode1
PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online
Daemon Status:
corosync: active/disabled
pacemaker: active/enabled
In questo esempio, partition with quorum significa che la maggioranza dei quorum dei nodi è online. Se il cluster perde un quorum di maggioranza dei nodi, pcs status restituisce partition WITHOUT quorum e tutte le risorse vengono arrestate.
Online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] restituisce il nome di tutti i nodi che attualmente partecipano al cluster. Se un nodo non partecipa, pcs status restituisce OFFLINE: [<nodename>].
PCSD Status mostra lo stato del cluster per ogni nodo.
Motivi per cui un nodo potrebbe essere offline
Quando un nodo è offline, controllare gli elementi seguenti.
Firewall
Apri le seguenti porte su tutti i nodi affinché Pacemaker possa comunicare:
- TCP: porte 2224, 3121, 21064
- UDP: porta 5405
Servizi Pacemaker o Corosync in esecuzione
Comunicazione tra nodi
Mappatura dei nomi dei nodi