Installare la disponibilità elevata di SAP NetWeaver in un cluster di failover Windows e nel disco condiviso per un'istanza ASCS/SCS di SAP in Azure

Questo articolo descrive come installare e configurare un sistema SAP a disponibilità elevata in Azure usando un cluster di failover Windows Server e un disco condiviso del cluster per il clustering di un'istanza ASCS/SCS di SAP. Come descritto in Architecture guide: Cluster an SAP ASCS/SCS instance on a Windows failover cluster by using a cluster shared disk ,there are two alternatives for cluster shared disk:

Prerequisiti

Prima di iniziare l'installazione, esaminare questi documenti:

In questo articolo non viene trattata la configurazione del sistema DBMS perché varia a seconda del sistema DBMS usato. Si presuppone che i problemi di disponibilità elevata del sistema DBMS vengano risolti con le funzionalità supportate dai diversi fornitori di sistemi DBMS per Azure, Gli esempi sono Always On o il mirroring del database per SQL Server e Oracle Data Guard per i database Oracle. Gli scenari di disponibilità elevata per DBMS non sono trattati in questo articolo.

Non esistono particolari considerazioni per il caso in cui servizi DBMS differenti interagiscano con una configurazione ASCS o SCS di SAP in cluster in Azure.

Nota

La procedura di installazione dei sistemi SAP NetWeaver ABAP, Java e ABAP + Java è praticamente identica. La differenza principale è che un sistema SAP ABAP ha un'istanza di ASCS. Il sistema SAP Java ha un'istanza di SCS. Il sistema SAP ABAP + Java ha un'istanza di ASCS e un'istanza di SCS in esecuzione nello stesso gruppo cluster di failover Microsoft. Eventuali differenze di installazione per ogni stack di installazione di SAP NetWeaver verranno indicate in modo esplicito. È possibile presupporre che il resto dei passaggi sia lo stesso.

Installare SAP con un'istanza ASCS/SCS a disponibilità elevata

Importante

Se si usa SIOS per presentare il disco condiviso, non posizionare il file di pagina nei volumi con mirroring SIOS DataKeeper. È possibile lasciare il file di paging nell'unità temporanea D di una macchina virtuale di Azure, ovvero l'impostazione predefinita. Se non è già presente, spostare il file di paging di Windows nell'unità D della macchina virtuale di Azure.

L'installazione di SAP con un'istanza di ASCS/SCS a disponibilità elevata prevede queste attività:

  • Creare un nome host virtuale per l'istanza ASCS/SCS di SAP in cluster.
  • Installare SAP nel primo nodo del cluster.
  • Modificare il profilo SAP dell'istanza di ASCS/SCS.
  • Aggiungere una porta probe.
  • Aprire la porta probe di Windows Firewall.

Creare un nome host virtuale per l'istanza ASCS/SCS di SAP in cluster

  1. In Gestore DNS di Windows creare una voce DNS per il nome host virtuale dell'istanza di ASCS/SCS.

    Importante

    L'indirizzo IP assegnato al nome host virtuale dell'istanza di ASCS/SCS deve corrispondere all'indirizzo IP assegnato ad Azure Load Balancer.

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

    Definire la voce DNS per il nome virtuale del cluster SAP ASCS/SCS e l'indirizzo TCP/IP

  2. Se si usa il nuovo server di replica accodamento SAP 2, che è anche un'istanza in cluster, è necessario riservare anche in DNS un nome host virtuale per ERS2.

    Importante

    L'indirizzo IP assegnato al nome host virtuale dell'istanza di ERS2 deve essere il secondo indirizzo IP assegnato ad Azure Load Balancer.

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

    Definire la voce DNS per il nome virtuale del cluster SAP ERS2 e l'indirizzo TCP/IP

  3. Per definire l'indirizzo IP assegnato al nome host virtuale, selezionare Gestore DNS>Dominio.

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

    Nuovo nome virtuale e indirizzo TCP/IP per la configurazione del cluster SAP ASCS/SCS

Installare il primo nodo del cluster SAP

  1. Eseguire la prima opzione del nodo del cluster nel nodo A del cluster. Selezionare:

    • Per il sistema ABAP: ASCS numero di istanza 00
    • Per il sistema Java: SCS numero di istanza 01
    • Per il sistema ABAP + Java: ASCS numero di istanza 00 e SCS numero di istanza 01

    Importante

    Tenere presente che la configurazione nelle regole di bilanciamento del carico interno del servizio di bilanciamento del carico di Azure (se si usa lo SKU Basic) e i numeri di istanza SAP selezionati devono corrispondere.

  2. Seguire la procedura di installazione descritta da SAP. Assicurarsi che nell'opzione di installazione iniziale "First Cluster Node" (Primo nodo del cluster) scegliere "Cluster Shared Disk" come opzione di configurazione.

Suggerimento

La documentazione di installazione di SAP descrive come installare il primo nodo del cluster ASCS/SCS.

Modificare il profilo SAP dell'istanza di ASCS/SCS

