Hoge beschikbaarheid voor NFS op Virtuele Azure-machines op SUSE Linux Enterprise Server

Notitie

U wordt aangeraden een van de eigen NFS-services van Azure te implementeren: NFS in Azure Files of NFS ANF-volumes voor het opslaan van gedeelde gegevens in een maximaal beschikbaar SAP-systeem. Houd er rekening mee dat we SAP-referentiearchitecturen de nadruk leggen op het gebruik van NFS-clusters.

In dit artikel wordt beschreven hoe u de virtuele machines implementeert, de virtuele machines configureert, het clusterframework installeert en een maximaal beschikbare NFS-server installeert die kan worden gebruikt om de gedeelde gegevens van een maximaal beschikbaar SAP-systeem op te slaan. In deze handleiding wordt beschreven hoe u een maximaal beschikbare NFS-server instelt die wordt gebruikt door twee SAP-systemen, NW1 en NW2. Bij de namen van de resources (bijvoorbeeld virtuele machines, virtuele netwerken) in het voorbeeld wordt ervan uitgegaan dat u de SAP-bestandsserversjabloon hebt gebruikt met resourcevoorvoegsel prod.

Notitie

Dit artikel bevat verwijzingen naar termen die Microsoft niet meer gebruikt. Wanneer de voorwaarden uit de software worden verwijderd, worden deze uit dit artikel verwijderd.

Lees eerst de volgende SAP-notities en -documenten

Overzicht

Voor hoge beschikbaarheid is voor SAP NetWeaver een NFS-server vereist. De NFS-server is geconfigureerd in een afzonderlijk cluster en kan worden gebruikt door meerdere SAP-systemen.

SAP NetWeaver High Availability overview

De NFS-server maakt gebruik van een toegewezen virtuele hostnaam en virtuele IP-adressen voor elk SAP-systeem dat gebruikmaakt van deze NFS-server. In Azure is een load balancer vereist voor het gebruik van een virtueel IP-adres. De gepresenteerde configuratie toont een load balancer met:

  • Front-end-IP-adres 10.0.0.4 voor NW1
  • Front-end-IP-adres 10.0.0.5 voor NW2
  • Testpoort 61000 voor NW1
  • Testpoort 61001 voor NW2

Een maximaal beschikbare NFS-server instellen

Linux handmatig implementeren via Azure Portal

In dit document wordt ervan uitgegaan dat u al een resourcegroep, Azure Virtual Network en subnet hebt geïmplementeerd.

Implementeer twee virtuele machines voor NFS-servers. Kies een geschikte SLES-installatiekopieën die worden ondersteund met uw SAP-systeem. U kunt vm's implementeren in een van de beschikbaarheidsopties: schaalset, beschikbaarheidszone of beschikbaarheidsset.

Azure Load Balancer configureren

Volg de handleiding voor het maken van load balancer voor het configureren van een standard load balancer voor hoge beschikbaarheid van een NFS-server. Houd rekening met de volgende punten tijdens de configuratie van de load balancer.

  1. Front-end-IP-configuratie: maak twee front-end-IP-adressen. Selecteer hetzelfde virtuele netwerk en subnet als uw NFS-server.
  2. Back-endpool: back-endpool maken en VM's van NFS-server toevoegen.
  3. Regels voor inkomend verkeer: maak twee taakverdelingsregel, één voor NW1 en een andere voor NW2. Volg dezelfde stappen voor beide taakverdelingsregels.
    • Front-end-IP-adres: front-end-IP selecteren
    • Back-endpool: back-endpool selecteren
    • Controleer poorten met hoge beschikbaarheid
    • Protocol: TCP
    • Statustest: Maak een statustest met de onderstaande details (van toepassing op zowel NW1 als NW2)
      • Protocol: TCP
      • Poort: [bijvoorbeeld: 61000 voor NW1, 61001 voor NW2]
      • Interval: 5
      • Testdrempel: 2
    • Time-out voor inactiviteit (minuten): 30
    • Schakel Zwevend IP-adres in

Notitie

