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:

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:

  1. Eseguirli nel contesto dell'utente appropriato. Per passare a un utente diverso, usare il comando su. Se su viene eseguito senza un nome utente, a condizione di conoscere la password, si passerà a una shell come utente root.

  2. Il modo più comune e sicuro di eseguire le operazioni consiste nell'usare sempre prima sudo. Molti degli esempi di questo articolo usano sudo.

Di seguito sono elencati alcuni comandi comuni, ognuno dei quali ha diverse opzioni che è possibile cercare online:

  • cd: cambia la directory
  • chmod: cambia le autorizzazioni di un file o di una directory
  • chown: cambia la proprietà di un file o di una directory
  • ls: visualizza il contenuto di una directory
  • mkdir: crea una cartella (directory) in un'unità
  • mv: sposta un file da un percorso a un altro
  • ps: visualizza tutti i processi di lavoro
  • rm: elimina un file in locale su un server
  • rmdir: 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. Per gli amministratori di database, è un modo comune di pianificare, ad esempio, 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.

- Distribuire un gruppo di disponibilità con DH2i per i contenitori SQL Server nel servizio Azure 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 gruppi di disponibilità e istanze del cluster di failover in Linux
- Distribuire un cluster Pacemaker per SQL Server in Linux