Distribuire istanze di finestre di dialogo SAP con macchine virtuali a disponibilità elevata di SAP ASCS/SCS in RHEL

Questo articolo descrive come installare e configurare istanze del server applicazioni primario (PAS) e istanze di dialogo del server applicazioni aggiuntivo (AAS) nello stesso cluster AAS (ABAP SAP Central Services)/SAP Central Services (SCS) in esecuzione in Red Hat Enterprise Linux (RHEL).

Riferimenti

Panoramica

Questo articolo descrive lo scenario di ottimizzazione dei costi in cui si distribuiscono istanze di finestre di dialogo PAS e AAS con istanze di SAP ASCS/SCS ed ERS (Enqueue Replication Server) in una configurazione a disponibilità elevata. Per ridurre al minimo il numero di macchine virtuali per un singolo sistema SAP, è consigliabile installare PAS e AAS negli stessi host in cui sono in esecuzione SAP ASCS/SCS e SAP ERS. Con SAP ASCS/SCS configurato in un cluster a disponibilità elevata, si vuole che anche PAS e AAS siano gestiti dal cluster. La configurazione è fondamentalmente un'aggiunta a un'installazione del cluster SAP ASCS/SCS già configurata. In questa configurazione, PAS e AAS vengono installati in un nome host virtuale e la relativa directory di istanza viene gestita dal cluster.

Per questa configurazione, PAS e AAS richiedono una directory dell'istanza a disponibilità elevata (/usr/sap/<SID>/D<nr>). È possibile posizionare il file system della directory dell'istanza nella stessa risorsa di archiviazione a disponibilità elevata usata per la configurazione dell'istanza di ASCS e ERS. L'architettura presentata illustra NFS in File di Azure o Azure NetApp Files per una directory di istanza a disponibilità elevata per l'installazione.

L'esempio illustrato in questo articolo per descrivere la distribuzione usa le informazioni di sistema seguenti:

Nome istanza Numero istanza Nome host virtuale IP virtuale (porta probe)
ABAP SAP Central Services (ASCS) 00 sapascs 10.90.90.10 (62000)
Enqueue Replication Server (ERS) 01 sapers 10.90.90.9 (62001)
Server applicazioni primario (PAS) 02 sappas 10.90.90.30 (62002)
Server applicazioni aggiuntivo (AAS) 03 sapers 10.90.90.31 (62003)
Identificatore di sistema SAP NW1 --- ---

Nota

Installare più istanze di applicazioni SAP in macchine virtuali separate se si vuole aumentare il numero di istanze.

Diagramma che mostra l'architettura dell'installazione dell'istanza del dialogo con un cluster SAP ASCS/SCS.

Considerazioni importanti per la soluzione di ottimizzazione dei costi

  • Solo due istanze di dialogo, PAS e una AAS, possono essere distribuite con un'installazione del cluster SAP ASCS/SCS.
  • Se si vuole aumentare il numero di istanze del sistema SAP con più server applicazioni (ad esempio sapa03 e sapa04), è possibile installarli in macchine virtuali separate. Con PAS e AAS installati nei nomi host virtuali, è possibile installare più server applicazioni usando un nome host fisico o virtuale in macchine virtuali separate. Per altre informazioni su come assegnare un nome host virtuale a una macchina virtuale, vedere il blog Usare i nomi host virtuali SAP con Linux in Azure.
  • Con una distribuzione PAS e AAS con una configurazione del cluster SAP ASCS/SCS, i numeri di istanza di ASCS, ERS, PAS e AAS devono essere diversi.
  • Valutare la possibilità di dimensionare gli SKU delle macchine virtuali in modo appropriato in base alle linee guida per il dimensionamento. È necessario tenere conto del comportamento del cluster in cui più istanze SAP (ASCS, ERS, PAS e AAS) possono essere eseguite in una singola macchina virtuale quando un'altra macchina virtuale nel cluster non è disponibile.
  • Le istanze del dialogo (PAS e AAS) in esecuzione con un'installazione del cluster SAP ASCS/SCS devono essere installate usando un nome host virtuale.
  • È anche necessario usare la stessa soluzione di archiviazione della configurazione del cluster SAP ASCS/SCS per distribuire le istanze PAS e AAS. Ad esempio, se è stato configurato un cluster SAP ASCS/SCS usando NFS in File di Azure, è necessario usare la stessa soluzione di archiviazione per distribuire PAS e AAS.
  • La directory dell'istanza /usr/sap/<SID>/D<nr> di PAS e AAS deve essere montata in un file system NFS e viene gestita come risorsa dal cluster.

    Nota

    Per i sistemi SAP J2EE, non è supportato il posizionamento di /usr/sap/<SID>/J<nr> in NFS in File di Azure.

  • Per installare più server applicazioni in macchine virtuali separate, è possibile usare condivisioni NFS o un disco gestito locale per un file system di directory di istanza. Se si installano più server applicazioni per il sistema SAP J2EE, /usr/sap/<SID>/J<nr> in NFS in File di Azure non è supportato.
  • In una configurazione tradizionale a disponibilità elevata di SAP ASCS/SCS, le istanze del server applicazioni in esecuzione in macchine virtuali separate non sono interessate quando si verifica un effetto sui nodi del cluster SAP ASCS e ERS. Tuttavia, con la configurazione di ottimizzazione dei costi, l'istanza PAS o AAS viene riavviata quando si verifica un effetto su uno dei nodi del cluster.
  • Vedere Considerazioni su NFS in File di Azure e Considerazioni su Azure NetApp Files perché le stesse considerazioni si applicano a questa configurazione.

