Hög tillgänglighet för NFS på virtuella Azure-datorer på SUSE Linux Enterprise Server

Kommentar

Vi rekommenderar att du distribuerar en av Azures NFS-tjänster från första part: NFS på Azure Files - eller NFS ANF-volymer för lagring av delade data i ett SAP-system med hög tillgänglighet. Tänk på att vi de-betonar SAP-referensarkitekturer och använder NFS-kluster.

Den här artikeln beskriver hur du distribuerar de virtuella datorerna, konfigurerar de virtuella datorerna, installerar klusterramverket och installerar en NFS-server med hög tillgänglighet som kan användas för att lagra delade data i ett SAP-system med hög tillgänglighet. Den här guiden beskriver hur du konfigurerar en NFS-server med hög tillgänglighet som används av två SAP-system, NW1 och NW2. Namnen på resurserna (till exempel virtuella datorer, virtuella nätverk) i exemplet förutsätter att du har använt SAP-filservermallen med resursprefixet prod.

Kommentar

Den här artikeln innehåller referenser till termer som Microsoft inte längre använder. När villkoren tas bort från programvaran tar vi bort dem från den här artikeln.

Läs följande SAP-anteckningar och dokument först

Översikt

För att uppnå hög tillgänglighet kräver SAP NetWeaver en NFS-server. NFS-servern konfigureras i ett separat kluster och kan användas av flera SAP-system.

Översikt över hög tillgänglighet för SAP NetWeaver

NFS-servern använder ett dedikerat virtuellt värdnamn och virtuella IP-adresser för varje SAP-system som använder den här NFS-servern. I Azure krävs en lastbalanserare för att använda en virtuell IP-adress. Den presenterade konfigurationen visar en lastbalanserare med:

  • Klientdelens IP-adress 10.0.0.4 för NW1
  • Klientdelens IP-adress 10.0.0.5 för NW2
  • Avsökningsport 61000 för NW1
  • Avsökningsport 61001 för NW2

Konfigurera en NFS-server med hög tillgänglighet

Distribuera Linux manuellt via Azure Portal

Det här dokumentet förutsätter att du redan har distribuerat en resursgrupp, Azure Virtual Network och undernät.

Distribuera två virtuella datorer för NFS-servrar. Välj en lämplig SLES-avbildning som stöds med ditt SAP-system. Du kan distribuera en virtuell dator i något av tillgänglighetsalternativen – skalningsuppsättning, tillgänglighetszon eller tillgänglighetsuppsättning.

Konfigurera Azure-lastbalanserare

Följ guiden skapa lastbalanserare för att konfigurera en standardlastbalanserare för en NFS-server med hög tillgänglighet. Under konfigurationen av lastbalanseraren bör du överväga följande punkter.

  1. IP-konfiguration för klientdelen: Skapa två klientdels-IP-adresser. Välj samma virtuella nätverk och undernät som NFS-servern.
  2. Serverdelspool: Skapa serverdelspool och lägg till virtuella NFS-serverdatorer.
  3. Regler för inkommande trafik: Skapa två belastningsutjämningsregler, en för NW1 och en annan för NW2. Följ samma steg för båda belastningsutjämningsreglerna.
    • Klientdels-IP-adress: Välj klientdels-IP
    • Serverdelspool: Välj serverdelspool
    • Kontrollera "Portar med hög tillgänglighet"
    • Protokoll: TCP
    • Hälsoavsökning: Skapa hälsoavsökning med information nedan (gäller för både NW1 och NW2)
      • Protokoll: TCP
      • Port: [till exempel: 61000 för NW1, 61001 för NW2]
      • Intervall: 5
      • Tröskelvärde för avsökning: 2
    • Tidsgräns för inaktivitet (minuter): 30
    • Kontrollera "Aktivera flytande IP"

Kommentar

Egenskapsnummer för hälsoavsökningskonfigurationOfProbes, även kallat "Tröskelvärde för feltillstånd" i portalen, respekteras inte. Så om du vill kontrollera antalet lyckade eller misslyckade efterföljande avsökningar anger du egenskapen "probeThreshold" till 2. Det går för närvarande inte att ange den här egenskapen med hjälp av Azure Portal, så använd antingen Azure CLI- eller PowerShell-kommandot.

Kommentar

När virtuella datorer utan offentliga IP-adresser placeras i serverdelspoolen för intern (ingen offentlig IP-adress) Standard Azure-lastbalanserare, kommer det inte att finnas någon utgående Internetanslutning, såvida inte ytterligare konfiguration utförs för att tillåta routning till offentliga slutpunkter. Mer information om hur du uppnår utgående anslutning finns i Offentlig slutpunktsanslutning för virtuella datorer med Azure Standard Load Balancer i SAP-scenarier med hög tillgänglighet.

Viktigt!

  • Aktivera inte TCP-tidsstämplar på virtuella Azure-datorer som placeras bakom Azure Load Balancer. Om du aktiverar TCP-tidsstämplar misslyckas hälsoavsökningarna. Ange parametern net.ipv4.tcp_timestamps till 0. Mer information finns i Load Balancer-hälsoavsökningar.
  • Om du vill förhindra att saptune ändrar det manuellt inställda net.ipv4.tcp_timestamps värdet från 0 tillbaka till 1bör du uppdatera saptune-versionen till 3.1.1 eller senare. Mer information finns i saptune 3.1.1 – Behöver jag uppdatera?.