Het eigenschapsnummer van de statustestconfiguratieofOfProbes, ook wel 'Drempelwaarde beschadigd' genoemd in de portal, wordt niet gerespecteerd. Als u dus het aantal geslaagde of mislukte opeenvolgende tests wilt beheren, stelt u de eigenschap probeThreshold in op 2. Het is momenteel niet mogelijk om deze eigenschap in te stellen met behulp van Azure Portal, dus gebruik de Azure CLI of PowerShell-opdracht .

Belangrijk

Zwevend IP-adres wordt niet ondersteund in een secundaire IP-configuratie van een NIC in scenario's voor taakverdeling. Zie Azure Load Balancer-beperkingen voor meer informatie. Als u extra IP-adres voor de virtuele machine nodig hebt, implementeert u een tweede NIC.

Notitie

Wanneer VM's zonder openbare IP-adressen worden geplaatst in de back-endpool van interne (geen openbaar IP-adres) Standard Azure Load Balancer, is er geen uitgaande internetverbinding, tenzij er aanvullende configuratie wordt uitgevoerd om routering naar openbare eindpunten toe te staan. Zie Openbare eindpuntconnectiviteit voor virtuele machines met behulp van Azure Standard Load Balancer in scenario's met hoge beschikbaarheid van SAP voor meer informatie over het bereiken van uitgaande connectiviteit.

Belangrijk

  • Schakel TCP-tijdstempels niet in op Azure-VM's die achter Azure Load Balancer worden geplaatst. Als u TCP-tijdstempels inschakelt, mislukken de statustests. Stel de net.ipv4.tcp_timestamps parameter in op 0. Zie Statustests van Load Balancer voor meer informatie.
  • Als u wilt voorkomen dat saptune de handmatig ingestelde net.ipv4.tcp_timestamps waarde wijzigt van 0 terug naar 1, moet u saptune-versie bijwerken naar 3.1.1 of hoger. Zie saptune 3.1.1 – Moet ik bijwerken? voor meer informatie.

Pacemaker-cluster maken

Volg de stappen in Pacemaker instellen op SUSE Linux Enterprise Server in Azure om een eenvoudig Pacemaker-cluster voor deze NFS-server te maken.

NFS-server configureren

