Instale o SAP NetWeaver HA num Windows cluster de failover e disco partilhado para uma instância SAP ASCS/SCS em Azure

Este artigo descreve como instalar e configurar um sistema SAP de alta disponibilidade em Azure, utilizando um cluster de failover do Windows Servidor e um disco partilhado de cluster para agrupar uma instância SAP ASCS/SCS. Como descrito no guia de arquitetura: Cluster a UM CASO SAP ASCS/SCS em um cluster de falha de Windows usando um disco compartilhado cluster, existem duas alternativas para o disco compartilhado do cluster:

Pré-requisitos

Antes de iniciar a instalação, reveja estes documentos:

Não descrevemos a configuração do DBMS neste artigo porque as configurações variam consoante o sistema DBMS que utiliza. Assumimos que as preocupações de alta disponibilidade com o DBMS são abordadas com as funcionalidades que diferentes fornecedores DBMS suportam para o Azure. Exemplos são AlwaysOn ou base de dados espelhando para SQL Server e Oracle Data Guard para bases de dados Oracle. Os cenários de elevada disponibilidade para o DBMS não estão abrangidos por este artigo.

Não existem considerações especiais quando diferentes serviços DBMS interagem com uma configuração SAP ASCS ou SCS agrupada em Azure.

Nota

Os procedimentos de instalação dos sistemas SAP NetWeaver ABAP, sistemas Java e sistemas ABAP+Java são quase idênticos. A diferença mais significativa é que um sistema SAP ABAP tem uma instância ASCS. O sistema SAP Java tem uma instância SCS. O sistema SAP ABAP+Java tem uma instância ASCS e uma instância SCS a decorrer no mesmo grupo de cluster de failover da Microsoft. Quaisquer diferenças de instalação para cada pilha de instalação SAP NetWeaver são explicitamente mencionadas. Pode assumir que o resto dos passos são os mesmos.

Instale o SAP com uma instância ASCS/SCS de alta disponibilidade

Importante

Se utilizar o SIOS para apresentar o disco partilhado, não coloque o ficheiro da página nos volumes espelhados do SIOS DataKeeper. Pode deixar o ficheiro da página na unidade temporária D de uma máquina virtual Azure, que é o padrão. Se ainda não estiver lá, mova o ficheiro de página Windows para conduzir D da sua máquina virtual Azure.

A instalação do SAP com uma instância ASCS/SCS de alta disponibilidade envolve estas tarefas:

  • Crie um nome de hospedeiro virtual para a instância SAP ASCS/SCS agrupada.
  • Instale o SAP no primeiro nó de cluster.
  • Modifique o perfil SAP da instância ASCS/SCS.
  • Adicione uma porta de sonda.
  • Abra a porta de sonda de firewall Windows.

Criar um nome de hospedeiro virtual para a instância SAP ASCS/SCS agrupada

  1. No Windows gestor dns, crie uma entrada DNS para o nome de anfitrião virtual da instância ASCS/SCS.

    Importante

    O endereço IP que atribui ao nome de anfitrião virtual da instância ASCS/SCS deve ser o mesmo que o endereço IP que atribuiu a Balanceador de Carga do Azure.

    Figure 1: Define the DNS entry for the SAP ASCS/SCS cluster virtual name and TCP/IP address

    Definir a entrada DNS para o nome virtual do cluster SAP ASCS/SCS e o endereço TCP/IP

  2. Se estiver a utilizar o novo SERVIDOR de Replicação DE Enqueue 2 da SAP, que também é um exemplo agrupado, então também precisa de reservar no DNS um nome de anfitrião virtual para ERS2.

    Importante

    O endereço IP que atribui ao nome de anfitrião virtual da instância ERS2 deve ser o segundo endereço IP a que atribuiu Balanceador de Carga do Azure.

    Figure 1A: Define the DNS entry for the SAP ASCS/SCS cluster virtual name and TCP/IP address

    Defina a entrada DNS para o nome virtual do cluster SAP ERS2 e o endereço TCP/IP

  3. Para definir o endereço IP atribuído ao nome de anfitrião virtual, selecione DNSManagerDomain>.

    Figure 2: New virtual name and TCP/IP address for SAP ASCS/SCS cluster configuration

    Novo nome virtual e endereço TCP/IP para configuração do cluster SAP ASCS/SCS

