RHEL-failoverclusterexemplaar (FCI) gebruiken voor SQL Server
van toepassing op:SQL Server- - Linux
In dit document wordt beschreven hoe u de volgende taken voor SQL Server uitvoert op een failovercluster voor gedeelde schijven met Red Hat Enterprise Linux.
- Handmatig een failover uitvoeren voor het cluster
- Een SQL Server-service voor failoverclusters bewaken
- Een clusterknooppunt toevoegen
- Een clusterknooppunt verwijderen
- De bewakingsfrequentie van SQL Server-resources wijzigen
Beschrijving van architectuur
De clusteringlaag is gebaseerd op Red Hat Enterprise Linux (RHEL) HA-invoegtoepassing, die is gebouwd op Pacemaker-. Corosync en Pacemaker coördineren clustercommunicatie en resourcebeheer. Het SQL Server-exemplaar is actief op het ene knooppunt of het andere.
In het volgende diagram ziet u de onderdelen in een Linux-cluster met SQL Server.
Ga naar RHEL-referentiedocumentatievoor meer informatie over clusterconfiguratie, opties voor resourceagents en beheer.
Handmatig een failover van het cluster uitvoeren
Met de opdracht resource move
wordt een beperking gemaakt waardoor de resource op het doelknooppunt moet worden gestart. Nadat u de opdracht move
hebt uitgevoerd, wordt de beperking verwijderd door resource-clear
uit te voeren, zodat het mogelijk is om de resource opnieuw te verplaatsen of de resource automatisch een failover uit te voeren.
sudo pcs resource move <sqlResourceName> <targetNodeName>
sudo pcs resource clear <sqlResourceName>
In het volgende voorbeeld wordt de resource mssqlha verplaatst naar een knooppunt met de naam sqlfcivm2en wordt de beperking verwijderd, zodat de resource later naar een ander knooppunt kan worden verplaatst.
sudo pcs resource move mssqlha sqlfcivm2
sudo pcs resource clear mssqlha
Een SQL Server-service voor failoverclusters bewaken
De huidige clusterstatus weergeven:
sudo pcs status
Livestatus van cluster en resources weergeven:
sudo crm_mon
Bekijk de resourceagentlogboeken op /var/log/cluster/corosync.log
Een knooppunt toevoegen aan een cluster
Controleer het IP-adres voor elk knooppunt. In het volgende script ziet u het IP-adres van uw huidige knooppunt.
ip addr show
Het nieuwe knooppunt heeft een unieke naam van 15 tekens of minder nodig. Standaard is de computernaam in Red Hat Linux
localhost.localdomain
. Deze standaardnaam is mogelijk niet uniek en is te lang. Stel de computernaam van het nieuwe knooppunt in. 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 drie knooppunten met de naamsqlfcivm1
,sqlfcivm2
ensqlfcivm3
.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
Het bestand moet op elk knooppunt hetzelfde zijn.
Stop de SQL Server-service op het nieuwe knooppunt.
Volg de instructies voor het koppelen van de map met databasebestanden aan de gedeelde locatie:
Installeer
nfs-utils
vanaf de NFS-serversudo 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
Bewerk het
/etc/fstab
bestand om de koppelingsopdracht op te nemen:<IP OF NFS SERVER>:<shared_storage_path> <database_files_directory_path> nfs timeo=14,intr
Voer
mount -a
uit om de wijzigingen van kracht te laten worden.Maak op het nieuwe knooppunt 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/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
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 het nieuwe knooppunt 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 het nieuwe 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 als de bestaande knooppunten.
sudo passwd hacluster
Schakel
pcsd
service en Pacemaker in en start deze. Hierdoor kan het nieuwe knooppunt na het opnieuw opstarten opnieuw deelnemen aan het cluster. Voer de volgende opdracht uit op het nieuwe knooppunt.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 het nieuwe knooppunt.
sudo yum install mssql-server-ha
Verifieer op een bestaand knooppunt van het cluster het nieuwe knooppunt en voeg het toe aan het cluster:
sudo pcs cluster auth <nodeName3> -u hacluster sudo pcs cluster node add <nodeName3>
In het volgende voorbeeld wordt een knooppunt met de naam vm3 toegevoegd aan het cluster.
sudo pcs cluster auth sudo pcs cluster start
Knooppunten verwijderen uit een cluster
Voer de volgende opdracht uit om een knooppunt uit een cluster te verwijderen:
sudo pcs cluster node remove <nodeName>
De frequentie van het bewakingsinterval voor sqlservr-resources wijzigen
sudo pcs resource op monitor interval=<interval>s <sqlResourceName>
In het volgende voorbeeld wordt het bewakingsinterval ingesteld op 2 seconden voor de mssql-resource:
sudo pcs resource op monitor interval=2s mssqlha
Problemen oplossen met een Gedeeld Linux-schijfcluster voor Red Hat Enterprise voor SQL Server
Wanneer u problemen met het cluster oplost, is het handig om te begrijpen hoe de drie daemons samenwerken om clusterresources te beheren.
Daemon | Beschrijving |
---|---|
Corosync | Biedt quorumlidmaatschap en berichten tussen clusterknooppunten. |
Hartstimulator | Bevindt zich boven op Corosync en biedt statusmachines voor resources. |
PCSD | Beheert zowel Pacemaker als Corosync via de pcs -hulpprogramma's. |
PCSD moet draaien om pcs
-hulpprogramma's te kunnen gebruiken.
Huidige clusterstatus
sudo pcs status
retourneert basisinformatie over het cluster, quorum, knooppunten, resources en daemonstatus voor elk knooppunt.
Een voorbeeld van een gezonde pacemaker-quorum output zou zijn:
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
In het voorbeeld betekent partition with quorum
dat een meerderheidsquorum van knooppunten online is. Als het cluster een meerderheidsquorum van knooppunten verliest, retourneert pcs status
partition WITHOUT quorum
en worden alle resources gestopt.
online: [sqlvmnode1 sqlvmnode2 sqlvmnode3]
retourneert de naam van alle knooppunten die momenteel deelnemen aan het cluster. Als er geen knooppunten deelnemen, retourneert pcs status
OFFLINE: [<nodename>]
.
PCSD Status
toont de clusterstatus voor elk knooppunt.
Redenen waarom een knooppunt mogelijk offline is
Controleer de volgende items wanneer een knooppunt offline is.
Firewall
De volgende poorten moeten op alle knooppunten zijn geopend zodat Pacemaker kan communiceren.
- **TCP: 2224, 3121, 21064
Pacemaker- of Corosync-services draaien
knooppuntcommunicatie
Naamtoewijzingen voor knooppunten