Configurare un'istanza del cluster di failover - SQL Server su Linux (RHEL)
Si applica a:SQL Server - Linux
Per disponibilità elevata, un'istanza di cluster di failover SQL Server a due nodi con disco condiviso fornisce ridondanza a livello di server. 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 spiega come creare un'istanza di cluster di failover a due nodi con disco condiviso 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 di alta disponibilità
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 seguire 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 salute consp_server_diagnostics
, setupadmin e ALTER ANY LINKED SERVER per aggiornare il nome dell'istanza FCI con il nome della risorsa eseguendosp_dropserver
esp_addserver
.Nel nodo primario arrestare e disabilitare SQL Server.
Configurare il file hosts
Configurare il file hosts su ogni nodo del cluster. 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 del computer su 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 su Linux
- Configurare un'istanza del cluster di failover - NFS - SQL Server su Linux
- Configurare un'istanza di cluster di failover per l'archiviazione SMB - SQL Server su 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 al 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'FCI 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. Tuttavia, aggiungere 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'FCI nel gruppo NewLinFCIGrp. Il nome del gruppo di risorse deve essere univoco rispetto a qualsiasi risorsa creata in Pacemaker.
Crea 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). Utilizzare l'esempio che si applica al tipo di archiviazione del 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à utilizzato dall'FCI. 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'FCI -
<NetworkCard>
è la scheda di rete associata alla subnet (cioè eth0) -
<NetMask>
è la maschera di rete della sottorete (cioè 24) -
<RGName>
è il nome del gruppo di risorse
-
Creare la risorsa FCI. 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 al FCI. Ciò che gli utenti e le applicazioni useranno per connettersi. -
<RGName>
è il nome del gruppo di risorse.
-
Eseguire il comando
sudo pcs resource
. L'FCI dovrebbe essere online.Connettersi all'FCI utilizzando SSMS o sqlcmd e il nome DNS o della risorsa.
Pubblicare la dichiarazione
SELECT @@SERVERNAME
. Dovrebbe restituire il nome della FCI.Emettere la dichiarazione
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')
. dovrebbe restituire il nome del nodo su cui è in esecuzione l'FCI.Eseguire manualmente il failover dell'FCI all'altro/i nodi. Vedere le istruzioni in Gestire un'istanza del cluster di failover - SQL Server in Linux.
Eseguire infine il failback FCI al nodo originale e rimuovere il vincolo di colocation.
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