Dela via


Installera SAP NetWeaver HA på ett Windows-redundanskluster och delad disk för en SAP ASCS/SCS-instans i Azure

Den här artikeln beskriver hur du installerar och konfigurerar ett SAP-system med hög tillgänglighet i Azure med hjälp av ett Windows Server-redundanskluster och klusterdelade diskar för klustring av en SAP ASCS/SCS-instans. Som beskrivs i Arkitekturguide: Klustra en SAP ASCS/SCS-instans i ett Windows-redundanskluster med hjälp av en klusterdelad disk finns det två alternativ för klusterdelade diskar:

Förutsättningar

Innan du påbörjar installationen bör du granska följande dokument:

Vi beskriver inte DBMS-konfigurationen i den här artikeln eftersom konfigurationerna varierar beroende på vilket DBMS-system du använder. Vi antar att problem med hög tillgänglighet med DBMS åtgärdas med de funktioner som olika DBMS-leverantörer stöder för Azure. Exempel är AlwaysOn eller databasspegling för SQL Server- och Oracle Data Guard för Oracle-databaser. Scenarier med hög tillgänglighet för DBMS beskrivs inte i den här artikeln.

Det finns inga särskilda överväganden när olika DBMS-tjänster interagerar med en klustrad SAP ASCS- eller SCS-konfiguration i Azure.

Kommentar

Installationsprocedurerna för SAP NetWeaver ABAP-system, Java-system och ABAP+Java-system är nästan identiska. Den största skillnaden är att ett SAP ABAP-system har en ASCS-instans. SAP Java-systemet har en SCS-instans. SAP ABAP+Java-systemet har en ASCS-instans och en SCS-instans som körs i samma Microsoft-redundansklustergrupp. Eventuella installationsskillnader för varje SAP NetWeaver-installationsstack nämns uttryckligen. Du kan anta att resten av stegen är desamma.

Installera SAP med en ASCS/SCS-instans med hög tillgänglighet

Viktigt!

Om du använder SIOS för att presentera en delad disk ska du inte placera sidfilen på de SIOS DataKeeper-speglade volymerna. Du kan lämna sidfilen på den tillfälliga enheten D för en virtuell Azure-dator, vilket är standardinställningen. Om den inte redan finns där flyttar du Windows-sidfilen för att köra D för den virtuella Azure-datorn.

Att installera SAP med en ASCS/SCS-instans med hög tillgänglighet omfattar följande uppgifter:

  • Skapa ett virtuellt värdnamn för den klustrade SAP ASCS/SCS-instansen.
  • Installera SAP på den första klusternoden.
  • Ändra SAP-profilen för ASCS/SCS-instansen.
  • Lägg till en avsökningsport.
  • Öppna windows-brandväggens avsökningsport.

Skapa ett virtuellt värdnamn för den klustrade SAP ASCS/SCS-instansen

  1. I Windows DNS-hanteraren skapar du en DNS-post för det virtuella värdnamnet för ASCS/SCS-instansen.

    Viktigt!

    IP-adressen som du tilldelar till det virtuella värdnamnet för ASCS/SCS-instansen måste vara samma som DEN IP-adress som du tilldelade Azure Load Balancer.

    Bild 1: Definiera DNS-posten för det virtuella SAP ASCS/SCS-klustrets virtuella namn och TCP/IP-adress

    Definiera DNS-posten för SAP ASCS/SCS-klustrets virtuella namn och TCP/IP-adress

  2. Om du använder den nya SAP Enqueue Replication Server 2, som också är en klustrad instans, måste du även reservera ett virtuellt värdnamn för ERS2 i DNS.

    Viktigt!

    IP-adressen som du tilldelar till det virtuella värdnamnet för ERS2-instansen måste vara den andra IP-adressen som du tilldelade Azure Load Balancer.

    Bild 1A: Definiera DNS-posten för SAP ASCS/SCS-klustrets virtuella namn och TCP/IP-adress

    Definiera DNS-posten för sap ERS2-klustrets virtuella namn och TCP/IP-adress

  3. Om du vill definiera DEN IP-adress som har tilldelats till det virtuella värdnamnet väljer du DNS Manager-domän>.

    Bild 2: Nytt virtuellt namn och TCP/IP-adress för KONFIGURATION av SAP ASCS/SCS-kluster

    Nytt virtuellt namn och TCP/IP-adress för SAP ASCS/SCS-klusterkonfiguration

Installera den första SAP-klusternoden

  1. Kör det första alternativet för klusternod på klusternod A. Välj:

    • ABAP-system: ASCS-instansnummer 00
    • Java-system: SCS-instansnummer 01
    • ABAP+Java-system: ASCS-instansnummer 00 och SCS-instansnummer 01

    Viktigt!

    Tänk på att konfigurationen i azures interna lastbalanseringsregler (om du använder Basic SKU) och de valda SAP-instansnumren måste matcha.

  2. Följ installationsproceduren som beskrivs i SAP. Se till att i startinstallationsalternativet "First Cluster Node" (Första klusternoden) välja "Klusterdelade disk" som konfigurationsalternativ.

Dricks

Installationsdokumentationen för SAP beskriver hur du installerar den första ASCS/SCS-klusternoden.