Prerequisiti

La configurazione descritta in questo articolo è un'aggiunta alla configurazione del cluster SAP ASCS/SCS già configurata. In questa configurazione, PAS e AAS vengono installati in un nome host virtuale e la relativa directory di istanza viene gestita dal cluster. In base all'archiviazione, seguire la procedura descritta negli articoli seguenti per configurare una risorsa SAPInstance per l'istanza di SAP ASCS e SAP ERS nel cluster.

Dopo aver installato le istanze ASCS, ERSe Database usando Software Provisioning Manager (SWPM), seguire i passaggi successivi per installare le istanze PAS e AAS.

Configurare Azure Load Balancer per PAS e AAS

Questo articolo presuppone che il bilanciamento del carico sia già stato configurato per un cluster SAP ASCS/SCS come descritto in Configurare Azure Load Balancer. Nella stessa istanza di Azure Load Balancer seguire questa procedura per creare più indirizzi IP front-end e regole di bilanciamento del carico per PAS e AAS.

  1. Aprire il bilanciamento del carico interno creato per la configurazione del cluster SAP ASCS/SCS.
  2. Configurazione IP front-end: creare due indirizzi IP front-end, uno per PAS e un altro per AAS (ad esempio 10.90.90.30 e 10.90.90.31).
  3. Pool back-end: questo pool rimane invariato perché vengono distribuiti PAS e AAS nello stesso pool back-end.
  4. Regole in ingresso: creare due regole di bilanciamento del carico, una per PAS e un'altra per AAS. Seguire la stessa procedura per entrambe le regole di bilanciamento del carico.
  5. Indirizzo IP front-end: selezionare l'indirizzo IP front-end.
    1. Pool back-end: selezionare il pool back-end.
    2. Porte a disponibilità elevata: selezionare questa opzione.
    3. Protocollo: selezionare TCP.
    4. Probe di integrità: creare un probe di integrità con i dettagli seguenti (si applica sia a PAS che ad AAS):
      1. Protocollo: selezionare TCP.
      2. Porta: ad esempio, 620<N. istanza> per PAS e 620<N. istanza> per AAS.
      3. Intervallo: immettere 5.
      4. Soglia probe: immettere 2.
    5. Timeout di inattività (minuti): immettere 30.
    6. Abilita IP mobile: selezionare questa opzione.

La proprietà di configurazione del probe di integrità numberOfProbes, altrimenti nota come soglia non integra nel portale di Azure, non viene rispettata. Per controllare il numero di probe consecutivi riusciti o non riusciti, impostare la proprietà probeThreshold su 2. Non è attualmente possibile impostare questa proprietà usando il portale di Azure. Usare l'interfaccia della riga di comando di Azure o il comando PowerShell.

Se vengono inserite macchine virtuali senza indirizzi IP pubblici nel pool back-end di un'istanza di Load Balancer Standard interno ad Azure (nessun indirizzo IP pubblico), non è presente alcuna connettività Internet in uscita, a meno che non venga eseguita un’altra configurazione per consentire il routing a endpoint pubblici. Per i passaggi su come ottenere la connettività in uscita, vedere Connettività degli endpoint pubblici per le macchine virtuali usando Load Balancer Standard di Azure negli scenari a disponibilità elevata SAP.

