Dela via


Använda RHEL-redundansklusterinstans (FCI) för SQL Server

gäller för:SQL Server – Linux

I det här dokumentet beskrivs hur du utför följande uppgifter för SQL Server på ett delat diskredundanskluster med Red Hat Enterprise Linux.

  • Växla över klustret manuellt
  • Övervaka en SQL Server-tjänst för redundanskluster
  • Lägga till en klusternod
  • Ta bort en klusternod
  • Ändra frekvensen för SQL Server-resursövervakning

Beskrivning av arkitektur

Klustringsskiktet baseras på Red Hat Enterprise Linux (RHEL) HA-tillägg som bygger på Pacemaker. Corosync och Pacemaker samordnar klusterkommunikation och resurshantering. SQL Server-instansen är aktiv på antingen en nod eller en annan.

Följande diagram illustrerar komponenterna i ett Linux-kluster med SQL Server.

diagram över Red Hat Enterprise Linux 7 Shared Disk SQL-kluster.

Mer information om klusterkonfiguration, alternativ för resursagenter och hantering finns i RHEL-referensdokumentation.

Manuellt failöverkluster

Kommandot resource move skapar en begränsning som tvingar resursen att starta på målnoden. När du har kört kommandot move tas villkoret bort när resursen clear körs, så att det blir möjligt att flytta resursen igen eller att resursen automatiskt växlas över.

sudo pcs resource move <sqlResourceName> <targetNodeName>
sudo pcs resource clear <sqlResourceName>

I följande exempel flyttas mssqlha resurs till en nod med namnet sqlfcivm2och tar sedan bort villkoret så att resursen kan flyttas till en annan nod senare.

sudo pcs resource move mssqlha sqlfcivm2
sudo pcs resource clear mssqlha

Övervaka en SQL Server-tjänst för redundanskluster

Visa aktuell klusterstatus:

sudo pcs status

Visa livestatus för kluster och resurser:

sudo crm_mon

Visa resursagentloggarna på /var/log/cluster/corosync.log

Lägga till en nod i ett kluster

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

    ip addr show
    
  2. Den nya noden behöver ett unikt namn som är högst 15 tecken. Som standard i Red Hat Linux är datornamnet localhost.localdomain. Det här standardnamnet kanske inte är unikt och är för långt. Ange datorns namn på den nya noden. 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 tre noder med namnet sqlfcivm1, sqlfcivm2och sqlfcivm3.

    127.0.0.1      localhost localhost4 localhost4.localdomain4
    ::1            localhost localhost6 localhost6.localdomain6
    10.128.18.128  fcivm1
    10.128.16.77   fcivm2
    10.128.14.26   fcivm3
    

    Filen ska vara densamma på varje nod.

  3. Stoppa SQL Server-tjänsten på den nya noden.

  4. Följ anvisningarna för att montera databasfilkatalogen på den delade platsen:

    Installera nfs-utils från NFS-servern

    sudo yum -y install nfs-utils
    

    Öppna brandväggen på klienter och NFS-servern

    sudo firewall-cmd --permanent --add-service=nfs
    sudo firewall-cmd --permanent --add-service=mountd
    sudo firewall-cmd --permanent --add-service=rpc-bind
    sudo firewall-cmd --reload
    

    Redigera /etc/fstab-filen så att den innehåller monteringskommandot:

    <IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr
    

    Kör mount -a för att ändringarna ska börja gälla.

  5. På den nya noden 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/passwd
    sudo echo "<loginName>" >> /var/opt/mssql/secrets/passwd
    sudo echo "<password>" >> /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/passwd
    sudo chmod 600 /var/opt/mssql/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.

  6. Öppna Pacemaker-brandväggsportarna på den nya noden. 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
  7. Installera Pacemaker-paket på den nya noden.

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

    sudo passwd hacluster
    
  9. Aktivera och starta pcsd-tjänsten och Pacemaker. Detta gör att den nya noden kan återansluta till klustret efter omstarten. Kör följande kommando på den nya noden.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  10. Installera FCI-resursagenten för SQL Server. Kör följande kommandon på den nya noden.

    sudo yum install mssql-server-ha
    
  11. Autentisera den nya noden på en befintlig nod från klustret och lägg till den i klustret:

    sudo pcs cluster auth <nodeName3> -u hacluster
    sudo pcs cluster node add <nodeName3>
    

    I följande exempel läggs en nod med namnet vm3 till klustret.

    sudo pcs cluster auth
    sudo pcs cluster start
    

Ta bort noder från ett kluster

Kör följande kommando för att ta bort en nod från ett kluster:

sudo pcs cluster node remove <nodeName>

Ändra frekvensen för resursövervakningsintervallet för sqlservr

sudo pcs resource op monitor interval=<interval>s <sqlResourceName>

I följande exempel anges övervakningsintervallet till 2 sekunder för mssql-resursen:

sudo pcs resource op monitor interval=2s mssqlha

Felsöka Red Hat Enterprise Linux-delat diskkluster för SQL Server

När du felsöker klustret hjälper det dig att förstå hur de tre daemonerna fungerar tillsammans för att hantera klusterresurser.

Demon Beskrivning
Corosync Ger kvorummedlemskap och meddelanden mellan klusternoder.
Hjärtstimulator Finns ovanpå Corosync och tillhandahåller tillståndsdatorer för resurser.
PCSD Hanterar både Pacemaker och Corosync via pcs verktyg.

PCSD måste köras för att kunna använda pcs verktyg.

Aktuell klusterstatus

sudo pcs status returnerar grundläggande information om klustret, kvorum, noder, resurser och daemonstatus för varje nod.

Exempel på ett hälsosamt pacemakerkvorumutdata skulle vara:

Cluster name: MyAppSQL
Last updated: Wed Oct 31 12:00:00 2016  Last change: Wed Oct 31 11:00:00 2016 by root via crm_resource on sqlvmnode1
Stack: corosync
Current DC: sqlvmnode1  (version 1.1.13-10.el7_2.4-44eb2dd) - partition with quorum
3 nodes and 1 resource configured

Online: [ sqlvmnode1 sqlvmnode2 sqlvmnode3 ]

Full list of resources:

mssqlha (ocf::sql:fci): Started sqlvmnode1

PCSD Status:
sqlvmnode1: Online
sqlvmnode2: Online
sqlvmnode3: Online

Daemon Status:
corosync: active/disabled
pacemaker: active/enabled

I exemplet betyder partition with quorum att en majoritetskvot av noder är online. Om klustret förlorar en majoritet av noderna, returnerar pcs statuspartition WITHOUT quorum och alla resurser stoppas.

online: [sqlvmnode1 sqlvmnode2 sqlvmnode3] returnerar namnet på alla noder som för närvarande deltar i klustret. Om några noder inte deltar returnerar pcs statusOFFLINE: [<nodename>].

PCSD Status visar klusterstatus för varje nod.

Orsaker till varför en nod kan vara offline

Kontrollera följande objekt när en nod är offline.

  • Brandvägg

    Följande portar måste vara öppna på alla noder för att Pacemaker ska kunna kommunicera.

    • **TCP: 2224, 3121, 21064
  • Pacemaker- eller Corosync-tjänster som kör

  • Node-kommunikation

  • Nodnamnmappningar