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
Installera och konfigurera SQL Server på båda noderna. Detaljerade anvisningar finns i Installationsvägledning för SQL Server på Linux.
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.
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.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 medsa
-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.
På den primära noden stoppar och inaktiverar du SQL Server.
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 namnetSLES1
ochSLES2
.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
ellercrm_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 ducrm_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:
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.
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
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.
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.
Installera tillägget för hög tillgänglighet. Följ stegen i följande SUSE-artikel för att installera tillägget:
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
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.
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.
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