Nastavení Pacemakeru v Red Hat Enterprise Linuxu v Azure

Nejprve si přečtěte následující poznámky a dokumenty SAP:

Instalace clusteru

Přehled Pacemakeru na RHEL

Poznámka

Red Hat nepodporuje softwarově emulovaný sledovací zařízení. Red Hat nepodporuje SBD na cloudových platformách. Podrobnosti najdete v tématu Zásady podpory pro vysoce dostupné clustery RHEL – sbd a fence_sbd. Jediným podporovaným mechanismem ohraničování pro clustery Pacemaker Red Hat Enterprise Linux v Azure je agent Azure Fence.

Následující položky mají předponu [A] – platí pro všechny uzly [1] – platí jenom pro uzel 1 nebo [2] – platí jenom pro uzel 2.

  1. [A] Registrace. Tento krok není povinný, pokud používáte image s podporou RHEL SAP HA.

    Zaregistrujte virtuální počítače a připojte je k fondu, který obsahuje úložiště pro RHEL 7.

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

    Připojením fondu k ibitové kopii RHEL s payg paygem Azure Marketplace se vám fakticky bude účtovat dvojnásobné využití RHEL: jednou pro image PAYG a jednou pro nárok RHEL ve fondu, který připojíte. Pro zmírnění tohoto rizika teď Azure poskytuje image BYOS RHEL. Další informace najdete v tématu Enterprise imagí Azure s vlastním předplatným Red Hat Enterprise Linuxu.

  2. [A] Povolení RHEL pro úložiště SAP. Tento krok není povinný, pokud používáte image s podporou RHEL SAP HA.

    Pokud chcete nainstalovat požadované balíčky, povolte následující úložiště.

    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] Instalace sady RHEL HA Add-On

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

    Důležité

    Doporučujeme následující verze agenta Azure Fence (nebo novější), aby zákazníci mohli využívat výhod rychlejšího převzetí služeb při selhání, pokud dojde k selhání prostředku nebo uzly clusteru už spolu nemohou komunikovat:
    RHEL 7.7 nebo novější používají nejnovější dostupnou verzi balíčku fence-agents.
    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
    Další informace najdete v tématu Virtuální počítač Azure spuštěný jako člen clusteru RHEL s vysokou dostupností, který trvá příliš dlouho, než se ohraničí, nebo v případě selhání nebo časového limitu ohraničení před vypnutím virtuálního počítače.

    Zkontrolujte verzi agenta Azure Fence. V případě potřeby ho aktualizujte na verzi, která je stejná jako výše uvedená, nebo novější.

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

    Důležité

    Pokud potřebujete aktualizovat agenta Azure Fence a pokud používáte vlastní roli, nezapomeňte aktualizovat vlastní roli tak, aby zahrnovala akci powerOff. Podrobnosti najdete v tématu Vytvoření vlastní role pro agenta plotu.

  4. [A] Nastavení překladu názvů hostitelů

    Můžete použít server DNS nebo upravit /etc/hosts na všech uzlech. Tento příklad ukazuje, jak použít soubor /etc/hosts. V následujících příkazech nahraďte IP adresu a název hostitele.

    Důležité

    Pokud v konfiguraci clusteru používáte názvy hostitelů, je důležité mít spolehlivý překlad názvů hostitelů. Komunikace clusteru selže, pokud nejsou dostupné názvy a to může vést ke zpoždění převzetí služeb při selhání clusteru. Výhodou použití /etc/hosts je, že váš cluster se stává nezávislým na DNS, což může být také jediný bod selhání.

    sudo vi /etc/hosts
    

    Do souboru /etc/hosts vložte následující řádky. Změňte IP adresu a název hostitele tak, aby odpovídaly vašemu prostředí.

    # 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] Změna hesla haclusteru na stejné heslo

    sudo passwd hacluster
    
  6. [A] Přidání pravidel brány firewall pro Pacemaker

    Přidejte následující pravidla brány firewall do veškeré komunikace clusteru mezi uzly clusteru.

    sudo firewall-cmd --add-service=high-availability --permanent
    sudo firewall-cmd --add-service=high-availability
    
  7. [A] Povolení základních clusterových služeb

    Spuštěním následujících příkazů povolte službu Pacemaker a spusťte ji.

    sudo systemctl start pcsd.service
    sudo systemctl enable pcsd.service
    
  8. [1] Vytvoření clusteru Pacemaker

    Spuštěním následujících příkazů ověřte uzly a vytvořte cluster. Nastavte token na 30000, aby se umožnila údržba zachování paměti. Další informace najdete v tomto článku pro Linux.

    Pokud se v RHEL 7.x seskupíte cluster, použijte následující příkazy:

    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
    

    Pokud se v RHEL 8.X seskupíte cluster, použijte následující příkazy:

    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
    

    Ověřte stav clusteru spuštěním následujícího příkazu:

     # 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] Nastavení očekávaných hlasů

    # 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

    Pokud se seskupuje cluster s více uzly, to je cluster s více než dvěma uzly, nastavte hlasy na 2.

  10. [1] Povolení souběžných akcí ohrazení

    sudo pcs property set concurrent-fencing=true
    

