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

I den här artikeln beskrivs hur du distribuerar de virtuella datorerna, konfigurerar de virtuella datorerna, installerar klusterramverket och installerar en NFS-server med hög tillgång som kan användas för att lagra delade data i ett SAP-system med hög tillgång. Den här guiden beskriver hur du ställer in en NFS-server med hög tillgång 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.

Anteckning

Den här artikeln innehåller referenser till termerna slave och master, 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 -artiklar först

Översikt

För att uppnå hög tillgänglighet kräver SAP NetWeaver en NFS-server. NFS-servern är konfigurerad 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. I följande lista visas konfigurationen av lastbalanseraren.

  • Konfiguration av frontend
    • IP-adress 10.0.0.4 för NW1
    • IP-adress 10.0.0.5 för NW2
  • Serverkonfiguration
    • Ansluten till primära nätverksgränssnitt för alla virtuella datorer som ska ingå i NFS-klustret
  • Avsökningsport
    • Port 61000 för NW1
    • Port 61001 för NW2
  • Lastbalanseringsregler (om du använder en grundläggande lastbalanserare)
    • 2049 TCP för NW1
    • 2049 UDP för NW1
    • 2049 TCP för NW2
    • 2049 UDP för NW2

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

Du kan antingen använda en Azure-mall från GitHub för att distribuera alla nödvändiga Azure-resurser, inklusive virtuella datorer, tillgänglighetsuppsättning och lastbalanserare, eller så kan du distribuera resurserna manuellt.

Distribuera Linux via Azure-mall

Den Azure Marketplace innehåller en avbildning SUSE Linux Enterprise Server för SAP Applications 12 som du kan använda för att distribuera nya virtuella datorer. Du kan använda en av snabbstartsmallarna på GitHub för att distribuera alla nödvändiga resurser. Mallen distribuerar de virtuella datorerna, lastbalanseraren, tillgänglighetsuppsättningen osv. Följ dessa steg för att distribuera mallen:

  1. Öppna SAP-filservermallen i Azure Portal
  2. Ange följande parametrar
    1. Resursprefix
      Ange det prefix som du vill använda. Värdet används som ett prefix för de resurser som distribueras.
    2. Antal SAP-system
      Ange antalet SAP-system som ska använda den här filservern. Detta distribuerar den nödvändiga mängden konfigurationer på serversidan, belastningsutjämningsregler, avsökningsportar, diskar osv.
    3. Os-typ
      Välj en av Linux-distributionerna. I det här exemplet väljer du SLES 12
    4. Administratörsnamn och administratörslösenord
      En ny användare skapas som kan användas för att logga in på datorn.
    5. Undernäts-ID
      Om du vill distribuera den virtuella datorn till ett befintligt virtuellt nätverk där du har ett undernät som definierats som den virtuella datorn ska tilldelas ska du namnge ID:t för det specifika undernätet. ID:t ser vanligtvis ut så här: /subscriptions/subscription < ID >/resourceGroups/< > resursgruppsnamn****< >/providers/Microsoft.Network/virtualNetworks/ namn på virtuellt nätverk /undernät/undernätsnamn < >

Distribuera Linux manuellt via Azure Portal

