Delen via


RHEL-failoverclusterinstance (FCI) configureren voor SQL Server

van toepassing op:SQL Server- - Linux

Deze handleiding bevat instructies voor het maken van een failovercluster met twee knooppunten voor gedeelde schijven voor SQL Server op Red Hat Enterprise Linux. De clusteringlaag is gebaseerd op Red Hat Enterprise Linux (RHEL) HA-invoegtoepassing gebouwd op Pacemaker. Het SQL Server-exemplaar is actief op het ene knooppunt of het andere.

Notitie

Voor toegang tot de Red Hat HA-invoegtoepassing en documentatie is een abonnement vereist.

Zoals in het volgende diagram wordt weergegeven, wordt opslag weergegeven op twee servers. Clustering-onderdelen - Corosync en Pacemaker - communicatie en resourcebeheer coördineren. Een van de servers heeft de actieve verbinding met de opslagbronnen en de SQL Server. Wanneer Pacemaker een fout detecteert, zijn de clusteringonderdelen verantwoordelijk voor het verplaatsen van de resources naar het andere knooppunt.

diagram van het SQL Server-cluster met gedeelde Schijven van Red Hat Enterprise Linux 7.

Ga naar RHEL-referentiedocumentatievoor meer informatie over clusterconfiguratie, opties voor resourceagents en beheer.

Op dit moment is SQL Server-integratie met Pacemaker niet zo gekoppeld aan WSFC in Windows. Vanuit SQL Server is er geen kennis over de aanwezigheid van het cluster, vindt alle orkestratie van buitenaf plaats en wordt de service door Pacemaker als een zelfstandige instantie aangestuurd. Clusters sys.dm_os_cluster_nodes en sys.dm_os_cluster_properties zullen geen records hebben.

Als ze een verbindingsreeks willen gebruiken die naar een servernaam verwijst en niet het IP-adres gebruiken, moeten zij op hun DNS-server het IP-adres registreren dat werd gebruikt om de virtuele IP-resource aan te maken (zoals uitgelegd in de volgende secties) met de gekozen servernaam.

In de volgende secties worden de stappen beschreven voor het instellen van een failoverclusteroplossing.

Voorwaarden

Als u het volgende end-to-end-scenario wilt voltooien, hebt u twee computers nodig om het cluster met twee knooppunten en een andere server te implementeren om de NFS-server te configureren. In de volgende stappen wordt beschreven hoe deze servers worden geconfigureerd.

Het besturingssysteem op elk clusterknooppunt instellen en configureren

De eerste stap is het configureren van het besturingssysteem op de clusterknooppunten. Voor deze doorloop gebruikt u RHEL met een geldig abonnement voor de HA-add-on.

SQL Server installeren en configureren op elk clusterknooppunt

  1. Installeer en configureer SQL Server op beide knooppunten. Zie Installatierichtlijnen voor SQL Server op Linuxvoor gedetailleerde instructies.

  2. Wijs het ene knooppunt aan als primair en het andere als secundair voor configuratiedoeleinden. Gebruik deze termen voor het volgen van deze handleiding.

  3. Stop en schakel SQL Server uit op het secundaire knooppunt.

    In het volgende voorbeeld wordt SQL Server gestopt en uitgeschakeld:

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

Notitie

