Configurare cluster di dischi condiviso SLES per SQL ServerConfigure SLES shared disk cluster for SQL Server

QUESTO ARGOMENTO SI APPLICA A: SìSQL Server (solo Linux)nonDatabase SQL di AzurenonAzure SQL Data Warehousenon Parallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (Linux only)noAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

Questa guida fornisce istruzioni per creare un cluster di dischi condivisi di due nodi per SQL Server su SUSE Linux Enterprise Server (SLES).This guide provides instructions to create a two-nodes shared disk cluster for SQL Server on SUSE Linux Enterprise Server (SLES). Il livello di clustering si basa su SUSE estensione a disponibilità elevata (Georgiano) costruita basandosi su Pacemaker.The clustering layer is based on SUSE High Availability Extension (HAE) built on top of Pacemaker.

Per altre informazioni su configurazione del cluster, opzioni dell'agente di risorsa, gestione, le procedure consigliate e indicazioni, vedere SUSE Linux Enterprise ad alta disponibilità estensione 12 SP2.For more information on cluster configuration, resource agent options, management, best practices, and recommendations, see SUSE Linux Enterprise High Availability Extension 12 SP2.

PrerequisitiPrerequisites

Per completare lo scenario end-to-end seguente, è necessario due macchine virtuali da distribuire il cluster a due nodi e un altro server per configurare la condivisione NFS.To complete the following end-to-end scenario, you need two machines to deploy the two nodes cluster and another server to configure the NFS share. I passaggi seguenti illustrano la configurazione di questi server.Below steps outline how these servers will be configured.

Installare e configurare il sistema operativo in ogni nodo del clusterSetup and configure the operating system on each cluster node

Il primo passaggio consiste nel configurare il sistema operativo nei nodi del cluster.The first step is to configure the operating system on the cluster nodes. Per questa procedura dettagliata, usare SLES con una sottoscrizione valida per il componente aggiuntivo a disponibilità elevata.For this walk through, use SLES with a valid subscription for the HA add-on.

