Setup of SAP Content Server 7.54 with MaxDB in a WSFC environment based on Azure shared disks.
Published May 22 2023 08:00 AM 6,376 Views
Microsoft

Setup of SAP Content Server 7.54 with MaxDB in a WSFC environment based on Azure shared disks

 

This blog shows the setup of an independent SAP Content server running on its own resources represented by a WSFC cluster role. The same applies to the MaxDB server instance. Following best practices, the data and log files are placed on distinct disks. The MaxDB binaries are installed on the OS disk. If you have the policy not to install any additional SAP related binaries on C: you can create a local disk for each node with the same drive letter assigned and install all binaries on this drive. Contrary to older Content Server installations, this installation is cluster aware and installs all relevant files in the right places. No manual adjustments and the moving around of binaries are required. 

Please pay attention to the limitations regarding shared disks which can be found in this article:

Share an Azure managed disk across VMs - Azure Virtual Machines | Microsoft Learn

This installation is supported with Windows Server 2019 and higher.

 

Installation steps

Consult the official SAP documentation and Notes: Installation of SAP Content Server 7.5 and Higher on Windows 
Please pay attention to the chapters 6 – 8 and the referenced SAP Notes in the SAP Installation manual.

 

Create 2 identical VMs running Windows Server 2019 or higher

 

Add at least 3 Azure shared disks:

1 shared disk is used for the Content Server.

2 shared disks are used for the MaxDB data and log files.

SteffenMueller_2-1683125388575.png

Make sure to select the enable shared disk option for each disk you want to share.

 

SteffenMueller_1-1683125201042.png

This is an example for three shared disks. The individual disk size must be chosen according to your sizing.

 

SteffenMueller_3-1683125519897.png
Add the VMs to your Windows AD.

 

Create DNS/host file entries for the clustered Content Server and clustered MaxDB.

SteffenMueller_4-1683125717245.png
Create a virtual host name and IP address for the SAP Content Server and MaxDB cluster roles.

 

Install the WSFC software on both nodes.

 

SteffenMueller_5-1683127814565.png

Install the WSFC feature on each cluster node.

 

Initialize the disks with the Computer Manager or PowerShell

SteffenMueller_6-1683127958273.png

Initialize and format your disks with the Windows Computer Manager.

 

Create the cluster with the cluster wizard.

SteffenMueller_7-1683128085198.png

Create your cluster with the cluster wizard. Starting with Windows Server 2019 a virtual IP address for the cluster is not required any more. The cluster name will be assigned to each cluster node.

SteffenMueller_8-1683128159587.png

After a successful installation, 3 disks should show up under disks. Since a cloud witness is not defined at this point, one of the disks will act as quorum disk. This will change after setting up a storage account and configure it as cloud witness.

 

Create storage account and assign it as cloud witness

SteffenMueller_9-1683128347759.png

A standard storage account is created to act a cloud witness.

SteffenMueller_10-1683128486123.png

SteffenMueller_11-1683128570722.png
The cloud witness is created in the More Actions section of Failover Cluster Manager.

SteffenMueller_12-1683128630736.png

After the cloud witness is created, all disks become Available Storage as shown in the screen above.

Necessary network settings changes

SteffenMueller_0-1683743483448.png

Use PowerShell to change some of the default network parameters.

 

Use SAP SWPM to run First Cluster Node installation.

 

SteffenMueller_13-1683128812043.png
Use SWPM Generic Options - SAP Content Server- High Availability (7.5 and higher) to install the First Cluster Node.

 

SteffenMueller_0-1683129120003.png

Decide where local binaries will be installed. Some customers don't want to install SAP components on the OS disk. In this case you can install a dedicated local drive and install the SAP components there. In this example the OS disk (C:) is used.

 

SteffenMueller_1-1683129452604.png

Provide the virtual hostname as it is defined in your DNS settings.

SteffenMueller_2-1683129589656.png

 

Select the SAP Content Server.

SteffenMueller_3-1683129691869.png

Provide the Content Server instance data.

SteffenMueller_4-1683129761701.png

Provide the basic parameters for the Content Server configuration.

Create an Azure Internal Load Balancer (ILB) with 2 virtual host names and 2 virtual IP addresses

  • The first virtual hostname is used for the Content Server role.
  • The second virtual hostname is used for the MaxDB role.

SteffenMueller_5-1683130728691.png

SteffenMueller_7-1683130807560.png

Definition of the Content Server hostname in the Load Balancer configuration.

SteffenMueller_8-1683130891514.png

Definition of the MaxDB hostname in the Load Balancer configuration.

SteffenMueller_9-1683130956663.png
List of the created virtual hostnames and IP addresses for the ILB.

SteffenMueller_11-1683131064975.png

Definition of the Health Probe port for the Content Server.

SteffenMueller_12-1683131124850.png


Definition of the Health Probe port for the MaxDB SDB server instance.

 

Create the Probe port for the SAP Content Server (Cluster Role SAP <SID>)


Update the probe port for the SAP <SID> role in Windows Server Failover Cluster (WSFC)

SteffenMueller_13-1683131793512.png

 

Actual creation of the Content Server Probe Port. Without this step the Additional Node cannot be installed.

SteffenMueller_14-1683131860448.png

Screenshot after successful Probe Port creation

 

SteffenMueller_15-1683131942863.png

 

SteffenMueller_16-1683131968893.png

Successful creation of the Content Server cluster role.

Use SWPM to install the Second Cluster Node

 

This step must be executed on the additional cluster node. Leave the already created cluster roles untouched. SWPM performs all necessary steps (move cluster group etc.) to create the additional cluster node.