Instale o primeiro nó de cluster SAP

  1. Execute a primeira opção de nó de cluster no nó de cluster A. Selecione:

    • Sistema ABAP: Instância ASCS número 00
    • Sistema Java: Instância SCS número 01
    • Sistema ABAP+Java: Instância ASCS número 00 e instância SCS número 01

    Importante

    Tenha em mente que a configuração nas regras internas de equilíbrio da carga do balançador interno Azure (se utilizar o SKU Básico) e os números de instância SAP selecionados devem coincidir.

  2. Siga o procedimento de instalação descrito pela SAP. Certifique-se de que na opção de instalação inicial "Primeiro Nó de Cluster", escolha "Cluster Shared Disk" como opção de configuração.

Dica

A documentação de instalação SAP descreve como instalar o primeiro nó de cluster ASCS/SCS.

Modificar o perfil SAP da instância ASCS/SCS

Se tiver o Servidor de Replicação de Enqueue 1, adicione o parâmetro enque/encni/set_so_keepalive de perfil SAP conforme descrito abaixo. O parâmetro de perfil impede que as ligações entre os processos de trabalho SAP e o servidor de enqueue se fechem quando estão inativas por muito tempo. O parâmetro SAP não é necessário para o ERS2.

  1. Adicione este parâmetro de perfil ao perfil de instância SAP ASCS/SCS, se utilizar o ERS1.

    enque/encni/set_so_keepalive = true
    

    Para ERS1 e ERS2, certifique-se de que os keepalive parâmetros de SO estão definidos como descrito na nota SAP 1410736.

  2. Para aplicar as alterações do parâmetro de perfil SAP, reinicie a instância SAP ASCS/SCS.

Adicione uma porta de sonda

Utilize a funcionalidade da sonda do balançador interno para fazer com que toda a configuração do cluster funcione com Balanceador de Carga do Azure. O balançador interno de carga Azure distribui normalmente a carga de trabalho de entrada igualmente entre máquinas virtuais participantes.

No entanto, isto não funcionará em algumas configurações de cluster porque apenas um caso está ativo. A outra instância é passiva e não pode aceitar nenhuma carga de trabalho. Uma funcionalidade da sonda ajuda quando o equilibrador interno de carga Azure deteta qual a instância ativa, e apenas direciona a instância ativa.

Importante

Nesta configuração de exemplo, o ProbePort está definido para 620Nr. Para a caixa ASCS SAP com o número 00 é 62000. Terá de ajustar a configuração para corresponder aos números de instância SAP e ao seu SAP SID.

Para adicionar uma porta de sonda, executar este Módulo PowerShell num dos VMs do cluster:

  • No caso da SEPARAÇÃO SAP ASC/SCS

    Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000
    
  • Se utilizar o ERS2, que está agrupado. Não há necessidade de configurar a porta de sonda para a ERS1, uma vez que não está agrupada.

    Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62001 -IsSAPERSClusteredInstance $True
    

