Configurare un'istanza del cluster di failover - SQL Server in Linux (RHEL)
Si applica a: SQL Server - Linux
Un'istanza del cluster di failover su disco condiviso a due nodi di SQL Server fornisce ridondanza a livello di server per la disponibilità elevata. In questa esercitazione si apprenderà come creare un'istanza del cluster di failover a due nodi di SQL Server in Linux. I passaggi specifici che si completeranno includono:
- Installare e configurare Linux
- Installare e configurare SQL Server
- Configurare il file hosts
- Configurare la risorsa di archiviazione condivisa e spostare i file di database
- Installare e configurare Pacemaker in ogni nodo del cluster
- Configurare l'istanza del cluster di failover
Questo articolo illustra come creare un'istanza del cluster di failover su disco condiviso a due nodi per SQL Server. L'articolo include istruzioni ed esempi di script per Red Hat Enterprise Linux (RHEL). Le distribuzioni di Ubuntu sono simili a quelle di RHEL, quindi gli esempi di script funzionano anche in Ubuntu.
Per informazioni concettuali, vedere Istanze del cluster di failover - SQL Server in Linux.
Prerequisiti
Per completare lo scenario end-to-end seguente, sono necessari due computer per distribuire il cluster a due nodi e un altro server per la risorsa di archiviazione. I passaggi seguenti illustrano come verranno configurati questi server.
Installare e configurare Linux
Il primo passaggio consiste nel configurare il sistema operativo nei nodi del cluster. In ogni nodo del cluster configurare una distribuzione di Linux. Usare la stessa distribuzione e la stessa versione in entrambi i nodi. Usare una o l'altra delle distribuzioni seguenti:
- RHEL con una sottoscrizione valida per il componente aggiuntivo per la disponibilità elevata
Installare e configurare SQL Server
Installare e configurare SQL Server in entrambi i nodi. Per istruzioni dettagliate, vedi Linee guida per l'installazione di SQL Server in Linux.
Designare un nodo come primario e l'altro come secondario, ai fini della configurazione. Usare questi termini per la parte seguente di questa guida.
Nel nodo secondario arrestare e disabilitare SQL Server. L'esempio seguente arresta e disabilita SQL Server:
sudo systemctl stop mssql-server sudo systemctl disable mssql-server
Nota
In fase di configurazione, viene generata una chiave master del server per l'istanza di SQL Server e viene inserita in
var/opt/mssql/secrets/machine-key
. In Linux, SQL Server viene sempre eseguito come account locale denominatomssql
. Poiché si tratta di un account locale, l'identità non è condivisa tra i nodi. È quindi necessario copiare la chiave di crittografia dal nodo primario a ogni nodo secondario, in modo che ogni accountmssql
locale possa accedervi per decrittografare la chiave master del server.Nel nodo primario creare un account di accesso di SQL Server per Pacemaker e concedere l'autorizzazione di accesso per eseguire
sp_server_diagnostics
. Pacemaker usa questo account per verificare quale nodo sta eseguendo SQL Server.sudo systemctl start mssql-server
Connettersi al database di SQL Server
master
con l'accountsa
ed eseguire quanto segue:USE [master]; GO CREATE LOGIN [<loginName>] WITH PASSWORD = N'<password>'; ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];
Attenzione
La password deve seguire i criteri password predefiniti di SQL Server. 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.
In alternativa, è possibile impostare le autorizzazioni a un livello più granulare. L'account di accesso di Pacemaker richiede
VIEW SERVER STATE
per effettuare una query sullo stato di integrità consp_server_diagnostics
, setupadmin e ALTER ANY LINKED SERVER per aggiornare il nome dell'istanza del cluster di failover con il nome della risorsa eseguendosp_dropserver
esp_addserver
.Nel nodo primario arrestare e disabilitare SQL Server.
Configurare il file hosts
In ogni nodo del cluster configurare il file hosts. Il file hosts deve includere l'indirizzo IP e il nome di ogni nodo del cluster.
Controllare l'indirizzo IP per ogni nodo. Lo script seguente mostra l'indirizzo IP del nodo corrente.
sudo ip addr show
Impostare il nome computer in ogni nodo. Assegnare a ogni nodo un nome univoco di 15 caratteri o meno. Per impostare il nome computer, aggiungerlo a
/etc/hosts
. Lo script seguente consente di modificare/etc/hosts
convi
.sudo vi /etc/hosts
L'esempio seguente mostra
/etc/hosts
con l'aggiunta di due nodi denominatisqlfcivm1
esqlfcivm2
.127.0.0.1 localhost localhost4 localhost4.localdomain4 ::1 localhost localhost6 localhost6.localdomain6 10.128.18.128 sqlfcivm1 10.128.16.77 sqlfcivm2
Configurare la risorsa di archiviazione e spostare i file di database
È necessario fornire una risorsa di archiviazione a cui possano accedere entrambi i nodi. È possibile usare iSCSI, NFS o SMB. Configurare la risorsa di archiviazione, presentarla ai nodi del cluster e quindi spostare i file di database nella nuova risorsa di archiviazione. Gli articoli seguenti illustrano i passaggi per ogni tipo di archiviazione:
- Configurare un'istanza del cluster di failover - iSCSI - SQL Server in Linux
- Configurare un'istanza del cluster di failover - NFS - SQL Server in Linux
- Configurare l'istanza del cluster di failover di archiviazione SMB - SQL Server in Linux
Installare e configurare Pacemaker in ogni nodo del cluster
In entrambi i nodi del cluster 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 sudo echo '<loginName>' >> /var/opt/mssql/secrets/passwd sudo echo '<loginPassword>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwd
In entrambi i nodi del cluster 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 --reload
Se si sta usando un altro firewall che non ha una configurazione a disponibilità elevata predefinita, è necessario aprire le porte seguenti per consentire a Pacemaker di comunicare con altri nodi del cluster
- TCP: porte 2224, 3121, 21064
- UDP: porta 5405
Installare i pacchetti Pacemaker in ogni nodo.
sudo yum install pacemaker pcs fence-agents-all resource-agents
Impostare la password per l'utente predefinito creato durante l'installazione dei pacchetti Pacemaker e Corosync. Usare la stessa password in entrambi i nodi.
sudo passwd hacluster
Abilitare e avviare il servizio
pcsd
e Pacemaker. In questo modo, i nodi potranno unirsi nuovamente in join con il cluster dopo il riavvio. Eseguire il comando seguente in entrambi i nodi.sudo systemctl enable pcsd sudo systemctl start pcsd sudo systemctl enable pacemaker
Installare l'agente delle risorse FCI per SQL Server. Eseguire i comandi seguenti in entrambi i nodi.
sudo yum install mssql-server-ha
Configurare l'istanza del cluster di failover
L'istanza del cluster di failover verrà creata in un gruppo di risorse. Si tratta di un approccio un po' più semplice perché il gruppo di risorse riduce la necessità di vincoli. Aggiungere tuttavia le risorse nel gruppo di risorse nell'ordine in cui devono essere avviate. L'ordine di avvio è il seguente:
- Risorsa di archiviazione
- Risorsa di rete
- Risorsa dell'applicazione
Questo esempio crea un'istanza del cluster di failover nel gruppo NewLinFCIGrp. Il nome del gruppo di risorse deve essere univoco rispetto a qualsiasi risorsa creata in Pacemaker.
Creare la risorsa disco. Se non si verificano problemi, non viene restituita alcuna risposta. Il modo in cui creare la risorsa disco dipende dal tipo di archiviazione. La sezione seguente mostra esempi per ogni tipo di archiviazione (iSCSI, NFS e SMB). Usare l'esempio che si applica al tipo dell'archiviazione in cluster.
sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
<iSCSIDIskResourceName>
è il nome della risorsa associata al disco iSCSI<VolumeGroupName>
è il nome del gruppo di volumi<LogicalVolumeName>
è il nome del volume logico creato<FolderToMountiSCSIDIsk>
è la cartella in cui montare il disco (per i database di sistema e il percorso predefinito, sarà/var/opt/mssql/data
)<FileSystemType>
sarà EXT4 o XFS, a seconda della formattazione scelta e degli elementi supportati dalla distribuzione.
Creare l'indirizzo IP che verrà usato dall'istanza del cluster di failover. Se non si verificano problemi, non viene restituita alcuna risposta.
sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
<IPResourceName>
è il nome della risorsa associata all'indirizzo IP<IPAddress>
è l'indirizzo IP per l'istanza del cluster di failover<NetworkCard>
è la scheda di rete associata alla subnet (cioè eth0)<NetMask>
è la netmask della subnet (cioè 24)<RGName>
è il nome del gruppo di risorse
Creare la risorsa istanza del cluster di failover. Se non si verificano problemi, non viene restituita alcuna risposta.
sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
<FCIResourceName>
non è solo il nome della risorsa, ma anche il nome descrittivo associato all'istanza del cluster di failover Ciò che gli utenti e le applicazioni useranno per connettersi.<RGName>
è il nome del gruppo di risorse.
Eseguire il comando
sudo pcs resource
. L'istanza del cluster di failover deve essere online.Connettersi all'istanza del cluster di failover con SSMS o sqlcmd usando il nome DNS o della risorsa dell'istanza del cluster di failover.
Eseguire l'istruzione
SELECT @@SERVERNAME
, che deve restituire il nome dell'istanza del cluster di failover.Eseguire l'istruzione
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')
, che deve restituire il nome del nodo in cui è in esecuzione l'istanza del cluster di failover.Eseguire il failover manuale dell'istanza del cluster di failover negli altri nodi. Vedere le istruzioni in Gestire un'istanza del cluster di failover - SQL Server in Linux.
Eseguire infine il failback dell'istanza del cluster di failover nel nodo originale e rimuovere il vincolo di condivisione del percorso.
Riepilogo
In questa esercitazione sono state completate le attività seguenti.
- Installare e configurare Linux
- Installare e configurare SQL Server
- Configurare il file hosts
- Configurare la risorsa di archiviazione condivisa e spostare i file di database
- Installare e configurare Pacemaker in ogni nodo del cluster
- Configurare l'istanza del cluster di failover