Importante

Non abilitare i timestamp TCP nelle macchine virtuali di Azure che si trovano dietro Azure Load Balancer. Se si abilitano i timestamp TCP, i probe di integrità hanno esito negativo. Impostare il parametro net.ipv4.tcp_timestamps su 0. Per altre informazioni, vedere Probe di integrità di Load Balancer.

Preparare i server per l'installazione di PAS e AAS

Quando i passaggi in questo documento sono contrassegnati con i prefissi seguenti, significano:

  • [A]: applicabile a tutti i nodi.
  • [1]: applicabile solo al nodo 1.
  • [2]: applicabile solo al nodo 2.
  1. [A] Configurare la risoluzione dei nomi host.

    È possibile usare un server DNS o modificare /etc/hosts in tutti i nodi. In questo esempio viene illustrato come usare il file /etc/hosts. Sostituire l'indirizzo IP e il nome host nei comandi seguenti:

    sudo vi /etc/hosts
    
    # IP address of cluster node 1
    10.90.90.7    sap-cl1
    # IP address of cluster node 2
    10.90.90.8     sap-cl2
    # IP address of the load balancer frontend configuration for SAP Netweaver ASCS
    10.90.90.10   sapascs
    # IP address of the load balancer frontend configuration for SAP Netweaver ERS
    10.90.90.9    sapers
    # IP address of the load balancer frontend configuration for SAP Netweaver PAS
    10.90.90.30   sappas
    # IP address of the load balancer frontend configuration for SAP Netweaver AAS
    10.90.90.31   sapaas
    
  2. [1] Creare le directory SAP nella condivisione NFS. Montare la condivisione NFS sapnw1 temporaneamente in una delle macchine virtuali e creare le directory SAP da usare come punti di montaggio annidati.

    1. Se si usa NFS in File di Azure:

      # mount temporarily the volume
      sudo mkdir -p /saptmp
      sudo mount -t nfs sapnfs.file.core.windows.net:/sapnfsafs/sapnw1 /saptmp -o noresvport,vers=4,minorversion=1,sec=sys
      
      # create the SAP directories
      sudo cd /saptmp
      sudo mkdir -p usrsapNW1D02
      sudo mkdir -p usrsapNW1D03
      
      # unmount the volume and delete the temporary directory
      cd ..
      sudo umount /saptmp
      sudo rmdir /saptmp
      
    2. Se si usa Azure NetApp Files:

      # mount temporarily the volume
      sudo mkdir -p /saptmp
      
      # If using NFSv3
      sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,vers=3,tcp 10.90.91.5:/sapnw1 /saptmp
      # If using NFSv4.1
      sudo mount -t nfs -o rw,hard,rsize=65536,wsize=65536,vers=4.1,sec=sys,tcp 10.90.91.5:/sapnw1 /saptmp
      
      # create the SAP directories
      sudo cd /saptmp
      sudo mkdir -p usrsapNW1D02
      sudo mkdir -p usrsapNW1D03
      
      # unmount the volume and delete the temporary directory
      sudo cd ..
      sudo umount /saptmp
      sudo rmdir /saptmp
      
  3. [A] Creare le directory condivise.

    sudo mkdir -p /usr/sap/NW1/D02
    sudo mkdir -p /usr/sap/NW1/D03
    
    sudo chattr +i /usr/sap/NW1/D02
    sudo chattr +i /usr/sap/NW1/D03
    
  4. [A] Configurare lo spazio di swapping. Quando si installa un'istanza della finestra di dialogo con servizi centrali, è necessario configurare più spazio di swapping.

    sudo vi /etc/waagent.conf
    
    # Check if property ResourceDisk.Format is already set to y and if not, set it
    ResourceDisk.Format=y
    
    # Set the property ResourceDisk.EnableSwap to y
    # Create and use swapfile on resource disk.
    ResourceDisk.EnableSwap=y
    
    # Set the size of the SWAP file with property ResourceDisk.SwapSizeMB
    # The free space of resource disk varies by virtual machine size. Make sure that you do not set a value that is too big. You can check the SWAP space with command swapon
    # Size of the swapfile.
    #ResourceDisk.SwapSizeMB=2000
    ResourceDisk.SwapSizeMB=10480
    

    Riavviare l'agente per attivare la modifica.

    sudo service waagent restart
    
  5. [A] Aggiungere regole di firewall per PAS e AAS.

    # Probe and gateway port for PAS and AAS
    sudo firewall-cmd --zone=public --add-port={62002,62003,3302,3303}/tcp --permanent
    sudo firewall-cmd --zone=public --add-port={62002,62003,3303,3303}/tcp
    

