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

QUESTO ARGOMENTO SI APPLICA A: noSQL Server su WindowssìSQL Server su LinuxnoDatabase SQL di AzurenoAzure SQL Data WarehousenoParallel Data Warehouse THIS TOPIC APPLIES TO: noSQL Server on WindowsyesSQL Server on LinuxnoAzure SQL DatabasenoAzure SQL Data WarehousenoParallel Data Warehouse

Questa guida fornisce istruzioni su come creare un cluster di dischi condivisi 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) compilato in cima Pacemaker.The clustering layer is based on SUSE High Availability Extension (HAE) built on top of Pacemaker.

Per ulteriori informazioni su configurazione cluster, le opzioni di agente di risorse, gestione, procedure consigliate e indicazioni, vedere SUSE Linux Enterprise ad alta disponibilità estensione 12 SP2.For more details 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 devono essere presenti due macchine per distribuire il cluster a due nodi e un altro server per configurare la condivisione NFS.To complete the end-to-end scenario below you need two machines to deploy the two nodes cluster and another server to configure the NFS share. Passaggi seguenti viene descritto come questi server verranno configurati.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, è possibile utilizzare 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 in entrambi i nodi.Install and setup SQL Server on both nodes. Per informazioni dettagliate vedere installazione di SQL Server in Linux.For detailed instructions see Install SQL Server on Linux.
  2. Specificare un nodo primario e l'altro come secondario, ai fini di configurazione.Designate one node as primary and the other as secondary, for purposes of configuration. Utilizzare questi termini per le operazioni seguenti in questa Guida.Use these terms for the following this guide.
  3. Nel nodo secondario, arrestare e disabilitare il Server SQL.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, una chiave Master del Server viene generato per l'istanza di SQL Server e inserito in var/rifiutare/mssql/secrets /-chiave del computer.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, l'identità non è condivise 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 a ogni nodo secondario in modo che ogni account locale mssql 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 utilizzerà questo account per verificare quale sia il nodo è in esecuzione SQL Server.Pacemaker will use 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 il Server SQL.On the primary node, stop and disable SQL Server.
  6. Seguire le istruzioni 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 utilizzando yast o manualmente.Set the computer name by adding it to /etc/hostname using yast or manually.

    Nell'esempio seguente /etc/hosts aggiunte 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 ai loro via 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 utilizza una porta SSH non standard, utilizzare l'opzione -X (vedere pagina man).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 ulteriori 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 verrà configurare l'archiviazione condivisa e spostare i file di database che l'archiviazione.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

Sono disponibili un'ampia gamma di soluzioni per fornire l'archiviazione condivisa.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. Si consiglia di seguire le procedure consigliate e utilizzare Kerberos per proteggere NFS:We recommend to follow best practices and use Kerberos to secure NFS:

Se non si segue queste linee guida, chiunque può accedere alla rete e 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 di minaccia del modello del sistema 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'utilizzare 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 del Server NFS.To configure an NFS server, refer to 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 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, 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 temporanea, copia i file di database nella nuova directory e rimuove i file di database precedente.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 di dati per la condivisione montata, utente locale ha 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 venga 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, solo un nodo deve eseguire SQL Server alla volta.At this point only one node should run SQL Server at a time. Non possono entrambi eseguiti nello stesso momento poiché entrambe tenteranno di accedere ai file di dati contemporaneamente (per evitare accidentalmente l'avvio di SQL Server in entrambi i nodi, utilizzare una risorsa cluster di File System per assicurarsi che la condivisione non è montata due volte per i diversi 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 di avvio di SQL Server, controllano 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 sono configurate per eseguire con i file di database all'archiviazione condivisa.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 su 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. Sono disponibili due impostazioni che si devono personalizzare.There are two settings that you need to customize.

  • Nome di risorsa di 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 attende 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 è il tempo che si prevede di SQL Server per portare il master database online.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 script below 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 di 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 ulteriori informazioni, vedere la configurazione e Gestione risorse di Cluster (riga di comando).For more information, see Configuring and Managing Cluster Resources (Command Line).

Verificare che SQL Server sia avviato.Verify that SQL Server is started.

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

crm status

Nell'esempio seguente vengono mostrati i risultati Pacemaker sia stata avviata 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 risorse di ClusterTo manage your cluster resources, refer to the following SUSE topic: Managing Cluster Resources

Failover manualeManual failover

Anche se le risorse vengono configurate automaticamente il failover o eseguire la migrazione da altri nodi del cluster in caso di errore hardware o software, è possibile spostare manualmente una risorsa a un altro nodo del cluster utilizzando l'interfaccia utente grafica 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.

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

crm resource
migrate mssqlha SLES2

Risorse aggiuntiveAdditional resources

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