Delen via


Een Pacemaker-cluster configureren voor SQL Server-beschikbaarheidsgroepen

van toepassing op:SQL Server- - Linux

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.

Notitie

Communicatie zonder vooroordelen

Dit artikel bevat verwijzingen naar de term slave, een term die Microsoft aanstootgevend acht wanneer deze in deze context wordt gebruikt. De term wordt weergegeven in dit artikel omdat deze momenteel in de software wordt weergegeven. Wanneer de term uit de software wordt verwijderd, wordt deze uit het artikel verwijderd.

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.

U kunt nog steeds een listener maken voor transparante herverbinding na een failover, maar u moet de naam van de listener handmatig registreren in de DNS-server met het IP-adres dat wordt gebruikt om de virtuele IP-resource te maken (zoals wordt uitgelegd in de volgende secties).

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:

  1. SQL Server configureren op de clusterknooppunten.

  2. De beschikbaarheidsgroep maken.

  3. 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.

  4. de beschikbaarheidsgroep toevoegen als een resource in het cluster.

Hoge beschikbaarheid configureren voor RHEL

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:

  1. Registreer het systeem.

    sudo subscription-manager register
    

    Geef uw gebruikersnaam en wachtwoord op.

  2. 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.

  3. 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>
    
  4. 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:

Pacemaker configureren

Nadat u het abonnement hebt geregistreerd, voert u de volgende stappen uit om Pacemaker te configureren:

  1. 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
  2. Installeer Pacemaker-pakketten op alle knooppunten.

    sudo yum install pacemaker pcs fence-agents-all resource-agents
    
  3. 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
    
  4. 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
    
  5. 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 pacemakeruit.

  6. 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
    }
  }

Een fencing-apparaat configureren

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 falseis. 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.

  1. 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, CONTROLen VIEW DEFINITION machtigingen voor de beschikbaarheidsgroep, nadat deze is gemaakt, maar voordat er knooppunten aan worden toegevoegd.

  2. 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:

  1. De gebruiker geeft opdracht pcs resource move aan de primaire beschikbaarheidsgroep om van knooppunt1 naar knooppunt2 over te schakelen.

  2. De virtuele IP-resource stopt op knooppunt 1.

  3. 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.

  4. De primaire beschikbaarheidsgroep op knooppunt 1 wordt gedegradeerd naar secundair.

  5. 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.