In dit artikel wordt beschreven hoe u een cluster met drie knooppunten in Linux maakt met Pacemaker en een eerder gemaakte beschikbaarheidsgroep toevoegt als een resource in het cluster. Voor hoge beschikbaarheid vereist een beschikbaarheidsgroep in Linux drie knooppunten: zie Hoge beschikbaarheid en gegevensbeveiliging voor configuraties van beschikbaarheidsgroepen.
SQL Server is niet zo nauw geïntegreerd met Pacemaker in Linux als met Windows Server-failoverclustering (WSFC). Een SQL Server-exemplaar is niet op de hoogte van het cluster en alle indelingen zijn van buitenaf. Pacemaker biedt clusterresourceindeling. De naam van het virtuele netwerk is ook specifiek voor Windows Server-failoverclustering; Er is geen equivalent in Pacemaker. Dynamische beheerweergaven van beschikbaarheidsgroepen (DMV's) die clusterinformatie opvragen, retourneren lege rijen op Pacemaker-clusters. Als u een listener wilt maken voor transparante opnieuw verbinding maken na een failover, moet u de naam van de listener handmatig registreren in DNS met het IP-adres dat wordt gebruikt om de virtuele IP-resource te maken.
In de volgende secties worden de stappen beschreven voor het instellen van een Pacemaker-cluster en het toevoegen van een beschikbaarheidsgroep als resource in het cluster voor hoge beschikbaarheid, voor elke ondersteunde Linux-distributie.
De clusteringlaag is gebaseerd op Red Hat Enterprise Linux (RHEL) HA-invoegtoepassing dat is gebouwd op Pacemaker.
Notitie
Voor toegang tot de volledige documentatie van Red Hat is een geldig abonnement vereist.
Ga naar RHEL-referentiedocumentatievoor meer informatie over clusterconfiguratie, opties voor resourceagents en beheer.
Routekaart
De stappen voor het maken van een beschikbaarheidsgroep op Linux-servers voor hoge beschikbaarheid verschillen van de stappen in een Windows Server-failovercluster. In de volgende lijst worden de stappen op hoog niveau beschreven:
SQL Server configureren op de clusterknooppunten.
De beschikbaarheidsgroep maken.
Configureer een clusterresourcemanager, zoals Pacemaker. Deze instructies staan in dit artikel.
De manier waarop u een clusterresourcebeheer configureert, is afhankelijk van de specifieke Linux-distributie.
Belangrijk
Voor productieomgevingen is een afschermingsagent vereist voor hoge beschikbaarheid. In de demonstraties in deze documentatie worden geen fencingagents gebruikt. De demonstraties zijn alleen bedoeld voor testen en valideren.
Een Linux-cluster maakt gebruik van fencing om het cluster terug te keren naar een bekende status. De manier waarop u fencing configureert, is afhankelijk van de distributie en de omgeving. Op dit moment is fencing niet beschikbaar in sommige cloudomgevingen. Zie Ondersteuningsbeleid voor RHEL-clusters met hoge beschikbaarheid - Virtualisatieplatformsvoor meer informatie.
de beschikbaarheidsgroep toevoegen als een resource in het cluster.
Als u hoge beschikbaarheid voor RHEL wilt configureren, schakelt u het abonnement voor hoge beschikbaarheid in en configureert u Vervolgens Pacemaker.
Het abonnement voor hoge beschikbaarheid voor RHEL inschakelen
Elk knooppunt in het cluster moet een geschikt abonnement hebben voor RHEL en de invoegtoepassing voor hoge beschikbaarheid. Bekijk de vereisten in Hoe High Availability-clusterpakketten te installeren in Red Hat Enterprise Linux. Volg deze stappen om het abonnement en opslagplaatsen te configureren:
Registreer het systeem.
sudo subscription-manager register
Geef uw gebruikersnaam en wachtwoord op.
Vermeld de beschikbare pools voor registratie.
sudo subscription-manager list --available
Noteer in de lijst met beschikbare pools de pool-id voor het abonnement met hoge beschikbaarheid.
Werk het volgende script bij. Vervang <pool id>
door de pool-id voor hoge beschikbaarheid uit de vorige stap. Voer het script uit om het abonnement te koppelen.
sudo subscription-manager attach --pool=<pool id>
Schakel de opslagplaats in.
RHEL 7
sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
RHEL 8
sudo subscription-manager repos --enable=rhel-8-for-x86_64-highavailability-rpms
Zie voor meer informatie Pacemaker - het open source cluster met hoge beschikbaarheid.
Nadat u het abonnement hebt geconfigureerd, voert u de volgende stappen uit om Pacemaker te configureren:
Nadat u het abonnement hebt geregistreerd, voert u de volgende stappen uit om Pacemaker te configureren:
Open op alle 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 de firewall geen ingebouwde configuratie voor hoge beschikbaarheid heeft, opent u de volgende poorten voor Pacemaker.
- TCP: Poorten 2224, 3121, 21064
- UDP: poort 5405
Installeer Pacemaker-pakketten op alle knooppunten.
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 alle knooppunten.
sudo passwd hacluster
Als u wilt toestaan dat knooppunten na het opnieuw opstarten opnieuw deelnemen aan het cluster, schakelt u pcsd
service en Pacemaker in en start u deze. Voer de volgende opdracht uit op alle knooppunten.
sudo systemctl enable pcsd
sudo systemctl start pcsd
sudo systemctl enable pacemaker
Maak het cluster. Voer de volgende opdracht uit om het cluster te maken:
RHEL 7
sudo pcs cluster auth <node1> <node2> <node3> -u hacluster -p <password for hacluster>
sudo pcs cluster setup --name <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
RHEL 8
Voor RHEL 8 moet u de knooppunten afzonderlijk verifiëren. Voer handmatig de gebruikersnaam en het wachtwoord in voor hacluster
wanneer hierom wordt gevraagd.
sudo pcs host auth <node1> <node2> <node3>
sudo pcs cluster setup <clusterName> <node1> <node2> <node3>
sudo pcs cluster start --all
sudo pcs cluster enable --all
Notitie
Als u eerder een cluster op dezelfde knooppunten hebt geconfigureerd, moet u --force
optie gebruiken bij het uitvoeren van pcs cluster setup
. Deze optie is gelijk aan het uitvoeren van pcs cluster destroy
. Als u Pacemaker opnieuw wilt inschakelen, voert u sudo systemctl enable pacemaker
uit.
Installeer de SQL Server-resourceagent voor SQL Server. Voer de volgende opdrachten uit op alle knooppunten.
sudo yum install mssql-server-ha
Nadat Pacemaker is geconfigureerd, gebruikt u pcs
om met het cluster te communiceren. Voer alle opdrachten uit op één knooppunt vanuit het cluster.
Overwegingen voor meerdere netwerkinterfaces (NIC's)
Wanneer u hoge beschikbaarheid instelt met servers met meerdere NIC's, volgt u deze suggesties:
Zorg ervoor dat het hosts
-bestand is ingesteld, zodat de IP-adressen van de server voor de meerdere NIC's worden omgezet in de hostnaam van de Linux-server op elk knooppunt.
Bij het instellen van het cluster met Pacemaker moet Corosync worden geconfigureerd door gebruik te maken van de hostnaam van de servers om de configuratie voor alle NIC's in te stellen. We willen alleen de Pacemaker/Corosync-communicatie via één NIC. Zodra het Pacemaker-cluster is geconfigureerd, wijzigt u de configuratie in het corosync.conf
-bestand en werkt u het IP-adres bij voor de toegewezen NIC die u wilt gebruiken voor de Pacemaker/Corosync-communicatie.
De <hostname>
in het corosync.conf
-bestand moet hetzelfde zijn als de uitvoer die wordt gegeven bij het uitvoeren van een reverse lookup (ping -a <ip_address>
), en moet de korte naam zijn die op de host is geconfigureerd. Zorg ervoor dat het hosts
bestand ook het juiste IP-adres voor naamomzetting vertegenwoordigt.
Hieronder ziet u de wijzigingen in het corosync.conf
-bestand:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Pacemaker-clusterleveranciers vereisen het afschermen van een mislukt knooppunt met behulp van een fencing-apparaat dat is geconfigureerd voor een ondersteunde clusterinstallatie. Wanneer de clusterresourcemanager de status van een knooppunt of van een resource op een knooppunt niet kan bepalen, zorgt fencing ervoor dat het cluster weer in een bekende status wordt teruggebracht.
Een afschermingsapparaat levert een afschermingsagent.
Pacemaker instellen op Red Hat Enterprise Linux in Azure biedt een voorbeeld van het maken van een fencing-apparaat voor dit cluster in Azure. Wijzig de instructies voor uw omgeving.
Afscherming op resourceniveau zorgt ervoor dat er geen beschadiging van gegevens in een storing is door een resource te configureren. U kunt bijvoorbeeld gebruik maken van fencing op resourceniveau om de schijf op een knooppunt als verouderd te markeren wanneer de communicatieverbinding uitvalt.
Afscherming op knooppuntniveau zorgt ervoor dat een knooppunt geen resources uitvoert. Dit wordt gedaan door het knooppunt opnieuw in te instellen. Pacemaker ondersteunt een groot aantal fencing-apparaten. Voorbeelden hiervan zijn een onverbreekbare voeding of beheerinterfacekaarten voor servers.
Zie de volgende artikelen voor informatie over het afschermen van een mislukt knooppunt:
Notitie
Omdat de configuratie van de knooppuntniveauafscheiding sterk afhankelijk is van uw omgeving, schakelt u deze uit voor deze zelfstudie (deze kan later worden geconfigureerd). Met het volgende script wordt schermafscheiding op knooppuntniveau uitgeschakeld:
sudo pcs property set stonith-enabled=false
Het uitschakelen van fencing is alleen voor testdoeleinden. Als u Pacemaker in een productieomgeving wilt gebruiken, moet u een fencing-implementatie plannen, afhankelijk van uw omgeving en deze ingeschakeld houden.
Interval voor hercontrole van clustereigenschappen instellen
cluster-recheck-interval
geeft het polling-interval aan waarmee het cluster controleert op wijzigingen in de resourceparameters, beperkingen of andere clusteropties. Als een replica uitvalt, probeert het cluster de replica opnieuw op te starten met een interval dat afhankelijk is van de failure-timeout
-waarde en de cluster-recheck-interval
-waarde. Als failure-timeout
bijvoorbeeld is ingesteld op 60 seconden en cluster-recheck-interval
is ingesteld op 120 seconden, wordt het opnieuw opstarten geprobeerd met een interval dat groter is dan 60 seconden, maar minder dan 120 seconden. U wordt aangeraden de time-out voor fouten in te stellen op 60 seconden en cluster-recheck-interval
op een waarde die groter is dan 60 seconden. Het instellen van cluster-recheck-interval
op een kleine waarde wordt niet aanbevolen.
De eigenschapswaarde bijwerken naar 2 minutes
uitvoeren:
sudo pcs property set cluster-recheck-interval=2min
Als u al een beschikbaarheidsgroepresource hebt die wordt beheerd door een Pacemaker-cluster, introduceert het Pacemaker-pakket 1.1.18-11.el7 een gedragswijziging voor de start-failure-is-fatal
-clusterinstelling wanneer de waarde false
is. Deze wijziging is van invloed op de failoverwerkstroom. Als een primaire replica een storing ondervindt, wordt verwacht dat het cluster een failover naar een van de beschikbare secundaire replica's uitvoert. In plaats daarvan merken gebruikers dat het cluster blijft proberen de mislukte primaire replica te starten. Als die primaire server nooit online komt (vanwege een permanente storing), voert het cluster nooit een failover uit naar een andere beschikbare secundaire replica. Vanwege deze wijziging is een eerder aanbevolen configuratie voor het instellen van start-failure-is-fatal
niet meer geldig en moet de instelling worden teruggezet naar de standaardwaarde van true
.
Daarnaast moet de AG-resource worden bijgewerkt om de eigenschap failure-timeout
op te nemen.
De eigenschapswaarde bijwerken naar true
uitvoeren:
sudo pcs property set start-failure-is-fatal=true
Als u de ag_cluster
resource-eigenschap failure-timeout
wilt bijwerken naar 60s
, voert u het volgende uit:
pcs resource update ag_cluster meta failure-timeout=60s
Zie Pacemaker Clusters Propertiesvoor meer informatie over pacemakerclustereigenschappen.
Een SQL Server-aanmelding maken voor Pacemaker
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.
Op alle SQL Server-exemplaren maakt u een serverlogin aan voor Pacemaker.
Met de volgende Transact-SQL wordt een inlog gecreëerd. Vervang <password>
door uw eigen complexe wachtwoord.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
Op het moment dat een beschikbaarheidsgroep is gemaakt, vereist de Pacemaker-gebruiker ALTER
, CONTROL
en VIEW DEFINITION
machtigingen voor de beschikbaarheidsgroep, nadat deze is gemaakt, maar voordat er knooppunten aan worden toegevoegd.
Op alle SQL Server-exemplaren slaat u de inloggegevens op voor de SQL Server-aanmelding.
Vervang <password>
door uw eigen complexe wachtwoord.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Resource voor beschikbaarheidsgroep maken
Als u de resource van de beschikbaarheidsgroep wilt maken, gebruikt u pcs resource create
opdracht en stelt u de resource-eigenschappen in. Met de volgende opdracht maakt u een ocf:mssql:ag
resource van het type primair/secundair voor de beschikbaarheidsgroep met de naam ag1
.
RHEL 7
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s master notify=true
RHEL 8
Met de beschikbaarheid van RHEL 8is de syntaxis voor het aanmaken gewijzigd. Als u RHEL 8gebruikt, is de terminologie master
gewijzigd in promotable
. Gebruik de volgende opdracht maken in plaats van de bovenstaande opdracht:
sudo pcs resource create ag_cluster ocf:mssql:ag ag_name=ag1 meta failure-timeout=60s promotable notify=true
Notitie
Wanneer u de resource maakt en vervolgens periodiek, stelt de Pacemaker resourceagent automatisch de waarde van REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
in van de beschikbaarheidsgroep op basis van de configuratie ervan. Als de beschikbaarheidsgroep bijvoorbeeld drie synchrone replica's heeft, wordt REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
ingesteld op 1
. Zie Hoge beschikbaarheid en gegevensbeveiliging voor configuraties van beschikbaarheidsgroepenvoor meer informatie en aanvullende configuratieopties.
Virtuele IP-resource maken
Als u de resource voor het virtuele IP-adres wilt maken, voert u de volgende opdracht uit op één knooppunt. Gebruik een beschikbaar statisch IP-adres van het netwerk. Vervang het IP-adres tussen <10.128.16.240>
door een geldig IP-adres.
sudo pcs resource create virtualip ocf:heartbeat:IPaddr2 ip=<10.128.16.240>
Er is geen equivalent van de naam van de virtuele server in Pacemaker. Als u een verbindingsreeks wilt gebruiken die verwijst naar de naam van een tekenreeksserver in plaats van een IP-adres, registreert u het virtuele IP-resourceadres en de gewenste naam van de virtuele server in DNS. Voor DR-configuraties registreert u de gewenste naam van de virtuele server en het IP-adres bij de DNS-servers op zowel de primaire als de DR-site.
Colocatiebeperking toevoegen
Bijna elke beslissing in een Pacemaker-cluster, zoals het kiezen waar een resource moet worden uitgevoerd, wordt uitgevoerd door scores te vergelijken. Scores worden per hulpbron berekend. De clusterresourcemanager kiest het knooppunt met de hoogste score voor een bepaalde resource. Als een knooppunt een negatieve score voor een resource heeft, kan de resource niet worden uitgevoerd op dat knooppunt.
Op een pacemakercluster kunt u de beslissingen van het cluster bewerken met beperkingen. Beperkingen hebben een score. Als een beperking een score lager heeft dan INFINITY
, beschouwt Pacemaker deze als aanbeveling. Een score van INFINITY
is verplicht.
Om ervoor te zorgen dat primaire replica en de virtuele IP-resources op dezelfde host worden uitgevoerd, definieert u een colocatiebeperking met een score van INFINITY. Als u de colocatiebeperking wilt toevoegen, voert u de volgende opdracht uit op één knooppunt.
RHEL 7
Wanneer u de ag_cluster
-resource maakt in RHEL 7, wordt de resource gemaakt als ag_cluster-master
. Gebruik de volgende opdracht voor RHEL 7:
sudo pcs constraint colocation add virtualip ag_cluster-master INFINITY with-rsc-role=Master
RHEL 8
Wanneer u de ag_cluster
bron in RHEL 8 maakt, wordt de bron gemaakt als ag_cluster-clone
. Gebruik de volgende opdracht voor RHEL 8:
sudo pcs constraint colocation add virtualip with master ag_cluster-clone INFINITY with-rsc-role=Master
Volgordebeperking toevoegen
De colocatiebeperking heeft een impliciete volgordebeperking. De virtuele IP-resource wordt verplaatst voordat de resource van de beschikbaarheidsgroep wordt verplaatst. De volgorde van gebeurtenissen is standaard:
De gebruiker geeft opdracht pcs resource move
aan de primaire beschikbaarheidsgroep om van knooppunt1 naar knooppunt2 over te schakelen.
De virtuele IP-resource stopt op knooppunt 1.
De virtuele IP-resource wordt gestart op knooppunt 2.
Notitie
Op dit punt verwijst het IP-adres tijdelijk naar knooppunt 2 terwijl knooppunt 2 nog steeds een secundaire failover vooraf is.
De primaire beschikbaarheidsgroep op knooppunt 1 wordt gedegradeerd naar secundair.
De secundaire beschikbaarheidsgroep op knooppunt 2 wordt gepromoveerd naar primair.
Als u wilt voorkomen dat het IP-adres tijdelijk verwijst naar het knooppunt met de secundaire pre-failover, voegt u een bestelbeperking toe.
Als u een bestelbeperking wilt toevoegen, voert u de volgende opdracht uit op één knooppunt:
RHEL 7
sudo pcs constraint order promote ag_cluster-master then start virtualip
RHEL 8
sudo pcs constraint order promote ag_cluster-clone then start virtualip
Belangrijk
Nadat u het cluster hebt geconfigureerd en de beschikbaarheidsgroep als clusterresource hebt toegevoegd, kunt u Transact-SQL niet gebruiken om de resources van de beschikbaarheidsgroep over te dragen. SQL Server-clusterresources in Linux zijn niet zo nauw gekoppeld aan het besturingssysteem als op een Windows Server Failover Cluster (WSFC). De SQL Server-service is niet op de hoogte van de aanwezigheid van het cluster. Alle indelingen worden uitgevoerd via de hulpprogramma's voor clusterbeheer. Gebruik in RHEL of Ubuntu pcs
en in SLES crm
hulpprogramma's.
Handmatig een failover uitvoeren voor de beschikbaarheidsgroep met pcs
. Start geen failover met Transact-SQL. Zie Failovervoor instructies.
Verwante inhoud
De clusteringlaag is gebaseerd op SUSE HAE (High Availability Extension) gebouwd op Pacemaker-.
Zie SUSE Linux Enterprise High Availability Extensionvoor meer informatie over clusterconfiguratie, opties voor resourceagenten, beheer, best practices en aanbevelingen.
Routekaart
De procedure voor het maken van een beschikbaarheidsgroep voor hoge beschikbaarheid verschilt tussen Linux-servers en een Windows Server-failovercluster. In de volgende lijst worden de stappen op hoog niveau beschreven:
SQL Server configureren op de clusterknooppunten.
De beschikbaarheidsgroep maken.
Configureer een clusterresourcemanager, zoals Pacemaker. Deze instructies staan in dit artikel.
De manier waarop u een clusterresourcebeheer configureert, is afhankelijk van de specifieke Linux-distributie.
Belangrijk
Voor productieomgevingen is een afschermingsagent vereist voor hoge beschikbaarheid. In de voorbeelden in dit artikel worden geen fencingagents gebruikt. Ze zijn alleen bedoeld voor testen en valideren.
Een Linux-cluster maakt gebruik van fencing om het cluster terug te keren naar een bekende status. De manier waarop u fencing configureert, is afhankelijk van de distributie en de omgeving. Op dit moment is fencing niet beschikbaar in sommige cloudomgevingen. Zie SUSE Linux Enterprise High Availability Extensionvoor meer informatie.
de beschikbaarheidsgroep toevoegen als een resource in het cluster
Voorwaarden
Als u het volgende end-to-end scenario wilt voltooien, hebt u drie computers nodig om het cluster met drie knooppunten te implementeren. In de volgende stappen wordt beschreven hoe u deze servers configureert.
De eerste stap is het configureren van het besturingssysteem op de clusterknooppunten. Gebruik voor deze stap-voor-stap instructie SLES 12 SP3 met een geldig abonnement voor de High Availability-invoegtoepassing.
Installeer en stel de SQL Server-service in op alle knooppunten. Zie Installatierichtlijnen voor SQL Server op Linuxvoor gedetailleerde instructies.
Wijs één knooppunt aan als primaire en andere knooppunten als secundaire knooppunten. Gebruik deze voorwaarden in deze handleiding.
Zorg ervoor dat knooppunten die deel gaan uitmaken van het cluster met elkaar kunnen communiceren.
In het volgende voorbeeld ziet u /etc/hosts
met toevoegingen voor drie knooppunten met de naam SLES1, SLES2 en SLES3.
127.0.0.1 localhost
10.128.16.33 SLES1
10.128.16.77 SLES2
10.128.16.22 SLES3
Alle clusterknooppunten moeten elkaar kunnen benaderen via SSH. 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 man
pagina). Als uw SSH-poort bijvoorbeeld 3479 is, roept u een crm_report
aan met:
sudo crm_report -X "-p 3479" [...]
Zie de sectie SLES Administration Guide - Diversenvoor meer informatie.
Een SQL Server-aanmelding maken voor Pacemaker
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.
Op alle SQL Server-exemplaren maakt u een serverlogin aan voor Pacemaker.
De volgende Transact-SQL creëert een inlog. Vervang <password>
door uw eigen complexe wachtwoord.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
Op het moment dat een beschikbaarheidsgroep is gemaakt, vereist de Pacemaker-gebruiker ALTER
, CONTROL
en VIEW DEFINITION
machtigingen voor de beschikbaarheidsgroep, nadat deze is gemaakt, maar voordat er knooppunten aan worden toegevoegd.
Sla op alle SQL Server-exemplaren de referenties voor de SQL Server-aanmeldingop.
Vervang <password>
door uw eigen complexe wachtwoord.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Configureer op Linux-servers de beschikbaarheidsgroep en configureer vervolgens de clusterbronnen. Zie SQL Server AlwaysOn-beschikbaarheidsgroep configureren voor hoge beschikbaarheid in Linux voor het configureren van de beschikbaarheidsgroep
De extensie voor hoge beschikbaarheid installeren
Zie SUSE Linux Enterprise Server en extensie voor hoge beschikbaarheid installerenter referentie.
Installeer het SQL Server-resourceagentpakket op beide knooppunten.
sudo zypper install mssql-server-ha
Het eerste knooppunt instellen
Raadpleeg SLES-installatie-instructies.
Meld u aan als root
bij de fysieke of virtuele machine die u wilt gebruiken als clusterknooppunt.
Start het bootstrap-script door het volgende uit te voeren:
sudo ha-cluster-init
Als NTP niet is geconfigureerd om te starten tijdens het opstarten, wordt er een bericht weergegeven.
Als u toch besluit door te gaan, genereert het script automatisch sleutels voor SSH-toegang en het hulpprogramma voor Csync2-synchronisatie en start u de services die nodig zijn voor beide.
De clustercommunicatielaag configureren (Corosync):
Voer een netwerkadres in waarnaar u verbinding wilt maken. Standaard stelt het script het netwerkadres van eth0 voor. U kunt ook een ander netwerkadres invoeren, bijvoorbeeld het adres van bond0.
Voer een multicast-adres in. Het script stelt een willekeurig adres voor dat u als standaard kunt gebruiken.
Voer een multicastpoort in. Het script stelt standaard 5405 voor.
Als u SBD ()
wilt configureren, voert u een permanent pad in naar de partitie van uw blokapparaat dat u wilt gebruiken voor SBD. Het pad moet consistent zijn voor alle knooppunten in het cluster.
Ten slotte start het script de Pacemaker-service om het cluster met één knooppunt online te brengen en de webbeheerinterface Hawk2 in te schakelen. De URL die moet worden gebruikt voor Hawk2 wordt weergegeven op het scherm.
Controleer /var/log/sleha-bootstrap.log
voor meer informatie over het installatieproces. U hebt nu een actief cluster met één knooppunt. Controleer de clusterstatus met crm status:
sudo crm status
U kunt ook clusterconfiguratie zien met crm configure show xml
of crm configure show
.
Met de bootstrapprocedure maakt u een Linux-gebruiker met de naam hacluster
met het wachtwoord linux
. Vervang het standaardwachtwoord zo snel mogelijk door een beveiligd wachtwoord:
sudo passwd hacluster
Knooppunten toevoegen aan het bestaande cluster
Als u een cluster hebt dat wordt uitgevoerd met een of meer knooppunten, voegt u meer clusterknooppunten toe met het bootstrapscript ha-cluster-join. Het script heeft alleen toegang nodig tot een bestaand clusterknooppunt en voltooit automatisch de basisinstallatie op de huidige computer. Gebruik de volgende stappen:
Als u de bestaande clusterknooppunten hebt geconfigureerd met de YaST
-clustermodule, moet u ervoor zorgen dat aan de volgende vereisten wordt voldaan voordat u ha-cluster-join
uitvoert:
De hoofdgebruiker op de bestaande knooppunten heeft SSH-sleutels voor aanmelding zonder wachtwoord.
Csync2
is geconfigureerd op de bestaande knooppunten. Zie Csync2 configureren met YaSTvoor meer informatie.
Meld u aan als root
bij de fysieke of virtuele machine die moet worden gekoppeld aan het cluster.
Start het bootstrap-script door het volgende uit te voeren:
sudo ha-cluster-join
Als NTP niet is geconfigureerd om te starten tijdens het opstarten, wordt er een bericht weergegeven.
Als u toch besluit om door te gaan, wordt u gevraagd om het IP-adres van een bestaand knooppunt. Voer het IP-adres in.
Als u nog geen SSH-toegang zonder wachtwoord hebt geconfigureerd tussen beide computers, wordt u ook gevraagd om het hoofdwachtwoord van het bestaande knooppunt.
Nadat u zich hebt aangemeld bij het opgegeven knooppunt, kopieert het script de Corosync-configuratie, configureert u SSH en Csync2
en brengt u de huidige computer online als nieuw clusterknooppunt. Afgezien daarvan start het de service die nodig is voor Hawk. Als u gedeelde opslag hebt geconfigureerd met OCFS2
, wordt ook automatisch de koppelingspuntmap voor het OCFS2
bestandssysteem gemaakt.
Herhaal de vorige stappen voor alle computers die u aan het cluster wilt toevoegen.
Controleer /var/log/ha-cluster-bootstrap.log
voor meer informatie over het proces.
Controleer de clusterstatus met sudo crm status
. Als u een tweede knooppunt hebt toegevoegd, ziet de uitvoer er ongeveer als volgt uit:
sudo crm status
U ziet uitvoer die vergelijkbaar is met het volgende voorbeeld.
3 nodes configured
1 resource configured
Online: [ SLES1 SLES2 SLES3]
Full list of resources:
admin_addr (ocf::heartbeat:IPaddr2): Started node1
Notitie
admin_addr
is de virtuele IP-clusterresource die is geconfigureerd tijdens de eerste installatie van een cluster met één knooppunt.
Nadat u alle knooppunten hebt toegevoegd, controleert u of u het beleid zonder quorum wilt aanpassen in de algemene clusteropties. Dit is met name belangrijk voor clusters met twee knooppunten.
Interval voor clustereigenschapscluster opnieuw controleren instellen
cluster-recheck-interval
geeft het polling-interval aan waarmee het cluster controleert op wijzigingen in de resourceparameters, beperkingen of andere clusteropties. Als een replica uitvalt, probeert het cluster de replica opnieuw op te starten met een interval dat afhankelijk is van de failure-timeout
-waarde en de cluster-recheck-interval
-waarde. Als failure-timeout
bijvoorbeeld is ingesteld op 60 seconden en cluster-recheck-interval
is ingesteld op 120 seconden, wordt het opnieuw opstarten geprobeerd met een interval dat groter is dan 60 seconden, maar minder dan 120 seconden. U wordt aangeraden de time-out voor fouten in te stellen op 60 seconden en cluster-recheck-interval
op een waarde die groter is dan 60 seconden. Het instellen van cluster-recheck-interval
op een kleine waarde wordt niet aanbevolen.
De eigenschapswaarde bijwerken naar 2 minutes
uitvoeren:
crm configure property cluster-recheck-interval=2min
Als u al een beschikbaarheidsgroepresource hebt die wordt beheerd door een Pacemaker-cluster, heeft het Pacemaker-pakket 1.1.18-11.el7 een wijziging in het gedrag geïntroduceerd voor de start-failure-is-fatal
-clusterinstelling wanneer de waarde op false
is. Deze wijziging is van invloed op de failoverwerkstroom. Als een primaire replica een storing ondervindt, wordt verwacht dat het cluster een failover naar een van de beschikbare secundaire replica's uitvoert. In plaats daarvan merken gebruikers dat het cluster blijft proberen om de mislukte primaire replica te starten. Als die primaire server nooit online komt (vanwege een permanente storing), voert het cluster nooit een failover uit naar een andere beschikbare secundaire replica. Vanwege deze wijziging is een eerder aanbevolen configuratie voor het instellen van start-failure-is-fatal
niet meer geldig en moet de instelling worden teruggezet naar de standaardwaarde van true
.
Daarnaast moet de AG-resource worden bijgewerkt om de eigenschap failure-timeout
op te nemen.
De eigenschapswaarde bijwerken naar true
uitvoeren:
crm configure property start-failure-is-fatal=true
Werk uw bestaande AG-resource-eigenschap failure-timeout
bij naar 60s
uitvoeren (vervang ag1
door de naam van uw resource in de beschikbaarheidsgroep):
crm configure edit ag1
Voeg in de teksteditor meta failure-timeout=60s
toe na een param
en vóór een op
.
Zie Clusterresources configurerenvoor meer informatie over Pacemaker-clustereigenschappen.
Overwegingen voor meerdere netwerkinterfaces (NIC's)
Wanneer u hoge beschikbaarheid instelt met servers met meerdere NIC's, volgt u deze suggesties:
Zorg ervoor dat het hosts
-bestand is ingesteld, zodat de IP-adressen van de server voor de meerdere NIC's worden omgezet in de hostnaam van de Linux-server op elk knooppunt.
Bij het opzetten van het cluster met Pacemaker, zou Corosync moeten worden geconfigureerd met de hostnamen van de servers om de configuratie voor alle netwerkinterfaces (NIC's) toe te passen. We willen alleen de Pacemaker/Corosync-communicatie via één NIC. Zodra het Pacemaker-cluster is geconfigureerd, wijzigt u de configuratie in het corosync.conf
-bestand en werkt u het IP-adres bij voor de toegewezen NIC die u wilt gebruiken voor de Pacemaker/Corosync-communicatie.
De <hostname>
in het corosync.conf
-bestand moet hetzelfde zijn als de uitvoer die is opgegeven bij het uitvoeren van een reverse lookup (ping -a <ip_address>
) en moet de korte naam zijn die op de host is geconfigureerd. Zorg ervoor dat het hosts
bestand ook het juiste IP-adres voor naamomzetting vertegenwoordigt.
Hieronder ziet u de wijzigingen in het corosync.conf
-bestand:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Pacemaker-clusterleveranciers vereisen het afschermen van een mislukt knooppunt met behulp van een fencing-apparaat dat is geconfigureerd voor een ondersteunde clusterinstallatie. Wanneer de clusterresourcemanager de status van een knooppunt of van een resource op een knooppunt niet kan bepalen, brengt het fencing-proces het cluster terug naar een bekende staat.
Fencing op resourceniveau zorgt er voornamelijk voor dat er tijdens een storing geen gegevensbeschadiging is door een resource te configureren. U kunt bijvoorbeeld fencing op resourceniveau gebruiken met DRBD (gedistribueerd gerepliceerd blokapparaat) om de schijf op een knooppunt als verouderd te markeren wanneer de communicatiekoppeling uitvalt.
Afscherming op knooppuntniveau zorgt ervoor dat een knooppunt geen resources uitvoert. Dit wordt gedaan door het knooppunt opnieuw in te instellen en de Pacemaker-implementatie wordt STONITH genoemd. Pacemaker ondersteunt een groot aantal fencing-apparaten, zoals een onbreekbare voeding of beheerinterfacekaarten voor servers.
Zie voor meer informatie:
Tijdens de initialisatietijd van het cluster wordt fencing uitgeschakeld als er geen configuratie wordt gedetecteerd. Deze kan later worden ingeschakeld door de volgende opdracht uit te voeren:
sudo crm configure property stonith-enabled=true
Belangrijk
Het uitschakelen van fencing is alleen voor testdoeleinden. Als u Pacemaker in een productieomgeving wilt gebruiken, moet u een fencing-implementatie plannen, afhankelijk van uw omgeving en deze ingeschakeld houden. SUSE biedt geen fencingagents voor cloudomgevingen (inclusief Azure) of Hyper-V. De leverancier van het cluster biedt daarom geen ondersteuning voor het uitvoeren van productieclusters in deze omgevingen. We werken aan een oplossing voor deze kloof die beschikbaar is in toekomstige releases.
Raadpleeg de SLES Administration Guide.
Pacemaker inschakelen
Schakel Pacemaker in zodat deze automatisch wordt gestart.
Voer de volgende opdracht uit op elk knooppunt in het cluster.
systemctl enable pacemaker
Maak een resource voor een beschikbaarheidsgroep
Met de volgende opdracht maakt en configureert u de resource van de beschikbaarheidsgroep voor drie replica's van beschikbaarheidsgroep [ag1]. De bewakingsbewerkingen en time-outs moeten expliciet worden opgegeven in SLES op basis van het feit dat time-outs zeer afhankelijk zijn van workloads en zorgvuldig moeten worden aangepast voor elke implementatie.
Voer de opdracht uit op een van de knooppunten in het cluster:
Voer crm configure
uit om de crm-prompt te openen:
sudo crm configure
Voer in de CRM-prompt de volgende opdracht uit om de resource-eigenschappen te configureren.
primitive ag_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag_cluster ag_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true" \
commit
Notitie
Wanneer u de resource maakt en daarna periodiek, stelt de Pacemaker-resourceagent automatisch de waarde van REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
in op de beschikbaarheidsgroep, gebaseerd op de configuratie van de beschikbaarheidsgroep. Als de beschikbaarheidsgroep bijvoorbeeld drie synchrone replica's heeft, wordt REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
ingesteld op 1
. Zie Hoge beschikbaarheid en gegevensbeveiliging voor configuraties van beschikbaarheidsgroepenvoor meer informatie en aanvullende configuratieopties.
Virtuele IP-resource maken
Als u de virtuele IP-resource niet hebt gemaakt toen u ha-cluster-init
hebt uitgevoerd, kunt u deze resource nu maken. Met de volgende opdracht maakt u een virtuele IP-resource. Vervang <0.0.0.0>
door een beschikbaar adres van uw netwerk en <24>
door het aantal bits in het CIDR-subnetmasker. Voer uit op één knooppunt.
crm configure \
primitive admin_addr \
ocf:heartbeat:IPaddr2 \
params ip=<0.0.0.0> \
cidr_netmask=<24>
Colocatiebeperking toevoegen
Bijna elke beslissing in een Pacemaker-cluster, zoals het kiezen waar een resource moet worden uitgevoerd, wordt uitgevoerd door scores te vergelijken. Scores worden per resource berekend en de clusterresourcemanager kiest het knooppunt met de hoogste score voor een bepaalde resource. (Als een knooppunt een negatieve score voor een resource heeft, kan de resource niet worden uitgevoerd op dat knooppunt.) We kunnen de beslissingen van het cluster manipuleren met beperkingen. Beperkingen hebben een score. Als een beperking een score lager heeft dan oneindig, is het slechts een aanbeveling. Een score van INFINITY betekent dat het een must is. We willen ervoor zorgen dat de primaire beschikbaarheidsgroep en de virtuele IP-resource op dezelfde host worden uitgevoerd, dus definiëren we een colocatiebeperking met een score van INFINITY.
Als u de colocatiebeperking wilt instellen voor het virtuele IP-adres dat moet worden uitgevoerd op hetzelfde knooppunt als het primaire knooppunt, voert u de volgende opdracht uit op één knooppunt:
crm configure
colocation vip_on_master inf: \
admin_addr ms-ag_cluster:Master
commit
Volgordebeperking toevoegen
De colocatiebeperking heeft een impliciete volgordebeperking. De virtuele IP-resource wordt verplaatst voordat de beschikbaarheidsgroepresource wordt verplaatst. De volgorde van gebeurtenissen is standaard:
- Gebruiker brengt probleem
resource migrate
uit van knooppunt1 naar de primaire beschikbaarheidsgroep op knooppunt2.
- De virtuele IP-resource stopt op knooppunt 1.
- De virtuele IP-resource wordt gestart op knooppunt 2. Op dit punt verwijst het IP-adres tijdelijk naar knooppunt 2, terwijl knooppunt 2 nog steeds een secundaire node is voorafgaand aan een failover.
- De master van de beschikbaarheidsgroep op knooppunt 1 wordt gedegradeerd.
- De beschikbaarheidsgroep op knooppunt 2 wordt gepromoveerd tot master.
Als u wilt voorkomen dat het IP-adres tijdelijk verwijst naar het knooppunt met de secundaire pre-failover, voegt u een bestelbeperking toe.
Als u een bestelbeperking wilt toevoegen, voert u de volgende opdracht uit op één knooppunt:
sudo crm configure \
order ag_first inf: ms-ag_cluster:promote admin_addr:start
Belangrijk
Nadat u het cluster hebt geconfigureerd en de beschikbaarheidsgroep als clusterresource hebt toegevoegd, kunt u niet Transact-SQL gebruiken om een failover van de resources van de beschikbaarheidsgroep uit te voeren. SQL Server-clusterresources in Linux zijn niet zo nauw gekoppeld aan het besturingssysteem als op een Windows Server Failover Cluster (WSFC). De SQL Server-service is niet op de hoogte van de aanwezigheid van het cluster. Alle indelingen worden uitgevoerd via de hulpprogramma's voor clusterbeheer. Gebruik crm
in SLES.
Handmatig een failover van de beschikbaarheidsgroep uitvoeren met crm
. Start geen failover met Transact-SQL. Zie Failovervoor meer informatie.
Zie voor meer informatie:
Verwante inhoud
Routekaart
De stappen voor het maken van een beschikbaarheidsgroep op Linux-servers voor hoge beschikbaarheid verschillen van de stappen in een Windows Server-failovercluster. In de volgende lijst worden de stappen op hoog niveau beschreven:
installatierichtlijnen voor SQL Server op Linux.
SQL Server AlwaysOn-beschikbaarheidsgroep configureren voor hoge beschikbaarheid op Linux-.
Configureer een clusterresourcemanager, zoals Pacemaker. Deze instructies staan in dit artikel.
De manier waarop u een clusterresourcebeheer configureert, is afhankelijk van de specifieke Linux-distributie.
Belangrijk
Voor productieomgevingen is een afschermingsagent vereist voor hoge beschikbaarheid. In de voorbeelden in dit artikel worden geen fencingagents gebruikt. Ze zijn alleen bedoeld voor testen en valideren.
Een Linux-cluster maakt gebruik van fencing om het cluster terug te keren naar een bekende status. De manier waarop u fencing configureert, is afhankelijk van de distributie en de omgeving. Op dit moment is fencing niet beschikbaar in sommige cloudomgevingen.
Fencing wordt normaal gesproken geïmplementeerd op het besturingssysteem en is afhankelijk van de omgeving. Zoek instructies voor "fencing" in de documentatie van de distributeur van het besturingssysteem.
de beschikbaarheidsgroep toevoegen als een resource in het cluster.
Open op alle knooppunten de firewallpoorten. Open de poort voor de Pacemaker-service met hoge beschikbaarheid, het SQL Server-exemplaar en het eindpunt van de beschikbaarheidsgroep. De standaard-TCP-poort voor de server waarop SQL Server wordt uitgevoerd, is 1433
.
sudo ufw allow 2224/tcp
sudo ufw allow 3121/tcp
sudo ufw allow 21064/tcp
sudo ufw allow 5405/udp
sudo ufw allow 1433/tcp # Replace with TDS endpoint
sudo ufw allow 5022/tcp # Replace with DATA_MIRRORING endpoint
sudo ufw reload
U kunt de firewall ook uitschakelen, maar dit wordt niet aanbevolen in een productieomgeving:
sudo ufw disable
Pacemaker-pakketten installeren. Voer op alle knooppunten de volgende opdrachten uit voor Ubuntu 20.04. Zie Ubuntu HA - MS SQL Server op Azurevoor meer informatie over het installeren van eerdere versies.
sudo apt-get install -y pacemaker pacemaker-cli-utils crmsh resource-agents fence-agents corosync python3-azure
Stel het wachtwoord in voor de standaardgebruiker die wordt gemaakt bij het installeren van Pacemaker- en Corosync-pakketten. Gebruik hetzelfde wachtwoord op alle knooppunten.
sudo passwd hacluster
Het cluster maken
Voordat u een cluster maakt, moet u een verificatiesleutel maken op de primaire server en deze kopiëren naar de andere servers die deelnemen aan de AG.
Gebruik het volgende script om een verificatiesleutel te maken op de primaire server:
sudo corosync-keygen
U kunt scp
gebruiken om de gegenereerde sleutel naar andere servers te kopiëren:
sudo scp /etc/corosync/authkey dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/authkey dbadmin@server-03:/etc/corosync
Als u het cluster wilt maken, bewerkt u het /etc/corosync/corosync.conf
-bestand op de primaire server:
sudo vim /etc/corosync/corosync.conf
Het bestand corosync.conf
moet er ongeveer uitzien als in het volgende voorbeeld:
totem {
version: 2
cluster_name: agclustername
transport: udpu
crypto_cipher: none
crypto_hash: none
}
logging {
fileline: off
to_stderr: yes
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
debug: off
logger_subsys {
subsys: QUORUM
debug: off
}
}
quorum {
provider: corosync_votequorum
}
nodelist {
node {
name: server-01
nodeid: 1
ring0_addr: 10.0.0.4
}
node {
name: server-02
nodeid: 2
ring0_addr: 10.0.0.5
}
node {
name: server-03
nodeid: 3
ring0_addr: 10.0.0.6
}
}
Vervang het bestand corosync.conf
op andere knooppunten:
sudo scp /etc/corosync/corosync.conf dbadmin@server-02:/etc/corosync
sudo scp /etc/corosync/corosync.conf dbadmin@server-03:/etc/corosync
Start de pacemaker
- en corosync
-services opnieuw op:
sudo systemctl restart pacemaker corosync
Controleer de status van het cluster en controleer de configuratie:
sudo crm status
Overwegingen voor meerdere netwerkinterfaces (NIC's)
Wanneer u hoge beschikbaarheid instelt met servers met meerdere NIC's, volgt u deze suggesties:
Zorg ervoor dat het hosts
-bestand is ingesteld, zodat de IP-adressen van de server voor de meerdere NIC's worden omgezet in de hostnaam van de Linux-server op elk knooppunt.
Bij het instellen van het cluster met Pacemaker, wordt Corosync met behulp van de hostnaam van de servers geconfigureerd zodat de configuratie voor alle NIC's wordt ingesteld. We willen alleen de Pacemaker/Corosync-communicatie via één NIC. Zodra het Pacemaker-cluster is geconfigureerd, wijzigt u de configuratie in het corosync.conf
-bestand en werkt u het IP-adres bij voor de toegewezen NIC die u wilt gebruiken voor de Pacemaker/Corosync-communicatie.
De <hostname>
in het corosync.conf
-bestand moet hetzelfde zijn als de uitvoer die is opgegeven bij het uitvoeren van een reverse lookup (ping -a <ip_address>
), en moet overeenkomen met de korte naam die op de host is geconfigureerd. Zorg ervoor dat het hosts
-bestand ook het juiste IP-adres voor naamresolutie weergeeft.
Hieronder ziet u de wijzigingen in het corosync.conf
-bestand:
nodelist {
node {
ring0_addr: <ip_address_of_node1_NIC1>
name: <hostname_of_node1>
nodeid: 1
}
node {
ring0_addr: <ip_address_of_node2_NIC1>
name: <hostname_of_node2>
nodeid: 2
}
node {
ring0_addr: <ip_address_of_node3_NIC1>
name: <hostname_of_node3>
nodeid: 3
}
}
Pacemaker-clusterleveranciers vereisen het afschermen van een mislukt knooppunt met behulp van een fencing-apparaat dat is geconfigureerd voor een ondersteunde clusterinstallatie. Wanneer de clusterresourcemanager de status van een knooppunt of van een resource op een knooppunt niet kan bepalen, zorgt fencing ervoor dat het cluster weer in een bekende staat wordt gebracht.
Fencing op resourceniveau zorgt ervoor dat er geen beschadiging van gegevens optreedt als er een storing optreedt. U kunt bijvoorbeeld fencing op resourceniveau gebruiken met DRBD (gedistribueerd gerepliceerd blokapparaat) om de schijf op een knooppunt als verouderd te markeren wanneer de communicatiekoppeling uitvalt.
Afscherming op knooppuntniveau zorgt ervoor dat een knooppunt geen resources uitvoert. Dit wordt gedaan door het knooppunt opnieuw in te instellen en de Pacemaker-implementatie wordt STONITH genoemd. Pacemaker ondersteunt een grote verscheidenheid aan fencing-apparaten, bijvoorbeeld een onbreekbare voeding of beheerinterfacekaarten voor servers.
Zie Pacemaker Clusters from Scratch en Fencing and Stonithvoor meer informatie.
Omdat de fencingconfiguratie op knooppuntniveau sterk afhankelijk is van uw omgeving, schakelen we deze uit voor deze zelfstudie (deze kan later worden geconfigureerd). Voer het volgende script uit op het primaire knooppunt:
sudo crm configure property stonith-enabled=false
In dit voorbeeld is het uitschakelen van fencing alleen bedoeld voor testdoeleinden. Als u Pacemaker in een productieomgeving wilt gebruiken, moet u een fencing-implementatie plannen, afhankelijk van uw omgeving en deze ingeschakeld houden. Neem contact op met de leverancier van het besturingssysteem voor informatie over fencingagents voor een specifieke distributie.
Cluster-eigenschap cluster-hercontrole-interval instellen
De eigenschap cluster-recheck-interval
geeft het polling-interval aan waarmee het cluster controleert op wijzigingen in de resourceparameters, beperkingen of andere clusteropties. Als een replica uitvalt, probeert het cluster de replica opnieuw op te starten met een interval dat afhankelijk is van de failure-timeout
-waarde en de cluster-recheck-interval
-waarde. Als failure-timeout
bijvoorbeeld is ingesteld op 60 seconden en cluster-recheck-interval
is ingesteld op 120 seconden, wordt het opnieuw opstarten geprobeerd met een interval dat groter is dan 60 seconden, maar minder dan 120 seconden. U moet failure-timeout
instellen op 60 seconden en cluster-recheck-interval
op een waarde die groter is dan 60 seconden. Het instellen van cluster-recheck-interval
op een kleinere waarde wordt niet aanbevolen.
De eigenschapswaarde bijwerken naar 2 minutes
uitvoeren:
sudo crm configure property cluster-recheck-interval=2min
Als u al een beschikbaarheidsgroepresource hebt die wordt beheerd door een Pacemaker-cluster, heeft Pacemaker-pakket 1.1.18-11.el7 een gedragswijziging geïntroduceerd voor de start-failure-is-fatal
-clusterinstelling wanneer de waarde false
is. Deze wijziging is van invloed op de failoverwerkstroom. Als een primaire replica een storing ondervindt, wordt verwacht dat het cluster een failover naar een van de beschikbare secundaire replica's uitvoert. In plaats daarvan merken gebruikers dat het cluster steeds opnieuw probeert de mislukte primaire replica te starten. Als die primaire server nooit online komt (vanwege een permanente storing), voert het cluster nooit een failover uit naar een andere beschikbare secundaire replica. Vanwege deze wijziging is een eerder aanbevolen configuratie voor het instellen van start-failure-is-fatal
niet meer geldig en moet de instelling worden teruggezet naar de standaardwaarde van true
.
Daarnaast moet de AG-resource worden bijgewerkt om de eigenschap failure-timeout
op te nemen.
De eigenschapswaarde bijwerken naar true
uitvoeren:
sudo crm configure property start-failure-is-fatal=true
Werk uw bestaande AG-resource-eigenschap failure-timeout
bij naar 60s
run (vervang ag1
door de naam van uw beschikbaarheidsgroep-resource):
sudo crm configure meta failure-timeout=60s
SQL Server-resourceagent installeren voor integratie met Pacemaker
Voer de volgende opdrachten uit op alle knooppunten.
sudo apt-get install mssql-server-ha
Een SQL Server-aanmelding maken voor Pacemaker
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.
Op alle SQL Server-exemplaren maakt u een serveraanmelding voor Pacemaker-.
Met de volgende Transact-SQL maakt u een inlog. Vervang <password>
door uw eigen complexe wachtwoord.
USE [master];
GO
CREATE LOGIN [pacemakerLogin]
WITH PASSWORD = N'<password>';
ALTER SERVER ROLE [sysadmin] ADD MEMBER [pacemakerLogin];
Op het moment dat een beschikbaarheidsgroep is gemaakt, vereist de Pacemaker-gebruiker ALTER
, CONTROL
en VIEW DEFINITION
machtigingen voor de beschikbaarheidsgroep, nadat deze is gemaakt, maar voordat er knooppunten aan worden toegevoegd.
Op alle SQL Server-instanties slaat u de referenties op voor de SQL Server-aanmelding.
Vervang <password>
door uw eigen complexe wachtwoord.
echo 'pacemakerLogin' >> ~/pacemaker-passwd
echo '<password>' >> ~/pacemaker-passwd
sudo mv ~/pacemaker-passwd /var/opt/mssql/secrets/passwd
sudo chown root:root /var/opt/mssql/secrets/passwd
sudo chmod 400 /var/opt/mssql/secrets/passwd # Only readable by root
Beschikbaarheidsgroepresource maken
Als u de resource van de beschikbaarheidsgroep wilt maken, gebruikt u de opdracht sudo crm configure
om de resource-eigenschappen in te stellen. In het volgende voorbeeld wordt een type bron voor primaire/replica gemaakt, ocf:mssql:ag
, voor een beschikbaarheidsgroep met de naam ag1
.
~$ sudo crm
configure
primitive ag1_cluster \
ocf:mssql:ag \
params ag_name="ag1" \
meta failure-timeout=60s \
op start timeout=60s \
op stop timeout=60s \
op promote timeout=60s \
op demote timeout=10s \
op monitor timeout=60s interval=10s \
op monitor timeout=60s on-fail=demote interval=11s role="Master" \
op monitor timeout=60s interval=12s role="Slave" \
op notify timeout=60s
ms ms-ag1 ag1_cluster \
meta master-max="1" master-node-max="1" clone-max="3" \
clone-node-max="1" notify="true"
commit
Notitie
Wanneer u de resource maakt en vervolgens periodiek, stelt de Pacemaker-resource agent automatisch de waarde van REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
in voor de beschikbaarheidsgroep op basis van de configuratie ervan. Als de beschikbaarheidsgroep bijvoorbeeld drie synchrone replica's heeft, wordt REQUIRED_SYNCHRONIZED_SECONDARIES_TO_COMMIT
ingesteld op 1
. Zie Hoge beschikbaarheid en gegevensbeveiliging voor configuraties van beschikbaarheidsgroepenvoor meer informatie en aanvullende configuratieopties.
Virtuele IP-resource maken
Als u de resource voor het virtuele IP-adres wilt maken, voert u de volgende opdracht uit op één knooppunt. Gebruik een beschikbaar statisch IP-adres van het netwerk. Voordat u het script uitvoert, vervangt u de waarden tussen < ... >
door een geldig IP-adres.
sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=10.128.16.240
Er is geen equivalent van de naam van de virtuele server in Pacemaker. Als u een verbindingsreeks wilt gebruiken die verwijst naar de naam van een tekenreeksserver en niet het IP-adres gebruikt, registreert u het IP-resourceadres en de gewenste naam van de virtuele server in DNS. Voor DR-configuraties registreert u de gewenste naam van de virtuele server en het IP-adres bij de DNS-servers op zowel de primaire als de DR-site.
Colocatiebeperking toevoegen
Bijna elke beslissing in een Pacemaker-cluster, zoals het kiezen waar een resource moet worden uitgevoerd, wordt uitgevoerd door scores te vergelijken. Scores worden per resource berekend en de clusterresourcemanager kiest het knooppunt met de hoogste score voor een bepaalde resource. (Als een knooppunt een negatieve score voor een resource heeft, kan de resource niet worden uitgevoerd op dat knooppunt.)
Gebruik beperkingen om de beslissingen van het cluster te configureren. Beperkingen hebben een score. Als een beperking een score heeft die lager is dan oneindig, is het slechts een aanbeveling. Een score van INFINITY betekent dat het verplicht is.
Om ervoor te zorgen dat de primaire replica en de virtuele IP-resource zich op dezelfde host bevinden, definieert u een colocatiebeperking met een score van INFINITY. Als u de colocatiebeperking wilt toevoegen, voert u de volgende opdracht uit op één knooppunt.
sudo crm configure colocation ag-with-listener INFINITY: virtualip-group ms-ag1:Master
Volgordebeperking toevoegen
De colocatiebeperking heeft een impliciete volgordebeperking. De virtuele IP-resource wordt verplaatst voordat de beschikbaarheidsgroepresource wordt verplaatst. De volgorde van gebeurtenissen is standaard:
Gebruiker wijst issue pcs resource move
toe aan de primaire beschikbaarheidsgroep van node1
naar node2
.
De virtuele IP-resource stopt op node1
.
De virtuele IP-resource begint op node2
.
Op dit moment verwijst het IP-adres tijdelijk naar node2
, terwijl node2
nog steeds een secundaire vóór-failover is.
De primaire beschikbaarheidsgroep op node1
wordt gedegradeerd naar secundair.
De secundaire beschikbaarheidsgroep op node2
wordt gepromoveerd naar primair.
Als u wilt voorkomen dat het IP-adres tijdelijk verwijst naar het knooppunt met de secundaire pre-failover, voegt u een bestelbeperking toe.
Als u een bestelbeperking wilt toevoegen, voert u de volgende opdracht uit op één knooppunt:
sudo crm configure order ag-before-listener Mandatory: ms-ag1:promote virtualip-group:start
Nadat u het cluster hebt geconfigureerd en de beschikbaarheidsgroep als clusterresource hebt toegevoegd, kunt u Transact-SQL niet gebruiken om de failover van de resources van de beschikbaarheidsgroep uit te voeren. SQL Server-clusterresources in Linux zijn niet zo nauw gekoppeld aan het besturingssysteem als op een Windows Server Failover Cluster (WSFC). De SQL Server-service is niet op de hoogte van de aanwezigheid van het cluster. Alle indelingen worden uitgevoerd via de hulpprogramma's voor clusterbeheer.
Verwante inhoud