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.
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
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 kopiëren naar elk secundair knooppunt, zodat elk lokaal mssql
-account toegang heeft tot het ontsleutelen van de hoofdsleutel van de server.
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>'; 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 metsp_server_diagnostics
op te vragen, ensetupadmin
enALTER ANY LINKED SERVER
om de FCI-exemplaarnaam bij te werken met de resourcenaam doorsp_dropserver
ensp_addserver
uit te voeren.Stop en schakel SQL Server uit op het primaire knooppunt.
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 metvi
.sudo vi /etc/hosts
In het volgende voorbeeld ziet u
/etc/hosts
met toevoegingen voor twee knooppunten met de naamsqlfcivm1
ensqlfcivm2
.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:
nfs-utils
installerensudo yum -y install nfs-utils
rpcbind
inschakelen en startensudo systemctl enable rpcbind && sudo systemctl start rpcbind
nfs-server
inschakelen en startensudo systemctl enable nfs-server && sudo systemctl start nfs-server
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)
De shares exporteren
sudo exportfs -rav
Controleer of de paden worden gedeeld/geëxporteerd, uitgevoerd vanaf de NFS-server
sudo showmount -e
Uitzondering toevoegen in SELinux
sudo setsebool -P nfs_export_all_rw 1
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.
nfs-utils
installerensudo yum -y install nfs-utils
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
Controleer of u de NFS-shares op clientcomputers kunt zien
sudo showmount -e <IP OF NFS SERVER>
Herhaal deze stappen op alle clusterknooppunten.
Zie de volgende bronnen voor meer informatie over het gebruik van NFS:
- NFS-servers en firewalls | Stack Exchange-
- een NFS-volume koppelen | Handleiding voor Linux-netwerkbeheerders
- NFS-serverconfiguratie | Red Hat Customer Portal
Koppel de directory met databasebestanden aan de gedeelde opslag.
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
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.
Voer
mount -a
opdracht uit voor het systeem om de gekoppelde paden bij te werken.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 demssql
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
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
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.
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
Installeer Pacemaker-pakketten op elk knooppunt.
sudo yum install pacemaker pcs fence-agents-all resource-agents
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
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
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
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
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
mssqlha
en een zwevende IP-resource met IP-adres10.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.
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