Tijdens de installatie wordt een serverhoofdsleutel gegenereerd voor het SQL Server-exemplaar en op /var/opt/mssql/secrets/machine-keygeplaatst. In Linux wordt SQL Server altijd uitgevoerd als een lokaal account met de naam mssql. Omdat het een lokaal account is, wordt de identiteit niet gedeeld tussen knooppunten. Daarom moet u de versleutelingssleutel van het primaire knooppunt kopiëren naar elk secundair knooppunt, zodat elk lokaal mssql-account toegang heeft tot het ontsleutelen van de hoofdsleutel van de server.

  1. Maak op het primaire knooppunt een SQL Server-aanmelding voor Pacemaker en verdeel de aanmeldingsmachtiging om sp_server_diagnosticsuit te voeren. Pacemaker gebruikt dit account om te controleren welk knooppunt SQL Server uitvoert.

    sudo systemctl start mssql-server
    

    Maak verbinding met de SQL Server-master-database met het sa-account en voer het volgende uit:

    USE [master];
    GO
    
    CREATE LOGIN [<loginName>]
        WITH PASSWORD = N'<password>';
    
    ALTER SERVER ROLE [sysadmin] ADD MEMBER [<loginName>];
    

    Voorzichtigheid

    Uw wachtwoord moet voldoen aan het standaardbeleid voor SQL Server wachtwoordbeleid. Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

    U kunt de machtigingen ook op een gedetailleerder niveau instellen. De Pacemaker-aanmelding vereist VIEW SERVER STATE om de gezondheidstoestand met sp_server_diagnosticsop te vragen, en setupadmin en ALTER ANY LINKED SERVER om de FCI-exemplaarnaam bij te werken met de resourcenaam door sp_dropserver en sp_addserveruit te voeren.

  2. Stop en schakel SQL Server uit op het primaire knooppunt.

  3. Configureer het hosts-bestand voor elk clusterknooppunt. Het hostbestand moet het IP-adres en de naam van elk clusterknooppunt bevatten.

    Controleer het IP-adres voor elk knooppunt. In het volgende script ziet u het IP-adres van uw huidige knooppunt.

    sudo ip addr show
    

    Stel de computernaam op elk knooppunt in. Geef elk knooppunt een unieke naam van 15 tekens of minder. Stel de computernaam in door deze toe te voegen aan /etc/hosts. Met het volgende script kunt u /etc/hosts bewerken met vi.

    sudo vi /etc/hosts
    

    In het volgende voorbeeld ziet u /etc/hosts met toevoegingen voor twee knooppunten met de naam sqlfcivm1 en sqlfcivm2.

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

In de volgende sectie configureert u gedeelde opslag en verplaatst u uw databasebestanden naar die opslag.

Gedeelde opslag configureren en databasebestanden verplaatsen

Er zijn verschillende oplossingen voor het leveren van gedeelde opslag. In dit overzicht ziet u hoe u gedeelde opslag configureert met NFS. We raden u aan best practices te volgen en Kerberos te gebruiken om NFS te beveiligen. Zie voor een voorbeeld RHEL7: Kerberos gebruiken om de toegang tot NFS-netwerkshares te beheren.

Waarschuwing

Als u NFS niet beveiligt, kan iedereen die toegang heeft tot uw netwerk en het IP-adres van een SQL-knooppunt vervalst, toegang krijgen tot uw gegevensbestanden. Zorg er zoals altijd voor dat u uw systeem bedreigingsmodel maakt voordat u het in productie gebruikt. Een andere opslagoptie is het gebruik van SMB-bestandsshare.

Gedeelde opslag configureren met NFS

Belangrijk

Het hosten van databasebestanden op een NFS-server met versie <4 wordt niet ondersteund in deze release. Dit omvat het gebruik van NFS voor failoverclustering van gedeelde schijven en databases op niet-geclusterde exemplaren. We werken aan het inschakelen van andere NFS-serverversies in de komende releases.

Voer op de NFS-server de volgende stappen uit:

  1. nfs-utils installeren

    sudo yum -y install nfs-utils
    
  2. rpcbind inschakelen en starten

    sudo systemctl enable rpcbind && sudo systemctl start rpcbind
    
  3. nfs-server inschakelen en starten

    sudo systemctl enable nfs-server && sudo systemctl start nfs-server
    
  4. Bewerk /etc/exports om de map te exporteren die u wilt delen. U hebt één regel nodig voor elke gewenste share. Bijvoorbeeld:

    /mnt/nfs  10.8.8.0/24(rw,sync,no_subtree_check,no_root_squash)
    
  5. De shares exporteren

    sudo exportfs -rav
    
  6. Controleer of de paden worden gedeeld/geëxporteerd, uitgevoerd vanaf de NFS-server

    sudo showmount -e
    
  7. Uitzondering toevoegen in SELinux

    sudo setsebool -P nfs_export_all_rw 1
    
  8. Open de firewall van de server.

    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
    

Alle clusterknooppunten configureren om verbinding te maken met de gedeelde NFS-opslag

Voer de volgende stappen uit op alle clusterknooppunten.

  1. nfs-utils installeren

    sudo yum -y install nfs-utils
    
  2. Open de firewall op clients en NFS-server

    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
    
  3. Controleer of u de NFS-shares op clientcomputers kunt zien

    sudo showmount -e <IP OF NFS SERVER>
    
  4. Herhaal deze stappen op alle clusterknooppunten.

Zie de volgende bronnen voor meer informatie over het gebruik van NFS:

