Pacemaker instellen op Red Hat Enterprise Linux in Azure

Lees eerst de volgende SAP-notities en -documenten:

Clusterinstallatie

Overzicht van Pacemaker op RHEL

Notitie

Red Hat biedt geen ondersteuning voor watchdog die met software is geëmuleerd. Red Hat biedt geen ondersteuning voor SBD op cloudplatforms. Zie Ondersteuningsbeleid voor RHEL High Availability Clusters - sbden fence_sbd voor meer fence_sbd. Het enige ondersteunde fencing-mechanisme voor Pacemaker Red Hat Enterprise Linux clusters in Azure, is de Azure Fence-agent.

De volgende items hebben het voorvoegsel [A] - van toepassing op alle knooppunten, [1] - alleen van toepassing op knooppunt 1 of [2] - alleen van toepassing op knooppunt 2.

  1. [A] Registreren. Deze stap is niet vereist als u RHEL SAP HA-afbeeldingen gebruikt.

    Registreer uw virtuele machines en koppel deze aan een groep die opslagplaatsen voor RHEL 7 bevat.

    sudo subscription-manager register
    # List the available pools
    sudo subscription-manager list --available --matches '*SAP*'
    sudo subscription-manager attach --pool=<pool id>
    

    Als u een groep koppelt aan een Azure Marketplace PAYG RHEL-afbeelding, wordt u in twee keer gefactureerd voor uw RHEL-gebruik: eenmaal voor de payg-afbeelding en eenmaal voor het RHEL-recht in de pool die u koppelt. Om dit te verhelpen, biedt Azure nu BYOS RHEL-afbeeldingen. Zie Bring-Your-Own-Red Hat Enterprise Linux Azure-afbeeldingen voor meer informatie.

  2. [A] RHEL inschakelen voor SAP-repos. Deze stap is niet vereist als u RHEL SAP HA-afbeeldingen gebruikt.

    Als u de vereiste pakketten wilt installeren, moet u de volgende opslagplaatsen inschakelen.

    sudo subscription-manager repos --disable "*"
    sudo subscription-manager repos --enable=rhel-7-server-rpms
    sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-rpms
    sudo subscription-manager repos --enable=rhel-sap-for-rhel-7-server-rpms
    sudo subscription-manager repos --enable=rhel-ha-for-rhel-7-server-eus-rpms
    
  3. [A] RHEL HA-Add-On

    sudo yum install -y pcs pacemaker fence-agents-azure-arm nmap-ncat
    

    Belangrijk

    We raden klanten de volgende versies van de Azure Fence-agent (of hoger) aan om te profiteren van een snellere failovertijd, als een resource stopt of als de clusterknooppunten niet meer met elkaar kunnen communiceren:
    RHEL 7.7 of hoger maakt gebruik van de nieuwste beschikbare versie van het fence-agents-pakket
    RHEL 7.6: fence-agents-4.2.1-11.el7_6.8
    RHEL 7.5: fence-agents-4.0.11-86.el7_5.8
    RHEL 7.4: fence-agents-4.0.11-66.el7_4.12
    Zie Azure VM running as a RHEL High Availability cluster member (Azure-VMdie wordt uitgevoerd als RHEL-clusterlid met hoge beschikbaarheid) voor meer informatie. Het kan ook heel lang duren voordat de VM wordt afgesloten.

    Controleer de versie van de Azure Fence-agent. Werk deze indien nodig bij naar een versie die gelijk is aan of hoger is dan de hierboven genoemde.

    # Check the version of the Azure Fence Agent
     sudo yum info fence-agents-azure-arm
    

    Belangrijk

    Als u de Azure Fence-agent moet bijwerken en als u een aangepaste rol gebruikt, moet u de aangepaste rol bijwerken om actie powerOff op te nemen. Zie Een aangepaste rol maken voor de fence-agent voor meer informatie.

  4. [A] Hostnaamoplossing instellen

    U kunt een DNS-server gebruiken of de /etc/hosts op alle knooppunten wijzigen. In dit voorbeeld ziet u hoe u het bestand /etc/hosts gebruikt. Vervang het IP-adres en de hostnaam in de volgende opdrachten.

    Belangrijk

    Als u hostnamen gebruikt in de clusterconfiguratie, is het essentieel om een betrouwbare hostnaamresolutie te hebben. De clustercommunicatie mislukt als de namen niet beschikbaar zijn en dit kan leiden tot cluster-failover-vertragingen. Het voordeel van het gebruik van /etc/hosts is dat uw cluster onafhankelijk wordt van DNS, wat ook een single point of failures kan zijn.

    sudo vi /etc/hosts
    

    Voeg de volgende regels toe aan /etc/hosts. Wijzig het IP-adres en de hostnaam in uw omgeving

    # IP address of the first cluster node
    10.0.0.6 prod-cl1-0
    # IP address of the second cluster node
    10.0.0.7 prod-cl1-1
    
  5. [A] Wijzig het hacluster-wachtwoord in hetzelfde wachtwoord

    sudo passwd hacluster
    
  6. [A] Firewallregels toevoegen voor Pacemaker

    Voeg de volgende firewallregels toe aan alle clustercommunicatie tussen de clusterknooppunten.

    sudo firewall-cmd --add-service=high-availability --permanent
    sudo firewall-cmd --add-service=high-availability
    
  7. [A] Basisclusterservices inschakelen

    Voer de volgende opdrachten uit om de Pacemaker-service in te stellen en te starten.

    sudo systemctl start pcsd.service
    sudo systemctl enable pcsd.service
    
  8. [1] Pacemaker-cluster maken

    Voer de volgende opdrachten uit om de knooppunten te verifiëren en het cluster te maken. Stel het token in op 30000 om onderhoud met geheugenbehoud toe te staan. Zie dit artikel voor Linux voor meer informatie.

    Als u een cluster bouwt op RHEL 7.x, gebruikt u de volgende opdrachten:

    sudo pcs cluster auth prod-cl1-0 prod-cl1-1 -u hacluster
    sudo pcs cluster setup --name nw1-azr prod-cl1-0 prod-cl1-1 --token 30000
    sudo pcs cluster start --all
    

    Als u een cluster bouwt op RHEL 8.X, gebruikt u de volgende opdrachten:

    sudo pcs host auth prod-cl1-0 prod-cl1-1 -u hacluster
    sudo pcs cluster setup nw1-azr prod-cl1-0 prod-cl1-1 totem token=30000
    sudo pcs cluster start --all
    

    Controleer de clusterstatus door de volgende opdracht uit te voeren:

     # Run the following command until the status of both nodes is online
    sudo pcs status
    # Cluster name: nw1-azr
    # WARNING: no stonith devices and stonith-enabled is not false
    # Stack: corosync
    # Current DC: prod-cl1-1 (version 1.1.18-11.el7_5.3-2b07d5c5a9) - partition with quorum
    # Last updated: Fri Aug 17 09:18:24 2018
    # Last change: Fri Aug 17 09:17:46 2018 by hacluster via crmd on prod-cl1-1
    #
    # 2 nodes configured
    # 0 resources configured
    #
    # Online: [ prod-cl1-0 prod-cl1-1 ]
    #
    # No resources
    #
    # Daemon Status:
    #   corosync: active/disabled
    #   pacemaker: active/disabled
    #   pcsd: active/enabled
    
  9. [A] Stel Verwachte stemmen in.

    # Check the quorum votes 
     pcs quorum status
     # If the quorum votes are not set to 2, execute the next command
     sudo pcs quorum expected-votes 2
    

    Tip

    Als u een cluster met meerdere knooppunten bouwt, dat wil zeggen een cluster met meer dan twee knooppunten, stelt u de stemmen niet in op 2.

  10. [1] Gelijktijdige fence-acties toestaan

    sudo pcs property set concurrent-fencing=true
    

