Partager via


Déployer des instances de dialogue SAP avec des VM haute disponibilité SAP ASCS/SCS sur RHEL

Cet article décrit comment installer et configurer les instances de dialogue du serveur d'applications principal (PAS) et du serveur d'applications supplémentaire (AAS) sur le même cluster à haute disponibilité ABAP SAP Central Services (ASCS)/SAP Central Services (SCS) exécuté sur Red Hat Enterprise Linux. (RHEL).

Références

Vue d’ensemble

Cet article décrit le scénario d'optimisation des coûts dans lequel vous déployez des instances de dialogue PAS et AAS avec des instances SAP ASCS/SCS et Enqueue Replication Server (ERS) dans une configuration à haute disponibilité. Pour réduire le nombre de machines virtuelles d’un seul système SAP, vous souhaitez installer PAS et AAS sur le même hôte que celui où SAP ASCS/SCS et SAP ERS sont exécutés. SAP ASCS/SCS étant configuré dans une configuration de cluster à haute disponibilité, vous souhaitez que PAS et AAS soient également gérés par cluster. La configuration est essentiellement un ajout à une configuration de cluster SAP ASCS/SCS déjà configurée. Dans cette configuration, PAS et AAS sont installés sur un nom d'hôte virtuel et son répertoire d'instance est géré par le cluster.

Pour cette configuration, PAS et AAS nécessitent un répertoire d’instance hautement disponible (/usr/sap/<SID>/D<nr>). Vous pouvez placer le système de fichiers du répertoire d'instance sur le même stockage à haute disponibilité que celui que vous avez utilisé pour la configuration des instances ASCS et ERS. L'architecture présentée présente NFS sur Azure Files ou Azure NetApp Files pour un répertoire d'instance hautement disponible pour l'installation.

L'exemple présenté dans cet article pour décrire le déploiement utilise les informations système suivantes :

Nom de l’instance Numéro d’instance Nom d’hôte virtuel IP virtuelle (port de sonde)
Services centraux ABAP SAP (ASCS) 00 sapascs 10.90.90.10 (62000)
Serveur de réplication en file d’attente (ERS) 01 sapers 10.90.90.9 (62001)
Server d’applications principal (PAS) 02 sappas 10.90.90.30 (62002)
Serveur d’applications supplémentaire (AAS) 03 sapers 10.90.90.31 (62003)
Identificateur système SAP NW1 --- ---

Remarque

Installez davantage d'instances d'application SAP sur des VM distinctes si vous souhaitez évoluer.

Diagramme montrant l’architecture de l’installation d’une instance de boîte de dialogue avec un cluster SAP ASCS/SCS.

Considérations importantes pour la solution d’optimisation des coûts

  • Seules deux instances de dialogue, PAS et une AAS, peuvent être déployées avec une configuration de cluster SAP ASCS/SCS.
  • Si vous souhaitez faire évoluer votre système SAP avec davantage de serveurs d'applications (comme sapa03 et sapa04), vous pouvez les installer sur des machines virtuelles distinctes. Avec PAS et AAS installés sur des noms d'hôtes virtuels, vous pouvez installer davantage de serveurs d'applications en utilisant un nom d'hôte physique ou virtuel dans des machines virtuelles distinctes. Pour en savoir plus sur la manière d'attribuer un nom d'hôte virtuel à une machine virtuelle, consultez le blog Utiliser les noms d'hôte virtuels SAP avec Linux dans Azure.
  • Avec un déploiement PAS et AAS avec une configuration de cluster SAP ASCS/SCS, les numéros d'instance ASCS, ERS, PAS et AAS doivent être différents.
  • Envisagez de dimensionner correctement vos références SKU de machine virtuelle en fonction des instructions de dimensionnement. Vous devez prendre en compte le comportement du cluster dans lequel plusieurs instances SAP (ASCS, ERS, PAS et AAS) peuvent s'exécuter sur une seule VM lorsqu'une autre VM du cluster n'est pas disponible.
  • Les instances de dialogue (PAS et AAS) exécutées avec une configuration de cluster SAP ASCS/SCS doivent être installées à l'aide d'un nom d'hôte virtuel.
  • Vous devez également utiliser la même solution de stockage que la configuration du cluster SAP ASCS/SCS pour déployer les instances PAS et AAS. Par exemple, si vous avez configuré un cluster SAP ASCS/SCS à l'aide de NFS sur Azure Files, la même solution de stockage doit être utilisée pour déployer PAS et AAS.
  • Le répertoire d'instance /usr/sap/<SID>/D<nr> de PAS et AAS doit être monté sur un système de fichiers NFS et est géré en tant que ressource par le cluster.

    Remarque

    Pour les systèmes SAP J2EE, il n’est pas possible de placer /usr/sap/<SID>/J<nr> sur NFS sur Azure Files.

  • Pour installer davantage de serveurs d'applications sur des machines virtuelles distinctes, vous pouvez utiliser des partages NFS ou un disque managé local pour un système de fichiers de répertoire d'instance. Si vous installez davantage de serveurs d'applications pour un système SAP J2EE, /usr/sap/<SID>/J<nr> sur NFS sur Azure Files n'est pas pris en charge.
  • Dans une configuration haute disponibilité SAP ASCS/SCS traditionnelle, les instances de serveur d'applications exécutées sur des machines virtuelles distinctes ne sont pas affectées en cas d'effet sur les nœuds de cluster SAP ASCS et ERS. Mais avec la configuration d'optimisation des coûts, l'instance PAS ou AAS redémarre lorsqu'il y a un effet sur l'un des nœuds du cluster.
  • Consultez Considérations sur NFS sur Azure Files et Considérations sur Azure NetApp Files, car les mêmes considérations s’appliquent à cette configuration.