Koppel de directory met databasebestanden aan de gedeelde opslag.

  1. Sla de databasebestanden alleen op een tijdelijke locatie op op het primaire knooppunt. Met het volgende script maakt u een nieuwe tijdelijke map, kopieert u de databasebestanden naar de nieuwe map en verwijdert u de oude databasebestanden. Als SQL Server wordt uitgevoerd als lokale gebruiker mssql, moet u ervoor zorgen dat na gegevensoverdracht naar de gekoppelde share lokale gebruiker lees-/schrijftoegang heeft tot de share.

    sudo su mssql
    mkdir /var/opt/mssql/tmp
    cp /var/opt/mssql/data/* /var/opt/mssql/tmp
    rm /var/opt/mssql/data/*
    exit
    
  2. Bewerk op alle clusterknooppunten het bestand /etc/fstab om de mount-opdracht op te nemen.

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

    In het volgende script ziet u een voorbeeld van de bewerking.

    10.8.8.0:/mnt/nfs /var/opt/mssql/data nfs timeo=14,intr
    

Notitie

Als u een FS-resource (File System) gebruikt zoals hier wordt aanbevolen, hoeft u de koppelingsopdracht in /etc/fstab niet te behouden. Pacemaker zorgt ervoor dat de map wordt aangekoppeld wanneer de geclusterde FS-resource wordt gestart. Met behulp van fencing zorgt het ervoor dat de FS nooit tweemaal wordt gemonteerd.

  1. Voer mount -a opdracht uit voor het systeem om de gekoppelde paden bij te werken.

  2. Kopieer de database- en logboekbestanden die u hebt opgeslagen in /var/opt/mssql/tmp naar de zojuist gekoppelde share /var/opt/mssql/data. Deze stap hoeft alleen te worden uitgevoerd op het primaire knooppunt. Zorg ervoor dat u lees-/schrijfmachtigingen geeft aan de mssql lokale gebruiker.

    sudo chown mssql /var/opt/mssql/data
    sudo chgrp mssql /var/opt/mssql/data
    sudo su mssql
    cp /var/opt/mssql/tmp/* /var/opt/mssql/data/
    rm /var/opt/mssql/tmp/*
    exit
    
  3. Controleer of SQL Server met succes wordt gestart met het nieuwe bestandspad. Doe dit op elk knooppunt. Op dit moment hoeft slechts één knooppunt SQL Server tegelijk uit te voeren. Ze kunnen niet beide tegelijk worden uitgevoerd, omdat ze beide tegelijkertijd toegang proberen te krijgen tot de gegevensbestanden (om te voorkomen dat SQL Server op beide knooppunten per ongeluk wordt gestart, gebruikt u een bestandssysteemclusterresource om ervoor te zorgen dat de share niet tweemaal wordt gekoppeld door de verschillende knooppunten). Met de volgende opdrachten start u SQL Server, controleert u de status en stopt u SQL Server.

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

Op dit moment zijn beide exemplaren van SQL Server geconfigureerd voor uitvoering met de databasebestanden in de gedeelde opslag. De volgende stap is het configureren van SQL Server voor Pacemaker.

Pacemaker installeren en configureren op elk clusterknooppunt

  1. Maak op beide clusterknooppunten een bestand om de gebruikersnaam en het wachtwoord van DE SQL Server op te slaan voor de pacemaker-aanmelding. Met de volgende opdracht wordt dit bestand gemaakt en ingevuld:

    sudo touch /var/opt/mssql/secrets/passwd
    echo '<loginName>' | sudo tee -a /var/opt/mssql/secrets/passwd
    echo '<password>' | sudo tee -a /var/opt/mssql/secrets/passwd
    sudo chown root:root /var/opt/mssql/secrets/passwd
    sudo chmod 600 /var/opt/mssql/secrets/passwd
    

    Voorzichtigheid

    Uw wachtwoord moet voldoen aan het standaard wachtwoordbeleid van SQL Server . Standaard moet het wachtwoord ten minste acht tekens lang zijn en tekens bevatten uit drie van de volgende vier sets: hoofdletters, kleine letters, basis-10 cijfers en symbolen. Wachtwoorden mogen maximaal 128 tekens lang zijn. Gebruik wachtwoorden die zo lang en complex mogelijk zijn.

  2. Open op beide clusterknooppunten de Pacemaker-firewallpoorten. Voer de volgende opdracht uit om deze poorten te openen met firewalld:

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

    Als u een andere firewall gebruikt die geen ingebouwde configuratie voor hoge beschikbaarheid heeft, moeten de volgende poorten worden geopend om Pacemaker te kunnen communiceren met andere knooppunten in het cluster:

    • TCP: poorten 2224, 3121, 21064
    • UDP: poort 5405
  3. Installeer Pacemaker-pakketten op elk knooppunt.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  4. Stel het wachtwoord in voor de standaardgebruiker die wordt gemaakt bij het installeren van Pacemaker- en Corosync-pakketten. Gebruik hetzelfde wachtwoord op beide knooppunten.

    sudo passwd hacluster
    
  5. Schakel pcsd service en Pacemaker in en start deze. Hierdoor kunnen knooppunten na het opnieuw opstarten opnieuw deelnemen aan het cluster. Voer de volgende opdracht uit op beide knooppunten.

    sudo systemctl enable pcsd
    sudo systemctl start pcsd
    sudo systemctl enable pacemaker
    
  6. Installeer de FCI-resourceagent voor SQL Server. Voer de volgende opdrachten uit op beide knooppunten.

    sudo yum install mssql-server-ha
    

Fencing-agent configureren

Een STONITH-apparaat biedt een fencing-agent. Pacemaker instellen op Red Hat Enterprise Linux in Azure biedt een voorbeeld om een STONITH-apparaat voor dit cluster in Azure te maken. Wijzig de instructies voor uw omgeving.

Het cluster maken

  1. Maak het cluster op een van de knooppunten.

    sudo pcs cluster auth <nodeName1 nodeName2 ...> -u hacluster
    sudo pcs cluster setup --name <clusterName> <nodeName1 nodeName2 ...>
    sudo pcs cluster start --all
    
  2. Configureer de clusterbronnen voor SQL Server-, bestandssysteem- en virtuele IP-resources en push de configuratie naar het cluster. U hebt de volgende informatie nodig:

    • sql Server-resourcenaam: een naam voor de geclusterde SQL Server-resource.
    • Dynamische IP-resourcenaam: een naam voor de virtuele IP-resource.
    • IP-adres: het IP-adres dat clients gebruiken om verbinding te maken met het geclusterde exemplaar van SQL Server.
    • bestandssysteembronnaam: een naam voor de bestandssysteemresource.
    • apparaat: het NFS-sharepad
    • apparaat: het lokale pad waar het aan de share is gekoppeld
    • fstype: Bestandstype voor delen (dat wil zeggen, nfs)

    Werk de waarden uit het volgende script voor uw omgeving bij. Voer het uit op één knooppunt om de geclusterde service te configureren en te starten.

    sudo pcs cluster cib cfg
    sudo pcs -f cfg resource create <sqlServerResourceName> ocf:mssql:fci
    sudo pcs -f cfg resource create <floatingIPResourceName> ocf:heartbeat:IPaddr2 ip=<ip Address>
    sudo pcs -f cfg resource create <fileShareResourceName> Filesystem device=<networkPath> directory=<localPath> fstype=<fileShareType>
    sudo pcs -f cfg constraint colocation add <virtualIPResourceName> <sqlResourceName>
    sudo pcs -f cfg constraint colocation add <fileShareResourceName> <sqlResourceName>
    sudo pcs cluster cib-push cfg
    

    Met het volgende script maakt u bijvoorbeeld een geclusterde SQL Server-resource met de naam mssqlhaen een zwevende IP-resource met IP-adres 10.0.0.99. Er wordt ook een bestandssysteemresource gemaakt en beperkingen toegevoegd, zodat alle resources zich op hetzelfde knooppunt bevinden als sql-resource.

    sudo pcs cluster cib cfg
    sudo pcs -f cfg resource create mssqlha ocf:mssql:fci
    sudo pcs -f cfg resource create virtualip ocf:heartbeat:IPaddr2 ip=10.0.0.99
    sudo pcs -f cfg resource create fs Filesystem device="10.8.8.0:/mnt/nfs" directory="/var/opt/mssql/data" fstype="nfs"
    sudo pcs -f cfg constraint colocation add virtualip mssqlha
    sudo pcs -f cfg constraint colocation add fs mssqlha
    sudo pcs cluster cib-push cfg
    

    Nadat de configuratie is gepusht, wordt SQL Server op één knooppunt gestart.

  3. Controleer of SQL Server is gestart.

    sudo pcs status
    

    In het volgende voorbeeld ziet u de resultaten wanneer Pacemaker een geclusterd exemplaar van SQL Server heeft gestart.

    fs     (ocf::heartbeat:Filesystem):    Started sqlfcivm1
    virtualip     (ocf::heartbeat:IPaddr2):      Started sqlfcivm1
    mssqlha  (ocf::mssql:fci): Started sqlfcivm1
    
    PCSD Status:
     sqlfcivm1: Online
     sqlfcivm2: Online
    
    Daemon Status:
     corosync: active/disabled
     pacemaker: active/enabled
     pcsd: active/enabled