Instalar o SAP NetWeaver HA em um cluster de failover do Windows e disco compartilhado para uma instância SAP ASCS/SCS no Azure

Este artigo descreve como instalar e configurar um sistema SAP de alta disponibilidade no Azure usando um cluster de failover do Windows Server e um disco compartilhado de cluster para clusterizar uma instância SAP ASCS/SCS. Conforme descrito no Guia de arquitetura: Agrupar uma instância SAP ASCS/SCS em um cluster de failover do Windows usando um disco compartilhado de cluster, há duas alternativas para o disco compartilhado de cluster:

Pré-requisitos

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

Não descrevemos a configuração do DBMS neste artigo porque as configurações variam dependendo do sistema DBMS que você usa. Assumimos que as preocupações de alta disponibilidade com o DBMS são resolvidas com as funcionalidades que diferentes fornecedores de DBMS suportam para o Azure. Exemplos são Always On ou espelhamento de banco de dados para bancos de dados SQL Server e Oracle Data Guard para Oracle. Os cenários de alta disponibilidade para o DBMS não são abordados neste artigo.

Não há considerações especiais quando diferentes serviços DBMS interagem com uma configuração SAP ASCS ou SCS clusterizada no 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 em execução no mesmo grupo de clusters de failover da Microsoft. Todas as diferenças de instalação para cada pilha de instalação do SAP NetWeaver são explicitamente mencionadas. Você pode assumir que o restante das etapas são as mesmas.

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

Importante

Se você usar o SIOS para apresentar o disco compartilhado, não coloque seu arquivo de paginação nos volumes espelhados do SIOS DataKeeper. Você pode deixar seu arquivo de paginação na unidade temporária D de uma máquina virtual do Azure, que é o padrão. Se ainda não estiver lá, mova o arquivo de página do Windows para a unidade D da sua máquina virtual do Azure.

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

  • Crie um nome de host virtual para a instância SAP ASCS/SCS clusterizada.
  • Instale o SAP no primeiro nó do cluster.
  • Modifique o perfil SAP da instância ASCS/SCS.
  • Adicione uma porta de teste.
  • Abra a porta de investigação do firewall do Windows.

Criar um nome de host virtual para a instância SAP ASCS/SCS clusterizada

  1. No gerenciador de DNS do Windows, crie uma entrada DNS para o nome do host virtual da instância ASCS/SCS.

    Importante

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

    Figure 1: 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 ASCS/SCS e o endereço TCP/IP

  2. Se estiver usando o novo SAP Enqueue Replication Server 2, que também é instância clusterizada, você precisará reservar no DNS um nome de host virtual para ERS2 também.

    Importante

    O endereço IP que você atribui ao nome do host virtual da instância ERS2 deve ser o segundo endereço IP que você atribuiu ao 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 do host virtual, selecione Domínio do Gerenciador>DNS.

    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 de cluster SAP ASCS/SCS

Instalar o primeiro nó de cluster SAP

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

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

    Importante

    Lembre-se de que a configuração nas regras de balanceamento de carga interno do Azure (se estiver usando SKU Básico) e os números de instância SAP selecionados devem corresponder.

  2. Siga o procedimento de instalação descrito pelo SAP. Certifique-se na opção de instalação inicial "First Cluster Node", para escolher "Cluster Shared Disk" como opção de configuração.

Gorjeta

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

Modificar o perfil SAP da instância ASCS/SCS

Se você tiver o Enqueue Replication Server 1, adicione o parâmetro enque/encni/set_so_keepalive de perfil SAP conforme descrito abaixo. O parâmetro profile impede que as conexões entre os processos de trabalho SAP e o servidor enqueue sejam fechadas quando estiverem ociosas por muito tempo. O parâmetro SAP não é necessário para ERS2.

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

    enque/encni/set_so_keepalive = true
    

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

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

Adicionar uma porta de sonda

Use a funcionalidade de teste do balanceador de carga interno para fazer com que toda a configuração do cluster funcione com o Balanceador de Carga do Azure. O balanceador de carga interno do Azure geralmente distribui a carga de trabalho de entrada igualmente entre as máquinas virtuais participantes.

No entanto, isso não funcionará em algumas configurações de cluster porque apenas uma instância está ativa. A outra instância é passiva e não pode aceitar nenhuma carga de trabalho. Uma funcionalidade de teste ajuda quando o balanceador de carga interno do Azure deteta qual instância está ativa e direciona apenas a instância ativa.

Importante

Neste exemplo de configuração, o ProbePort é definido como 620Nr. Para a instância SAP ASCS com o número 00 é 620 00. Você precisará ajustar a configuração para corresponder aos números de instância do SAP e ao SID do SAP.

Para adicionar uma porta de teste, execute este módulo do PowerShell em uma das VMs de cluster:

  • No caso da instância SAP ASC/SCS

    Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000
    
  • Se estiver usando ERS2, que está agrupado. Não há necessidade de configurar a porta de teste para ERS1, pois ela não está clusterizada.

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

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

 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 investigação do firewall do Windows

Abra uma porta de investigação do firewall do Windows em ambos os nós do cluster. Use o script a seguir para abrir uma porta de investigação do firewall do Windows. Atualize as variáveis do PowerShell para seu ambiente.
Se estiver usando ERS2, você também precisará abrir a porta de firewall para a porta de 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 instância do banco de dados

Para instalar a instância do banco de dados, siga o processo descrito na documentação de instalação do SAP.

Instalar o segundo nó do cluster

Para instalar o segundo cluster, siga as etapas descritas no guia de instalação do SAP.

Instalar o SAP Primary Application Server

Instale a instância <do Servidor de Aplicativos Principal (PAS) SID-di-0> na máquina virtual que você designou para hospedar o PAS. Não há dependências no Azure. Se estiver usando o SIOS, não haverá configurações específicas do DataKeeper.

Instalar o servidor de aplicativos adicional SAP

Instale um SAP Additional Application Server (AAS) em todas as máquinas virtuais que você designou para hospedar uma instância do SAP Application Server.

Testar o failover da instância SAP ASCS/SCS

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

  1. Verifique se o sistema SAP pode fazer failover com êxito do nó A para o nó B Escolha uma destas opções para iniciar um failover do grupo de clusters SAP <SID> do nó de cluster A para o nó de cluster B:

    • Gerenciador de Cluster de Failover
    • Failover Cluster PowerShell
    $SAPSID = "PR1"     # SAP <SID>
    
    $SAPClusterGroup = "SAP $SAPSID"
    Move-ClusterGroup -Name $SAPClusterGroup
    
    
  2. Reinicie o nó de cluster A no sistema operacional convidado do Windows. Isso inicia um failover automático do grupo de clusters SAP <SID> do nó A para o nó B.

  3. Reinicie o nó de cluster A a partir do portal do Azure. Isso inicia um failover automático do grupo de clusters SAP <SID> do nó A para o nó B.

  4. Reinicie o nó de cluster A usando o Azure PowerShell. Isso inicia um failover automático do grupo de clusters SAP <SID> do nó A para o nó B.

  5. Verificação

    • Após o failover, verifique se o grupo de clusters do SAP <SID> está em execução no nó B do cluster.

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

      No Gerenciador de Cluster de Failover, o grupo de clusters SAP <SID> está sendo executado no nó de cluster B

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

    • Após o failover, se estiver usando o SIOS, verifique se o SIOS DataKeeper está replicando dados da unidade de volume de origem S no nó de cluster B para a unidade de volume de destino S no nó de cluster A.

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

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