Vytvoření zařízení STONITH

Zařízení STONITH používá objekt služby k autorizaci proti Microsoft Azure. Pokud chcete vytvořit objekt služby, postupujte podle těchto kroků.

  1. Přejděte na https://portal.azure.com.
  2. Otevřete okno Azure Active Directory.
    Přejděte na Vlastnosti a poznamenejte si ID adresáře. Toto je ID tenanta.
  3. Klikněte na Registrace aplikací
  4. Klikněte na Nová registrace.
  5. Zadejte název, vyberte účty pouze v tomto adresáři organizace.
  6. Vyberte typ aplikace "Web", zadejte adresu URL pro přihlášení (například http: / /localhost) a klikněte na Přidat.
    Přihlašovací adresa URL se nepoužívá a může to být libovolná platná adresa URL.
  7. Vyberte certifikáty a tajné klíče a pak klikněte na nový tajný klíč klienta.
  8. Zadejte popis nového klíče, vyberte možnost "nikdy vyprší platnost" a klikněte na tlačítko Přidat.
  9. Nastavte uzel na hodnotu. Používá se jako heslo instančního objektu.
  10. Vyberte Přehled. Poznamenejte si ID aplikace. Používá se jako uživatelské jméno (přihlašovací ID v následujících krocích) instančního objektu.

[1] vytvoření vlastní role pro agenta plotu

Objekt služby nemá ve výchozím nastavení oprávnění pro přístup k prostředkům Azure. Musíte přidělit oprávnění instančního objektu pro spuštění a zastavení (napájení) všech virtuálních počítačů v clusteru. Pokud jste ještě nevytvořili vlastní roli, můžete ji vytvořit pomocí PowerShellu nebo rozhraní příkazového řádku Azure CLI .

Pro vstupní soubor použijte následující obsah. Je potřeba upravit obsah pro vaše předplatná, která jsou, nahraďte c276fc76-9cd4-44c9-99a7-4fd71546436e a e91d47c4-76f3-4271-a796-21b4ecfe3624 ID vašeho předplatného. Pokud máte jenom jedno předplatné, odeberte druhou položku v 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] přiřazení vlastní role k instančnímu objektu

Přiřaďte vlastní roli "role ochrany systému Linux" vytvořenou v poslední kapitole objektu služby. Nepoužívejte již vlastníka role. Podrobný postup najdete v tématu přiřazení rolí Azure pomocí Azure Portal.
Ujistěte se, že přiřadíte roli pro oba uzly clusteru.

[1] vytvoření zařízení STONITH

Po úpravě oprávnění pro virtuální počítače můžete nakonfigurovat zařízení STONITH v clusteru.


sudo pcs property set stonith-timeout=900

Poznámka

Možnost ' pcmk_host_map ' je požadována pouze v příkazu, pokud názvy hostitelů RHEL a názvy virtuálních počítačů Azure nejsou stejné. Zadejte mapování ve formátu název hostitele: VM-Name. Přečtěte si část tučné v příkazu. Další informace najdete v tématu o tom, jaký formát mám použít k určení mapování uzlů na zařízení stonith v pcmk_host_map

Pro RHEL 7. X použijte následující příkaz ke konfiguraci ochranného zařízení:

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

Pro RHEL 8. X použijte následující příkaz ke konfiguraci ochranného zařízení:

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

Nakonfigurujte jenom pcmk_delay_max atribut ve dvou Pacemaker clusterech uzlů. Další informace o předcházení Races plotu ve dvou uzlech Pacemaker najdete v tématu zpoždění při ukládání do clusteru se dvěma uzly, aby se zabránilo racesí plotu k případům smrti plotu.

Důležité

Operace monitorování a oplocení jsou rozserializovány. Výsledkem je, že pokud už existuje již běžící operace monitorování a současná událost, dojde k převzetí služeb při selhání clusteru z důvodu již běžící operace monitorování.

