你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure 上的 Windows Server 故障转移群集和共享磁盘实现 SAP ASCS/SCS 实例多 SID 高可用性

Windows OS Windows

在 SAP 部署中,必须使用内部负载均衡器为 SAP 中心服务 (ASCS/SCS) 实例创建 Windows 群集配置。

本文重点介绍如何通过使用 SIOS 来模拟共享磁盘,在具有共享磁盘的现有 Windows Server 故障转移群集 (WSFC) 群集中安装附加的 SAP ASCS/SCS 群集实例,从单一 ASCS/SCS 安装转移到 SAP 多 SID 配置。 完成此过程后,即已配置 SAP 多 SID 群集。

注意

此功能仅在 Azure 资源管理器部署模型中可用。

每个 Azure 内部负载均衡器的专用前端 IP 数有限制。

一个 WSFC 群集中的最大 SAP ASCS/SCS 实例数等于每个 Azure 内部负载均衡器的最大专用前端 IP 数。

若要详细了解负载均衡器限制,请参阅网络限制:Azure 资源管理器中的“每个负载均衡器的专用前端 IP”部分。

重要

负载均衡方案中的 NIC 辅助 IP 配置不支持浮动 IP。 有关详细信息,请参阅 Azure 负载均衡器限制。 如果你需要为 VM 提供其他 IP 地址,请部署第二个 NIC。

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

先决条件

已配置 WSFC 群集,通过文件共享用于一个 SAP ASCS/SCS 实例,如下图所示

High-availability SAP ASCS/SCS instance

重要

该设置必须满足以下条件:

  • SAP ASCS/SCS 实例必须共享同一个 WSFC 群集。
  • 每个数据库管理系统 (DBMS) SID 都必须有自己专用的 WSFC 群集。
  • 属于一个 SAP 系统 SID 的 SAP 应用程序服务器必须有自身的专用 VM。
  • 不支持在同一个群集中混合使用排队复制服务器 1 和排队复制服务器 2。

包含共享磁盘的 SAP ASCS/SCS 多 SID 体系结构

目标是在同一个 WSFC 群集中安装多个 SAP ABAP ASCS 或 SAP Java SCS 群集实例,如下图所示:

Multiple SAP ASCS/SCS clustered instances in Azure

若要详细了解负载均衡器限制,请参阅网络限制:Azure 资源管理器中的“每个负载均衡器的专用前端 IP”部分。

包含两个高可用性 SAP 系统的完整布局如下所示:

SAP high-availability multi-SID setup with two SAP system SIDs

为 SAP 多 SID 方案准备基础结构

若要准备基础结构,可以使用以下参数安装附加的 SAP ASCS/SCS 实例:

参数名称
SAP ASCS/SCS SID pr1-lb-ascs
SAP DBMS 内部负载均衡器 PR5
SAP 虚拟主机名 pr5-sap-cl
SAP ASCS/SCS 虚拟主机 IP 地址(附加的 Azure 负载均衡器IP 地址) 10.0.0.50
SAP ASCS/SCS 实例编号 50
附加 SAP ASCS/SCS 实例的 ILB 探测端口 62350

注意

对于 SAP ASCS/SCS 群集实例,每个 IP 地址需要唯一的探测端口。 例如,如果 Azure 内部负载均衡器上有一个 IP 地址使用探测端口 62300,该负载均衡器上的其他任何 IP 地址就不能使用探测端口 62300。

在本例中,由于探测端口 62300 已被保留,因此我们将使用探测端口 62350。

可在现有的 WSFC 群集中安装包含两个节点的附加 SAP ASCS/SCS 实例:

虚拟机角色 虚拟机主机名 静态 IP 地址
ASCS/SCS 实例的第一个群集节点 pr1-ascs-0 10.0.0.10
ASCS/SCS 实例的第二个群集节点 pr1-ascs-1 10.0.0.9

在 DNS 服务器上创建 SAP ASCS/SCS 群集实例的虚拟主机名

可以使用以下参数创建 ASCS/SCS 实例虚拟主机名的 DNS 项:

新的 SAP ASCS/SCS 虚拟主机名 关联的 IP 地址
pr5-sap-cl 10.0.0.50

新主机名和 IP 地址显示在 DNS 管理器中,如以下屏幕截图所示:

DNS Manager list highlighting the defined DNS entry for the new SAP ASCS/SCS cluster virtual name and TCP/IP address

注意

分配给附加 ASCS/SCS 实例虚拟主机名的新 IP 地址必须与分配给 SAP Azure 负载均衡器的新 IP 地址相同。