De volgende items worden voorafgegaan door [A] - van toepassing op alle knooppunten, [1] - alleen van toepassing op knooppunt 1 of [2] - alleen van toepassing op knooppunt 2.

  1. [A] Hostnaamomzetting 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

    sudo vi /etc/hosts
    

    Voeg de volgende regels in op /etc/hosts. Het IP-adres en de hostnaam wijzigen zodat deze overeenkomt met uw omgeving

    # IP address of the load balancer frontend configuration for NFS
    
    10.0.0.4 nw1-nfs
    10.0.0.5 nw2-nfs
    
  2. [A] NFS-server inschakelen

    De hoofdvermelding voor NFS-export maken

    sudo sh -c 'echo /srv/nfs/ *\(rw,no_root_squash,fsid=0\)>/etc/exports'
    
    sudo mkdir /srv/nfs/
    
  3. [A] Drbd-onderdelen installeren

    sudo zypper install drbd drbd-kmp-default drbd-utils
    
  4. [A] Maak een partitie voor de drbd-apparaten

    Alle beschikbare gegevensschijven weergeven

    sudo ls /dev/disk/azure/scsi1/
    
    # Example output
    # lun0  lun1
    

    Partities maken voor elke gegevensschijf

    sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun0'
    sudo sh -c 'echo -e "n\n\n\n\n\nw\n" | fdisk /dev/disk/azure/scsi1/lun1'
    
  5. [A] LVM-configuraties maken

    Alle beschikbare partities weergeven

    ls /dev/disk/azure/scsi1/lun*-part*
    
    # Example output
    # /dev/disk/azure/scsi1/lun0-part1  /dev/disk/azure/scsi1/lun1-part1
    

    LVM-volumes maken voor elke partitie

    sudo pvcreate /dev/disk/azure/scsi1/lun0-part1
    sudo vgcreate vg-NW1-NFS /dev/disk/azure/scsi1/lun0-part1
    sudo lvcreate -l 100%FREE -n NW1 vg-NW1-NFS
    
    sudo pvcreate /dev/disk/azure/scsi1/lun1-part1
    sudo vgcreate vg-NW2-NFS /dev/disk/azure/scsi1/lun1-part1
    sudo lvcreate -l 100%FREE -n NW2 vg-NW2-NFS
    
  6. [A] Drbd configureren

    sudo vi /etc/drbd.conf
    

    Zorg ervoor dat het bestand drbd.conf de volgende twee regels bevat

    include "drbd.d/global_common.conf";
    include "drbd.d/*.res";
    

    De algemene drbd-configuratie wijzigen

    sudo vi /etc/drbd.d/global_common.conf
    

    Voeg de volgende vermeldingen toe aan de handler- en netsectie.

    global {
         usage-count no;
    }
    common {
         handlers {
              fence-peer "/usr/lib/drbd/crm-fence-peer.9.sh";
              after-resync-target "/usr/lib/drbd/crm-unfence-peer.9.sh";
              split-brain "/usr/lib/drbd/notify-split-brain.sh root";
              pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f";
         }
         startup {
              wfc-timeout 0;
         }
         options {
         }
         disk {
              md-flushes yes;
              disk-flushes yes;
              c-plan-ahead 1;
              c-min-rate 100M;
              c-fill-target 20M;
              c-max-rate 4G;
         }
         net {
              after-sb-0pri discard-younger-primary;
              after-sb-1pri discard-secondary;
              after-sb-2pri call-pri-lost-after-sb;
              protocol     C;
              tcp-cork yes;
              max-buffers 20000;
              max-epoch-size 20000;
              sndbuf-size 0;
              rcvbuf-size 0;
         }
    }
    
  7. [A] De NFS drbd-apparaten maken

    sudo vi /etc/drbd.d/NW1-nfs.res
    

    De configuratie voor het nieuwe drbd-apparaat invoegen en afsluiten

    resource NW1-nfs {
         protocol     C;
         disk {
              on-io-error       detach;
         }
         net {
             fencing  resource-and-stonith;  
         }
         on prod-nfs-0 {
              address   10.0.0.6:7790;
              device    /dev/drbd0;
              disk      /dev/vg-NW1-NFS/NW1;
              meta-disk internal;
         }
         on prod-nfs-1 {
              address   10.0.0.7:7790;
              device    /dev/drbd0;
              disk      /dev/vg-NW1-NFS/NW1;
              meta-disk internal;
         }
    }
    
    sudo vi /etc/drbd.d/NW2-nfs.res
    

    De configuratie voor het nieuwe drbd-apparaat invoegen en afsluiten

    resource NW2-nfs {
         protocol     C;
         disk {
              on-io-error       detach;
         }
         net {
             fencing  resource-and-stonith;  
         }
         on prod-nfs-0 {
              address   10.0.0.6:7791;
              device    /dev/drbd1;
              disk      /dev/vg-NW2-NFS/NW2;
              meta-disk internal;
         }
         on prod-nfs-1 {
              address   10.0.0.7:7791;
              device    /dev/drbd1;
              disk      /dev/vg-NW2-NFS/NW2;
              meta-disk internal;
         }
    }
    

    Maak het drbd-apparaat en start het

    sudo drbdadm create-md NW1-nfs
    sudo drbdadm create-md NW2-nfs
    sudo drbdadm up NW1-nfs
    sudo drbdadm up NW2-nfs
    
  8. [1] Eerste synchronisatie overslaan

    sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs
    sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
    
  9. [1] Het primaire knooppunt instellen

    sudo drbdadm primary --force NW1-nfs
    sudo drbdadm primary --force NW2-nfs
    
  10. [1] Wacht totdat de nieuwe drbd-apparaten zijn gesynchroniseerd

    sudo drbdsetup wait-sync-resource NW1-nfs
    sudo drbdsetup wait-sync-resource NW2-nfs
    
  11. [1] Bestandssystemen maken op de drbd-apparaten

    sudo mkfs.xfs /dev/drbd0
    sudo mkdir /srv/nfs/NW1
    sudo chattr +i /srv/nfs/NW1
    sudo mount -t xfs /dev/drbd0 /srv/nfs/NW1
    sudo mkdir /srv/nfs/NW1/sidsys
    sudo mkdir /srv/nfs/NW1/sapmntsid
    sudo mkdir /srv/nfs/NW1/trans
    sudo mkdir /srv/nfs/NW1/ASCS
    sudo mkdir /srv/nfs/NW1/ASCSERS
    sudo mkdir /srv/nfs/NW1/SCS
    sudo mkdir /srv/nfs/NW1/SCSERS
    sudo umount /srv/nfs/NW1
    
    sudo mkfs.xfs /dev/drbd1
    sudo mkdir /srv/nfs/NW2
    sudo chattr +i /srv/nfs/NW2
    sudo mount -t xfs /dev/drbd1 /srv/nfs/NW2
    sudo mkdir /srv/nfs/NW2/sidsys
    sudo mkdir /srv/nfs/NW2/sapmntsid
    sudo mkdir /srv/nfs/NW2/trans
    sudo mkdir /srv/nfs/NW2/ASCS
    sudo mkdir /srv/nfs/NW2/ASCSERS
    sudo mkdir /srv/nfs/NW2/SCS
    sudo mkdir /srv/nfs/NW2/SCSERS
    sudo umount /srv/nfs/NW2
    
  12. [A] Drbd split-brain detectie instellen

    Wanneer u drbd gebruikt om gegevens van de ene host naar de andere te synchroniseren, kan er een zogenaamde split brain optreden. Een gesplitst brein is een scenario waarin beide clusterknooppunten het drbd-apparaat promoveren tot de primaire en niet-synchroon zijn gegaan. Het kan een zeldzame situatie zijn, maar je wilt nog steeds zo snel mogelijk een gesplitst brein afhandelen en oplossen. Het is daarom belangrijk om op de hoogte te worden gesteld wanneer er een gesplitst brein is opgetreden.

    Lees de officiële drbd-documentatie over het instellen van een split brain notification.

    Het is ook mogelijk om automatisch te herstellen van een gesplitst hersenscenario. Lees voor meer informatie het beleid voor automatisch splitsen van hersenherstel