[1] povolit použití zařízení STONITH

sudo pcs property set stonith-enabled=true

Tip

Agent Azure plotu vyžaduje odchozí připojení k veřejným koncovým bodům, jak je popsáno, spolu s možnými řešeními ve veřejných koncových bodech pro virtuální počítače s využitím Standard interního nástroje.

Volitelná konfigurace STONITH

Tip

Tato část je platná jenom v případě, že je žádoucí nakonfigurovat speciální zařízení pro oplocení fence_kdump .

Pokud je potřeba shromažďovat diagnostické informace v rámci virtuálního počítače, může být užitečné nakonfigurovat další zařízení STONITH na základě agenta plotu fence_kdump . fence_kdumpAgent může zjistit, že zadaný uzel kdump zotavení po havárii a může službu obnovení po havárii nechat dokončit, než se vyvolají jiné metody oplocení. Všimněte si, že není fence_kdump náhradou za tradiční mechanismy plotu, jako je například agent Azure plot při použití virtuálních počítačů Azure.

Důležité

Uvědomte si, že když fence_kdump je nakonfigurovaný jako stonith na první úrovni, zavede prodlevy při operacích se zabezpečením a v uvedeném pořadí se zpožděními při převzetí služeb při selhání prostředků aplikace.

Pokud se zjistí, že se výpis stavu systému úspěšně zjistil, bude se tato lokalita zpozdit až do dokončení služby obnovení po havárii. Pokud uzel, který selhal, je nedosažitelný nebo pokud neodpovídá, bude se oplocení zpozdit podle času určeného nakonfigurovaným počtem iterací a fence_kdump časovým limitem. Další podrobnosti najdete v tématu návody konfigurace fence_kdump v clusteru Red Hat Pacemaker.
Navrhovaný časový limit fence_kdump může být potřeba přizpůsobit konkrétnímu prostředí.

Doporučujeme nakonfigurovat fence_kdump stonith jenom v případě, že je to nutné pro shromažďování diagnostiky v rámci virtuálního počítače a vždy v kombinaci s tradiční metodou plotu jako s agentem Azure plot.

Následující Red Hat aktualizací KB obsahují důležité informace o konfiguraci fence_kdump stonith:

Pomocí následujících volitelných kroků můžete fence_kdump kromě konfigurace agenta Azure plotu přidat jako konfiguraci STONITH na první úrovni.

  1. [A] ověřte, zda je kdump aktivní a nakonfigurováno.

    systemctl is-active kdump
    # Expected result
    # active
    
  2. [A] nainstalujte fence_kdump agenta plotu.

    yum install fence-agents-kdump
    
  3. [1] fence_kdump v clusteru vytvořte zařízení stonith.

    
     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] nakonfigurujte úrovně stonith tak, aby fence_kdump byl nejdříve zapojen mechanizmus oplocení.

    
     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] povolí požadované porty pro fence_kdump bránu firewall.

    firewall-cmd --add-port=7410/udp
    firewall-cmd --add-port=7410/udp --permanent
    
  6. [A] Ujistěte se, že initramfs soubor obrázku obsahuje fence_kdump hosts soubory a. Podrobnosti najdete v tématu návody konfigurace fence_kdump v clusteru Red Hat Pacemaker.

    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] proveďte fence_kdump_nodes konfiguraci v nástroji /etc/kdump.conf , aby nedocházelo k fence_kdump selhání s časovým limitem pro některé kexec-tools verze. Podrobnosti najdete v tématu fence_kdump vypršení časového limitu, kdy fence_kdump_nodes není zadaný s kexec-Tools verze 2.0.15 nebo novějším , a fence_kdump se v clusteru s vysokou dostupností, který je v RHEL 6 nebo 7 s verzemi kexec-Tools starší než 2.0.14, nepovede o časový limit po X sekundách. Ukázková konfigurace pro cluster se dvěma uzly je uvedená níže. Po provedení změny v /etc/kdump.conf se musí image kdump znovu vygenerovat. To je možné dosáhnout restartováním kdump služby.

    
     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. Otestování konfigurace selháním uzlu. Podrobnosti najdete v tématu návody konfigurace fence_kdump v clusteru Red Hat Pacemaker.

    Důležité

    Pokud je cluster již v produktivním provozu, naplánovat test odpovídajícím způsobem, že dojde k selhání uzlu, bude mít vliv na aplikaci.

    echo c > /proc/sysrq-trigger
    

Další kroky