Dela via


Konfigurera redundansklusterinstans – SQL Server på Linux (RHEL)

gäller för:SQL Server – Linux

En SQL Server-klusterinstans med två noder för delad disk ger redundans på servernivå för hög tillgänglighet. I den här självstudien får du lära dig hur du skapar en redundansklusterinstans med två noder av SQL Server i Linux. De specifika steg som du ska slutföra är:

  • Konfigurera Linux
  • Installera och konfigurera SQL Server
  • Konfigurera värdfilen
  • Konfigurera delad lagring och flytta databasfilerna
  • Installera och konfigurera Pacemaker på varje klusternod
  • Konfigurera failover-klusterinstansen

Den här artikeln beskriver hur du skapar en tvånods delad diskklusterinstans (FCI) för SQL Server. Artikeln innehåller instruktioner och skriptexempel för Red Hat Enterprise Linux (RHEL). Ubuntu-distributioner liknar RHEL så skriptexemplen fungerar normalt också på Ubuntu.

Konceptuell information finns i Redundansklusterinstanser – SQL Server på Linux.

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 lagring. Nedan beskrivs hur dessa servrar ska konfigureras.

Konfigurera Linux

Det första steget är att konfigurera operativsystemet på klusternoderna. Konfigurera en Linux-distribution på varje nod i klustret. Använd samma distribution och version på båda noderna. Använd antingen den ena eller den andra av följande distributioner:

  • RHEL med en giltig prenumeration för HA-tillägget