O código para a função Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource seria:

 function Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource {

 <#
 .SYNOPSIS 
 Set-AzureLoadBalancerHealthProbePortOnSAPClusterIPResource will set a new Azure Load Balancer Health Probe Port on 'SAP $SAPSID IP' cluster resource.

 .DESCRIPTION
 Set-AzureLoadBalancerHealthProbePortOnSAPClusterIPResource will set a new Azure Load Balancer Health Probe Port on 'SAP $SAPSID IP' cluster resource.
 It will also restart SAP Cluster group (default behavior), to activate the changes. 

 You need to run it on one of the SAP ASCS/SCS Windows cluster nodes.

 Expectation is that SAP group is installed with official SWPM installation tool, which will set default expected naming convention for:
 - SAP Cluster Group:               'SAP $SAPSID'
 - SAP Cluster IP Address Resource: 'SAP $SAPSID IP' 

 .PARAMETER SAPSID 
 SAP SID - 3 characters staring with letter.

 .PARAMETER ProbePort 
 Azure Load Balancer Health Check Probe Port.

 .PARAMETER RestartSAPClusterGroup 
 Optional parameter. Default value is '$True', so SAP cluster group will be restarted to activate the changes.

 .PARAMETER IsSAPERSClusteredInstance 
 Optional parameter.Default value is '$False'.
 If set to $True , then handle clsutered new SAP ERS2 instance.

 .EXAMPLE 
 # Set probe port to 62000, on SAP cluster resource 'SAP AB1 IP', and restart the SAP cluster group 'SAP AB1', to activate the changes.
 Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000 

 .EXAMPLE 
 # Set probe port to 62000, on SAP cluster resource 'SAP AB1 IP'. SAP cluster group 'SAP AB1' IS NOT restarted, therefore changes are NOT active.
 # To activate the changes you need to manualy restart 'SAP AB1' cluster group.
 Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000 -RestartSAPClusterGroup $False

 .EXAMPLE 
 # Set probe port to 62001, on SAP cluster resource 'SAP AB1 ERS IP'. SAP cluster group 'SAP AB1 ERS' IS restarted, to activate the changes.
 Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000 -IsSAPERSClusteredInstance $True

 #> 

     [CmdletBinding()]
     param(

         [Parameter(Mandatory=$True)]
         [ValidateNotNullOrEmpty()]  
         [ValidateLength(3,3)]      
         [string]$SAPSID,

         [Parameter(Mandatory=$True)]
         [ValidateNotNullOrEmpty()]        
         [int] $ProbePort,

         [Parameter(Mandatory=$False)] 
         [bool] $RestartSAPClusterGroup = $True,

         [Parameter(Mandatory=$False)] 
         [bool] $IsSAPERSClusteredInstance = $False
     )

     BEGIN{}

     PROCESS{
         try{                                      

             if($IsSAPERSClusteredInstance){
                 #Handle clustered SAP ERS Instance
                 $SAPClusterRoleName = "SAP $SAPSID ERS"
                 $SAPIPresourceName = "SAP $SAPSID ERS IP"            
             }else{
                 #Handle clustered SAP ASCS/SCS Instance
                 $SAPClusterRoleName = "SAP $SAPSID"
                 $SAPIPresourceName = "SAP $SAPSID IP"
             }

             $SAPIPResourceClusterParameters =  Get-ClusterResource $SAPIPresourceName | Get-ClusterParameter
             $IPAddress = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "Address" }).Value
             $NetworkName = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "Network" }).Value
             $SubnetMask = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "SubnetMask" }).Value
             $OverrideAddressMatch = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "OverrideAddressMatch" }).Value
             $EnableDhcp = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "EnableDhcp" }).Value
             $OldProbePort = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "ProbePort" }).Value

             $var = Get-ClusterResource | Where-Object {  $_.name -eq $SAPIPresourceName  }
             Write-Output "Current configuration parameters for SAP IP cluster resource '$SAPIPresourceName' are:" 

             Get-ClusterResource -Name $SAPIPresourceName | Get-ClusterParameter

             Write-Output " "
             Write-Output "Current probe port property of the SAP cluster resource '$SAPIPresourceName' is '$OldProbePort'." 
             Write-Output " "
             Write-Output "Setting the new probe port property of the SAP cluster resource '$SAPIPresourceName' to '$ProbePort' ..." 
             Write-Output " "

             $var | Set-ClusterParameter -Multiple @{"Address"=$IPAddress;"ProbePort"=$ProbePort;"Subnetmask"=$SubnetMask;"Network"=$NetworkName;"OverrideAddressMatch"=$OverrideAddressMatch;"EnableDhcp"=$EnableDhcp}

             Write-Output " "

             if($RestartSAPClusterGroup){
                 Write-Output ""
                 Write-Output "Activating changes..." 

                 Write-Output " "
                 Write-Output "Taking SAP cluster IP resource '$SAPIPresourceName' offline ..."
                 Stop-ClusterResource -Name $SAPIPresourceName
                 sleep 5

                 Write-Output "Starting SAP cluster role '$SAPClusterRoleName' ..."
                 Start-ClusterGroup -Name $SAPClusterRoleName

                 Write-Output "New ProbePort parameter is active." 
                 Write-Output " "

                 Write-Output "New configuration parameters for SAP IP cluster resource '$SAPIPresourceName':" 
                 Write-Output " " 
                 Get-ClusterResource -Name $SAPIPresourceName | Get-ClusterParameter
             }else
             {
                 Write-Output "SAP cluster role '$SAPClusterRoleName' is not restarted, therefore changes are not activated."
             }
         }
         catch{
            Write-Error  $_.Exception.Message
        }
     }
     END {}
 }