Du måste först skapa de virtuella datorerna för det här NFS-klustret. Därefter skapar du en lastbalanserare och använder de virtuella datorerna i serverpoolerna.

  1. Skapa en resursgrupp
  2. Skapa ett virtuellt nätverk
  3. Skapa en tillgänglighetsuppsättning
    Ange högsta uppdateringsdomän
  4. Skapa virtuell dator 1 Använd minst SLES4SAP 12 SP3. I det här exemplet används SLES4SAP 12 SP3 BYOS-avbildnings-SLES för SAP Applications 12 SP3 (BYOS)
    Välj tillgänglighetsuppsättning som skapades tidigare
  5. Skapa virtuell dator 2 Använd minst SLES4SAP 12 SP3, i det här exemplet SLES4SAP 12 SP3 BYOS-avbildningen
    SLES för SAP Applications 12 SP3 (BYOS) används
    Välj tillgänglighetsuppsättning som skapades tidigare
  6. Lägg till en datadisk för varje SAP-system på båda virtuella datorerna.
  7. Skapa en Load Balancer (intern). Vi rekommenderar standardlastbalanserare.
    1. Följ de här instruktionerna för att skapa en standardlastbalanserare:
      1. Skapa IP-adresserna för frontend
        1. IP-adress 10.0.0.4 för NW1
          1. Öppna lastbalanseraren, välj IP-adresspool för frontend och klicka på Lägg till
          2. Ange namnet på den nya IP-adresspoolen för frontend (till exempel nw1-frontend)
          3. Ställ in Tilldelning på Statisk och ange IP-adressen (till exempel 10.0.0.4)
          4. Klicka på OK
        2. IP-adress 10.0.0.5 för NW2
          • Upprepa stegen ovan för NW2
      2. Skapa backend-poolerna
        1. Ansluten till primära nätverksgränssnitt för alla virtuella datorer som ska ingå i NFS-klustret
          1. Öppna lastbalanseraren, välj backend-pooler och klicka på Lägg till
          2. Ange namnet på den nya backend-poolen (till exempel nw-backend)
          3. Välj Virtual Network
          4. Klicka på Lägg till en virtuell dator
          5. Välj de virtuella datorerna i NFS-klustret och deras IP-adresser.
          6. Klicka på Add (Lägg till).
      3. Skapa hälsoavsökningarna
        1. Port 61000 för NW1
          1. Öppna lastbalanseraren, välj hälsoavsökningar och klicka på Lägg till
          2. Ange namnet på den nya hälsoavsökningen (till exempel nw1-hp)
          3. Välj TCP som protokoll, port 610 00, behåll Intervall 5 och Tröskelvärde för ej feltillstånd 2
          4. Klicka på OK
        2. Port 61001 för NW2
          • Upprepa stegen ovan för att skapa en hälsoavsökning för NW2
      4. Belastningsutjämningsregler
        1. Öppna lastbalanseraren, välj lastbalanseringsregler och klicka på Lägg till
        2. Ange namnet på den nya lastbalanseringsregeln (till exempel nw1-lb)
        3. Välj den IP-adress för frontend, backend-pool och hälsoavsökning som du skapade tidigare (till exempel nw1-frontend. nw-backend och nw1-hp)
        4. Välj HA-portar.
        5. Se till att aktivera flytande IP
        6. Klicka på OK
        • Upprepa stegen ovan för att skapa belastningsutjämningsregel för NW2
    2. Om ditt scenario kräver en grundläggande lastbalanserare kan du också följa dessa anvisningar:
      1. Skapa IP-adresserna för frontend
        1. IP-adress 10.0.0.4 för NW1
          1. Öppna lastbalanseraren, välj IP-adresspool för frontend och klicka på Lägg till
          2. Ange namnet på den nya IP-adresspoolen för frontend (till exempel nw1-frontend)
          3. Ställ in Tilldelning på Statisk och ange IP-adressen (till exempel 10.0.0.4)
          4. Klicka på OK
        2. IP-adress 10.0.0.5 för NW2
          • Upprepa stegen ovan för NW2
      2. Skapa backend-poolerna
        1. Ansluten till primära nätverksgränssnitt för alla virtuella datorer som ska ingå i NFS-klustret
          1. Öppna lastbalanseraren, välj backend-pooler och klicka på Lägg till
          2. Ange namnet på den nya backend-poolen (till exempel nw-backend)
          3. Klicka på Lägg till en virtuell dator
          4. Välj den tillgänglighetsuppsättning som du skapade tidigare
          5. Välj de virtuella datorerna i NFS-klustret
          6. Klicka på OK
      3. Skapa hälsoavsökningarna
        1. Port 61000 för NW1
          1. Öppna lastbalanseraren, välj hälsoavsökningar och klicka på Lägg till
          2. Ange namnet på den nya hälsoavsökningen (till exempel nw1-hp)
          3. Välj TCP som protokoll, port 610 00, behåll Intervall 5 och Tröskelvärde för ej feltillstånd 2
          4. Klicka på OK
        2. Port 61001 för NW2
          • Upprepa stegen ovan för att skapa en hälsoavsökning för NW2
      4. Belastningsutjämningsregler
        1. 2049 TCP för NW1
          1. Öppna lastbalanseraren, välj lastbalanseringsregler och klicka på Lägg till
          2. Ange namnet på den nya lastbalanseringsregeln (till exempel nw1-lb-2049)
          3. Välj den IP-adress för frontend, backend-pool och hälsoavsökning som du skapade tidigare (till exempel nw1-frontend)
          4. Behåll protokollet TCP och ange port 2049
          5. Öka tidsgränsen för inaktivitet till 30 minuter
          6. Se till att aktivera flytande IP
          7. Klicka på OK
        2. 2049 UDP för NW1
          • Upprepa stegen ovan för port 2049 och UDP för NW1
        3. 2049 TCP för NW2
          • Upprepa stegen ovan för port 2049 och TCP för NW2
        4. 2049 UDP för NW2
          • Upprepa stegen ovan för port 2049 och UDP för NW2

