Condividi tramite


Installare SAP NetWeaver HA in un cluster di failover Windows e su un disco condiviso per un'istanza SAP ASCS/SCS in Azure

Questo articolo descrive come installare e configurare un sistema SAP a disponibilità elevata in Azure usando un cluster di failover di Windows Server e un disco condiviso del cluster per il clustering di un'istanza di SAP ASCS/SCS. Come descritto in Guida architettura: Eseguire il cluster di un'istanza ASCS/SCS SAP su un cluster di failover di Windows usando un disco condiviso del cluster, ci sono due alternative per il disco condiviso del cluster:

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 includono Always On o il mirroring dei 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 pagina 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.
  • Apri la porta di sondaggio di Windows Firewall.

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

  1. In Gestione DNS di Windows, creare una voce DNS per il nome host virtuale dell'istanza ASCS/SCS. Per esempio:

    Screenshot della finestra di dialogo Nuovo host di Windows DNS Manager per la configurazione di ERS-1.

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

    Importante

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

  2. Se si utilizza il nuovo SAP Enqueue Replication Server 2, che è anche un'istanza clusterizzata, è 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.

    Screenshot della finestra di dialogo Nuovo host di Windows DNS Manager per la configurazione di ERS-2.

    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 in Gestione DNS:

    1. Espandere la zona.

    2. Aprire la voce necessaria per definire l'indirizzo IP.

    Screenshot di Gestione DNS di Windows con più voci in una zona di ricerca diretta.

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

Installare il primo nodo del cluster SAP

  1. Eseguire l'opzione del primo nodo di cluster sul 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

    La configurazione nelle regole di bilanciamento del carico interno del servizio di bilanciamento del carico di Azure (se si usa uno 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 avvio dell'installazione in "Primo nodo del cluster" sia selezionato "Disco condiviso cluster" 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 si dispone di Enqueue Replication Server 1, aggiungere il parametro enque/encni/set_so_keepalivedel profilo SAP . Questo parametro impedisce la chiusura delle connessioni tra i processi di lavoro SAP e il server di accodamento quando rimangono inattivi per un tempo eccessivo. Il parametro SAP non è necessario 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 in SAP Note 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 load balance 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 equamente tra le macchine virtuali partecipanti.

Tuttavia, la distribuzione del carico di lavoro non funziona in alcune configurazioni del cluster perché è attiva una sola istanza. L'altra istanza è passiva e non può accettare nessun carico di lavoro. Una funzionalità probe aiuta 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. È 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:

Per l'istanza di SAP ASC/SCS

Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000

Se si usa ERS2, che è un sistema a cluster. Non è necessario configurare la porta del probe per ERS1, perché non è in 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 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 {}
}

Apri la porta sonda 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, è 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 del database, seguire il processo descritto nella documentazione sull'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 del server applicazioni primario (PAS) <SID>-di-0 nella macchina virtuale designata per ospitare il 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 server applicazioni aggiuntivo SAP (AAS) in tutte le macchine virtuali designate per ospitare un'istanza del server applicazioni SAP.

Testare il failover dell'istanza 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 <SID> di SAP dal nodo A al nodo B del cluster:

    • Gestione cluster di failover
    • Cmdlet di PowerShell per cluster 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. In questo modo viene avviato un failover automatico del gruppo di cluster SAP<SID>dal nodo A al nodo B.

  3. Riavviare il nodo A del cluster dal portale di Azure. In questo modo viene avviato un failover automatico del gruppo di cluster SAP <SID> dal nodo A al nodo B.

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

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

    Screenshot di Gestione cluster di failover di Windows con un cluster SAP configurato come ruolo.

    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.

    Screenshot di SIOS DataKeeper che replica il volume locale dal nodo B del cluster al nodo A del cluster.

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