Installare un'istanza SAP NetWeaver PAS

  1. [1] Controllare lo stato del cluster. Prima di configurare una risorsa PAS per l'installazione, assicurarsi che le risorse ASCS e ERS siano configurate e avviate.

    sudo pcs status
    
    # Online: [ sap-cl1 sap-cl2 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl1
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl2
    
  2. [1] Creare risorse del file system, dell'IP virtuale e del probe di integrità per l'istanza PAS.

    sudo pcs node standby sap-cl2
    sudo pcs resource create vip_NW1_PAS IPaddr2 ip=10.90.90.30 --group g-NW1_PAS
    sudo pcs resource create nc_NW1_PAS azure-lb port=62002 --group g-NW1_PAS
    
    # If using NFS on Azure files
    sudo pcs resource create fs_NW1_PAS Filesystem device='sapnfs.file.core.windows.net:/sapnfsafs/sapnw1/usrsapNW1D02' \
      directory='/usr/sap/NW1/D02' fstype='nfs' force_unmount=safe options='noresvport,vers=4,minorversion=1,sec=sys' \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \
      op monitor interval=200 timeout=40 \
      --group g-NW1_PAS
    
    # If using NFsv3 on Azure NetApp Files
    sudo pcs resource create fs_NW1_PAS Filesystem device='10.90.91.5:/sapnw1/usrsapNW1D02' \
      directory='/usr/sap/NW1/D02' fstype='nfs' force_unmount=safe \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \ 
      op monitor interval=200 timeout=40 \
      --group g-NW1_PAS
    
    # If using NFSv4.1 on Azure NetApp Files
    sudo pcs resource create fs_NW1_PAS Filesystem device='10.90.91.5:/sapnw1/usrsapNW1D02' \
      directory='/usr/sap/NW1/D02' fstype='nfs' force_unmount=safe options='sec=sys,vers=4.1' \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \
      op monitor interval=200 timeout=105 \
      --group g-NW1_PAS
    

    Assicurarsi che lo stato del cluster sia corretto e che tutte le risorse siano avviate. Non è importante il nodo su cui sono in esecuzione le risorse.

    sudo pcs status
    
    # Node List:
    #   Node sap-cl2: standby
    #   Online: [ sap-cl1 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl1
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Started sap-cl1
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Started sap-cl1
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Started sap-cl1
    
  3. [1] Modificare la proprietà della cartella /usr/sap/SID/D02 dopo il montaggio del file system.

    sudo chown nw1adm:sapsys /usr/sap/NW1/D02
    
  4. [1] Installare SAP Netweaver PAS.

    Installare SAP NetWeaver PAS come radice nel primo nodo usando un nome host virtuale mappato all'indirizzo IP della configurazione front-end del bilanciamento del carico per PAS. Ad esempio, usare sappas, 10.90.90.30 e il numero di istanza usato per il probe del bilanciamento del carico, ad esempio 02.

    È possibile usare il parametro sapinst SAPINST_REMOTE_ACCESS_USER per consentire a un utente non ROOT di connettersi a sapinst.

    # Allow access to SWPM. This rule is not permanent. If you reboot the machine, you have to run the command again.
    sudo firewall-cmd --zone=public  --add-port=4237/tcp
    
    sudo <swpm>/sapinst SAPINST_REMOTE_ACCESS_USER=sapadmin SAPINST_USE_HOSTNAME=<pas_virtual_hostname>
    
  5. Aggiornare il file /usr/sap/sapservices.

    Per impedire l'avvio delle istanze per lo script di avvio sapinit, tutte le istanze gestite da Pacemaker devono essere impostate come commento nel file /usr/sap/sapservices.

    sudo vi /usr/sap/sapservices
    
    # On the node where PAS is installed, comment out the following lines. 
    # LD_LIBRARY_PATH=/usr/sap/NW1/D02/exe:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH;/usr/sap/NW1/D02/exe/sapstartsrv pf=/usr/sap/NW1/SYS/profile/NW1_D02_sappas -D -u nw1adm
    
  6. [1] Creare la risorsa cluster PAS.

    # If using NFS on Azure Files or NFSv3 on Azure NetApp Files
    pcs resource create rsc_sap_NW1_PAS02 SAPInstance InstanceName="NW1_D02_sappas" \
     START_PROFILE=/sapmnt/NW1/profile/NW1_D02_sappas \
     op monitor interval=20 timeout=60 \
     --group g-NW1_PAS
    
    # If using NFSv4.1 on Azure NetApp Files
    pcs resource create rsc_sap_NW1_PAS02 SAPInstance InstanceName="NW1_D02_sappas" \
     START_PROFILE=/sapmnt/NW1/profile/NW1_D02_sappas \
     op monitor interval=20 timeout=105 \
     --group g-NW1_PAS
    

    Controllare lo stato del cluster.

    sudo pcs status
    
    # Node List:
    #   Node sap-cl2: standby
    #   Online: [ sap-cl1 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl1
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Started sap-cl1
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Started sap-cl1
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Started sap-cl1
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Started sap-cl1
    
  7. Configurare un vincolo per avviare il gruppo di risorse PAS solo dopo l'avvio dell'istanza ASCS.

    sudo pcs constraint order g-NW1_ASCS then g-NW1_PAS kind=Optional symmetrical=false
    