Installera och konfigurera SQL Server

  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 i 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
    

    Note

    Vid konfigurationen genereras en serverhuvudnyckel för SQL Server-instansen och placeras på var/opt/mssql/secrets/machine-key. I Linux, SQL Server, körs 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>';
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [<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.

    Du kan också ange behörigheterna på en mer detaljerad nivå. Pacemaker-inloggningen kräver VIEW SERVER STATE för att utföra frågor om hälsostatus med sp_server_diagnostics, hantera setupadminoch ändra valfri länkad server för att uppdatera FCI-instansnamnet med resursnamnet genom att köra sp_dropserver och sp_addserver.

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

Konfigurera värdfilen

Konfigurera värdfilen på varje klusternod. Värdfilen måste innehålla IP-adressen och namnet på varje klusternod.

  1. Kontrollera IP-adressen för varje nod. Följande skript visar IP-adressen för din aktuella nod.

    sudo ip addr show
    
  2. 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/hosts. Med följande skript kan du redigera /etc/hosts med vi.

    sudo vi /etc/hosts
    

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

    127.0.0.1        localhost localhost4 localhost4.localdomain4
    ::1              localhost localhost6 localhost6.localdomain6
    10.128.18.128    sqlfcivm1
    10.128.16.77     sqlfcivm2
    

Konfigurera lagring och flytta databasfiler

Du måste tillhandahålla lagring som båda noderna kan komma åt. Du kan använda iSCSI, NFS eller SMB. Konfigurera lagring, presentera lagringen för klusternoderna och flytta sedan databasfilerna till den nya lagringen. I följande artiklar beskrivs stegen för varje lagringstyp:

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 '<loginPassword>' >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 600 /var/opt/mssql/secrets/passwd
    
  2. Öppna Pacemaker-brandväggsportarna på båda klusternoderna. Om du vill öppna dessa portar med firewalldkör du följande kommando:

    sudo firewall-cmd --permanent --add-service=high-availability
    sudo firewall-cmd --reload
    

    Om du använder en annan brandvägg som inte har någon inbyggd konfiguration med hög tillgänglighet måste följande portar öppnas för att Pacemaker ska kunna kommunicera med andra noder i klustret:

    • TCP: Portar 2224, 3121, 21064
    • UDP: Port 5405
  3. Installera Pacemaker-paket på varje nod.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  4. Ange lösenordet för standardanvändaren som skapas när du installerar Pacemaker- och Corosync-paket. Använd samma lösenord på båda noderna.

    sudo passwd hacluster
    
  5. Aktivera och starta pcsd-tjänsten och Pacemaker. Detta gör det möjligt för noder att återansluta till klustret efter omstarten. Kör följande kommando på båda noderna.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  6. Installera FCI-resursagenten för SQL Server. Kör följande kommandon på båda noderna.

    sudo yum install mssql-server-ha
    

Konfigurera redundansklusterinstansen

FCI skapas i en resursgrupp. Detta är något enklare eftersom resursgruppen minskar behovet av begränsningar. Lägg dock till resurserna i resursgruppen i den ordning de ska starta. Den ordning de ska starta är:

  1. Lagringsresurs
  2. Nätverksresurs
  3. Programresurs

Det här exemplet skapar en FCI i gruppen NewLinFCIGrp. Namnet på resursgruppen måste vara unikt från alla resurser som skapats i Pacemaker.

  1. Skapa diskresursen. Du får inget svar om det inte finns något problem. Hur du skapar diskresursen beror på lagringstypen. I följande avsnitt visas exempel för varje lagringstyp (iSCSI, NFS och SMB). Använd det exempel som är tillämpligt för lagringstypen för din klustrade lagring.

    sudo pcs resource create <iSCSIDiskResourceName> Filesystem device="/dev/<VolumeGroupName>/<LogicalVolumeName>" directory="<FolderToMountiSCSIDisk>" fstype="<FileSystemType>" --group RGName
    
    • <iSCSIDIskResourceName> är namnet på resursen som är associerad med iSCSI-disken
    • <VolumeGroupName> är namnet på volymgruppen
    • <LogicalVolumeName> är namnet på den logiska volym som skapades
    • <FolderToMountiSCSIDIsk> är mappen för att montera disken (för systemdatabaser och standardplatsen skulle det vara /var/opt/mssql/data)
    • <FileSystemType> skulle vara EXT4 eller XFS, beroende på hur saker och ting formaterades och vad fördelningen stöder.

  1. Skapa den IP-adress som ska användas av FCI:n. Du får inget svar om det inte finns något problem.

    sudo pcs resource create <IPResourceName> ocf:heartbeat:IPaddr2 ip=<IPAddress> nic=<NetworkCard> cidr_netmask=<NetMask> --group <RGName>
    
    • <IPResourceName> är namnet på resursen som är associerad med IP-adressen
    • <IPAddress> är IP-adressen för FCI
    • <NetworkCard> är nätverkskortet som är associerat med undernätet (d.v.s. eth0)
    • <NetMask> är nätmasken för undernätet (d.v.s. 24)
    • <RGName> är namnet på resursgruppen
  2. Skapa FCI-resursen. Du får inget svar om det inte finns något problem.

    sudo pcs resource create FCIResourceName ocf:mssql:fci op defaults timeout=60s --group RGName
    
    • <FCIResourceName> är inte bara namnet på resursen, utan det vänliga namnet som är associerat med FCI. Det här är vad användare och program använder för att ansluta.
    • <RGName> är namnet på resursgruppen.
  3. Kör kommandot sudo pcs resource. FCI:n bör vara online.

  4. Anslut till FCI med SSMS eller sqlcmd med hjälp av FCI:ns DNS/resursnamn.

  5. Utfärda uttalandet SELECT @@SERVERNAME. Det bör returnera namnet på FCI: n.

  6. Utfärda uttalandet SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS'). Den bör returnera namnet på noden som FCI körs på.

  7. Utför manuell överflyttning av FCI till de andra noderna. Se anvisningarna under Använda redundansklusterinstans – SQL Server på Linux.

  8. Slutligen återställ FCI till den ursprungliga noden och ta bort samlokaliseringsbegränsningen.

Sammanfattning

I den här självstudien har du slutfört följande uppgifter.

  • Konfigurera Linux
  • Installera och konfigurera SQL Server
  • Konfigurera värdfilen
  • Konfigurera delad lagring och flytta databasfilerna
  • Installera och konfigurera Pacemaker på varje klusternod
  • Konfigurera failoverklusterinstansen