Skapa Pacemaker-kluster

Följ stegen i Konfigurera Pacemaker på SUSE Linux Enterprise Server i Azure för att skapa ett grundläggande Pacemaker-kluster för den här NFS-servern.

Konfigurera NFS-server

Följande objekt är prefix med antingen [A] – gäller för alla noder, [1] – endast tillämpligt för nod 1 eller [2] – som endast gäller för nod 2.

  1. [A] Konfigurera värdnamnsmatchning

    Du kan antingen använda en DNS-server eller ändra /etc/hosts på alla noder. Det här exemplet visar hur du använder filen /etc/hosts. Ersätt IP-adressen och värdnamnet i följande kommandon

    sudo vi /etc/hosts
    

    Infoga följande rader i /etc/hosts. Ändra IP-adressen och värdnamnet så att de matchar din miljö

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

    Skapa rotposten för NFS-export

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

    sudo zypper install drbd drbd-kmp-default drbd-utils
    
  4. [A] Skapa en partition för drbd-enheterna

    Visa en lista över alla tillgängliga datadiskar

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

    Skapa partitioner för varje datadisk

    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] Skapa LVM-konfigurationer

    Visa en lista över alla tillgängliga partitioner

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

    Skapa LVM-volymer för varje partition

    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] Konfigurera drbd

    sudo vi /etc/drbd.conf
    

    Kontrollera att filen drbd.conf innehåller följande två rader

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

    Ändra den globala drbd-konfigurationen

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

    Lägg till följande poster i avsnittet handler och net.

    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] Skapa NFS-drbd-enheterna

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

    Infoga konfigurationen för den nya drbd-enheten och avsluta

    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
    

    Infoga konfigurationen för den nya drbd-enheten och avsluta

    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;
         }
    }
    

    Skapa drbd-enheten och starta den

    sudo drbdadm create-md NW1-nfs
    sudo drbdadm create-md NW2-nfs
    sudo drbdadm up NW1-nfs
    sudo drbdadm up NW2-nfs
    
  8. [1] Hoppa över inledande synkronisering

    sudo drbdadm new-current-uuid --clear-bitmap NW1-nfs
    sudo drbdadm new-current-uuid --clear-bitmap NW2-nfs
    
  9. [1] Ange den primära noden

    sudo drbdadm primary --force NW1-nfs
    sudo drbdadm primary --force NW2-nfs
    
  10. [1] Vänta tills de nya drbd-enheterna har synkroniserats

    sudo drbdsetup wait-sync-resource NW1-nfs
    sudo drbdsetup wait-sync-resource NW2-nfs
    
  11. [1] Skapa filsystem på drbd-enheterna

    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] Konfigurera drbd split-brain detection

    När du använder drbd för att synkronisera data från en värd till en annan kan en så kallad delad hjärna uppstå. En delad hjärna är ett scenario där båda klusternoderna befordrade drbd-enheten till den primära och inte synkroniserades. Det kan vara en sällsynt situation men du vill fortfarande hantera och lösa en delad hjärna så snabbt som möjligt. Det är därför viktigt att meddelas när en delad hjärna inträffade.

    Läs den officiella drbd-dokumentationen om hur du konfigurerar en delad hjärnavisering.

    Det är också möjligt att automatiskt återhämta sig från ett scenario med delad hjärna. Mer information finns i Principer för automatisk återställning av delade hjärnor

Konfigurera klusterramverk

  1. [1] Lägg till NFS-drbd-enheterna för SAP-systemet NW1 i klusterkonfigurationen

    Viktigt!

    Nyligen genomförda tester visade situationer där netcat slutar svara på begäranden på grund av kvarvarande uppgifter och dess begränsning av att endast hantera en anslutning. Netcat-resursen slutar lyssna på Azure Load balancer-begäranden och den flytande IP-adressen blir otillgänglig.
    För befintliga Pacemaker-kluster rekommenderar vi tidigare att netcat ersätts med socat. För närvarande rekommenderar vi att du använder azure-lb-resursagenten, som ingår i paketresursagenter, med följande krav på paketversion:

    • För SLES 12 SP4/SP5 måste versionen vara minst resource-agents-4.3.018.a7fb5035-3.30.1.
    • För SLES 15/15 SP1 måste versionen vara minst resource-agents-4.3.0184.6ee15eb2-4.13.1.

    Observera att ändringen kräver kort stilleståndstid.
    För befintliga Pacemaker-kluster, om konfigurationen redan har ändrats för att använda socat enligt beskrivningen i Azure Load-Balancer Detection Hardening, finns det inget krav på att omedelbart växla till azure-lb-resursagenten.

    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] Lägg till NFS-drbd-enheterna för SAP-systemet NW2 i klusterkonfigurationen

    # 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
    

    Alternativet crossmnt i klusterresurserna exportfs finns i vår dokumentation för bakåtkompatibilitet med äldre SLES-versioner.

  3. [1] Inaktivera underhållsläge

    sudo crm configure property maintenance-mode=false
    

Nästa steg