Een gedeeld SLES-schijfcluster configureren voor SQL Server
van toepassing op:SQL Server- - Linux
Deze handleiding bevat instructies voor het maken van een gedeeld schijfcluster met twee knooppunten voor SQL Server op SUSE Linux Enterprise Server (SLES). De clusteringlaag is gebaseerd op SUSE High Availability Extension (HAE), gebouwd op Pacemaker.
Zie SUSE Linux Enterprise High Availability Extension 12 SP5voor meer informatie over clusterconfiguratie, opties voor resourceagenten, beheer, best practices en aanbevelingen.
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-share te configureren. In de onderstaande 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 uitleg gebruikt u SLES met een geldig abonnement voor de HA-uitbreiding.
SQL Server installeren en configureren op elk clusterknooppunt
Installeer en configureer SQL Server op beide knooppunten. Zie Installatierichtlijnen voor SQL Server op Linuxvoor gedetailleerde instructies.
Wijs het ene knooppunt aan als primair en het andere als secundair voor configuratiedoeleinden. Gebruik deze termen voor het volgen van deze handleiding.
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-key
geplaatst. 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 naar elk secundair knooppunt kopiëren, zodat elk lokaal mssql-account er toegang toe heeft om de hoofdsleutel van de server te ontsleutelen.Maak op het primaire knooppunt een SQL Server-aanmelding voor Pacemaker en verdeel de aanmeldingsmachtiging om
sp_server_diagnostics
uit 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 hetsa
-account en voer het volgende uit:USE [master] GO CREATE LOGIN [<loginName>] with PASSWORD= N'<password>' GRANT VIEW SERVER STATE TO <loginName>
Voorzichtigheid
Uw wachtwoord moet voldoen aan het standaard 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.
Stop en schakel SQL Server uit op het primaire knooppunt.
Volg de aanwijzingen in de SUSE-documentatie om het hosts-bestand voor elk clusterknooppunt te configureren en bij te werken. Het
hosts
-bestand moet het IP-adres en de naam van elk clusterknooppunt bevatten.Voer het volgende uit om het IP-adres van het huidige knooppunt te controleren:
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/hostname
met behulp van YAST of handmatig.In het volgende voorbeeld ziet u
/etc/hosts
met toevoegingen voor twee knooppunten met de naamSLES1
enSLES2
.127.0.0.1 localhost 10.128.18.128 SLES1 10.128.16.77 SLES2
Alle clusterknooppunten moeten toegang hebben tot elkaar via SSH. Hulpprogramma's zoals
hb_report
ofcrm_report
(voor probleemoplossing) en Hawk's History Explorer vereisen SSH-toegang zonder wachtwoord tussen de knooppunten, anders kunnen ze alleen gegevens van het huidige knooppunt verzamelen. Als u een niet-standaard SSH-poort gebruikt, gebruikt u de optie-X
(zie Andere vereisten en aanbevelingen). Als uw SSH-poort bijvoorbeeld 3479 is, roept ucrm_report
aan met:crm_report -X "-p 3479" [...]
Zie de beheerhandleidingvoor meer informatie.
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:
Als u deze richtlijnen niet volgt, 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:
Een NFS-server configureren
Als u een NFS-server wilt configureren, raadpleegt u de volgende stappen in de SUSE-documentatie: NFS-server configureren.
Alle clusterknooppunten configureren om verbinding te maken met de gedeelde NFS-opslag
Voordat u de client-NFS configureert om het pad naar de SQL Server-databasebestanden te koppelen om naar de gedeelde opslaglocatie te verwijzen, moet u ervoor zorgen dat u de databasebestanden opslaat op een tijdelijke locatie om ze later op de share te kunnen kopiëren:
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.
su mssql mkdir /var/opt/mssql/tmp cp /var/opt/mssql/data/* /var/opt/mssql/tmp rm /var/opt/mssql/data/* exit
Configureer de NFS-client op alle clusterknooppunten:
Notitie
Volg de best practices en aanbevelingen van SUSE met betrekking tot maximaal beschikbare NFS-opslag: maximaal beschikbare NFS-opslag met DRBD en Pacemaker.
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 per ongeluk op beide knooppunten 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
Maak op beide clusterknooppunten een bestand voor het opslaan van de gebruikersnaam en het wachtwoord van SQL Server voor de pacemaker-aanmelding. Met de volgende opdracht wordt dit bestand gemaakt en ingevuld:
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
Voorzichtigheid
Uw wachtwoord moet voldoen aan de 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.
Alle clusternodes moeten via SSH toegang tot elkaar hebben.. Hulpprogramma's zoals hb_report of crm_report (voor probleemoplossing) en Hawk's History Explorer vereisen SSH-toegang zonder wachtwoord tussen de knooppunten, anders kunnen ze alleen gegevens van het huidige knooppunt verzamelen. Als u een niet-standaard SSH-poort gebruikt, gebruikt u de optie -X (zie manpagina). Als uw SSH-poort bijvoorbeeld 3479 is, roept u een hb_report aan met:
crm_report -X "-p 3479" [...]
Zie Systeemvereisten en aanbevelingen in de SUSE-documentatievoor meer informatie.
Installeer de extensie voor hoge beschikbaarheid. Volg de stappen in het volgende SUSE-artikel om de extensie te installeren:
Installeer de FCI-resourceagent voor SQL Server. Voer de volgende opdrachten uit op beide knooppunten:
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
Automatisch het eerste knooppunt instellen. De volgende stap is het instellen van een actief cluster met één knooppunt door het eerste knooppunt, SLES1, te configureren. Volg de instructies in het SUSE-artikel Het eerste knooppunt instellen.
Wanneer u klaar bent, controleert u de clusterstatus met
crm status
:crm status
Het moet laten zien dat een knooppunt, SLES1, is geconfigureerd.
Knooppunten toevoegen aan een bestaand cluster. Voeg vervolgens het SLES2-knooppunt toe aan het cluster. Volg de instructies in het SUSE-artikel Het tweede knooppunt toevoegen.
Wanneer u klaar bent, controleert u de clusterstatus met crm status. Als u een tweede knooppunt hebt toegevoegd, ziet de uitvoer er ongeveer als volgt uit:
2 nodes configured 1 resource configured Online: [ SLES1 SLES2 ] Full list of resources: admin_addr (ocf::heartbeat:IPaddr2): Started SLES1
Notitie
admin_addr is de virtuele IP-clusterresource die is geconfigureerd tijdens de eerste installatie van een cluster met één knooppunt.
verwijderingsprocedures. Als u een knooppunt uit het cluster wilt verwijderen, gebruikt u het ha-cluster-remove bootstrapscript. Zie Overzicht van bootstrapscriptsvoor meer informatie.
De clusterbronnen voor SQL Server configureren
In de volgende stappen wordt uitgelegd hoe u de clusterresource voor SQL Server configureert. Er zijn twee instellingen die u moet aanpassen.
- SQL Server-resourcenaam: een naam voor de geclusterde SQL Server-resource.
-
Time-outwaarde: De time-outwaarde is de tijdsperiode die het cluster wacht terwijl een resource online wordt gebracht. Voor SQL Server is dit het moment waarop u verwacht dat SQL Server de
master
-database online brengt.
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 crm configure
primitive <sqlServerResourceName> ocf:mssql:fci op start timeout=<timeout_in_seconds>
colocation <constraintName> inf: <virtualIPResourceName> <sqlServerResourceName>
show
commit
exit
Met het volgende script maakt u bijvoorbeeld een geclusterde SQL Server-resource met de naam mssqlha
.
sudo crm configure
primitive mssqlha ocf:mssql:fci op start timeout=60s
colocation admin_addr_mssqlha inf: admin_addr mssqlha
show
commit
exit
Nadat de configuratie is doorgevoerd, wordt SQL Server gestart op hetzelfde knooppunt als de virtuele IP-resource.
Zie Configureren en beheren van clusterbronnen (opdrachtregel)voor meer informatie.
Verifieer dat SQL Server is gestart
Als u wilt controleren of SQL Server is gestart, voert u de crm-status uit opdracht:
crm status
In het volgende voorbeeld ziet u de resultaten wanneer Pacemaker is gestart als geclusterde resource.
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
Clusterbronnen beheren
Zie het volgende SUSE-artikel voor het beheren van uw clusterresources: Clusterresources beheren
Handmatige failover
Hoewel resources zijn geconfigureerd om automatisch een failover uit te voeren (of te migreren) naar andere knooppunten van het cluster in het geval van een hardware- of softwarefout, kunt u ook handmatig een resource naar een ander knooppunt in het cluster verplaatsen met behulp van de Pacemaker-GUI of de opdrachtregel.
Gebruik de migratieopdracht voor deze taak. Als u bijvoorbeeld de SQL-resource wilt migreren naar een clusterknooppunt genaamd SLES2, voert u het volgende uit:
crm resource
migrate mssqlha SLES2