Se è disponibile Enqueue Replication Server 1, aggiungere il parametro enque/encni/set_so_keepalive del profilo SAP come descritto di seguito. Questo parametro impedisce la chiusura delle connessioni tra i processi di lavoro SAP e il server di accodamento quando sono inattivi per un tempo eccessivo. Il parametro SAP non è obbligatorio per ERS2.

  1. Aggiungere questo parametro di profilo al profilo di istanza di SAP ASCS/SCS, se si usa ERS1.

    enque/encni/set_so_keepalive = true
    

    Per ERS1 e ERS2, assicurarsi che i parametri del keepalive sistema operativo siano impostati come descritto nella nota SAP 1410736.

  2. Per applicare le modifiche al parametro del profilo SAP, riavviare l'istanza di SAP ASCS/SCS.

Aggiungere una porta probe

Usare la funzionalità probe del servizio di bilanciamento del carico interno per il corretto funzionamento della configurazione del cluster con Azure Load Balancer. Il servizio di bilanciamento del carico interno di Azure distribuisce in genere il carico di lavoro in ingresso in modo uniforme tra le macchine virtuali.

Questa operazione non funziona tuttavia in alcune configurazioni di cluster perché è attiva una sola istanza. L'altra istanza è passiva e non può accettare carico di lavoro. Una funzionalità probe è utile quando il servizio di bilanciamento del carico interno di Azure rileva quale istanza è attiva e ha come destinazione solo l'istanza attiva.

Importante

In questa configurazione di esempio, ProbePort è impostato su 620Nr. Per l'istanza di SAP ASCS con numero 00 è 62000. Sarà necessario modificare la configurazione in modo che corrisponda ai numeri di istanza SAP e al SID SAP.

Per aggiungere una porta probe, eseguire questo modulo di PowerShell in una delle macchine virtuali del cluster:

  • Nel caso dell'istanza di SAP ASC/SCS

    Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000
    
  • Se si usa ERS2, che è cluster. Non è necessario configurare la porta probe per ERS1, perché non è cluster.

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

Il codice per la funzione Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource sarà simile al seguente:

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

Aprire la porta probe di Windows Firewall

Aprire una porta probe di Windows Firewall in entrambi i nodi del cluster. Usare lo script seguente per aprire una porta probe di Windows Firewall. Aggiornare le variabili PowerShell per l'ambiente.
Se si usa ERS2, sarà anche necessario aprire la porta del firewall per la porta probe 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

Installare l'istanza del database

Per installare l'istanza di database, seguire la procedura descritta nella documentazione relativa all'installazione di SAP.

Installare il secondo nodo del cluster

Per installare il secondo cluster, seguire la procedura descritta nella guida all'installazione di SAP.

Installare il server applicazioni primario SAP

Installare l'istanza di Primary Application Server (PAS) <SID>-di-0 nella macchina virtuale designata per ospitare PAS. Non sono presenti dipendenze in Azure. Se si usa SIOS, non sono presenti impostazioni specifiche di DataKeeper.

Installare il server applicazioni aggiuntivo SAP

Installare un'istanza di Additional Application Server (AAS) SAP in tutte le macchine virtuali designate per ospitare un'istanza del server applicazioni SAP.

Testare il failover dell'istanza di SAP ASCS/SCS

Per i test di failover descritti, si presuppone che SAP ASCS sia attivo nel nodo A.

  1. Verificare che il sistema SAP possa eseguire correttamente il failover dal nodo A al nodo B Scegliere una di queste opzioni per avviare un failover del gruppo di cluster SAP <SID> dal nodo A del cluster al nodo B del cluster:

    • Gestione cluster di failover
    • PowerShell per Clustering di failover
    $SAPSID = "PR1"     # SAP <SID>
    
    $SAPClusterGroup = "SAP $SAPSID"
    Move-ClusterGroup -Name $SAPClusterGroup
    
    
  2. Riavviare il nodo A del cluster all'interno del sistema operativo guest Windows. Verrà avviato un failover automatico del gruppo di cluster <SID> di SAP dal nodo A al nodo B.

  3. Riavviare il nodo A del cluster dal portale di Azure. Verrà avviato un failover automatico del gruppo di cluster <SID> di SAP dal nodo A al nodo B.

  4. Riavviare il nodo A del cluster usando Azure PowerShell. Verrà avviato un failover automatico del gruppo di cluster <SID> di SAP dal nodo A al nodo B.

  5. Verifica

    • Dopo il failover, verificare che il gruppo di cluster SID> SAP <sia in esecuzione nel nodo B del cluster.

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

      In Gestione cluster di failover il gruppo di cluster SID> SAP <è in esecuzione nel nodo B del cluster

    • Dopo il failover, verificare che il disco condiviso sia ora montato nel nodo B del cluster.

    • Dopo il failover, se si usa SIOS, verificare che SIOS DataKeeper stia replicando i dati dall'unità del volume di origine S nel nodo B del cluster all'unità del volume di destinazione S nel nodo A del cluster.

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

      SIOS DataKeeper replica il volume locale dal nodo B del cluster al nodo A del cluster