Prérequis

La configuration décrite dans cet article est un ajout à votre configuration de cluster SAP ASCS/SCS déjà existante. Dans cette configuration, PAS et AAS sont installés sur un nom d'hôte virtuel et son répertoire d'instance est géré par le cluster. En fonction de votre stockage, suivez les étapes décrites dans les articles suivants pour configurer la ressource SAPInstance pour l'instance SAP ASCS et SAP ERS dans le cluster.

Après avoir installé l'instance ASCS, ERS et Base de données à l'aide de Software Provisioning Manager (SWPM), suivez les étapes suivantes pour installer les instances PAS et AAS.

Configurer Azure Load Balancer pour PAS et AAS

Cet article suppose que vous avez déjà configuré l'équilibreur de charge pour la configuration du cluster SAP ASCS/SCS comme décrit dans Configurer Azure Load Balancer. Dans la même instance Azure Load Balancer, suivez ces étapes pour créer davantage d’adresses IP frontales et de règles d’équilibrage de charge pour PAS et AAS.

  1. Ouvrez l'équilibreur de charge interne créé pour la configuration du cluster SAP ASCS/SCS.
  2. Configuration IP frontale : Créez deux IP frontales, une pour PAS et une autre pour AAS (par exemple, 10.90.90.30 et 10.90.90.31).
  3. Pool back-end : Ce pool reste le même car nous déployons PAS et AAS sur le même pool back-end.
  4. Règles entrantes : Créez deux règles d'équilibrage de charge, une pour PAS et une autre pour AAS. Suivez les mêmes étapes pour les deux règles d’équilibrage de charge.
  5. Adresse IP front-end : sélectionnez l’adresse IP frontale.
    1. Pool back-end : Sélectionnez le pool back-end.
    2. Ports haute disponibilité : sélectionnez cette option.
    3. Protocole : sélectionnez TCP.
    4. Sonde de santé : Créez une sonde d'intégrité avec les détails suivants (s'applique à la fois au PAS et à l'AAS) :
      1. Protocole : sélectionnez TCP.
      2. Port : Par exemple, 620<Instance-no.> pour PAS et 620<Instance-no.> pour le SAA.
      3. Intervalle : Entrer 5.
      4. Seuil de sonde : entrez 2.
    5. Délai d'inactivité (minutes) : entrez 30.
    6. Activer l’adresse IP flottante : sélectionnez cette option.

La propriété de configuration de la sonde d’intégrité numberOfProbes, également appelée Seuil défectueux dans le Portail Microsoft Azure, n’est pas respectée. Pour contrôler le nombre de vérifications consécutives réussies ou échouées, définissez la propriété probeThreshold sur 2. Il n’est actuellement pas possible de définir cette propriété à l’aide du Portail Microsoft Azure. Utilisez soit Azure CLI, soit la commande PowerShell.

Lorsque des machines virtuelles sans adresse IP publique sont placées dans le pool back-end d’une instance Azure Load Balancer Standard interne (sans adresse IP publique), il n’y a pas de connectivité Internet sortante à moins qu’une configuration supplémentaire ne soit effectuée pour permettre le routage vers les points de terminaison publics. Pour connaître les étapes à suivre pour obtenir une connectivité sortante, consultez Connectivité de point de terminaison public pour les machines virtuelles à l'aide d'Azure Standard Load Balancer dans les scénarios de haute disponibilité SAP.

Important

N’activez pas les horodateurs TCP sur les machines virtuelles Azure placées derrière l’Équilibreur de charge Azure. L’activation des horodateurs TCP provoque l’échec des sondes d’intégrité. Affectez au paramètre net.ipv4.tcp_timestampsla valeur 0. Pour plus d’informations, consultez Sondes d’intégrité Load Balancer.

Préparer les serveurs pour l’installation de PAS et AAS