在本例中,该 IP 地址为 10.0.0.50。

使用 PowerShell 将 IP 地址添加到现有 Azure 内部负载均衡器

要在同一个 WSFC 群集中创建多个 SAP ASCS/SCS 实例,请使用 PowerShell 将 IP 地址添加到现有的 Azure 内部负载均衡器。 每个 IP 地址需有自身的负载均衡规则、探测端口、前端 IP 池和后端池。

以下脚本将新的 IP 地址添加到现有负载均衡器。 更新环境的 PowerShell 变量。 该脚本为所有 SAP ASCS/SCS 端口创建全部所需的负载均衡规则。


# Select-AzSubscription -SubscriptionId <xxxxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx>
Clear-Host
$ResourceGroupName = "SAP-MULTI-SID-Landscape"      # Existing resource group name
$VNetName = "pr2-vnet"                        # Existing virtual network name
$SubnetName = "Subnet"                        # Existing subnet name
$ILBName = "pr2-lb-ascs"                      # Existing ILB name                      
$ILBIP = "10.0.0.50"                          # New IP address
$VMNames = "pr2-ascs-0","pr2-ascs-1"          # Existing cluster virtual machine names
$SAPInstanceNumber = 50                       # SAP ASCS/SCS instance number: must be a unique value for each cluster
[int]$ProbePort = "623$SAPInstanceNumber"     # Probe port: must be a unique value for each IP and load balancer

$ILB = Get-AzLoadBalancer -Name $ILBName -ResourceGroupName $ResourceGroupName

$count = $ILB.FrontendIpConfigurations.Count + 1
$FrontEndConfigurationName ="lbFrontendASCS$count"
$LBProbeName = "lbProbeASCS$count"

# Get the Azure virtual network and subnet
$VNet = Get-AzVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName
$Subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $VNet -Name $SubnetName

# Add a second front-end and probe configuration
Write-Host "Adding new front end IP Pool '$FrontEndConfigurationName' ..." -ForegroundColor Green
$ILB | Add-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -PrivateIpAddress $ILBIP -SubnetId $Subnet.Id
$ILB | Add-AzLoadBalancerProbeConfig -Name $LBProbeName  -Protocol Tcp -Port $Probeport -ProbeCount 2 -IntervalInSeconds 10  | Set-AzLoadBalancer

# Get a new updated configuration
$ILB = Get-AzLoadBalancer -Name $ILBname -ResourceGroupName $ResourceGroupName

# Get an updated LP FrontendIpConfig
$FEConfig = Get-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -LoadBalancer $ILB
$HealthProbe  = Get-AzLoadBalancerProbeConfig -Name $LBProbeName -LoadBalancer $ILB

# Add a back-end configuration into an existing ILB
$BackEndConfigurationName  = "backendPoolASCS$count"
Write-Host "Adding new backend Pool '$BackEndConfigurationName' ..." -ForegroundColor Green
$BEConfig = Add-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName -LoadBalancer $ILB | Set-AzLoadBalancer

# Get an updated config
$ILB = Get-AzLoadBalancer -Name $ILBname -ResourceGroupName $ResourceGroupName

# Assign VM NICs to the back-end pool
$BEPool = Get-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName -LoadBalancer $ILB
foreach($VMName in $VMNames){
        $VM = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $VMName
        $NICName = ($VM.NetworkInterfaceIDs[0].Split('/') | select -last 1)        
        $NIC = Get-AzNetworkInterface -name $NICName -ResourceGroupName $ResourceGroupName                
        $NIC.IpConfigurations[0].LoadBalancerBackendAddressPools += $BEPool
        Write-Host "Assigning network card '$NICName' of the '$VMName' VM to the backend pool '$BackEndConfigurationName' ..." -ForegroundColor Green
        Set-AzNetworkInterface -NetworkInterface $NIC
        #start-AzVM -ResourceGroupName $ResourceGroupName -Name $VM.Name
}


# Create load-balancing rules
$Ports = "445","32$SAPInstanceNumber","33$SAPInstanceNumber","36$SAPInstanceNumber","39$SAPInstanceNumber","5985","81$SAPInstanceNumber","5$SAPInstanceNumber`13","5$SAPInstanceNumber`14","5$SAPInstanceNumber`16"
$ILB = Get-AzLoadBalancer -Name $ILBname -ResourceGroupName $ResourceGroupName
$FEConfig = get-AzLoadBalancerFrontendIpConfig -Name $FrontEndConfigurationName -LoadBalancer $ILB
$BEConfig = Get-AzLoadBalancerBackendAddressPoolConfig -Name $BackEndConfigurationName -LoadBalancer $ILB
$HealthProbe  = Get-AzLoadBalancerProbeConfig -Name $LBProbeName -LoadBalancer $ILB