STONITH-apparaat maken

Het STONITH-apparaat gebruikt een service-principal om te autoreren voor Microsoft Azure. Volg deze stappen om een service-principal te maken.

  1. Ga naar https://portal.azure.com
  2. Open de Azure Active Directory blade
    Ga naar Eigenschappen en noteer de map-id. Dit is de tenant-id.
  3. Klik op App-registraties
  4. Klik op Nieuwe registratie
  5. Voer een naam in en selecteer 'Alleen accounts in deze organisatiemap'
  6. Selecteer Toepassingstype 'Web', voer een aanmeldings-URL in (bijvoorbeeld http: / /localhost) en klik op Toevoegen
    De aanmeldings-URL wordt niet gebruikt en kan een geldige URL zijn
  7. Selecteer Certificaten en geheimen en klik vervolgens op Nieuw clientgeheim
  8. Voer een beschrijving in voor een nieuwe sleutel, selecteer 'Verloopt nooit' en klik op Toevoegen
  9. Maak van een knooppunt de Waarde. Deze wordt gebruikt als het wachtwoord voor de service-principal
  10. Selecteer Overzicht. Noteer de toepassings-id. Deze wordt gebruikt als de gebruikersnaam (aanmeldings-id in de onderstaande stappen) van de service-principal

[1] Een aangepaste rol maken voor de fence-agent

De service-principal heeft standaard geen machtigingen voor toegang tot uw Azure-resources. U moet de service-principal machtigingen geven om alle virtuele machines van het cluster te starten en te stoppen (uitschakelen). Als u de aangepaste rol nog niet hebt gemaakt, kunt u deze maken met behulp van PowerShell of Azure CLI

