Instalación de alta disponibilidad para SAP NetWeaver en un clúster de conmutación por error de Windows y un disco compartido para una instancia de ASCS/SCS de SAP en Azure

Este artículo describe cómo instalar y configurar un sistema SAP de alta disponibilidad en Azure mediante el uso de un clúster de conmutación por error de Windows Server y un disco compartido de clúster para agrupar en clústeres una instancia de SAP ASCS/SCS. Como se describe en Guía de arquitectura: Agrupación de una instancia de ASCS/SCS de SAP en un clúster de conmutación por error de Windows con un disco compartido de clúster hay dos alternativas para el disco compartido de clúster:

Requisitos previos

Antes de comenzar la instalación, consulte estos documentos:

En este artículo no se describe la configuración de DBMS porque las opciones varían en función del sistema DBMS que use. Se da por supuesto que las cuestiones relacionadas con la alta disponibilidad con DBMS se solucionan con las funcionalidades que admiten los diversos proveedores de DBMS para Azure. Por ejemplo, Always On o creación de reflejo de la base de datos para SQL Server y Oracle Data Guard para bases de datos de Oracle. Los escenarios de alta disponibilidad del DBMS no se describen en este artículo.

No hay ninguna consideración especial cuando distintos servicios de DBMS interactúan con una configuración de ASCS/SCS de SAP en clúster en Azure.

Nota

Los procedimientos de instalación de sistemas ABAP de SAP NetWeaver, sistemas Java y sistemas ABAP+Java son casi idénticos. La diferencia más significativa es que un sistema ABAP de SAP tiene una instancia de ASCS. El sistema Java de SAP tiene una instancia de SCS. El sistema ABAP+Java de SAP tiene una instancia de ASCS y una instancia de SCS en ejecución en el mismo grupo de clústeres de conmutación por error de Microsoft. Cualquier diferencia de instalación de cada pila de instalación de SAP NetWeaver se menciona explícitamente. Puede suponer que el resto de los pasos son los mismos.

Instalación de SAP con una instancia de ASCS/SCS de alta disponibilidad

Importante

Si usa SIOS para presentar el disco compartido, no coloque el archivo de paginación en los volúmenes reflejados de SIOS DataKeeper. Puede dejar el archivo de paginación en la unidad temporal D de una máquina virtual de Azure, que es la opción predeterminada. Si todavía no se encuentra ahí, mueva el archivo de paginación de Windows a la unidad D de la máquina virtual de Azure.

Para instalar SAP con una instancia de ASCS/SCS de alta disponibilidad, siga estos pasos:

  • Cree un nombre de host virtual para la instancia de ASCS/SCS de SAP en clúster.
  • Instale el primer nodo de clúster de SAP.
  • Modifique el perfil SAP de la instancia de ASCS/SCS.
  • Añada un puerto de sondeo.
  • Abra el puerto de sondeo de firewall de Windows.

Creación de un nombre de host virtual para la instancia de SAP ASCS/SCS en clúster

  1. En el Administrador de DNS de Windows, cree una entrada de DNS para el nombre de host virtual de la instancia de ASCS/SCS.

    Importante

    La dirección IP que asigna al nombre de host virtual de la instancia de ASCS/SCS debe ser la misma dirección IP que asignó a Azure Load Balancer.

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

    Definición de la entrada DNS del nombre virtual del clúster de ASCS/SCS de SAP y la dirección TCP/IP

  2. Si usa el nuevo Enqueue Replication Server 2 de SAP, que también es una instancia en clúster, debe reservar en DNS un nombre de host virtual para ERS2 también.

    Importante

    La dirección IP que asigne al nombre de host virtual de la instancia de ERS2 debe ser la segunda dirección IP que asignó a Azure Load Balancer.

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

    Definición de la entrada DNS del nombre virtual del clúster de ERS2 de SAP y la dirección TCP/IP

  3. Para definir la dirección IP asignada al nombre de host virtual, seleccione Administrador de DNS>Dominio.

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

    Nuevo nombre virtual y dirección TCP/IP para la configuración del clúster de ASCS/SCS de SAP

Instalación del primer nodo de clúster de SAP

  1. Ejecute la opción de primer nodo de clúster en el nodo de clúster. Seleccione:

    • Sistema ABAP: número de instancia de ASCS00
    • Sistema Java: número de instancia de SCS01
    • Sistema ABAP+Java: número de instancia de ASCS00 y número de instancia de SCS01

    Importante

    Tenga en cuenta que debe coincidir la configuración de las reglas de equilibrio de carga de Azure Internal Load Balancer (si se usa la SKU básica) y los números de instancia de SAP seleccionados.

  2. Siga el procedimiento de instalación descrito de SAP. Asegúrese de que en la opción de inicio de la instalación "First Cluster Node" (Primer nodo de clúster), elige "Cluster Shared Disk" (Disco compartido de clúster) como opción de configuración.

Sugerencia

La documentación de instalación de SAP describe cómo instalar el primer nodo de clúster de ASCS/SCS.

Modificación del perfil SAP de la instancia de ASCS/SCS

