Compartilhar via


Implantar instâncias de diálogo do SAP com VMs ASCS/SCS do SAP de alta disponibilidade no RHEL

Este artigo descreve como instalar e configurar o PAS (Servidor de Aplicativo Primário) e as instâncias de diálogo do AAS (Servidor de Aplicativo Adicional) no mesmo cluster de alta disponibilidade ASCS (SAP Central Services do ABAP)/SCS (SAP Central Services) em execução no RHEL (Red Hat Enterprise Linux).

Referências

Visão geral

Este artigo descreve o cenário de otimização de custos em que você implanta instâncias de diálogo PAS e AAS com a ASCS/SCS do SAP e ERS (Servidor de Replicação de Enfileiramento) em uma configuração de alta disponibilidade. Para minimizar o número de VMs para um único sistema SAP, você deseja instalar o PAS e o AAS no mesmo host em que o SAP ASCS/SCS e o SAP ERS estão em execução. Com a ASCS/SCS do SAP sendo configuradas em uma definição de cluster de alta disponibilidade, é aconselhável que o PAS e o AAS também sejam gerenciados pelo cluster. A configuração é basicamente uma adição à configuração de cluster de ASCS/SCS do SAP já definida. Nesta configuração, PAS e AAS são instalados em um nome do host virtual e seu diretório de instância gerenciado pelo cluster.

Para essa configuração, o PAS e o AAS exigem um diretório de instância altamente disponível (/usr/sap/<SID>/D<nr>). Você pode colocar o sistema de arquivos de diretório de instância no mesmo armazenamento altamente disponível usado para a configuração da instância do ASCS e do ERS. A arquitetura apresentada mostra o NFS nos Arquivos do Azure ou no Azure NetApp Files para diretório de instância altamente disponível para a instalação.

O exemplo mostrado neste artigo para descrever a implantação usa as seguintes informações do sistema:

Nome da instância Número da instância Nome de host virtual IP virtual (porta de investigação)
ASCS (ABAP SAP Central Services) 00 sapascs 10.90.90.10 (62000)
Servidor de Replicação Enfileiramento (ERS) 01 sapers 10.90.90.9 (62001)
PAS (Servidor de aplicativos primário) 02 sappas 10.90.90.30 (62002)
AAS (Servidor de aplicativos adicional) 03 sapers 10.90.90.31 (62003)
Identificador do sistema SAP NW1 --- ---

Observação

Instale mais instâncias de aplicativo SAP em VMs separadas, se você quiser escalar horizontalmente.

Diagrama que mostra a arquitetura da instalação da instância de diálogo com um cluster SAP ASCS/SCS.

Consideração importante para a solução de otimização de custo

  • Somente duas instâncias de diálogo, uma do PAS e uma do AAS, podem ser implantadas em uma configuração de cluster de ASCS/SCS do SAP.
  • Se você quiser escalar horizontalmente seu sistema do SAP com mais servidores de aplicativos (como sapa03 e sapa04), é possível instalá-los em VMs separadas. Com o PAS e o AAS sendo instalados em nomes de host virtual, você pode instalar mais servidores de aplicativos usando um nome de host físico ou virtual em VMs separadas. Para saber mais sobre como atribuir um nome de host virtual a uma VM, consulte no blog Usar nomes de host virtual do SAP com Linux no Azure.
  • Numa implantação do PAS e do AAS numa instalação de cluster de ASCS/SCS do SAP, os números da instância de ASCS, ERS, PAS e AAS deve ser diferente.
  • Considere dimensionar suas SKUs de VM adequadamente com base nas diretrizes de dimensionamento. Você deve considerar o comportamento do cluster em que várias instâncias do SAP (ASCS, ERS, PAS e AAS) podem ser executadas em uma única VM quando outra VM no cluster não estiver disponível.
  • As instâncias de diálogo (PAS e AAS) em execução em uma instalação do cluster de ASCS/SCS do SAP devem ser instaladas usando um nome do host virtual.
  • Você também deve usar a mesma solução de armazenamento da instalação do cluster de ASCS/SCS do SAP para implantar as instâncias de PAS e AAS. Por exemplo, se você configurou o cluster de ASCS/SCS do SAP usando o NFS em Arquivos do Azure, a mesma solução de armazenamento deverá ser usada para implantar o PAS e o AAS.
  • O diretório /usr/sap/<SID>/D<nr> da instância do PAS e do AAS deve ser montado eu um sistema de arquivos NFS e gerenciado como um recurso pelo cluster.

    Observação

    Para sistemas SAP J2EE, não há suporte para colocar /usr/sap/<SID>/J<nr> no NFS nos Arquivos do Azure.

  • Para instalar servidores de aplicativos adicionais em VMs separadas, você pode usar compartilhamentos NFS ou disco gerenciado local para o sistema de arquivos de diretório de instância. Se você estiver instalando servidores de aplicativo adicionais para um sistema J2EE do SAP, não haverá suporte para /usr/sap/<SID>/J<nr> no NFS no Arquivos do Azure.
  • Em uma configuração tradicional de alta disponibilidade de ASCS/SCS do SAP, as instâncias do servidor de aplicativos em execução em VMs separadas não são afetadas quando há qualquer efeito nos nós de cluster ASCS e ERS do SAP. Mas com a configuração de otimização de custo, a instância de PAS ou de AAS é reiniciada quando há um efeito em um dos nós no cluster.
  • Consulte Considerações sobre o NFS nos Arquivos do Azure e Considerações sobre o Azure NetApp Files porque as mesmas considerações se aplicam a essa configuração.