Abra a porta de sonda de firewall Windows

Abra uma Windows porta de sonda de firewall em ambos os nós de cluster. Utilize o seguinte script para abrir uma porta de sonda de firewall Windows. Atualize as variáveis PowerShell para o seu ambiente.
Se utilizar o ERS2, também terá de abrir a porta de firewall para a porta da sonda ERS2.

  $ProbePort = 62000   # ProbePort of the Azure internal load balancer
  New-NetFirewallRule -Name AzureProbePort -DisplayName "Rule for Azure Probe Port" -Direction Inbound -Action Allow -Protocol TCP -LocalPort $ProbePort

Instalar a área da base de dados

Para instalar a caixa de dados, siga o processo descrito na documentação de instalação da SAP.

Instale o segundo nó de cluster

Para instalar o segundo cluster, siga os passos descritos no guia de instalação SAP.

Instale o Servidor de Aplicações Primárias SAP

Instale o servidor de aplicação primária (PAS) caso <SID-di-0> na máquina virtual que designou para hospedar o PAS. Não há dependências do Azure. Se utilizar o SIOS, não existem definições específicas do DataKeeper.

Instale o Servidor de Aplicações Adicionais SAP

Instale um Servidor de Aplicação Adicional SAP (AAS) em todas as máquinas virtuais designadas para hospedar uma instância do Servidor de Aplicações SAP.

Testar a falha da instância SAP ASCS/SCS

Para os testes de failover delineados, assumimos que o SAP ASCS está ativo no nó A.

  1. Verifique se o sistema SAP pode falhar com sucesso do nó A para o nó B Escolha uma destas opções para iniciar uma falha do grupo de cluster SAP <SID> do nó de cluster A ao nó de cluster B:

    • Gestor de Cluster Failover
    • Failover Cluster PowerShell
    $SAPSID = "PR1"     # SAP <SID>
    
    $SAPClusterGroup = "SAP $SAPSID"
    Move-ClusterGroup -Name $SAPClusterGroup
    
    
  2. Reinicie o nó de cluster A dentro do Windows sistema operativo de hóspedes. Isto inicia uma falha automática do grupo de cluster SAP <SID> do nó A ao nó B.

  3. Reinicie o nó de cluster A do portal do Azure. Isto inicia uma falha automática do grupo de cluster SAP <SID> do nó A ao nó B.

  4. Reinicie o nó de cluster A utilizando Azure PowerShell. Isto inicia uma falha automática do grupo de cluster SAP <SID> do nó A ao nó B.

  5. Verificação

    • Após o failover, verifique se o grupo de cluster SAP <SID> está em funcionamento no nó de cluster B.

      Figure 8: In Failover Cluster Manager, the SAP <SID> cluster group is running on cluster node B

      No Failover Cluster Manager, o grupo de cluster SAP <SID> está a funcionar no nó de cluster B

    • Após o failover, verifique se o disco partilhado está agora montado no nó de cluster B.

    • Após a falha, se utilizar o SIOS, verifique se o SIOS DataKeeper está a replicar dados da unidade de volume de origem S no nó de cluster B para a unidade de volume S no nó de cluster A.

      Figure 9: SIOS DataKeeper replicates the local volume from cluster node B to cluster node A

      SiOS DataKeeper replica o volume local do nó de cluster B para o nó de cluster A