Si dispone de Enqueue Replication Server 1, agregue el parámetro enque/encni/set_so_keepalive de perfil de SAP, como se describe a continuación. El parámetro de perfil evita el cierre de las conexiones entre los procesos de trabajo de SAP y el servidor de puesta en cola cuando lleven inactivas demasiado tiempo. El parámetro de SAP no es necesario para ERS2.

  1. Agregue este parámetro de perfil al perfil de la instancia de ASCS/SCS de SAP, si usa ERS1.

    enque/encni/set_so_keepalive = true
    

    En el caso de ERS1 y ERS2, asegúrese de que los parámetros del sistema operativo keepalive se establecen tal y como se describe en la nota de SAP 1410736.

  2. Para aplicar los cambios de parámetros de perfil de SAP, reinicie la instancia de ASCS/SCS de SAP.

Adición de un puerto de sondeo

Use la funcionalidad de sondeo del equilibrador de carga interno para que toda la configuración del clúster funcione con Azure Load Balancer. Habitualmente, el equilibrador de carga interno de Azure distribuye la carga de trabajo entrante de manera equitativa entre las máquinas virtuales que participan.

Sin embargo, esto no funcionará en algunas configuraciones de clúster porque solo hay una instancia activa. La otra instancia es pasiva y no puede aceptar nada de la carga de trabajo. Una funcionalidad de sondeo ayuda cuando Azure Internal Load Balancer detecta qué instancia está activa y solo tiene como destino la instancia activa.

Importante

En esta configuración de ejemplo, ProbePort se establece en 620Nr. En el caso de la instancia de ASCS de SAP con el número 00 es 62000. Tendrá que ajustar la configuración para que coincida con los números de instancia de SAP y el SID de SAP.

Para agregar un puerto de sondeo, ejecute este módulo de PowerShell en una de las máquinas virtuales del clúster:

  • En el caso de la instancia de ASC/SCS de SAP

    Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000
    
  • Si se usa ERS2, que está en clúster. No es necesario configurar el puerto de sondeo para ERS1, ya que no está en clúster.

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

El código de la función Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource tendría el siguiente aspecto:

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

Apertura del puerto de sondeo de Firewall de Windows

Abra el puerto de sondeo de firewall de Windows en ambos nodos del clúster. El siguiente script permite abrir un puerto de sondeo de firewall de Windows. Actualice las variables de PowerShell de su entorno.
Si utiliza ERS2, también tendrá que abrir el puerto de firewall para el puerto de sondeo de 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

Instalación de la instancia de base de datos

Para instalar la instancia de base de datos, siga el proceso que se describe en la documentación de instalación de SAP.

Instalación del segundo nodo del clúster

Para instalar el segundo clúster, siga los pasos que se describen en la guía de instalación de SAP.

Instalación del servidor de aplicaciones principal de SAP

Instale la instancia del servidor de aplicaciones principal (PAS) <SID>-di-0 en la máquina virtual que designó para hospedar el PAS. No hay ninguna dependencia en Azure. Si usa SIOS, no hay ninguna configuración específica de DataKeeper.

Instalación del servidor de aplicaciones adicional de SAP

Instale un servidor de aplicaciones adicional (AAS) de SAP en todas las máquinas virtuales que designó para hospedar una instancia de servidores de aplicaciones de SAP.

Prueba de la conmutación por error de la instancia de ASCS/SCS de SAP

En el caso de las pruebas de conmutación por error descritas, asumimos que ASCS de SAP está activo en el nodo A.

  1. Verifique que el sistema SAP pueda conmutar por error con éxito del nodo A al B, elija una de estas opciones para iniciar una conmutación por error del grupo de clústeres SAP <SID> desde el nodo del clúster A al B:

    • Administrador de clústeres de conmutación por error
    • PowerShell del clúster de conmutación por error
    $SAPSID = "PR1"     # SAP <SID>
    
    $SAPClusterGroup = "SAP $SAPSID"
    Move-ClusterGroup -Name $SAPClusterGroup
    
    
  2. Reinicie el nodo del clúster A dentro del sistema operativo invitado Windows. Al hacerlo, se inicia una conmutación automática por error del grupo de clústeres <SID> de SAP desde el nodo A al nodo B.

  3. Reinicie el nodo del clúster A desde Azure Portal. Al hacerlo, se inicia una conmutación automática por error del grupo de clústeres <SID> de SAP desde el nodo A al nodo B.

  4. Reinicie el nodo del clúster A mediante Azure PowerShell. Al hacerlo, se inicia una conmutación automática por error del grupo de clústeres <SID> de SAP desde el nodo A al nodo B.

  5. Comprobación

    • Después de la conmutación por error, compruebe que el grupo de clústeres de SID> de SAP <se ejecuta en el nodo de clúster B.

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

      En el Administrador de clústeres de conmutación por error, el grupo de clústeres SAP <SID> se ejecuta en el nodo del clúster B

    • Después de la conmutación por error, compruebe que el disco compartido ahora está montado en el nodo del clúster B.

    • Después de la conmutación por error, si usa SIOS, compruebe que SIOS DataKeeper replica los datos de la unidad de volumen de origen S en el nodo de clúster B a la unidad de volumen de destino S en el nodo de clúster A.

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

      SIOS DataKeeper replica el volumen local desde el nodo del clúster B al nodo del clúster A