Gebruik de volgende inhoud voor het invoerbestand. U moet de inhoud aanpassen aan uw abonnementen. Vervang c276fc76-9cd4-44c9-99a7-4fd71546436e en e91d47c4-76f3-4271-a796-21b4ecfe3624 door de id's van uw abonnement. Als u slechts één abonnement hebt, verwijdert u de tweede vermelding in AssignableScopes.

{
      "Name": "Linux Fence Agent Role",
      "description": "Allows to power-off and start virtual machines",
      "assignableScopes": [
              "/subscriptions/e663cc2d-722b-4be1-b636-bbd9e4c60fd9",
              "/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624"
      ],
      "actions": [
              "Microsoft.Compute/*/read",
              "Microsoft.Compute/virtualMachines/powerOff/action",
              "Microsoft.Compute/virtualMachines/start/action"
      ],
      "notActions": [],
      "dataActions": [],
      "notDataActions": []
}

[A] De aangepaste rol toewijzen aan de service-principal

Wijs de aangepaste rol 'Linux Fence Agent Role' die in het laatste hoofdstuk is gemaakt, toe aan de service-principal. Gebruik de rol van Eigenaar niet meer! Zie Azure-rollen toewijzen met behulp vande Azure Portal .
Zorg ervoor dat u de rol voor beide clusterknooppunten toewijst.

[1] De STONITH-apparaten maken

Nadat u de machtigingen voor de virtuele machines hebt bewerkt, kunt u de STONITH-apparaten in het cluster configureren.


sudo pcs property set stonith-timeout=900

Notitie

Optie 'pcmk_host_map' is ALLEEN vereist in de opdracht als de namen van de RHEL-host en de namen van de Azure-VM's NIET identiek zijn. Geef de toewijzing op in de indeling hostnaam:vm-name. Raadpleeg de vetgedrukte sectie in de opdracht . Zie Welke indeling moet ik gebruiken om knooppunttoewijzingen op te geven voor stonith-apparaten in pcmk_host_map

Gebruik voor RHEL 7.X de volgende opdracht om het fence-apparaat te configureren:

sudo pcs stonith create rsc_st_azure fence_azure_arm login="login ID" passwd="password" resourceGroup="resource group" tenantId="tenant ID" subscriptionId="subscription id" pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \
power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \
op monitor interval=3600

Gebruik voor RHEL 8.X de volgende opdracht om het fence-apparaat te configureren:

sudo pcs stonith create rsc_st_azure fence_azure_arm username="login ID" password="password" resourceGroup="resource group" tenantId="tenant ID" subscriptionId="subscription id" pcmk_host_map="prod-cl1-0:prod-cl1-0-vm-name;prod-cl1-1:prod-cl1-1-vm-name" \
power_timeout=240 pcmk_reboot_timeout=900 pcmk_monitor_timeout=120 pcmk_monitor_retries=4 pcmk_action_limit=3 pcmk_delay_max=15 \
op monitor interval=3600

Tip

Configureer het kenmerk pcmk_delay_max alleen in twee Pacemaker-knooppuntclusters. Zie Delaying fencing in a two node clusterto prevent fence fences of 'fence death'-scenario's voor meer informatie over het voorkomen van fences in een Pacemaker-cluster met twee knooppunt.

Belangrijk

De bewakings- en fencingbewerkingen worden gedeser serialiseerd. Als gevolg hiervan, als er een langer lopende bewakingsbewerking en gelijktijdige fencing-gebeurtenis is, is er geen vertraging voor de cluster-failover vanwege de bewakingsbewerking die al wordt uitgevoerd.

[1] Het gebruik van een STONITH-apparaat inschakelen

sudo pcs property set stonith-enabled=true

Tip

Azure Fence Agent vereist uitgaande connectiviteit met openbare eindpunten, zoals beschreven, samen met mogelijke oplossingen, in Openbare eindpuntconnectiviteit voor VM's die gebruikmaken van de standaard-ILB.

Optionele STONITH-configuratie

Tip

Deze sectie is alleen van toepassing als u een speciaal fencing-apparaat wilt fence_kdump configureren.

Als er diagnostische gegevens moeten worden verzameld binnen de VM, kan het handig zijn om een extra STONITH-apparaat te configureren op basis van de fence-agent fence_kdump . De agent kan detecteren dat een knooppunt kdump-crashherstel heeft ingevoerd en kan toestaan dat de crashherstelservice wordt voltooid voordat andere fence_kdump fencingmethoden worden aangeroepen. Houd er rekening fence_kdump mee dat geen vervanging is voor traditionele fence-mechanismen, zoals Azure Fence Agent bij het gebruik van Azure-VM's.

Belangrijk

Wanneer wordt geconfigureerd als een stonith op het eerste niveau, zal dit vertragingen in de fencing-bewerkingen en respectievelijk vertragingen in de failover van fence_kdump toepassingsbronnen tot gevolg hebben.