Write-Host "Creating load balancing rules for the ports: '$Ports' ... " -ForegroundColor Green

foreach ($Port in $Ports) {

        $LBConfigrulename = "lbrule$Port" + "_$count"
        Write-Host "Creating load balancing rule '$LBConfigrulename' for the port '$Port' ..." -ForegroundColor Green

        $ILB | Add-AzLoadBalancerRuleConfig -Name $LBConfigRuleName -FrontendIpConfiguration $FEConfig  -BackendAddressPool $BEConfig -Probe $HealthProbe -Protocol tcp -FrontendPort  $Port -BackendPort $Port -IdleTimeoutInMinutes 30 -LoadDistribution Default -EnableFloatingIP   
}

$ILB | Set-AzLoadBalancer

Write-Host "Successfully added new IP '$ILBIP' to the internal load balancer '$ILBName'!" -ForegroundColor Green

运行脚本后,结果会显示在 Azure 门户中,如以下屏幕截图所示:

New front-end IP pool in the Azure portal

将磁盘添加到群集计算机并配置 SIOS 群集共享磁盘

必须为每个附加的 SAP ASCS/SCS 实例添加一个新的群集共享磁盘。 在 Windows Server 2012 R2 中,目前使用的 WSFC 群集共享磁盘是 SIOS DataKeeper 软件解决方案。

请执行以下操作:

  1. 将一个或多个相同大小的附加磁盘(需要条带化)添加到每个群集节点,然后将其格式化。
  2. 使用 SIOS DataKeeper 配置存储复制。

此过程假设已在 WSFC 群集计算机上安装 SIOS DataKeeper。 如果已安装,现在必须配置计算机之间的复制。 为 SAP ASCS/SCS 群集共享磁盘安装 SIOS DataKeeper Cluster Edition 中详细介绍了此过程。

DataKeeper synchronous mirroring for the new SAP ASCS/SCS share disk

为 SAP 应用程序服务器和 DBMS 群集部署 VM

若要完成第二个 SAP 系统的基础结构准备,请执行以下操作:

  1. 为 SAP 应用程序服务器部署专用 VM,并将每个 VM 放在其自身的专用可用性组中。
  2. 为 DBMS 群集部署专用 VM,并将每个 VM 放在其自身的专用可用性组中。

安装 SAP NetWeaver 多 SID 系统

有关安装第二个 SAP SID2 系统的完整过程的描述,请参阅针对 SAP ASCS/SCS 实例使用 Windows 故障转移群集和共享磁盘的 SAP NetWeaver HA 安装

概要过程如下所述:

  1. 使用高可用性 ASCS/SCS 实例安装 SAP
    此步骤在现有 WSFC 群集节点 1 上安装包含高可用性 ASCS/SCS 实例的 SAP 系统。

  2. 修改 ASCS/SCS 实例的 SAP 配置文件

  3. 配置探测端口
    此步骤使用 PowerShell 配置 SAP 群集资源 SAP-SID2-IP 探测端口。 应在其中一个 SAP ASCS/SCS 群集节点上执行此配置。

  4. 安装数据库实例。
    若要安装第二个群集,请按照 SAP 安装指南中的步骤操作。

  5. 安装第二个群集节点。
    此步骤在现有 WSFC 群集节点 2 上安装包含高可用性 ASCS/SCS 实例的 SAP 系统。 若要安装第二个群集,请按照 SAP 安装指南中的步骤操作。

  6. 打开 SAP ASCS/SCS 实例的 Windows 防火墙端口和探测端口。
    在用于 SAP ASCS/SCS 实例的两个群集节点上,打开 SAP ASCS/SCS 使用的所有 Windows 防火墙端口。 SAP ASCS / SCS 端口一章中列出了这些 SAP ASCS/SCS 实例端口。

    有关所有其他 SAP 端口的列表,请参阅所有 SAP 产品的 TCP/IP 端口

    此外,打开 Azure 内部负载均衡器探测端口,在本例中为 62350。 本文对此进行了描述。

  7. 在新的专用 VM 上安装 SAP 主应用程序服务器,如 SAP 安装指南中所述。

  8. 在新的专用 VM 上安装 SAP 附加应用程序服务器,如 SAP 安装指南中所述。

  9. 测试 SAP ASCS/SCS 实例故障转移和 SIOS 复制

后续步骤