Viktigt

Flytande IP stöds inte på en sekundär IP-konfiguration för nätverkskort i scenarier för belastningsutjämning. Mer information finns i Begränsningar för Azure Load Balancer. Om du behöver ytterligare IP-adress för den virtuella datorn distribuerar du ett andra nätverkskort.

Anteckning

När virtuella datorer utan offentliga IP-adresser placeras i serverpoolen 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 anslutningar finns i Offentlig slutpunktsanslutning för Virtual Machines med Azure Standard Load Balancer i SAP-scenarier med hög tillgänglighet.

Viktigt

Aktivera inte TCP-tidsstämplar på virtuella Azure-datorer som placerats 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.

Skapa pacemakerkluster

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

Konfigurera NFS-server

Följande objekt föregås av antingen [A] – gäller för alla noder, [1] – gäller endast för nod 1 eller [2] – gäller endast 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 NFS-rotexportposten

    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/
    

    Exempel på utdata

    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*
    

    Exempel på utdata

    /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 hanteraren och net-avsnittet.

    global {
         usage-count no;
    }
    common {
         handlers {
              fence-peer "/usr/lib/drbd/crm-fence-peer.sh";
              after-resync-target "/usr/lib/drbd/crm-unfence-peer.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;
         }
         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;
         }
         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-identifiering

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

    Läs den officiella drbd-dokumentationen om hur du ställer in en split brain-avisering.

    Det är också möjligt att återställa automatiskt från ett split brain-scenario. Mer information finns i Principer för automatisk återställning av delade hjärna

Konfigurera Klusterramverk

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

    Viktigt

    Den senaste testningen visade situationer där netcat slutar svara på begäranden på grund av förfrågningsloggar och dess begränsning av hantering av endast en anslutning. Netcat-resursen slutar att lyssna på Azure Load Balancer-begäranden och den flytande IP-adressen blir otillgänglig.
    För befintliga pacemakerkluster rekommenderar vi att du tidigare ersätter netcat med socat. För närvarande rekommenderar vi att du använder azure-lb-resursagenten, som är en del av paketresursagenter, med följande paketversionskrav:

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

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

    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 cidr_netmask=24 op monitor interval=10 timeout=20
    
    sudo crm configure primitive nc_NW1_nfs azure-lb port=61000
    
    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-enheter för SAP-system 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 cidr_netmask=24 op monitor interval=10 timeout=20
    
    sudo crm configure primitive nc_NW2_nfs azure-lb port=61001
    
    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 exportfs klusterresurserna 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