SteffenMueller_17-1683132093842.png
Use SWPM Generic Options - SAP Content Server- High Availabilty (7.5 and higher) to install the Additional Cluster Node.


SteffenMueller_19-1683132518943.png

 

On the Additional Node the local installation disk is also the C: drive. This is the main step for installing the Additional Cluster Node. 

 

Use SWPM to install the First MaxDB Cluster Node

This step must be executed on the first cluster node.

SteffenMueller_20-1683132623640.png

Use SWPM Generic Options - SAP Content Server- High Availability (Legacy) to install the
First MSCS Node.

SteffenMueller_21-1683132690887.png
Provide the DB SID (SDB) and the virtual hostname.

 

SteffenMueller_23-1683132740241.png
Provide the passwords for the MaxDB admin users superdba and control.

 

SteffenMueller_24-1683132771822.png
Provide the schema user and password for the Content Server.

 

SteffenMueller_25-1683132800099.png
Provide the basic parameters for MaxDB

SteffenMueller_26-1683132831044.png
Choose the location of the MaxDB Log Volumes.

SteffenMueller_27-1683132859885.png
Choose the location of the MaxDB Data Volumes.


SteffenMueller_28-1683132880025.png

Choose the number and size of the MaxDB Log Files.
SteffenMueller_29-1683132910005.png

Choose the number and size of the MaxDB Data Files.

 

Create the Probe Port for SAP MaxDB (Cluster Role MaxDB)

Use the following PowerShell script to perform this task.

 

 

 

$ProbePort = 62300   # ProbePort of the Azure internal load balancer

Clear-Host

$SAPClusterRoleName = "MaxDB"

$SAPIPresourceName = "MaxDB IP-Address"

$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-Host "Current configuration parameters for SAP IP cluster resource '$SAPIPresourceName' are:" -ForegroundColor Cyan

Get-ClusterResource -Name $SAPIPresourceName | Get-ClusterParameter

Write-Host

Write-Host "Current probe port property of the SAP cluster resource '$SAPIPresourceName' is '$OldProbePort'." -ForegroundColor Cyan

Write-Host

Write-Host "Setting the new probe port property of the SAP cluster resource '$SAPIPresourceName' to '$ProbePort' ..." -ForegroundColor Cyan

Write-Host

$var | Set-ClusterParameter -Multiple @{"Address"=$IPAddress;"ProbePort"=$ProbePort;"Subnetmask"=$SubnetMask;"Network"=$NetworkName;"OverrideAddressMatch"=$OverrideAddressMatch;"EnableDhcp"=$EnableDhcp}

Write-Host

$ActivateChanges = Read-Host "Do you want to take restart SAP cluster role '$SAPClusterRoleName', to activate the changes (yes/no)?"

if($ActivateChanges -eq "yes"){

Write-Host

Write-Host "Activating changes..." -ForegroundColor Cyan

Write-Host

write-host "Taking SAP cluster IP resource '$SAPIPresourceName' offline ..." -ForegroundColor Cyan

Stop-ClusterResource -Name $SAPIPresourceName

sleep 5

Write-Host "Starting SAP cluster role '$SAPClusterRoleName' ..." -ForegroundColor Cyan

Start-ClusterGroup -Name $SAPClusterRoleName

Write-Host "New ProbePort parameter is active." -ForegroundColor Green

Write-Host

Write-Host "New configuration parameters for SAP IP cluster resource '$SAPIPresourceName':" -ForegroundColor Cyan

Write-Host

Get-ClusterResource -Name $SAPIPresourceName | Get-ClusterParameter

}else

{

Write-Host "Changes are not activated."

}

 

 

 

SteffenMueller_30-1683132949586.png
Output of the successful MaxDB Probe Port creation.

 

Use SWPM to install the Second  MaxDB Cluster Node

This step must be executed on the additional cluster node. Leave already created cluster roles untouched. SWPM performs all necessary steps (move cluster group etc.) to create the additional cluster node.

SteffenMueller_31-1683133074983.png
Use SWPM Generic Options - SAP Content Server- High Availability (Legacy) to install the
Additional MSCS Node.

 

SteffenMueller_32-1683133113106.png

Provide the same settings you put in for the First Cluster Node

 

SteffenMueller_0-1683144908507.png

Since the MaxDB Software is installed locally, the passwords for user superdba and control need to be supplied again.

SteffenMueller_1-1683145023778.png

This screen shows the admin console of the Content Server.



SteffenMueller_2-1683145070998.png
SteffenMueller_3-1683145087784.png

The 2 previous screens show the disk assignment to the 2 cluster roles and the cluster roles themselves. For performance reasons, it is advisable to run the 2 cluster roles on the same node. This can be enforced by creating a dependency between the SAP Content Server and the MaxDB SDB instance.

 

Setup the Content Server in the connected SAP ERP or S/4 system

SteffenMueller_4-1683145174086.png

This is a screenshot of transaction OAC0 with the connected SAP ERP6 system. With this transaction a content repository can be created. Pushing the CS Admin button leads to the following screen where the connection between the Content Server and the MaxDB is established.

SteffenMueller_5-1683145275892.png

This screen shows the Repository Settings. In the top you can see under HTTP server the virtual host name cs9content for the Content Server. Under ContentStorageName the name SDB of the MaxDB instance is supplied. Under ContentStorageHost the virtual host name cs9db of the MaxDB cluster role is supplied. The parameter StorageDriver needs to be set to SAPDBStorage. Finally, the parameter CurrentStorageDriver needs to be set to SAP MaxDB SDB (Unicode). This establishes the connection from the Content Server to the MaxDB SDB instance.

 

Co-Authors
Version history
Last update:
‎May 19 2023 12:24 PM
Updated by: