Partager via


Installer la haute disponibilité SAP NetWeaver sur un cluster de basculement Windows et un disque partagé pour une instance SAP ASCS/SCS dans Azure

Cet article explique comment installer et configurer un système SAP à haute disponibilité dans Azure à l’aide d’un cluster de basculement Windows Server et d’un disque partagé de cluster pour le clustering d’une instance SAP ASCS/SCS. Comme décrit dans Guide d’architecture : Clustering d’une instance SAP ASCS/SCS sur un cluster de basculement Windows à l’aide d’un disque partagé de cluster, il existe deux possibilités pour un disque partagé de cluster :

Prérequis

Avant de commencer l’installation, consultez ces documents :

Nous ne décrivons pas l’installation du système SGBD dans cet article, car celle-ci varie en fonction du système utilisé. Nous partons du principe que la haute disponibilité du SGBD est assurée par les fonctionnalités prises en charge par les différents fournisseurs de SGBD pour Azure, par exemple Always On ou la mise en miroir de base de données pour SQL Server, et Oracle Data Guard pour les bases de données Oracle. Les scénarios de haute disponibilité pour le SGBD ne sont pas abordés dans cet article.

Il n’existe pas de considérations particulières lorsque différents services de SGBD interagissent avec une configuration SAP ASCS ou SCS en cluster dans Azure.

Notes

Les procédures d’installation de systèmes SAP NetWeaver ABAP, Java et ABAP+Java sont presque identiques. La différence la plus notable est qu’un système SAP ABAP comprend une instance ASCS, le système SAP Java une instance SCS, et le système SAP ABAP+Java une instance ASCS et une instance SCS exécutées dans le même groupe de cluster de basculement Microsoft. Toute différence d’installation pour chaque pile d’installation de SAP NetWeaver est mentionnée explicitement. Vous pouvez considérer que les autres étapes sont identiques.

Installer SAP avec une instance ASCS/SCS à haute disponibilité

Important

Si vous utilisez SIOS pour présenter un disque partagé, ne placez pas votre fichier d’échange sur les volumes mis en miroir SIOS DataKeeper. Vous pouvez laisser votre fichier d’échange sur le lecteur temporaire D d’une machine virtuelle (valeur par défaut). S’il ne s’y trouve pas déjà, déplacez le fichier d’échange Windows sur le lecteur D de votre machine virtuelle Azure.

L’installation de SAP avec une instance ASCS/SCS à haute disponibilité implique les tâches suivantes :

  • Créer un nom d’hôte virtuel pour l’instance SAP ASCS/SCS en cluster.
  • Installer SAP sur le premier nœud de cluster.
  • Modifier le profil SAP de l’instance ASCS/SCS.
  • Ajouter un port de sondage.
  • Ouvrir le port de sondage du Pare-feu Windows.

Créer un nom d’hôte virtuel pour l’instance SAP ASCS/SCS en cluster

  1. Dans le Gestionnaire DNS Windows, créez une entrée DNS pour le nom d’hôte virtuel de l’instance ASC/SCS.

    Important

    L’adresse IP que vous affectez au nom d’hôte virtuel de l’instance ASC/SCS doit être identique à celle que vous avez affectée à Azure Load Balancer.

    Figure 1 : Définir l’entrée DNS pour le nom virtuel et l’adresse TCP/IP du cluster SAP ASCS/SCS

    Définir l’entrée DNS pour le nom virtuel et l’adresse TCP/IP du cluster SAP ASCS/SCS

  2. Si vous utilisez le nouveau serveur SAP Enqueue Replication Server 2, qui est également une instance en cluster, vous devez aussi réserver dans le DNS un nom d’hôte virtuel pour ERS2.

    Important

    L’adresse IP que vous affectez au nom d’hôte virtuel de l’instance ERS2 doit être la deuxième adresse IP que vous avez affectée à Azure Load Balancer.

    Figure 1A : Définir l’entrée DNS pour le nom virtuel et l’adresse TCP/IP du cluster SAP ASCS/SCS

    Définir l’entrée DNS pour le nom virtuel et l’adresse TCP/IP du cluster SAP ERS2

  3. Pour définir l’adresse IP affectée au nom d’hôte virtuel, sélectionnez Gestionnaire DNS>Domaine.

    Figure 2 : Nouveau nom virtuel et nouvelle adresse TCP/IP de la configuration du cluster SAP ASCS/SCS

    Nouveau nom virtuel et nouvelle adresse TCP/IP de la configuration du cluster SAP ASCS/SCS

Installer le premier nœud de cluster SAP

  1. Exécutez l’option du premier nœud de cluster sur le nœud A. Sélectionnez :

    • Système ABAP : Numéro d’instance ASCS00
    • Système Java : Numéro d’instance SCS01
    • Système ABAP+Java : Numéro d’instance ASCS00 et numéro d’instance SCS01

    Important

    N’oubliez pas que la configuration dans les règles d’équilibrage de charge de l’équilibreur de charge interne Azure (si vous utilisez la référence SKU De base) et les numéros d’instance SAP sélectionnés doivent correspondre.

  2. Suivez la procédure d'installation décrite par SAP. Dans l’option de démarrage de l’installation « Premier nœud de cluster », veillez à choisir « Disque partagé de cluster » comme option de configuration.

Conseil

La documentation d’installation de SAP explique comment installer le premier nœud de cluster ASC/SCS.

Modifier le profil SAP de l'instance ASCS/SCS

Si vous avez Enqueue Replication Server 1, ajoutez le paramètre de profil SAP enque/encni/set_so_keepalive, comme décrit ci-dessous. Le paramètre de profil empêche les connexions entre les processus de travail SAP et le serveur de mise en file d’attente de se fermer quand elles sont inactives pendant trop longtemps. Le paramètre SAP n’est pas nécessaire pour ERS2.

  1. Si vous utilisez ERS1, ajoutez ce paramètre de profil au profil de l’instance SAP ASCS/SCS.

    enque/encni/set_so_keepalive = TRUE
    

    Pour ERS1 et ERS2, assurez-vous que les paramètres de système d’exploitation keepalive sont définis comme décrit dans la note SAP 1410736.

  2. Pour appliquer les changements de paramètres du profil SAP, redémarrez l'instance SAP ASCS/SCS.

Ajouter un port de sonde

Utilisez la fonctionnalité de sondage de l’équilibrage de charge interne pour que la configuration de cluster entière fonctionne avec Azure Load Balancer. Généralement, l’équilibrage de charge interne Azure répartit équitablement la charge de travail entrante entre les machines virtuelles participantes.

Toutefois, cela ne fonctionne pas dans certaines configurations de cluster, car une seule instance est active. L’autre instance est passive et ne peut accepter aucune partie de la charge de travail. La fonctionnalité de sondage est utile quand l’équilibreur de charge interne Azure détecte quelle instance est active, et ne cible que l’instance active.

Important

Dans cet exemple de configuration, le paramètre ProbePort est défini sur 620Nr. Pour l’instance SAP ASCS portant le numéro 00, il est défini sur 62000. Vous devrez ajuster la configuration pour qu’elle corresponde à vos numéros d’instance SAP et à votre SID SAP.

Pour ajouter un port de sonde, exécutez ce module PowerShell sur l’une des machines virtuelles du cluster :

  • Pour l’instance SAP ASC/SCS

    Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000
    
  • Si vous utilisez ERS2, qui est en cluster. Il n’est pas nécessaire de configurer le port de sonde pour ERS1, car il n’est pas en cluster.

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

Le code de la fonction Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource peut être semblable au suivant :

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

Ouvrir le port de sondage du pare-feu Windows

Ouvrez un port de sondage du pare-feu Windows sur les deux nœuds de cluster. Utilisez le script suivant pour ouvrir un port de sondage du pare-feu Windows. Mettez à jour les variables PowerShell de votre environnement.
Si vous utilisez ERS2, vous devrez également ouvrir le port du pare-feu pour le port de sonde 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

Installer l’instance de base de données

Pour installer l’instance de base de données, suivez la procédure décrite dans la documentation d’installation de SAP.

Installer le deuxième nœud de cluster

Pour installer le deuxième cluster, suivez les étapes décrites dans le guide d’installation de SAP.

Installer le serveur d’applications principal SAP

Installez l’instance de serveur d’application principal (PAS) <SID>-di-0 sur la machine virtuelle désignée pour héberger le PAS. Il n’y a aucune dépendance vis-à-vis d’Azure. Si vous utilisez SIOS, il n’y a aucun paramètre propre à DataKeeper.

Installer le serveur d’applications supplémentaire SAP

Installez un serveur d’applications supplémentaire SAP (AAS) sur toutes les machines virtuelles désignées pour héberger une instance de serveur d’applications SAP.

Testez le basculement de l’instance SAP ASCS/SCS

Pour les tests de basculement décrits, nous supposons que SAP ASCS est actif sur le nœud A.

  1. Vérifiez que le système SAP peut effectuer un basculement du nœud A vers le nœud B. Choisissez l’une des options suivantes pour lancer un basculement du groupe de clusters <SID> SAP du nœud de cluster A vers le nœud de cluster B :

    • Gestionnaire du cluster de basculement
    • Applet de commande PowerShell de cluster de basculement
    $SAPSID = "PR1"     # SAP <SID>
    
    $SAPClusterGroup = "SAP $SAPSID"
    Move-ClusterGroup -Name $SAPClusterGroup
    
    
  2. Redémarrez le nœud de cluster A dans le système d’exploitation invité Windows. Cela lance le basculement automatique du groupe de clusters SAP <SID> du nœud A vers le nœud B.

  3. Redémarrez le nœud de cluster A à partir du portail Azure. Cela lance le basculement automatique du groupe de clusters SAP <SID> du nœud A vers le nœud B.

  4. Redémarrez le nœud de cluster A à l’aide d’Azure PowerShell. Cela lance le basculement automatique du groupe de clusters SAP <SID> du nœud A vers le nœud B.

  5. Vérification

    • Après le basculement, vérifiez que le groupe de cluster <SID> SAP s’exécute sur le nœud de cluster B.

      Figure 8 : Dans le Gestionnaire du cluster de basculement, le groupe de cluster SAP <SID> s’exécute sur le nœud de cluster B

      Dans le Gestionnaire du cluster de basculement, le groupe de clusters <SID> SAP s’exécute sur le nœud de cluster B

    • Après le basculement, vérifiez que le disque partagé est maintenant monté sur le nœud de cluster B.

    • Après le basculement, si vous utilisez SIOS, vérifiez que SIOS DataKeeper réplique les données à partir du lecteur du volume source S sur le nœud de cluster B vers le lecteur du volume cible S sur le nœud de cluster A.

      Figure 9 : SIOS DataKeeper réplique le volume local du nœud de cluster B sur le nœud de cluster A

      SIOS DataKeeper réplique le volume local du nœud de cluster B sur le nœud de cluster A