Pré-requisitos

A configuração descrita neste artigo é uma adição à configuração do cluster SAP ASCS/SCS já definida. Nesta configuração, o PAS e o AAS são instalados em um nome do host virtual e seu diretório de instância será gerenciado pelo cluster. Com base no armazenamento, use as etapas descritas nos artigos a seguir para configurar um recurso SAPInstance para a instância ASCS e ERS do SAP no cluster.

Depois de instalar a instância do ASCS, do ERS e do Banco de dadosusando o SWPM (Gerenciador de provisionamento de software), siga as próximas etapas para instalar as instâncias do PAS e do AAS.

Configurar Azure Load Balancer para PAS e AAS

Este artigo considera que você já configurou o balanceador de carga para uma instalação do cluster de ASCS/SCS do SAP, conforme descrito em Configurar Azure Load Balancer. Na mesma instância do Azure Load Balancer, siga estas etapas para criar mais IPs de front-end e regras de balanceamento de carga para PAS e AAS.

  1. Abra o balanceador de carga interno que foi criado para a instalação do cluster de ASCS/SCS do SAP.
  2. Configuração de IP de front-end: criar dois IPs de front-end, um para PAS e outro para AAS (por exemplo: 10.90.90.30 e 10.90.90.31).
  3. Pool de back-end: esse pool permanece o mesmo porque estamos implantando o PAS e AAS no mesmo pool de back-end.
  4. Regras de entrada: criar duas regras de balanceamento de carga, uma para PAS e outra para AAS. Siga as mesmas etapas para ambas as regras de balanceamento de carga.
  5. Endereço IP de front-end: selecione o IP de front-end.
    1. Pool de back-end: selecione o pool de back-end.
    2. Portas de alta disponibilidade: selecione essa opção.
    3. Protocolo: selecione TCP.
    4. Investigação de integridade: crie uma investigação de integridade com os seguintes detalhes (aplica-se ao PAS e ao AAS):
      1. Protocolo: selecione TCP.
      2. Porta: por exemplo: 620<Instance-no. > para PAS, 620<Instance-no. > para AAS.
      3. Intervalo: inserir 5.
      4. Limite de investigação: insira 2.
    5. Tempo limite de inatividade (minutos): Inserir 30.
    6. Habilitar IP Flutuante: selecione essa opção.

A propriedade de configuração investigação de integridadenumberOfProbes, também conhecida como Limite não íntegro no portal do Azure, não é respeitada. Para controlar o número de análises consecutivas bem-sucedidas ou com falha, configure a propriedade probeThreshold para 2. No momento, não é possível definir essa propriedade usando o portal do Azure. Use a CLI do Azure ou o comando do PowerShell.

Quando as VMs sem endereços IP públicos forem colocadas no pool de back-end na instância Standard do Load Balancer (sem endereço IP público), não haverá nenhuma conectividade de saída com a Internet se não houver configuração adicional a fim de permitir o roteamento para pontos de extremidade públicos. Para obter detalhes sobre como alcançar conectividade de saída, veja Conectividade de ponto de extremidade público para Máquinas Virtuais usando o Azure Standard Load Balancer em cenários de alta disponibilidade do SAP.

Importante

Não habilite carimbos de data/hora de TCP em VMs do Azure posicionadas de forma subjacente em relação ao Azure Load Balancer. Habilitar carimbos de data/hora de TCP faz as investigações de integridade falharem. Defina o parâmetro net.ipv4.tcp_timestampscomo 0. Para saber mais, confira Investigações de integridade do Load Balancer.

Preparar servidores para a instalação do PAS e do AAS