Als er een crashdump is gedetecteerd, wordt de fencing uitgesteld totdat de crashherstelservice is voltooid. Als het knooppunt niet bereikbaar is of niet reageert, wordt de fencing vertraagd door de tijd die wordt bepaald door het geconfigureerde aantal iteraties en fence_kdump de time-out. Zie voor meer informatie Hoe kan ik configureren fence_kdump in een Red Hat Pacemaker-cluster.
De voorgestelde fence_kdump time-out moet mogelijk worden aangepast aan de specifieke omgeving.

We raden u aan om stonith alleen te configureren wanneer dit nodig is om diagnostische gegevens binnen de VM te verzamelen en altijd in combinatie met de traditionele fence-methode fence_kdump als Azure Fence Agent.

De volgende Red Hat-KB's bevatten belangrijke informatie over het configureren fence_kdump van stonith:

Voer de volgende optionele stappen uit om naast de configuratie van de Azure Fence Agent een STONITH-configuratie op het eerste niveau fence_kdump toe te voegen.

  1. [A] Controleer of kdump actief is en is geconfigureerd.

    systemctl is-active kdump
    # Expected result
    # active
    
  2. [A] Installeer de fence_kdump fence-agent.

    yum install fence-agents-kdump
    
  3. [1] Maak fence_kdump een stonith-apparaat in het cluster.

    
     pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="prod-cl1-0 prod-cl1-1" timeout=30
     
  4. [1] Configureer de stonith-niveaus, zodat fence_kdump het fencing-mechanisme eerst wordt ingeschakeld.

    
     pcs stonith create rsc_st_kdump fence_kdump pcmk_reboot_action="off" pcmk_host_list="prod-cl1-0 prod-cl1-1"
     pcs stonith level add 1 prod-cl1-0 rsc_st_kdump
     pcs stonith level add 1 prod-cl1-1 rsc_st_kdump
     pcs stonith level add 2 prod-cl1-0 rsc_st_azure
     pcs stonith level add 2 prod-cl1-1 rsc_st_azure
     # Check the stonith level configuration 
     pcs stonith level
     # Example output
     # Target: prod-cl1-0
     # Level 1 - rsc_st_kdump
     # Level 2 - rsc_st_azure
     # Target: prod-cl1-1
     # Level 1 - rsc_st_kdump
     # Level 2 - rsc_st_azure
     
  5. [A] De vereiste poorten voor toestaan fence_kdump via de firewall

    firewall-cmd --add-port=7410/udp
    firewall-cmd --add-port=7410/udp --permanent
    
  6. [A] Zorg ervoor dat initramfs het afbeeldingsbestand en fence_kdump de bestanden hosts bevat. Zie voor meer Hoe kan ik configureren fence_kdump in een Red Hat Pacemaker-cluster.

    lsinitrd /boot/initramfs-$(uname -r)kdump.img | egrep "fence|hosts"
    # Example output 
    # -rw-r--r--   1 root     root          208 Jun  7 21:42 etc/hosts
    # -rwxr-xr-x   1 root     root        15560 Jun 17 14:59 usr/libexec/fence_kdump_send
    
  7. [A] Voer de configuratie fence_kdump_nodes uit in om te voorkomen dat een /etc/kdump.conf fence_kdump time-out voor sommige kexec-tools versies mislukt. Zie fence_kdump time-outs wanneer fence_kdump_nodes niet is opgegeven met kexec-tools versie 2.0.15 of hoger en fence_kdump mislukt met 'time-out na X seconden' in een RHEL 6- of 7-cluster met hoge beschikbaarheid met kexec-tools die ouder zijn dan 2.0.14. De voorbeeldconfiguratie voor een cluster met twee knooppunt wordt hieronder weergegeven. Nadat u een wijziging in heeft gemaakt, moet /etc/kdump.conf de kdump-afbeelding opnieuw worden ge regenereerd. Dit kan worden bereikt door de service opnieuw te kdump starten.

    
     vi /etc/kdump.conf
     # On node prod-cl1-0 make sure the following line is added
     fence_kdump_nodes  prod-cl1-1
     # On node prod-cl1-1 make sure the following line is added
     fence_kdump_nodes  prod-cl1-0
    
     # Restart the service on each node
     systemctl restart kdump
     
  8. Test de configuratie door een knooppunt vast te maken. Zie voor meer Hoe kan ik configureren fence_kdump in een Red Hat Pacemaker-cluster.

    Belangrijk

    Als het cluster al productief wordt gebruikt, moet u de test dienovereenkomstig plannen, omdat het vast loopt op een knooppunt van invloed is op de toepassing.

    echo c > /proc/sysrq-trigger
    

Volgende stappen