Nozioni fondamentali sulla disponibilità di SQL Server per le distribuzioni Linux
Si applica a: SQL Server - Linux
A partire da SQL Server 2017 (14.x), SQL Server è supportato sia in Linux che in Windows. Come nelle distribuzioni di SQL Server basate su Windows, i database e le istanze di SQL Server devono garantire la disponibilità elevata anche in Linux. Questo articolo illustra gli aspetti tecnici della pianificazione e della distribuzione di database e istanze di SQL Server basate su Linux a disponibilità elevata, oltre ad alcune delle differenze rispetto alle installazioni basate su Windows. Poiché i professionisti Linux potrebbero non avere familiarità con SQL Server e i professionisti SQL Server potrebbero non avere familiarità con Linux, l'articolo introduce a volte concetti che potrebbero essere più noti ad alcuni e meno ad altri.
Opzioni di disponibilità di SQL Server per le distribuzioni Linux
Oltre al backup e al ripristino, in Linux sono presenti le stesse tre funzionalità di disponibilità delle distribuzioni basate su Windows:
- Gruppi di disponibilità per SQL Server in Linux
- Istanze del cluster di failover - SQL Server in Linux
- Introduzione al log shipping in Linux
In Windows le istanze del cluster di failover richiedono sempre un cluster WSFC (Windows Server Failover Cluster) sottostante. A seconda dello scenario di distribuzione, un gruppo di disponibilità richiede in genere un cluster WSFC sottostante, con l'eccezione della nuova variante None in SQL Server 2017 (14.x). Un cluster WSFC non esiste in Linux. L'implementazione del clustering in Linux viene illustrata nella sezione Pacemaker per i gruppi di disponibilità Always On e le istanze del cluster di failover in Linux.
Introduzione rapida a Linux
Nonostante alcune installazioni di Linux possano avere un'interfaccia, la maggior parte di esse non ne dispone e quindi quasi tutte le operazioni a livello del sistema operativo vengono eseguite tramite la riga di comando. Il termine comune per indicare la riga di comando in ambito Linux è shell Bash.
In Linux è necessario eseguire molti comandi con privilegi elevati, così come in Windows Server molte operazioni devono essere eseguite da un amministratore. Esistono due metodi principali per eseguire i comandi con privilegi elevati:
Eseguirli nel contesto dell'utente appropriato. Per passare a un utente diverso, usare il comando
su
. Sesu
viene eseguito senza un nome utente, a condizione di conoscere la password, si passa a una shell comeroot
.Il modo più comune e sicuro di eseguire le operazioni consiste nell'usare sempre prima
sudo
. Molti degli esempi di questo articolo usanosudo
.
Di seguito sono elencati alcuni comandi comuni, ognuno dei quali ha diverse opzioni che è possibile cercare online:
cd
: cambia la directorychmod
: cambia le autorizzazioni di un file o di una directorychown
: cambia la proprietà di un file o di una directoryls
: visualizza il contenuto di una directorymkdir
: crea una cartella (directory) in un'unitàmv
: sposta un file da un percorso a un altrops
: visualizza tutti i processi di lavororm
: elimina un file in locale su un serverrmdir
: elimina una cartella (directory)systemctl
: avvia, arresta o abilita i servizi- Comandi dell'editor di testo. In Linux sono disponibili diverse opzioni dell'editor di testo, ad esempio vi ed emacs.
Attività comuni per le configurazioni della disponibilità di SQL Server in Linux
Questa sezione illustra le attività comuni a tutte le distribuzioni di SQL Server basate su Linux.
Assicurarsi che i file possano essere copiati
Copiare i file da un server a un altro è un'attività che chiunque usi SQL Server in Linux dovrebbe riuscire a eseguire. Questa attività è molto importante per le configurazioni dei gruppo di disponibilità.
Sia in Linux che nelle installazioni basate su Windows possono verificarsi problemi relativi alle autorizzazioni. Tuttavia, chi ha familiarità con la copia da server a server in Windows potrebbe non averne con la stessa operazione in Linux. Un metodo comune prevede l'uso dell'utilità della riga di comando scp
, che è l'acronimo di secure copy (copia sicura). In background scp
usa OpenSSH. SSH è l'acronimo di Secure Shell. A seconda della distribuzione Linux, OpenSSH potrebbe non essere installato. Se non lo è, è necessario installare prima OpenSSH. Per altre informazioni sulla configurazione di OpenSSH, fare clic sui collegamenti seguenti a seconda della distribuzione in uso:
Quando si usa scp
, è necessario specificare le credenziali del server se non si tratta dell'origine o della destinazione. Se ad esempio si usa
scp MyAGCert.cer username@servername:/folder/subfolder
il file MyAGCert.cer viene copiato nella cartella specificata nell'altro server. È necessario avere le autorizzazioni e, possibilmente, la proprietà del file per copiarlo, quindi potrebbe essere necessario usare chown
prima di eseguire la copia. Analogamente, sul lato ricevente, l'utente appropriato deve avere l'accesso per modificare il file. Ad esempio, per ripristinare il file del certificato, l'utente mssql
deve potervi accedere.
È anche possibile usare Samba, ovvero la variante Linux di SMB (Server Message Block), per creare condivisioni accessibili tramite percorsi UNC, ad esempio \\SERVERNAME\SHARE
. Per altre informazioni sulla configurazione di Samba, fare clic sui collegamenti seguenti a seconda della distribuzione in uso:
Si possono usare anche condivisioni SMB basate su Windows. Non è necessario che le condivisioni SMB siano basate su Linux, purché la parte client di Samba sia configurata correttamente nel server Linux che ospita SQL Server e la condivisione abbia l'accesso corretto. Negli ambienti misti questa soluzione consente di usare l'infrastruttura esistente per le distribuzioni di SQL Server basate su Linux.
È importante che la versione di Samba distribuita sia conforme a SMB 3.0. Da quando è stato aggiunto il supporto per SMB in SQL Server 2012 (11.x), è necessario che tutte le condivisioni supportino SMB 3.0. Se si usa Samba per la condivisione e non Windows Server, la condivisione basata su Samba dovrebbe usare Samba 4.0 o versione successiva. L'ideale è usare la versione 4.3 o successiva, che supporta SMB 3.1.1. Per informazioni su SMB e Linux, vedere SMB3 in Samba.
È infine possibile usare una condivisione NFS (Network File System). NFS non può essere usato nelle distribuzioni basate su Windows di SQL Server, ma solo per le distribuzioni basate su Linux.
Configurare il firewall
Analogamente a Windows, le distribuzioni Linux includono un firewall predefinito. Se la società usa un firewall esterno ai server, la disabilitazione dei firewall in Linux potrebbe essere accettabile. Tuttavia, indipendentemente dalla posizione in cui è abilitato il firewall, è necessario aprire le porte. La tabella seguente elenca le porte comuni necessarie per le distribuzioni di SQL Server a disponibilità elevata in Linux.
Numero porta | Tipo | Descrizione |
---|---|---|
111 |
TCP/UDP | NFS: rpcbind/sunrpc |
135 |
TCP | Samba (se usato): mapper di endpoint |
137 |
UDP | Samba (se usato): servizio nomi NetBIOS |
138 |
UDP | Samba (se usato): datagramma NetBIOS |
139 |
TCP | Samba (se usato): sessione NetBIOS |
445 |
TCP | Samba (se usato): SMB su TCP |
1433 |
TCP | SQL Server: porta predefinita, che, se necessario, può essere sostituita da mssql-conf set network.tcpport <portnumber> |
2049 |
TCP, UDP | NFS (se usato) |
2224 |
TCP | Pacemaker: usato da pcsd |
3121 |
TCP | Pacemaker: obbligatorio se sono presenti nodi remoti di Pacemaker |
3260 |
TCP | Iniziatore iSCSI (se usato): può essere modificato in /etc/iscsi/iscsid.config (RHEL), ma deve corrispondere alla porta della destinazione iSCSI |
5022 |
TCP | SQL Server: porta predefinita usata per l'endpoint del gruppo di disponibilità, che può essere cambiata quando si crea l'endpoint |
5403 |
TCP | Pacemaker |
5404 |
UDP | Pacemaker: richiesto da Corosync se si usa UDP multicast |
5405 |
UDP | Pacemaker: richiesto da Corosync |
21064 |
TCP | Pacemaker: richiesto dalle risorse che usano DLM |
Variabile | TCP | Porta dell'endpoint del gruppo di disponibilità, il cui valore predefinito è 5022 |
Variabile | TCP | NFS: porta per LOCKD_TCPPORT (disponibile in /etc/sysconfig/nfs in RHEL) |
Variabile | UDP | NFS: porta per LOCKD_UDPPORT (disponibile in /etc/sysconfig/nfs in RHEL) |
Variabile | TCP/UDP | NFS: porta per MOUNTD_PORT (disponibile in /etc/sysconfig/nfs in RHEL) |
Variabile | TCP/UDP | NFS: porta per STATD_PORT (disponibile in /etc/sysconfig/nfs in RHEL) |
Per le altre porte che potrebbero essere usate da Samba, vedere Samba Port Usage (Utilizzo delle porte in Samba).
In Linux, invece della porta, si può aggiungere anche il nome del servizio come eccezione, ad esempio high-availability
per Pacemaker. Se si intende procedere in questo modo, fare riferimento alla distribuzione per i nomi. In RHEL, ad esempio, il comando da aggiungere a Pacemaker è
sudo firewall-cmd --permanent --add-service=high-availability
Documentazione dei firewall
Installare i pacchetti SQL Server per la disponibilità
In un'installazione di SQL Server basata su Windows alcuni componenti, a differenza di altri, vengono installati anche in un'installazione del motore di base. In Linux, durante il processo di installazione viene installato solo il motore di SQL Server. Tutti gli altri sono facoltativi. Per le istanze di SQL Server a disponibilità elevata in Linux, con SQL Server o consigliabile installare due pacchetti:
- SQL Server Agent (
mssql-server-agent
) - pacchetto a disponibilità elevata (disponibilità elevata) (
mssql-server-ha
)
SQL Server Agent, nonostante sia tecnicamente facoltativo, è l'utilità di pianificazione di SQL Server per i processi ed è necessario per il log shipping, quindi è consigliabile installarlo.
In SQL Server 2017 (14.x) con CU 4 e versioni successive, SQL Server Agent è incluso nel pacchetto del motore di database, ma è comunque necessario abilitarlo. Nelle installazioni basate su Windows, SQL Server Agent non è facoltativo.
Nota
Per gli utenti che non hanno familiarità con SQL Server, SQL Server Agent è il pianificatore di processi predefinito di SQL Server. È possibile pianificare i backup e altre operazioni di manutenzione di SQL Server. Diversamente da un'installazione basata su Windows di SQL Server, dove SQL Server Agent è un servizio completamente distinto, in Linux SQL Server Agent viene eseguito direttamente nel contesto di SQL Server.
Quando i gruppi di disponibilità o le istanze del cluster di failover sono configurate in una configurazione basata su Windows, sono compatibili con il cluster. La compatibilità con il cluster implica che SQL Server abbia DLL delle risorse specifiche note a un cluster WSFC (sqagtres.dll
e sqsrvres.dll
per le istanze del cluster di failover, hadrres.dll
per i gruppi di disponibilità) e usate dal cluster WSFC per assicurare che le funzionalità di SQL Server siano attive, in esecuzione e operino correttamente. Poiché il clustering è esterno non solo a SQL Server, ma anche a Linux stesso, Microsoft ha dovuto codificare l'equivalente di una DLL della risorsa per le distribuzioni di gruppi di disponibilità e di istanze del cluster di failover basate su Linux. Si tratta del pacchetto mssql-server-ha
, noto anche come agente della risorsa per Pacemaker. Per installare il pacchetto mssql-server-ha
, vedere Distribuire un cluster Pacemaker per SQL Server in Linux.
Gli altri pacchetti facoltativi per SQL Server in Linux, Ricerca full-text di SQL Server (mssql-server-fts
) e SQL Server Integration Services (mssql-server-is
), non sono obbligatori per la disponibilità elevata, sia per un'istanza del cluster di failover che per un gruppo di disponibilità.
Partner di disponibilità elevata e ripristino di emergenza per SQL Server
Per garantire la disponibilità elevata e il ripristino di emergenza per i servizi di SQL Server, è disponibile un'ampia gamma di strumenti leader nel settore. In questo articolo vengono evidenziate le aziende partner Microsoft con soluzioni per la disponibilità elevata e il ripristino di emergenza che supportano SQL Server.
Partner | Descrizione |
---|---|
DH2i | DxEnterprise è il software di disponibilità intelligente per Windows, Linux e Docker che consente di ottenere il tempo di inattività pianificato e non pianificato più vicino a zero, rende possibili enormi risparmi sui costi, semplifica drasticamente la gestione e supporta il consolidamento sia fisico che logico. - Implementare gruppi di disponibilità con DH2i DxEnterprise in Kubernetes - Esercitazione: Configurare un gruppo di disponibilità Always On a tre nodi con DH2i DxEnterprise |
HPE Serviceguard | HPE SGLX offre opzioni di monitoraggio e recupero sensibili al contesto per le istanze del cluster di failover e i gruppi di disponibilità Always On. Ottimizzare i tempi di attività con HPE SGLX senza compromettere l'integrità e le prestazioni dei dati. - Esercitazione: Configurare un gruppo di disponibilità Always On a tre nodi con HPE Serviceguard per Linux. |
Pacemaker | Pacemaker è un gestore di risorse cluster a disponibilità elevata open source. Con Corosync, un sistema di comunicazione di gruppo open source, Pacemaker può rilevare gli errori dei componenti e orchestrare le procedure di failover necessarie per ridurre al minimo le interruzioni delle applicazioni. - Pacemaker per i gruppi di disponibilità e le istanze del cluster di failover in Linux - Distribuire un cluster Pacemaker per SQL Server in Linux |