Lorsque les étapes de ce document sont marquées des préfixes suivants, cela signifie :

  • [A] : applicable à tous les nœuds.
  • [1] : Applicable uniquement au nœud 1.
  • [2] : Applicable uniquement au nœud 2.
  1. [A] Configurez la résolution de noms d’hôte.

    Vous pouvez utiliser un serveur DNS ou modifier /etc/hosts sur tous les nœuds. Cet exemple vous explique comment utiliser le fichier /etc/hosts. Remplacez l'adresse IP et le nom d'hôte dans les commandes suivantes :

    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] Créez les répertoires SAP sur le partage NFS. Montez temporairement le partage NFS sapnw1 sur l'une des machines virtuelles et créez les répertoires SAP à utiliser comme points de montage imbriqués.

    1. Si vous utilisez NFS sur Azure Files :

      # 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. Si vous utilisez 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] Créez les répertoires partagés.

    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] Configurez l'espace d'échange. Lorsque vous installez une instance de dialogue avec des services centraux, vous devez configurer davantage d'espace de swap.

    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
    

    Redémarrer l’Agent pour activer la modification.

    sudo service waagent restart
    
  5. [A] Ajoutez des règles de pare-feu pour PAS et 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
    

Installer une instance SAP Netweaver PAS

  1. [1] Vérifiez l’état du cluster. Avant de configurer une ressource PAS pour l'installation, assurez-vous que les ressources ASCS et ERS sont configurées et démarrées.

    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] Créez des ressources de système de fichiers, d’adresse IP virtuelle et de sonde d’intégrité pour l’instance 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
    

    Vérifiez que l’état du cluster est correct et que toutes les ressources sont démarrées. Le nœud sur lequel les ressources s’exécutent n’a aucune importance.

    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] Modifiez la propriété du dossier /usr/sap/SID/D02 une fois le système de fichiers monté.

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

    Installez SAP NetWeaver PAS en tant que racine sur le premier nœud en utilisant un nom d'hôte virtuel qui correspond à l'adresse IP de la configuration frontale de l'équilibreur de charge pour le PAS. Par exemple, utilisez sappas, 10.90.90.30 et le numéro d'instance que vous avez utilisé pour la sonde de l'équilibreur de charge, par exemple 02.

    Vous pouvez utiliser le paramètre sapinst SAPINST_REMOTE_ACCESS_USER pour permettre à un utilisateur non root de se connecter à 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. Mettre à jour le fichier /usr/sap/sapservices.

    Pour empêcher le démarrage des instances par le script de démarrage de sapinit, toutes les instances gérées par Pacemaker doivent être commentées du fichier /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] Créez la ressource de 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
    

    Vérifiez l'état du 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. Configurez une contrainte pour démarrer le groupe de ressources PAS uniquement après le démarrage de l'instance ASCS.

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

Installer une instance SAP Netweaver AAS

  1. [2] Vérifiez l’état du cluster. Avant de configurer une ressource AAS pour l'installation, assurez-vous que les ressources ASCS, ERS et PAS sont démarrées.

    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] Créez des ressources de système de fichiers, d’adresse IP virtuelle et de sonde d’intégrité pour l’instance 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
    

    Vérifiez que l’état du cluster est correct et que toutes les ressources sont démarrées. Le nœud sur lequel les ressources s’exécutent n’a aucune importance. Étant donné que le groupe de ressources g-NW1_PAS est arrêté, toutes les ressources PAS sont arrêtées dans l'état (désactivé).

    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] Modifiez la propriété du dossier /usr/sap/SID/D03 une fois le système de fichiers monté.

    sudo chown nw1adm:sapsys /usr/sap/NW1/D03
    
  4. [2] Installez un SAP Netweaver AAS.

    Installez un SAP NetWeaver AAS en tant que racine sur le deuxième nœud en utilisant un nom d'hôte virtuel qui correspond à l'adresse IP de la configuration frontale de l'équilibreur de charge pour le PAS. Par exemple, utilisez sapaas, 10.90.90.31 et le numéro d'instance que vous avez utilisé pour la sonde de l'équilibreur de charge, par exemple 03.

    Vous pouvez utiliser le paramètre sapinst SAPINST_REMOTE_ACCESS_USER pour permettre à un utilisateur non root de se connecter à 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. Mettre à jour le fichier /usr/sap/sapservices.

    Pour empêcher le démarrage des instances par le script de démarrage de sapinit, toutes les instances gérées par Pacemaker doivent être commentées du fichier /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] Créez une ressource de 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
    

    Vérifiez l'état du 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. Configurez une contrainte pour démarrer le groupe de ressources AAS uniquement après le démarrage de l'instance ASCS.

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

Post-configuration pour les instances PAS et AAS

  1. [1] Pour que PAS et AAS s’exécutent sur n’importe quel nœud de cluster (sap-cl1 ou sap-cl2), le contenu des dans $HOME/.hdb de <sid>adm des deux nœuds de cluster doit être copié.

    # 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] Pour garantir que les instances PAS et AAS ne s'exécutent pas sur les mêmes nœuds lorsque les deux nœuds sont en cours d'exécution, ajoutez une contrainte de colocation négative avec la commande suivante :

    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
    

    Le score de -1 000 garantit que si un seul nœud est disponible, les deux instances continuent de s'exécuter sur l'autre nœud. Si vous souhaitez conserver l'instance AAS dans une telle situation, vous pouvez utiliser score=-INFINITY pour appliquer cette condition.

  3. Vérifiez l'état du 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
    

Tester la configuration du cluster

Testez minutieusement votre cluster Pacemaker en exécutant les tests de basculement classiques.