Installare e configurare SQL Server in ogni nodo del clusterInstall and configure SQL Server on each cluster node

  1. Installare e configurare SQL Server su entrambi i nodi.Install and setup SQL Server on both nodes. Per istruzioni dettagliate, vedere installare SQL Server in Linux.For detailed instructions, see Install SQL Server on Linux.
  2. Designare un nodo primario e l'altro come secondario, ai fini della configurazione.Designate one node as primary and the other as secondary, for purposes of configuration. Usare questi termini per gli elementi seguenti in questa Guida.Use these terms for the following this guide.
  3. Nel nodo secondario, arrestare e disabilitare SQL Server.On the secondary node, stop and disable SQL Server. Nell'esempio seguente arresta e disattiva SQL Server:The following example stops and disables SQL Server:

    sudo systemctl stop mssql-server
    sudo systemctl disable mssql-server
    

    Nota

    In fase di installazione, viene generato per l'istanza di SQL Server e inserito in una chiave Master del Server /var/opt/mssql/secrets/machine-key.At setup time, a Server Master Key is generated for the SQL Server instance and placed at /var/opt/mssql/secrets/machine-key. In Linux, SQL Server viene sempre eseguito come un account locale denominato mssql.On Linux, SQL Server always runs as a local account called mssql. Poiché si tratta di un account locale, la propria identità non è condiviso tra i nodi.Because it’s a local account, its identity isn’t shared across nodes. Pertanto, è necessario copiare la chiave di crittografia dal nodo primario in ogni nodo secondario in modo che ogni account mssql locale possono accedervi per decrittografare la chiave Master del Server.Therefore, you need to copy the encryption key from primary node to each secondary node so each local mssql account can access it to decrypt the Server Master Key.

  4. Nel nodo primario, creare un account di accesso SQL server per Pacemaker e concedere l'autorizzazione di accesso per l'esecuzione sp_server_diagnostics.On the primary node, create a SQL server login for Pacemaker and grant the login permission to run sp_server_diagnostics. Pacemaker Usa questo account per verificare quale nodo è in esecuzione SQL Server.Pacemaker uses this account to verify which node is running SQL Server.

    sudo systemctl start mssql-server
    

    Connettersi al database master di SQL Server con l'account 'sa' ed eseguire il comando seguente:Connect to the SQL Server master database with the ‘sa’ account and run the following:

    USE [master]
    GO
    CREATE LOGIN [<loginName>] with PASSWORD= N'<loginPassword>'
    GRANT VIEW SERVER STATE TO <loginName>
    
  5. Nel nodo primario, arrestare e disabilitare SQL Server.On the primary node, stop and disable SQL Server.
  6. Seguire le istruzioni riportate nella documentazione di SUSE per configurare e aggiornare il file hosts per ogni nodo del cluster.Follow the directions in the SUSE documentation to configure and update the hosts file for each cluster node. Il file "hosts" deve includere l'indirizzo IP e nome di ogni nodo del cluster.The ‘hosts’ file must include the IP address and name of every cluster node.

    Per controllare l'indirizzo IP del nodo corrente eseguire:To check the IP address of the current node run:

    sudo ip addr show
    

    Impostare il nome del computer in ogni nodo.Set the computer name on each node. Assegnare a ogni nodo un nome univoco che è di 15 caratteri o meno.Give each node a unique name that is 15 characters or less. Impostare il nome del computer, aggiungerlo al /etc/hostname usando yast oppure manualmente.Set the computer name by adding it to /etc/hostname using yast or manually.

    L'esempio seguente illustra /etc/hosts con le aggiunte di due nodi denominati SLES1 e SLES2.The following example shows /etc/hosts with additions for two nodes named SLES1 and SLES2.

    127.0.0.1   localhost
    10.128.18.128 SLES1
    10.128.16.77 SLES2
    

    Nota

    Tutti i nodi del cluster devono essere in grado di accedere reciprocamente tramite SSH.All cluster nodes must be able to access each other via SSH. Strumenti come hb_report o crm_report (per la risoluzione dei problemi) e History Explorer di Hawk richiedono l'accesso a SSH tra i nodi senza password, in caso contrario possono raccogliere dati solo dal nodo corrente.Tools like hb_report or crm_report (for troubleshooting) and Hawk's History Explorer require passwordless SSH access between the nodes, otherwise they can only collect data from the current node. Nel caso in cui si usa una porta SSH non standard, usare l'opzione -X (vedere pagina).In case you use a non-standard SSH port, use the -X option (see man page). Ad esempio, se la porta SSH è 3479, richiamare un crm_report con:For example, if your SSH port is 3479, invoke an crm_report with:

    crm_report -X "-p 3479" [...]
    

    Per altre informazioni, vedere [Guida all'amministrazione]. (https://www.suse.com/documentation/sle-ha-12/singlehtml/book_sleha/book_sleha.html#sec.ha.troubleshooting.misc)For more information, see [the Administration Guide].(https://www.suse.com/documentation/sle-ha-12/singlehtml/book_sleha/book_sleha.html#sec.ha.troubleshooting.misc)

Nella sezione successiva si configurerà l'archiviazione condivisa e spostare i file di database in tale archivio.In the next section you will configure shared storage and move your database files to that storage.

Configurare l'archiviazione condivisa e spostare i file di databaseConfigure shared storage and move database files

Esistono numerose soluzioni per fornire spazio di archiviazione condiviso.There are a variety of solutions for providing shared storage. Questa procedura dettagliata viene illustrata la configurazione di archiviazione condivisa con NFS.This walk-through demonstrates configuring shared storage with NFS. È consigliabile seguire le procedure consigliate e usare Kerberos per proteggere NFS:We recommend to follow best practices and use Kerberos to secure NFS:

Se non si segue questo materiale sussidiario, chiunque può accedere alla rete ed effettuare lo spoofing l'indirizzo IP di un nodo SQL sarà in grado di accedere ai file di dati.If you do not follow this guidance, anyone who can access your network and spoof the IP address of a SQL node will be able to access your data files. Come sempre, assicurarsi che il sistema una modellazione delle minacce è prima di utilizzarlo nell'ambiente di produzione.As always, make sure you threat model your system before using it in production.

Un'altra opzione di archiviazione consiste nell'usare una condivisione file SMB:Another storage option is to use SMB file share:

Configurare un server NFSConfigure an NFS server

Per configurare un server NFS, vedere i passaggi seguenti nella documentazione di SUSE: configurazione Server NFS.To configure an NFS server,see the following steps in the SUSE documentation: Configuring NFS Server.

Configurare tutti i nodi del cluster per la connessione alla risorsa di archiviazione condivise NFSConfigure all cluster nodes to connect to the NFS shared storage

Prima di configurare il client NFS per montare il percorso di file di database di SQL Server in modo che punti al percorso di archiviazione condiviso, assicurarsi di che salvare i file di database in un percorso temporaneo per essere in grado di copiarli in un secondo momento la condivisione:Before configuring the client NFS to mount the SQL Server database files path to point to the shared storage location, make sure you save the database files to a temporary location to be able to copy them later on the share:

  1. Nel nodo primario solo, salvare i file di database in un percorso temporaneo.On the primary node only, save the database files to a temporary location. Lo script seguente, crea una nuova directory temporanee, copia i file di database nella nuova directory e consente di rimuovere i vecchi file di database.The following script, creates a new temporary directory, copies the database files to the new directory, and removes the old database files. Come SQL Server viene eseguito come utente locale mssql, è necessario assicurarsi che dopo il trasferimento dei dati per la condivisione montata, utente locale abbia accesso in lettura-scrittura alla condivisione.As SQL Server runs as local user mssql, you need to make sure that after data transfer to the mounted share, local user has read-write access to the share.

    su mssql
    mkdir /var/opt/mssql/tmp
    cp /var/opt/mssql/data/* /var/opt/mssql/tmp
    rm /var/opt/mssql/data/*
    exit
    

    Configurare il client NFS in tutti i nodi del cluster:Configure the NFS client on all cluster nodes:

  2. Verificare che SQL Server viene avviato correttamente con il nuovo percorso del file.Validate that SQL Server starts successfully with the new file path. Eseguire questa operazione in ogni nodo.Do this on each node. A questo punto un solo nodo deve eseguire SQL Server alla volta.At this point only one node should run SQL Server at a time. Non possono entrambi eseguono contemporaneamente perché sono entrambi tenterà di accedere ai file di dati contemporaneamente (per evitare accidentalmente l'avvio di SQL Server su entrambi i nodi, usare una risorsa cluster di File System per assicurarsi che la condivisione non è montata due volte per i vari nodi).They cannot both run at the same time because they will both try to access the data files simultaneously (to avoid accidentally starting SQL Server on both nodes, use a File System cluster resource to make sure the share is not mounted twice by the different nodes). I seguenti comandi avviare SQL Server, controllare lo stato e quindi arrestare SQL Server.The following commands start SQL Server, check the status, and then stop 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 configurate per eseguire con i file di database nello spazio di archiviazione condiviso.At this point both instances of SQL Server are configured to run with the database files on the shared storage. Il passaggio successivo consiste nel configurare SQL Server per Pacemaker.The next step is to configure SQL Server for Pacemaker.

Installare e configurare Pacemaker in ogni nodo del clusterInstall and configure Pacemaker on each cluster node

  1. In entrambi i nodi del cluster creare un file per archiviare nome utente e password di SQL Server per l'accesso a Pacemaker.On both cluster nodes, create a file to store the SQL Server username and password for the Pacemaker login. Il comando seguente crea e popola questo file:The following command creates and populates this 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
    
  2. Tutti i nodi del cluster devono essere in grado di accedere uno all'altro tramite SSH.All cluster nodes must be able to access each other via SSH. Strumenti come hb_report o crm_report (per la risoluzione dei problemi) e History Explorer di Hawk richiedono l'accesso a SSH tra i nodi senza password, in caso contrario possono raccogliere dati solo dal nodo corrente.Tools like hb_report or crm_report (for troubleshooting) and Hawk's History Explorer require passwordless SSH access between the nodes, otherwise they can only collect data from the current node. Nel caso in cui si usi una porta SSH non standard, usare l'opzione -X (vedere la pagina relativa a man).In case you use a non-standard SSH port, use the -X option (see man page). Se, ad esempio, la porta SSH è 3479, richiamare un oggetto hb_report con:For example, if your SSH port is 3479, invoke an hb_report with:

    crm_report -X "-p 3479" [...]
    

    Per altre informazioni, vedere i requisiti di sistema e consigli nella documentazione di SUSE.For more information, see System Requirements and Recommendations in the SUSE documentation.

  3. Installare l'estensione per la disponibilità elevata.Install the High Availability extension. Per installare l'estensione, seguire la procedura nell'argomento SUSE seguente:To install the extension, follow the steps in the following SUSE topic:

    Installation and Setup Quick Start (Guida introduttiva all'installazione e alla configurazione)Installation and Setup Quick Start

  4. Installare l'agente delle risorse FCI per SQL Server.Install the FCI resource agent for SQL Server. Eseguire i comandi seguenti in entrambi i nodi:Run the following commands on both nodes:

    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-ha
    
  5. Configurare automaticamente il primo nodo.Automatically set up the first node. Il passaggio successivo consiste nel configurare un cluster a un nodo in esecuzione configurando il primo nodo, SLES1.The next step is to setup a running one-node cluster by configuring the first node, SLES1. Seguire le istruzioni nell'argomento SUSE Setting Up the First Node (Configurazione del primo nodo).Follow the instructions in the SUSE topic, Setting Up the First Node.

    Al termine, verificare lo stato del cluster con crm status:When finished, check the cluster status with crm status:

    crm status
    

    Dovrebbe indicare che il nodo, SLES1, è configurato.It should show that one node, SLES1, is configured.

  6. Aggiungere nodi a un cluster esistente.Add nodes to an existing cluster. Aggiungere quindi il nodo SLES2 al cluster.Next join the SLES2 node to the cluster. Seguire le istruzioni nell'argomento SUSE Adding the Second Node (Aggiunta del secondo nodo).Follow the instructions in the SUSE topic, Adding the Second Node.

    Al termine, verificare lo stato del cluster con crm status.When finished, check the cluster status with crm status. Se il secondo nodo è stato aggiunto correttamente, l'output sarà simile al seguente:If you have successfully added a second node, the output will be similar to the following:

    2 nodes configured
    1 resource configured
    Online: [ SLES1 SLES2 ]
    Full list of resources:
    admin_addr     (ocf::heartbeat:IPaddr2):       Started SLES1
    

    Nota

    admin_addr è la risorsa cluster IP virtuale configurata durante l'installazione iniziale del cluster a un nodo.admin_addr is the virtual IP cluster resource which is configured during initial one-node cluster setup.

  7. Procedure di rimozione.Removal procedures. Se si vuole rimuovere un nodo dal cluster, usare lo script di bootstrap ha-cluster-remove.If you need to remove a node from the cluster, use the ha-cluster-remove bootstrap script. Per altre informazioni, vedere Overview of the Bootstrap Scripts (Panoramica degli script di bootstrap).For more information, see Overview of the Bootstrap Scripts.

Configurare le risorse del cluster per SQL ServerConfigure the cluster resources for SQL Server

I passaggi seguenti illustrano come configurare la risorsa cluster per SQL Server.The following steps explain how to configure the cluster resource for SQL Server. Esistono due impostazioni che è necessario personalizzare.There are two settings that you need to customize.

  • Nome risorsa SQL Server: un nome per la risorsa cluster di SQL Server.SQL Server Resource Name: A name for the clustered SQL Server resource.
  • Valore di timeout: il valore di timeout è la quantità di tempo che il cluster rimane in attesa mentre una risorsa viene portata online.Timeout Value: The timeout value is the amount of time that the cluster waits while a resource is brought online. Per SQL Server, questo è l'ora in cui si prevede di SQL Server per portare il master online del database.For SQL Server, this is the time that you expect SQL Server to take to bring the master database online.

Aggiornare i valori dallo script seguente per l'ambiente.Update the values from the following script for your environment. Eseguire in un nodo per configurare e avviare il servizio cluster.Run on one node to configure and start the clustered service.

sudo crm configure
primitive <sqlServerResourceName> ocf:mssql:fci op start timeout=<timeout_in_seconds>
colocation <constraintName> inf: <virtualIPResourceName> <sqlServerResourceName>
show
commit
exit

Ad esempio, lo script seguente crea una risorsa cluster di SQL Server denominata mssqlha.For example, the following script creates a SQL Server clustered resource named 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, la configurazione di SQL Server viene avviato nello stesso nodo della risorsa IP virtuale.After the configuration is committed, SQL Server will start on the same node as the virtual IP resource.

Per altre informazioni, vedere Configuring and Managing Cluster Resources (riga di comando).For more information, see Configuring and Managing Cluster Resources (Command Line).

Verificare che SQL Server è stato avviato.Verify that SQL Server is started.

Per verificare che SQL Server è stato avviato, eseguire la crm stato comando:To verify that SQL Server is started, run the crm status command:

crm status

Negli esempi seguenti vengono illustrati i risultati quando Pacemaker avviato correttamente come risorsa cluster.The following examples shows the results when Pacemaker has successfully started as clustered resource.

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

La gestione delle risorse clusterManaging cluster resources

Per gestire le risorse del cluster, vedere l'argomento SUSE seguente: gestione delle risorse ClusterTo manage your cluster resources,see the following SUSE topic: Managing Cluster Resources

Failover manualeManual failover

Anche se le risorse sono configurate per automaticamente il failover o eseguire la migrazione da altri nodi del cluster in caso di errore hardware o software, è possibile spostare una risorsa manualmente in un altro nodo del cluster usando l'interfaccia utente grafica di Pacemaker o la riga di comando .Although resources are configured to automatically fail over (or migrate) to other nodes of the cluster in the event of a hardware or software failure, you can also manually move a resource to another node in the cluster using either the Pacemaker GUI or the command line.

Usare il comando Migra per questa attività.Use the migrate command for this task. Ad esempio, per eseguire la migrazione della risorsa SQL a un nome di nodo SLES2 cluster eseguire:For example, to migrate the SQL resource to a cluster node names SLES2 execute:

crm resource
migrate mssqlha SLES2

Risorse aggiuntiveAdditional resources

Estensione per la disponibilità elevata SUSE Enterprise Linux: Guida all'amministrazioneSUSE Linux Enterprise High Availability Extension - Administration Guide