ClusterFramework configureren

  1. [1] Voeg de NFS drbd-apparaten voor SAP-systeem NW1 toe aan de clusterconfiguratie

    Belangrijk

    Recente tests hebben situaties ontdekt waarin Netcat niet meer reageert op aanvragen vanwege achterstand en de beperking van het verwerken van slechts één verbinding. De netcat-resource luistert niet meer naar de Azure Load Balancer-aanvragen en het zwevende IP-adres is niet meer beschikbaar.
    Voor bestaande Pacemaker-clusters raden we in het verleden aan netcat te vervangen door socat. Momenteel wordt u aangeraden azure-lb-resourceagent te gebruiken, die deel uitmaakt van pakketresource-agents, met de volgende pakketversievereisten:

    • Voor SLES 12 SP4/SP5 moet de versie ten minste resource-agents-4.3.018.a7fb5035-3.30.1 zijn.
    • Voor SLES 15/15 SP1 moet de versie ten minste resource-agents-4.3.0184.6ee15eb2-4.13.1 zijn.

    Houd er rekening mee dat voor de wijziging korte downtime is vereist.
    Als voor bestaande Pacemaker-clusters de configuratie al is gewijzigd om socat te gebruiken, zoals beschreven in Azure Load-Balancer Detection Hardening, hoeft u niet onmiddellijk over te schakelen naar de azure-lb-resourceagent.

    sudo crm configure rsc_defaults resource-stickiness="200"
    
    # Enable maintenance mode
    sudo crm configure property maintenance-mode=true
    
    sudo crm configure primitive drbd_NW1_nfs \
      ocf:linbit:drbd \
      params drbd_resource="NW1-nfs" \
      op monitor interval="15" role="Master" \
      op monitor interval="30" role="Slave"
    
    sudo crm configure ms ms-drbd_NW1_nfs drbd_NW1_nfs \
      meta master-max="1" master-node-max="1" clone-max="2" \
      clone-node-max="1" notify="true" interleave="true"
    
    sudo crm configure primitive fs_NW1_sapmnt \
      ocf:heartbeat:Filesystem \
      params device=/dev/drbd0 \
      directory=/srv/nfs/NW1  \
      fstype=xfs \
      op monitor interval="10s"
    
    sudo crm configure primitive nfsserver systemd:nfs-server \
      op monitor interval="30s"
    sudo crm configure clone cl-nfsserver nfsserver
    
    sudo crm configure primitive exportfs_NW1 \
      ocf:heartbeat:exportfs \
      params directory="/srv/nfs/NW1" \
      options="rw,no_root_squash,crossmnt" clientspec="*" fsid=1 wait_for_leasetime_on_stop=true op monitor interval="30s"
    
    sudo crm configure primitive vip_NW1_nfs IPaddr2 \
      params ip=10.0.0.4 op monitor interval=10 timeout=20
    
    sudo crm configure primitive nc_NW1_nfs azure-lb port=61000 \
      op monitor timeout=20s interval=10
    
    sudo crm configure group g-NW1_nfs \
      fs_NW1_sapmnt exportfs_NW1 nc_NW1_nfs vip_NW1_nfs
    
    sudo crm configure order o-NW1_drbd_before_nfs inf: \
      ms-drbd_NW1_nfs:promote g-NW1_nfs:start
    
    sudo crm configure colocation col-NW1_nfs_on_drbd inf: \
      g-NW1_nfs ms-drbd_NW1_nfs:Master
    
  2. [1] Voeg de NFS drbd-apparaten voor SAP-systeem NW2 toe aan de clusterconfiguratie

    # Enable maintenance mode
    sudo crm configure property maintenance-mode=true
    
    sudo crm configure primitive drbd_NW2_nfs \
      ocf:linbit:drbd \
      params drbd_resource="NW2-nfs" \
      op monitor interval="15" role="Master" \
      op monitor interval="30" role="Slave"
    
    sudo crm configure ms ms-drbd_NW2_nfs drbd_NW2_nfs \
      meta master-max="1" master-node-max="1" clone-max="2" \
      clone-node-max="1" notify="true" interleave="true"
    
    sudo crm configure primitive fs_NW2_sapmnt \
      ocf:heartbeat:Filesystem \
      params device=/dev/drbd1 \
      directory=/srv/nfs/NW2  \
      fstype=xfs \
      op monitor interval="10s"
    
    sudo crm configure primitive exportfs_NW2 \
      ocf:heartbeat:exportfs \
      params directory="/srv/nfs/NW2" \
      options="rw,no_root_squash,crossmnt" clientspec="*" fsid=2 wait_for_leasetime_on_stop=true op monitor interval="30s"
    
    sudo crm configure primitive vip_NW2_nfs IPaddr2 \
      params ip=10.0.0.5 op monitor interval=10 timeout=20
    
    sudo crm configure primitive nc_NW2_nfs azure-lb port=61001 \
      op monitor timeout=20s interval=10
    
    sudo crm configure group g-NW2_nfs \
      fs_NW2_sapmnt exportfs_NW2 nc_NW2_nfs vip_NW2_nfs
    
    sudo crm configure order o-NW2_drbd_before_nfs inf: \
      ms-drbd_NW2_nfs:promote g-NW2_nfs:start
    
    sudo crm configure colocation col-NW2_nfs_on_drbd inf: \
      g-NW2_nfs ms-drbd_NW2_nfs:Master
    

    De crossmnt optie in de exportfs clusterbronnen is aanwezig in onze documentatie voor achterwaartse compatibiliteit met oudere SLES-versies.

  3. [1] Onderhoudsmodus uitschakelen

    sudo crm configure property maintenance-mode=false
    

Volgende stappen