Quando as etapas deste documento são marcadas com os seguintes prefixos, isso significa:

  • [A]: Aplicável a todos os nós.
  • [1]: aplicável somente ao nó 1.
  • [2]: aplicável somente ao nó 2.
  1. [A] Configure a resolução de nome do host.

    Use um servidor DNS ou modifique /etc/hosts em todos os nós. Este exemplo mostra como usar o arquivo /etc/hosts. Substitua o endereço IP e o nome do host nos comandos a seguir:

    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] Crie os diretórios do SAP no compartilhamento NFS. Monte temporariamente o compartilhamento NFS sapnw1 em uma das VMs e crie os diretórios do SAP a serem usados como pontos de montagem aninhados.

    1. Se você estiver usando o NFS nos Arquivos do 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 você estiver usando o 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] Crie os diretórios compartilhados.

    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] Configurar espaço de troca. Ao instalar uma instância de caixa de diálogo em serviços centrais, você deve configurar mais espaço de troca.

    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
    

    Reinicie o agente para ativar a alteração.

    sudo service waagent restart
    
  5. [A] Adicionar regras de firewall para 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
    

Instalar uma instância de PAS do SAP Netweaver

  1. [1] Verifique o status do cluster. Antes de configurar um recurso de PAS para instalação, verifique se os recursos de ASCS e ERS estão configurados e iniciados.

    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] Criar recursos de investigação de integridade, IP virtual e sistema de arquivos para a instância do 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
    

    Verifique se o status do cluster é ok e se todos os recursos foram iniciados. Não é importante saber em qual nó os recursos estão sendo executados.

    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] Altere a propriedade da pasta /usr/sap/SID/D02 depois que o sistema de arquivos for montado.

    sudo chown nw1adm:sapsys /usr/sap/NW1/D02
    
  4. [1] Instalar o PAS do SAP NetWeaver.

    Instale o PAS do SAP NetWeaver como uma raiz no primeiro nó usando um nome do host virtual que mapeia para o endereço IP da configuração de front-end do balanceador de carga para o PAS. Por exemplo, use sappas, 10.90.90.30e o número da instância que você usou para a investigação do balanceador de carga, por exemplo, 02.

    Você pode usar o parâmetro sapinst SAPINST_REMOTE_ACCESS_USER para permitir que um usuário não raiz se conecte à 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. Atualize o arquivo /usr/sap/sapservices.

    Para impedir o início das instâncias pelo script de inicialização do sapinit, todas as instâncias gerenciadas pelo Pacemaker devem ser comentadas a partir do arquivo /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] Criar recurso de cluster do 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
    

    Verifique o status do 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. Configure uma restrição para iniciar o grupo de recursos do PAS somente depois que a instância do ASCS for iniciada.

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

Instalar uma instância de AAS do SAP Netweaver

  1. [2] Verifique o status do cluster. Antes de configurar um recurso de AAS para instalação, verifique se os recursos de ASCS, ERS e PAS foram iniciados.

    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] Criar recursos de investigação de integridade, IP virtual e sistema de arquivos para a instância de 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
    

    Verifique se o status do cluster é ok e se todos os recursos foram iniciados. Não é importante saber em qual nó os recursos estão sendo executados. Devido ao grupo de recursos g-NW1_PAS estar interrompido, todos os recursos PAS estão interrompidos no estado (desabilitado).

    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] Altere a propriedade da pasta /usr/sap/SID/D03 depois que o sistema de arquivos for montado.

    sudo chown nw1adm:sapsys /usr/sap/NW1/D03
    
  4. [2] Instalar um AAS do SAP Netweaver.

    Instale um AAS do SAP NetWeaver como a raiz no segundo nó usando um nome do host virtual mapeado para o endereço IP da configuração de front-end do balanceador de carga para o PAS. Por exemplo, use sapaas, 10.90.90.31e o número da instância que você usou para a investigação do balanceador de carga, por exemplo, 03.

    Você pode usar o parâmetro sapinst SAPINST_REMOTE_ACCESS_USER para permitir que um usuário não raiz se conecte à 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. Atualize o arquivo /usr/sap/sapservices.

    Para impedir o início das instâncias pelo script de inicialização do sapinit, todas as instâncias gerenciadas pelo Pacemaker devem ser comentadas a partir do arquivo /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] Criar recurso de cluster do 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
    

    Verifique o status do 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. Configure uma restrição para iniciar o grupo de recursos do AAS somente depois que a instância do ASCS for iniciada.

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

Pós-configuração para instâncias do PAS e do AAS

  1. [1] Para que o PAS e o AAS sejam executados em qualquer nó de cluster (sap-cl1 ou sap-cl2), o conteúdo em $HOME/.hdb ou <sid>adm de ambos os nós de cluster precisa ser copiado.

    # 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] Para garantir que as instâncias PAS e AAS não sejam executadas nos mesmos nós quando ambos os nós estiverem em execução, adicione uma restrição de colocação negativa com o seguinte comando:

    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
    

    A pontuação de -1000 garante que, se apenas um nó estiver disponível, ambas as instâncias continuam sendo executadas no outro nó. Se desejar manter a instância do AAS inoperante nessa situação, é possível usar score=-INFINITY para impor essa condição.

  3. Verifique o status do 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
    

Testar a configuração do cluster

Teste minuciosamente o cluster do Pacemaker executando os testes de failover típicos.