Installare un'istanza SAP NetWeaver AAS

  1. [2] Controllare lo stato del cluster. Prima di configurare una risorsa AAS per l'installazione, assicurarsi che le risorse ASCS, ERS e PAS siano avviate.

    sudo pcs status
    
    # Node List:
    #   Node sap-cl2: standby
    #   Online: [ sap-cl1 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl1
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Started sap-cl1
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Started sap-cl1
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Started sap-cl1
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Started sap-cl1
    
  2. [2] Creare risorse del file system, dell'IP virtuale e del probe di integrità per l'istanza AAS.

    sudo pcs node unstandby sap-cl2
    # Disable PAS resource as it will fail on sap-cl2 due to missing environment variables like hdbuserstore. 
    sudo pcs resource disable g-NW1_PAS
    sudo pcs node standby sap-cl1
    # Execute below command to cleanup resource, if required
    pcs resource cleanup rsc_sap_NW1_ERS01
    
    sudo pcs resource create vip_NW1_AAS IPaddr2 ip=10.90.90.31 --group g-NW1_AAS
    sudo pcs resource create nc_NW1_AAS azure-lb port=62003 --group g-NW1_AAS
    
    # If using NFS on Azure files
    sudo pcs resource create fs_NW1_AAS Filesystem device='sapnfs.file.core.windows.net:/sapnfsafs/sapnw1/usrsapNW1D03' \
      directory='/usr/sap/NW1/D03' fstype='nfs' force_unmount=safe options='noresvport,vers=4,minorversion=1,sec=sys' \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \
      op monitor interval=200 timeout=40 \
      --group g-NW1_AAS
    
    # If using NFsv3 on Azure NetApp Files
    sudo pcs resource create fs_NW1_AAS Filesystem device='10.90.91.5:/sapnw1/usrsapNW1D03' \
      directory='/usr/sap/NW1/D03' fstype='nfs' force_unmount=safe \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \ 
      op monitor interval=200 timeout=40 \
      --group g-NW1_AAS
    
    # If using NFSv4.1 on Azure NetApp Files
    sudo pcs resource create fs_NW1_AAS Filesystem device='10.90.91.5:/sapnw1/usrsapNW1D03' \
      directory='/usr/sap/NW1/D03' fstype='nfs' force_unmount=safe options='sec=sys,vers=4.1' \
      op start interval=0 timeout=60 \
      op stop interval=0 timeout=120 \
      op monitor interval=200 timeout=105 \
      --group g-NW1_AAS
    

    Assicurarsi che lo stato del cluster sia corretto e che tutte le risorse siano avviate. Non è importante il nodo su cui sono in esecuzione le risorse. Poiché il gruppo di risorse g-NW1_PAS viene arrestato, tutte le risorse PAS vengono arrestate nello stato (disabilitato).

    sudo pcs status
    
    # Node List:
    #   Node sap-cl1: standby
    #   Online: [ sap-cl2 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl2
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Stopped (disabled)
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Stopped (disabled)
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Stopped (disabled)
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Stopped (disabled)
    #  Resource Group: g-NW1_AAS:
    #      vip_NW1_AAS       (ocf::heartbeat:IPaddr2):        Started sap-cl2
    #      nc_NW1_AAS        (ocf::heartbeat:azure-lb):       Started sap-cl2
    #      fs_NW1_AAS        (ocf::heartbeat:Filesystem):     Started sap-cl2
    
  3. [2] Modificare la proprietà della cartella /usr/sap/SID/D03 dopo il montaggio del file system.

    sudo chown nw1adm:sapsys /usr/sap/NW1/D03
    
  4. [2] Installare SAP NetWeaver AAS.

    Installare SAP NetWeaver PAS come radice nel secondo nodo usando un nome host virtuale mappato all'indirizzo IP della configurazione front-end del bilanciamento del carico per PAS. Ad esempio, usare sapaas, 10.90.90.31 e il numero di istanza usato per il probe del bilanciamento del carico, ad esempio 03.

    È possibile usare il parametro sapinst SAPINST_REMOTE_ACCESS_USER per consentire a un utente non ROOT di connettersi a sapinst.

    # Allow access to SWPM. This rule is not permanent. If you reboot the machine, you have to run the command again.
    sudo firewall-cmd --zone=public  --add-port=4237/tcp
    
    sudo <swpm>/sapinst SAPINST_REMOTE_ACCESS_USER=sapadmin SAPINST_USE_HOSTNAME=<aas_virtual_hostname>
    
  5. Aggiornare il file /usr/sap/sapservices.

    Per impedire l'avvio delle istanze per lo script di avvio sapinit, tutte le istanze gestite da Pacemaker devono essere impostate come commento nel file /usr/sap/sapservices.

    sudo vi /usr/sap/sapservices
    
    # On the node where AAS is installed, comment out the following lines. 
    #LD_LIBRARY_PATH=/usr/sap/NW1/D03/exe:$LD_LIBRARY_PATH;export LD_LIBRARY_PATH;/usr/sap/NW1/D03/exe/sapstartsrv pf=/usr/sap/NW1/SYS/profile/NW1_D03_sapaas -D -u nw1adm
    
  6. [2] Creare una risorsa cluster AAS.

    # If using NFS on Azure Files or NFSv3 on Azure NetApp Files
    pcs resource create rsc_sap_NW1_AAS03 SAPInstance InstanceName="NW1_D03_sapaas" \
     START_PROFILE=/sapmnt/NW1/profile/NW1_D03_sapaas \
     op monitor interval=120 timeout=60 \
     --group g-NW1_AAS
    
    # If using NFSv4.1 on Azure NetApp Files
    pcs resource create rsc_sap_NW1_AAS03 SAPInstance InstanceName="NW1_D03_sapaas" \
     START_PROFILE=/sapmnt/NW1/profile/NW1_D03_sapaas \
     op monitor interval=120 timeout=105 \
     --group g-NW1_AAS
    

    Controllare lo stato del cluster.

    sudo pcs status
    
    # Node List:
    #   Node sap-cl1: standby
    #   Online: [ sap-cl2 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl2
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Stopped (disabled)
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Stopped (disabled)
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Stopped (disabled)
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Stopped (disabled)
    #  Resource Group: g-NW1_AAS:
    #      vip_NW1_AAS       (ocf::heartbeat:IPaddr2):        Started sap-cl2
    #      nc_NW1_AAS        (ocf::heartbeat:azure-lb):       Started sap-cl2
    #      fs_NW1_AAS        (ocf::heartbeat:Filesystem):     Started sap-cl2
    #      rsc_sap_NW1_AAS03 (ocf::heartbeat:SAPInstance):    Started sap-cl2
    
  7. Configurare un vincolo per avviare il gruppo di risorse AAS solo dopo l'avvio dell'istanza ASCS.

    sudo pcs constraint order g-NW1_ASCS then g-NW1_AAS kind=Optional symmetrical=false
    

