Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Si applica a:SQL Server in Linux
Questa guida fornisce istruzioni per creare un cluster di dischi condivisi a due nodi per SQL Server in SUSE Linux Enterprise Server (SLES). Il livello di clustering si basa su SUSE High Availability Extension (HAE), a sua volta basato su Pacemaker.
Nota
A partire da SQL Server 2025 (17.x), SUSE Linux Enterprise Server (SLES) non è supportato.
Per altre informazioni sulla configurazione del cluster, sulle opzioni dell'agente di risorse, sulla gestione, sulle procedure consigliate e sulle raccomandazioni, vedere SUSE Linux Enterprise High Availability Extension 12 SP5.
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 configurare la condivisione NFS. I passaggi seguenti illustrano come configurare questi server.
Installare e configurare il sistema operativo in ogni nodo del cluster
Il primo passaggio consiste nel configurare il sistema operativo nei nodi del cluster. Per questa guida passo-passo, usare SLES con una sottoscrizione valida per l'add-on HA.
Installare e configurare SQL Server in ogni nodo del cluster
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. Utilizzare questi termini durante la consultazione 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-serverNota
Al momento dell'installazione, viene generata una chiave master del server (SMK) per l'istanza di SQL Server e posizionata 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. È necessario copiare la chiave di crittografia dal nodo primario a ogni nodo secondario in modo che ogni account localemssqlpossa accedervi per decrittografare la chiave smk.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-serverConnettersi al database di SQL Server
mastercon l'accountsaed eseguire lo script seguente:USE [master]; GO CREATE LOGIN [<loginName>] with PASSWORD = N'<password>'; GRANT VIEW SERVER STATE TO <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.
Nel nodo primario arrestare e disabilitare SQL Server.
Seguire le istruzioni della documentazione SUSE per configurare e aggiornare il file hosts per ogni nodo del cluster. Il
hostsfile deve includere l'indirizzo IP e il nome di ogni nodo del cluster.Per controllare l'indirizzo IP del nodo corrente, eseguire:
sudo ip addr showImpostare il nome del computer su ciascun nodo. Assegnare a ogni nodo un nome univoco di 15 caratteri o meno. Imposta il nome del computer aggiungendolo a
/etc/hostnameusando YAST o manualmente.L'esempio seguente mostra
/etc/hostscon l'aggiunta di due nodi denominatiSLES1eSLES2.127.0.0.1 localhost 10.128.18.128 SLES1 10.128.16.77 SLES2Tutti i nodi del cluster devono avere accesso SSH senza password tra loro. In caso contrario, strumenti come
hb_report,crm_reporte Esplora cronologia di Hawk possono raccogliere dati solo dal nodo locale. Se si usa una porta SSH non standard, usare l'opzione-X(vedere Altri requisiti e raccomandazioni). Ad esempio, se la porta SSH è 3479, richiamarecrm_reportcon:crm_report -X "-p 3479" [...]Per altre informazioni, vedere la guida all'amministrazione.
Nella sezione successiva si configura l'archiviazione condivisa e si spostano i file di database in tale archiviazione.
Configurare la risorsa di archiviazione condivisa e spostare i file di database
È possibile usare varie soluzioni per fornire l'archiviazione condivisa. Questa procedura dettagliata illustra la configurazione dello spazio di archiviazione condiviso con NFS. Seguire le procedure consigliate e usare Kerberos per proteggere NFS:
Se non si seguono queste indicazioni, chiunque abbia accesso alla tua rete e falsifichi l'indirizzo IP di un nodo SQL può accedere ai tuoi file di dati. Come sempre, eseguire la modellazione delle minacce nel sistema prima di usarla nell'ambiente di produzione.
Un'altra opzione di archiviazione consiste nell'usare la condivisione file SMB:
Configurare un server NFS
Per configurare un server NFS, vedere i passaggi seguenti nella documentazione di SUSE: Configuring NFS Server.
Configurare tutti i nodi del cluster per la connessione alla risorsa di archiviazione condivisa NFS
Prima di configurare il client NFS per montare il percorso dei file di database di SQL Server in modo che punti al percorso di archiviazione condiviso, assicurarsi di salvare i file di database in un percorso temporaneo in modo da poterli copiare in un secondo momento nella condivisione:
Solo nel nodo primario salvare i file di database in una posizione temporanea. Lo script seguente crea una nuova directory temporanea, copia i file di database nella nuova directory e rimuove i file di database precedenti. Poiché SQL Server viene eseguito come utente locale
mssql, è necessario assicurarsi che dopo il trasferimento dei dati alla condivisione montata, l'utente locale abbia accesso in lettura/scrittura alla condivisione.su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exitConfigurare il client NFS in tutti i nodi del cluster:
Nota
Per le procedure consigliate e le raccomandazioni su SUSE relative all'archiviazione NFS a disponibilità elevata, vedere Archiviazione NFS a disponibilità elevata con DRBD e Pacemaker.
In ogni nodo verificare che SQL Server venga avviato correttamente con il nuovo percorso del file. A questo punto, un solo nodo deve eseguire SQL Server alla volta. Non possono entrambi essere eseguiti contemporaneamente perché entrambi tentano di accedere contemporaneamente ai file di dati.
Per impedire l'avvio di SQL Server in entrambi i nodi, usare una risorsa cluster del file system per assicurarsi che la condivisione venga montata da un solo nodo alla volta.
I comandi seguenti avviano SQL Server, controllano lo stato e quindi arrestano SQL Server.
sudo systemctl start mssql-server sudo systemctl status mssql-server sudo systemctl stop mssql-server
A questo punto, entrambe le istanze di SQL Server sono configurate per l'esecuzione con i file di database nello spazio di archiviazione condiviso. Il passaggio successivo consiste nel configurare SQL Server per Pacemaker.
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 '<password>' >> /var/opt/mssql/secrets/passwd sudo chown root:root /var/opt/mssql/secrets/passwd sudo chmod 600 /var/opt/mssql/secrets/passwdAttenzione
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.
Tutti i nodi del cluster devono accedere tra loro tramite SSH. Strumenti come
hb_reportocrm_report(per la risoluzione dei problemi) e Esplora cronologia di Hawk richiedono l'accesso SSH senza password tra i nodi. In caso contrario, possono raccogliere solo i dati dal nodo corrente. Se si usa una porta SSH non standard, usa l'opzione-X(vedere la paginaman). Ad esempio, se la porta SSH è 3479, richiamare conhb_report:crm_report -X "-p 3479" [...]Per altre informazioni, vedere i requisiti di sistema e consigli nella documentazione di SUSE.
Installare l'estensione per la disponibilità elevata. Per installare l'estensione, seguire la procedura nell'articolo SUSE seguente:
Installation and Setup Quick Start (Guida introduttiva all'installazione e alla configurazione)
Installare l'agente delle risorse FCI per SQL Server. Eseguire i comandi seguenti in entrambi i nodi:
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/12/mssql-server-2017.repo sudo zypper --gpg-auto-import-keys refresh sudo zypper install mssql-server-haConfigurare automaticamente il primo nodo. Il passaggio successivo consiste nel configurare un cluster a un nodo in esecuzione configurando il primo nodo, SLES1. Seguire le istruzioni nell'articolo SUSE Setting Up the First Node (Configurazione del primo nodo).
Al termine, verificare lo stato del cluster con
crm status:crm statusMostra che un nodo, SLES1, è configurato.
Aggiungere nodi a un cluster esistente. Aggiungere quindi il nodo SLES2 al cluster. Seguire le istruzioni nell'articolo SUSE Adding the Second Node (Aggiunta del secondo nodo).
Al termine, verificare lo stato del cluster con crm status. Se è stato aggiunto un secondo nodo, l'output sarà simile all'esempio seguente:
2 nodes configured 1 resource configured Online: [ SLES1 SLES2 ] Full list of resources: admin_addr (ocf::heartbeat:IPaddr2): Started SLES1Nota
admin_addr è la risorsa cluster IP virtuale configurata durante la configurazione iniziale del cluster a un nodo.
Procedure di rimozione. Se si vuole rimuovere un nodo dal cluster, usare lo script di bootstrap ha-cluster-remove. Per altre informazioni, vedere Overview of the Bootstrap Scripts (Panoramica degli script di bootstrap).
Configurare le risorse cluster per SQL Server
I passaggi seguenti illustrano come configurare la risorsa cluster per SQL Server. Personalizzare le due impostazioni seguenti:
- Nome risorsa SQL Server: nome della risorsa SQL Server del cluster.
-
Valore timeout: il valore di timeout indica per quanto tempo il cluster attende mentre una risorsa viene portata online. Per SQL Server, questo valore rappresenta il tempo previsto per portare online il
masterdatabase di SQL Server.
Aggiornare i valori nello script seguente per l'ambiente in uso. Eseguire lo script in un nodo per configurare e avviare il servizio cluster.
sudo crm configure
primitive <sqlServerResourceName> ocf:mssql:fci op start timeout=<timeout_in_seconds>
colocation <constraintName> inf: <virtualIPResourceName> <sqlServerResourceName>
show
commit
exit
Lo script seguente, ad esempio, crea una risorsa in cluster di SQL Server denominata mssqlha.
sudo crm configure
primitive mssqlha ocf:mssql:fci op start timeout=60s
colocation admin_addr_mssqlha inf: admin_addr mssqlha
show
commit
exit
Dopo aver eseguito il commit della configurazione, SQL Server viene avviato nello stesso nodo della risorsa IP virtuale.
Per altre informazioni, vedere Configuring and Managing Cluster Resources (Command Line) (Configurazione e gestione delle risorse cluster - Riga di comando).
Verificare che SQL Server sia avviato.
Per verificare che SQL Server sia avviato, eseguire il comando crm status:
crm status
L'esempio seguente mostra i risultati quando Pacemaker viene avviato correttamente come risorsa clusterizzata.
2 nodes configured
2 resources configured
Online: [ SLES1 SLES2 ]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started SLES1
mssqlha (ocf::mssql:fci): Started SLES1
Gestire le risorse cluster
Per gestire le risorse cluster, vedere l'articolo di SUSE seguente: Managing Cluster Resources (Gestione di risorse cluster)
Failover manuale
Anche se le risorse sono configurate per eseguire automaticamente il failover o la migrazione ad altri nodi del cluster in caso di errore hardware o software, è anche possibile spostarle manualmente usando l'interfaccia utente grafica pacemaker o la riga di comando.
Usare il migrate comando per questa attività. Ad esempio, per eseguire la migrazione della risorsa SQL a un nodo del cluster denominato SLES2, eseguire:
crm resource
migrate mssqlha SLES2
Contenuto correlato
- SUSE Linux Enterprise High Availability Extension - Administration Guide (SUSE Linux Enterprise High Availability Extension - Guida all'amministrazione)