Dela via


Konfigurera SLES-delat diskkluster för SQL Server

gäller för:SQL Server – Linux

Den här guiden innehåller instruktioner för att skapa ett delat diskkluster med två noder för SQL Server på SUSE Linux Enterprise Server (SLES). Klustringsskiktet baseras på SUSE Hög tillgänglighetstillägg (HAE) som bygger på Pacemaker.

Mer information om klusterkonfiguration, resursagentalternativ, hantering, metodtips och rekommendationer finns i SUSE Linux Enterprise High Availability Extension 12 SP5.

Förutsättningar

För att slutföra följande scenario från slutpunkt till slutpunkt behöver du två datorer för att distribuera de två nodklustret och en annan server för att konfigurera NFS-resursen. Nedan beskrivs hur dessa servrar ska konfigureras.

Konfigurera operativsystemet på varje klusternod

Det första steget är att konfigurera operativsystemet på klusternoderna. För den här genomgången använder du SLES med en giltig prenumeration för HA-tillägget.

Installera och konfigurera SQL Server på varje klusternod

  1. Installera och konfigurera SQL Server på båda noderna. Detaljerade anvisningar finns i Installationsvägledning för SQL Server på Linux.

  2. Ange en nod som primär och den andra som sekundär i konfigurationssyfte. Använd de här termerna för att följa den här guiden.

  3. På den sekundära noden stoppar och inaktiverar du SQL Server. I följande exempel stoppas och inaktiveras SQL Server:

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

    Observera

    Vid installationen genereras en serverhuvudnyckel för SQL Server-instansen och placeras på /var/opt/mssql/secrets/machine-key. I Linux körs SQL Server alltid som ett lokalt konto med namnet mssql. Eftersom det är ett lokalt konto delas inte dess identitet mellan noder. Därför måste du kopiera krypteringsnyckeln från den primära noden till varje sekundär nod så att varje lokalt mssql-konto kan komma åt den för att dekryptera serverhuvudnyckeln.

  4. På den primära noden skapar du en SQL Server-inloggning för Pacemaker och ger inloggningsbehörighet för att köra sp_server_diagnostics. Pacemaker använder det här kontot för att kontrollera vilken nod som kör SQL Server.

    sudo systemctl start mssql-server
    

    Anslut till SQL Server master-databasen med sa-kontot och kör följande:

    USE [master]
    GO
    CREATE LOGIN [<loginName>] with PASSWORD= N'<password>'
    GRANT VIEW SERVER STATE TO <loginName>
    

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

  5. På den primära noden stoppar och inaktiverar du SQL Server.

  6. Följ anvisningarna i SUSE-dokumentationen för att konfigurera och uppdatera värdfilen för varje klusternod. Den hosts filen måste innehålla IP-adressen och namnet på varje klusternod.

    Om du vill kontrollera IP-adressen för den aktuella noden kör du:

    sudo ip addr show
    

    Ange datornamnet på varje nod. Ge varje nod ett unikt namn som är högst 15 tecken. Ange datornamnet genom att lägga till det i /etc/hostname med hjälp av YAST- eller manuellt .

    I följande exempel visas /etc/hosts med tillägg för två noder med namnet SLES1 och SLES2.

    127.0.0.1      localhost
    10.128.18.128  SLES1
    10.128.16.77   SLES2
    

    Alla klusternoder måste kunna komma åt varandra via SSH. Verktyg som hb_report eller crm_report (för felsökning) och Hawk's History Explorer kräver lösenordslös SSH-åtkomst mellan noderna, annars kan de bara samla in data från den aktuella noden. Om du använder en SSH-port som inte är standard använder du alternativet -X (se Andra krav och rekommendationer). Om SSH-porten till exempel är 3479 anropar du crm_report med:

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

    Mer information finns i administrationsguiden.

I nästa avsnitt konfigurerar du delad lagring och flyttar databasfilerna till lagringen.

Konfigurera delad lagring och flytta databasfiler

Det finns olika lösningar för att tillhandahålla delad lagring. Den här genomgången visar hur du konfigurerar delad lagring med NFS. Vi rekommenderar att du följer metodtipsen och använder Kerberos för att skydda NFS:

Om du inte följer den här vägledningen kan alla som har åtkomst till nätverket och förfalska IP-adressen för en SQL-nod komma åt dina datafiler. Se som alltid till att hotmodellera systemet innan du använder det i produktion.

Ett annat lagringsalternativ är att använda SMB-fildelning.

Konfigurera en NFS-server

Information om hur du konfigurerar en NFS-server finns i följande steg i SUSE-dokumentationen: Konfigurera NFS Server.

Konfigurera alla klusternoder för att ansluta till den delade NFS-lagringen