Passaggi successivi alla configurazione per le istanze di PAS e AAS

  1. [1] Affinché PAS e AAS vengano eseguiti in qualsiasi nodo del cluster (sap-cl1 o sap-cl2), è necessario copiare il contenuto in $HOME/.hdb di <sid>adm da entrambi i nodi del cluster.

    # Check current content of /home/nw1adm/.hdb on sap-cl1
    sap-cl1:nw1adm > ls -ltr $HOME/.hdb
    drwx------. 2 nw1adm sapsys 66 Aug  8 19:11 sappas
    drwx------. 2 nw1adm sapsys 84 Aug  8 19:12 sap-cl1
    # Check current content of /home/nw1adm/.hdb on sap-cl2
    sap-cl2:nw1adm > ls -ltr $HOME/.hdb
    total 0
    drwx------. 2 nw1adm sapsys 64 Aug  8 20:25 sap-cl2
    drwx------. 2 nw1adm sapsys 66 Aug  8 20:26 sapaas
    
    # As PAS and AAS is installed using virtual hostname, you need to copy virtual hostname directory in /home/nw1adm/.hdb
    # Copy sappas directory from sap-cl1 to sap-cl2
    sap-cl1:nw1adm > scp -r sappas nw1adm@sap-cl2:/home/nw1adm/.hdb
    # Copy sapaas directory from sap-cl2 to sap-cl1. Execute the command from the same sap-cl1 host. 
    sap-cl1:nw1adm > scp -r nw1adm@sap-cl2:/home/nw1adm/.hdb/sapaas . 
    
  2. [1] Per assicurarsi che le istanze PAS e AAS non vengano eseguite negli stessi nodi ogni volta che entrambi i nodi sono in esecuzione, aggiungere un vincolo di coubicazione negativo con il comando seguente:

    sudo pcs constraint colocation add g-NW1_AAS with g-NW1_PAS score=-1000
    sudo pcs node unstandby sap-cl1
    sudo pcs resource enable g-NW1_PAS
    

    Il punteggio di -1000 garantisce che, se è disponibile un solo nodo, entrambe le istanze continueranno a essere eseguite nell'altro nodo. Se si vuole mantenere inattiva l'istanza di AAS in una situazione di questo tipo, è possibile usare score=-INFINITY per applicare questa condizione.

  3. Controllare lo stato del cluster.

    sudo pcs status
    
    # Node List:
    #   Online: [ sap-cl1 sap-cl2 ]
    #
    # Full list of resources:
    #
    # rsc_st_azure    (stonith:fence_azure_arm):      Started sap-cl2
    #  Resource Group: g-NW1_ASCS
    #      fs_NW1_ASCS        (ocf::heartbeat:Filesystem):    Started sap-cl2
    #      nc_NW1_ASCS        (ocf::heartbeat:azure-lb):      Started sap-cl2
    #      vip_NW1_ASCS       (ocf::heartbeat:IPaddr2):       Started sap-cl2
    #      rsc_sap_NW1_ASCS00 (ocf::heartbeat:SAPInstance):   Started sap-cl2
    #  Resource Group: g-NW1_AERS
    #      fs_NW1_AERS        (ocf::heartbeat:Filesystem):    Started sap-cl1
    #      nc_NW1_AERS        (ocf::heartbeat:azure-lb):      Started sap-cl1
    #      vip_NW1_AERS       (ocf::heartbeat:IPaddr2):       Started sap-cl1
    #      rsc_sap_NW1_ERS01  (ocf::heartbeat:SAPInstance):   Started sap-cl1
    #  Resource Group: g-NW1_PAS:
    #      vip_NW1_PAS       (ocf::heartbeat:IPaddr2):        Started sap-cl1
    #      nc_NW1_PAS        (ocf::heartbeat:azure-lb):       Started sap-cl1
    #      fs_NW1_PAS        (ocf::heartbeat:Filesystem):     Started sap-cl1
    #      rsc_sap_NW1_PAS02 (ocf::heartbeat:SAPInstance):    Started sap-cl1
    #  Resource Group: g-NW1_AAS:
    #      vip_NW1_AAS       (ocf::heartbeat:IPaddr2):        Started sap-cl2
    #      nc_NW1_AAS        (ocf::heartbeat:azure-lb):       Started sap-cl2
    #      fs_NW1_AAS        (ocf::heartbeat:Filesystem):     Started sap-cl2
    #      rsc_sap_NW1_AAS03 (ocf::heartbeat:SAPInstance):    Started sap-cl2
    

Testare la configurazione del cluster

Testare accuratamente il cluster Pacemaker eseguendo i test di failover tipici.