Ändra SAP-profilen för ASCS/SCS-instansen

Om du har Enqueue Replication Server 1 lägger du till SAP-profilparametern enque/encni/set_so_keepalive enligt beskrivningen nedan. Profilparametern förhindrar att anslutningar mellan SAP-arbetsprocesser och enqueue-servern stängs när de är inaktiva för länge. SAP-parametern krävs inte för ERS2.

  1. Lägg till den här profilparametern i SAP ASCS/SCS-instansprofilen om du använder ERS1.

    enque/encni/set_so_keepalive = true
    

    För både ERS1 och ERS2 kontrollerar du att OS-parametrarna har angetts enligt beskrivningen keepalive i SAP-1410736.

  2. Om du vill tillämpa ändringar i SAP-profilparametern startar du om SAP ASCS/SCS-instansen.

Lägga till en avsökningsport

Använd den interna lastbalanserarens avsökningsfunktion för att få hela klusterkonfigurationen att fungera med Azure Load Balancer. Den interna Azure-lastbalanseraren distribuerar vanligtvis den inkommande arbetsbelastningen lika mellan deltagande virtuella datorer.

Detta fungerar dock inte i vissa klusterkonfigurationer eftersom endast en instans är aktiv. Den andra instansen är passiv och kan inte acceptera någon av arbetsbelastningen. En avsökningsfunktion hjälper till när den interna Azure-lastbalanseraren identifierar vilken instans som är aktiv och endast riktar in sig på den aktiva instansen.

Viktigt!

I den här exempelkonfigurationen är ProbePort inställt på 620Nr. För SAP ASCS-instans med nummer 00 är det 62000. Du måste justera konfigurationen så att den matchar dina SAP-instansnummer och DITT SAP SID.

Om du vill lägga till en avsökningsport kör du den här PowerShell-modulen på någon av de virtuella klusterdatorerna:

  • När det gäller SAP ASC/SCS-instans

    Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000
    
  • Om du använder ERS2, som är klustrad. Du behöver inte konfigurera avsökningsporten för ERS1 eftersom den inte är klustrad.

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

Koden för funktionen Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource skulle se ut så här:

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

Öppna windows-brandväggens avsökningsport

Öppna en Windows-brandväggsavsökningsport på båda klusternoderna. Använd följande skript för att öppna en Windows-brandväggsavsökningsport. Uppdatera PowerShell-variablerna för din miljö.
Om du använder ERS2 måste du också öppna brandväggsporten för ERS2-avsökningsporten.

  $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

Installera databasinstansen

Om du vill installera databasinstansen följer du den process som beskrivs i installationsdokumentationen för SAP.

Installera den andra klusternoden

Om du vill installera det andra klustret följer du stegen som beskrivs i installationsguiden för SAP.

Installera DEN primära SAP-programservern

Installera PAS-instansen <(Primary Application Server) SID-di-0> på den virtuella dator som du har angett som värd för PAS. Det finns inga beroenden i Azure. Om du använder SIOS finns det inga DataKeeper-specifika inställningar.

Installera YTTERLIGARE SAP-programserver

Installera en SAP Additional Application Server (AAS) på alla virtuella datorer som du har angett som värd för en SAP Application Server-instans.

Testa SAP ASCS/SCS-instansens redundans

För de konturerade redundanstesterna antar vi att SAP ASCS är aktivt på nod A.

  1. Kontrollera att SAP-systemet kan redundansväbbla från nod A till nod B Välj något av dessa alternativ för att initiera en redundansväxling av SAP <SID-klustergruppen> från klusternod A till klusternod B:

    • Hanterare av redundanskluster
    • PowerShell för redundanskluster
    $SAPSID = "PR1"     # SAP <SID>
    
    $SAPClusterGroup = "SAP $SAPSID"
    Move-ClusterGroup -Name $SAPClusterGroup
    
    
  2. Starta om klusternoden A i Windows gästoperativsystem. Detta initierar en automatisk redundansväxling av SAP <SID-klustergruppen> från nod A till nod B.

  3. Starta om klusternoden A från Azure Portal. Detta initierar en automatisk redundansväxling av SAP <SID-klustergruppen> från nod A till nod B.

  4. Starta om klusternoden A med hjälp av Azure PowerShell. Detta initierar en automatisk redundansväxling av SAP <SID-klustergruppen> från nod A till nod B.

  5. Verifiering

    • Efter redundans kontrollerar du att SAP <SID-klustergruppen> körs på klusternod B.

      Bild 8: I Klusterhanteraren för växling vid fel körs SAP <SID-klustergruppen> på klusternoden B

      I Klusterhanteraren för växling vid fel körs SAP <SID-klustergruppen> på klusternoden B

    • Efter redundansväxlingen kontrollerar du att den delade disken nu är monterad på klusternoden B.

    • Om du använder SIOS efter redundansväxlingen kontrollerar du att SIOS DataKeeper replikerar data från källvolymenheten S på klusternod B till målvolymenheten S på klusternoden A.

      Bild 9: SIOS DataKeeper replikerar den lokala volymen från klusternod B till klusternod A

      SIOS DataKeeper replikerar den lokala volymen från klusternod B till klusternod A