Innan du konfigurerar klientens NFS för att montera sökvägen till SQL Server-databasfilerna så att den pekar på den delade lagringsplatsen måste du spara databasfilerna på en tillfällig plats för att kunna kopiera dem senare på resursen:

  1. På den primära noden endastsparar du databasfilerna på en tillfällig plats. Följande skript skapar en ny tillfällig katalog, kopierar databasfilerna till den nya katalogen och tar bort de gamla databasfilerna. När SQL Server körs som lokal användare mssql måste du se till att den lokala användaren har läs- och skrivåtkomst till resursen efter dataöverföringen till den monterade resursen.

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

    Konfigurera NFS-klienten på alla klusternoder:

    Not

    Du bör följa SUSE:s metodtips och rekommendationer för NFS-lagring med hög tillgänglighet: NFS-lagring med hög tillgänglighet med DRBD och Pacemaker.

  2. Kontrollera att SQL Server startar framgångsrikt med den nya filsökvägen. Gör detta på varje nod. Nu ska endast en nod köra SQL Server i taget. Båda kan inte köras samtidigt eftersom de båda försöker komma åt datafilerna samtidigt (för att undvika att oavsiktligt starta SQL Server på båda noderna använder du en filsystemklusterresurs för att se till att resursen inte monteras två gånger av de olika noderna). Följande kommandon startar SQL Server, kontrollerar statusen och stoppar sedan SQL Server.

    sudo systemctl start mssql-server
    sudo systemctl status mssql-server
    sudo systemctl stop mssql-server
    

I det här läget är båda instanserna av SQL Server konfigurerade att köras med databasfilerna på den delade lagringen. Nästa steg är att konfigurera SQL Server för Pacemaker.

Installera och konfigurera Pacemaker på varje klusternod

  1. På båda klusternoderna skapar du en fil för att lagra SQL Server-användarnamnet och lösenordet för Pacemaker-inloggningen. Följande kommando skapar och fyller i den här filen:

    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/passwd
    

    Försiktighet

    Lösenordet bör följa SQL Server-standardprincipen för lösenord. Lösenordet måste som standard vara minst åtta tecken långt och innehålla tecken från tre av följande fyra uppsättningar: versaler, gemener, bas-10 siffror och symboler. Lösenord kan vara upp till 128 tecken långa. Använd lösenord som är så långa och komplexa som möjligt.

  2. Alla klusternoder måste kunna komma åt varandra via SSH-. Verktyg som hb_report eller crm_report (för felsökning) och Hawk's History Explorer kräver lösenordslös SSH-åtkomst mellan noderna, annars kan de bara samla in data från den aktuella noden. Om du använder en SSH-port som inte är standard använder du alternativet -X (se sidan man). Om SSH-porten till exempel är 3479 anropar du en hb_report med:

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

    Mer information finns i Systemkrav och rekommendationer i SUSE-dokumentationen.

  3. Installera tillägget för hög tillgänglighet. Följ stegen i följande SUSE-artikel för att installera tillägget:

    Snabbstart för installation och konfiguration

  4. Installera FCI-resursagenten för SQL Server. Kör följande kommandon på båda noderna:

    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. Konfigurera automatiskt den första noden. Nästa steg är att sätta upp ett igångsatt en-nodskluster genom att konfigurera den första noden, SLES1. Följ anvisningarna i SUSE-artikeln Konfigurera den första noden.

    När du är klar kontrollerar du klusterstatusen med crm status:

    crm status
    

    Den bör visa att en nod, SLES1, är konfigurerad.

  6. Lägg till noder i ett befintligt kluster. Anslut sedan SLES2-noden till klustret. Följ anvisningarna i SUSE-artikeln Lägga till den andra noden.

    När du är klar kontrollerar du klusterstatusen med crm status. Om du har lagt till en andra nod kommer utdata att likna följande:

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

    Not

    admin_addr är den virtuella IP-klusterresursen som konfigureras under den första klusterkonfigurationen med en nod.

  7. Procedurer för borttagning. Om du behöver ta bort en nod från klustret använder du ha-cluster-remove- bootstrap-skript. Mer information finns i Översikt över Bootstrap-skripten.

Konfigurera klusterresurserna för SQL Server

Följande steg beskriver hur du konfigurerar klusterresursen för SQL Server. Det finns två inställningar som du behöver anpassa.

  • SQL Server-resursnamn: Ett namn på den klustrade SQL Server-resursen.
  • timeout-värde: Timeout-värdet är den tid som klustret väntar medan en resurs kopplas upp. För SQL Server är det den tid som du förväntar dig att SQL Server ska ta för att få master-databasen online.

Uppdatera värdena från följande skript för din miljö. Kör på en nod för att konfigurera och starta den klustrade tjänsten.

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

Följande skript skapar till exempel en SQL Server-klustrad resurs med namnet mssqlha.

sudo crm configure
primitive mssqlha ocf:mssql:fci op start timeout=60s
colocation admin_addr_mssqlha inf: admin_addr mssqlha
show
commit
exit

När konfigurationen har bekräftats startar SQL Server på samma nod som den virtuella IP-resursen.

Mer information finns i Konfigurera och hantera klusterresurser (kommandorad).

Kontrollera att SQL Server har startats

Kontrollera att SQL Server har startats genom att köra kommandot crm-status:

crm status

I följande exempel visas resultatet när Pacemaker framgångsrikt har startat som klustrad resurs.

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

Hantera klusterresurser

Information om hur du hanterar klusterresurser finns i följande SUSE-artikel: Hantera klusterresurser

Manuell växling

Även om resurser är konfigurerade för att automatiskt överföras (eller migreras) till andra noder i klustret vid ett maskinvaru- eller programvarufel, kan du också manuellt flytta en resurs till en annan nod i klustret med hjälp av Pacemaker-GUI eller kommandoraden.

Använd migreringskommandot för den här uppgiften. Om du till exempel vill migrera SQL-resursen till ett klusternodnamn kör SLES2:

crm resource
migrate mssqlha SLES2