Compartilhar via


Instalar a alta disponibilidade do SAP NetWeaver em um cluster de failover do Windows e em um disco compartilhado para uma instância do 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 o disco compartilhado de cluster para clustering de uma instância do SAP ASCS/SCS. Conforme descrito no Guia de arquitetura: cluster de uma instância do SAP ASCS/SCS em um cluster de failover do Windows usando um disco compartilhado do cluster, há duas alternativas para o disco compartilhado do cluster:

Pré-requisitos

Antes de começar a instalação, analise estes documentos:

Não descreveremos a instalação de DBMS neste artigo, pois as configurações variam conforme o sistema DBMS que você usa. Supomos que as preocupações de alta disponibilidade com o DBMS são dissipadas com o suporte às funcionalidades que os diferentes fornecedores de DBMS dão para o Azure. Os exemplos são o Always On ou o espelhamento de banco de dados para o SQL Server e o Oracle Data Guard para bancos de dados Oracle. Os cenários de alta disponibilidade para o DBMS não são abordados neste artigo.

Não existem considerações especiais quando diferentes serviços DBMS interagem com uma configuração de SAP ASCS/SCS clusterizada no Azure.

Observação

O procedimento de instalação dos sistemas ABAP, sistemas Java e sistemas ABAP+Java do SAP NetWeaver é quase idêntico. 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 ABAP+Java do SAP tem uma instância ASCS e uma instância ABAP+Java em execução no mesmo grupo de cluster de failover da Microsoft. As diferenças de instalação para cada pilha de instalação do SAP NetWeaver serão explicitamente mencionadas. Você pode presumir que o restante das etapas é o mesmo.

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

Importante

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

Instalar o SAP com uma instância ASCS/SCS de alta disponibilidade envolve as seguintes tarefas:

  • Criar um nome de host virtual para a instância clusterizada do SAP ASCS/SCS.
  • Instalar o SAP no primeiro nó do cluster.
  • Modificar o perfil SAP da instância do ASCS/SCS.
  • Adicionar uma porta de investigação.
  • Abrir a porta de investigação do Firewall do Windows.

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

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

    Importante

    O endereço IP atribuído ao nome do host virtual da instância do ASCS/SCS deve ser o mesmo que o endereço IP atribuído ao Azure Load Balancer.

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

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

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

    Importante

    O endereço IP atribuído ao nome do host virtual da instância do ERS2 deve ser o segundo endereço IP atribuído ao Azure Load Balancer.

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

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

  3. Para definir o endereço IP atribuído ao nome de host virtual, selecione Gerenciador de DNS>Domínio.

    Figura 2: Novo nome virtual e endereço TCP/IP para a configuração de cluster do SAP ASCS/SCS

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

Instalar o primeiro nó do cluster do SAP

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

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

    Importante

    Tenha em mente que a configuração nas regras de balanceamento de carga do balanceador de carga interno do Azure (se estiver usando a SKU Básica), e os números de instância do SAP selecionados, devem corresponder.

  2. Siga o procedimento de instalação descrito do SAP. Inicie a opção de instalação "Primeiro nó de cluster" para escolher "Disco compartilhado de cluster" como opção de configuração.

Dica

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

Modificar o perfil SAP da instância do ASCS/SCS

Se você tiver o ERS1, adicione o parâmetro do perfil enque/encni/set_so_keepalive do SAP conforme descrito abaixo. O parâmetro de perfil impede conexões entre os processos de trabalho do SAP e o servidor de enfileiramento de fechar quando estão ociosas por muito tempo. O parâmetro do SAP não é necessário para ERS2.

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

    enque/encni/set_so_keepalive = TRUE
    

    Para ERS1 e ERS2, verifique se os parâmetros keepalive do sistema operacional estão definidos conforme descrito na observação do SAP número 1410736.

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

Adicionar uma porta de investigação

Use a funcionalidade de investigação do balanceador interno de carga para fazer com que toda a configuração do cluster funcione com o Azure Load Balancer. Normalmente, um balanceador de carga interno do Azure 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 parte da carga de trabalho. Uma funcionalidade de investigação ajuda quando o balanceador de carga interno do Azure detecta qual instância está ativa e só tem esta como alvo.

Importante

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

Para adicionar uma porta de investigação, execute este módulo do PowerShell em uma das VMs do cluster:

  • Para a instância do SAP ASC/SCS

    Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000
    
  • Se estiver usando ERS2, que é clusterizado. Não é necessário configurar a porta de investigação para ERS1, pois ela não é clusterizada.

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

O código da função Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource ficaria assim:

 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 clustered 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 manually 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 {}
 }

Abrir a porta de investigação do Firewall do Windows

Abra a porta de investigação do firewall do Windows nos dois nós de cluster. Use o script a seguir para abrir uma porta de investigação no firewall do Windows. Atualize as variáveis do PowerShell para seu ambiente.
Se estiver usando ERS2, também será necessário abrir a porta do firewall para a porta de investigação do 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 de banco de dados

Para instalar a instância de 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, execute as etapas descritas no guia de instalação do SAP.

Instalar o servidor de aplicativos primário SAP

Instalar a instância <SID>-di-0 do PAS (Servidor de Aplicativos primário) 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 há configurações específicas ao DataKeeper.

Instalar o servidor de aplicativos SAP adicional

Instale um AAS (Servidor de Aplicativos Adicional) SAP em todas as máquinas virtuais que você designou para hospedar um Servidor de Aplicativos SAP.

Testar o failover da instância do SAP ASCS/SCS

Para os testes de failover descritos, presumimos 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 <SID> SAP do nó A do cluster para o nó B do cluster:

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

  3. Reinicie o nó A do cluster no Portal do Azure. Isso iniciará um failover automático do grupo de clusters SAP <SID> do nó A para o nó B.

  4. Reinicie o nó A do cluster usando o Azure PowerShell. Isso iniciará 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 SAP <SID> está em execução no nó de cluster B.

      Figura 8: no Gerenciador de Cluster de Failover, o grupo de clusters SAP <SID> está em execução no nó B do cluster

      No Gerenciador de Cluster de Failover, o grupo de clusters SAP <SID> está em execução 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 SIOS, verifique se o SIOS DataKeeper está replicando dados da unidade do volume de origem S no nó B do cluster para a unidade de volume de destino S no nó A do cluster.

      Figura 9: o SIOS DataKeeper replica o volume local do nó B de cluster para o nó A de cluster

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