你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure 上的 Windows Server 故障转移群集和共享磁盘实现 SAP ASCS/SCS 实例多 SID 高可用性
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”部分。
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
先决条件
已配置 WSFC 群集,通过文件共享用于一个 SAP ASCS/SCS 实例,如下图所示。
重要
该设置必须满足以下条件:
- SAP ASCS/SCS 实例必须共享同一个 WSFC 群集。
- 每个数据库管理系统 (DBMS) SID 都必须有自己专用的 WSFC 群集。
- 属于一个 SAP 系统 SID 的 SAP 应用程序服务器必须有自身的专用 VM。
- 不支持在同一个群集中混合使用排队复制服务器 1 和排队复制服务器 2。
包含共享磁盘的 SAP ASCS/SCS 多 SID 体系结构
目标是在同一个 WSFC 群集中安装多个 SAP ABAP ASCS 或 SAP Java SCS 群集实例,如下图所示:
若要详细了解负载均衡器限制,请参阅网络限制:Azure 资源管理器中的“每个负载均衡器的专用前端 IP”部分。
包含两个高可用性 SAP 系统的完整布局如下所示:
为 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 管理器中,如以下屏幕截图所示:
注意
分配给附加 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 门户中,如以下屏幕截图所示:
将磁盘添加到群集计算机并配置 SIOS 群集共享磁盘
必须为每个附加的 SAP ASCS/SCS 实例添加一个新的群集共享磁盘。 在 Windows Server 2012 R2 中,目前使用的 WSFC 群集共享磁盘是 SIOS DataKeeper 软件解决方案。
请执行以下操作:
- 将一个或多个相同大小的附加磁盘(需要条带化)添加到每个群集节点,然后将其格式化。
- 使用 SIOS DataKeeper 配置存储复制。
此过程假设已在 WSFC 群集计算机上安装 SIOS DataKeeper。 如果已安装,现在必须配置计算机之间的复制。 为 SAP ASCS/SCS 群集共享磁盘安装 SIOS DataKeeper Cluster Edition 中详细介绍了此过程。
为 SAP 应用程序服务器和 DBMS 群集部署 VM
若要完成第二个 SAP 系统的基础结构准备,请执行以下操作:
- 为 SAP 应用程序服务器部署专用 VM,并将每个 VM 放在其自身的专用可用性组中。
- 为 DBMS 群集部署专用 VM,并将每个 VM 放在其自身的专用可用性组中。
安装 SAP NetWeaver 多 SID 系统
有关安装第二个 SAP SID2 系统的完整过程的描述,请参阅针对 SAP ASCS/SCS 实例使用 Windows 故障转移群集和共享磁盘的 SAP NetWeaver HA 安装。
概要过程如下所述:
使用高可用性 ASCS/SCS 实例安装 SAP。
此步骤在现有 WSFC 群集节点 1 上安装包含高可用性 ASCS/SCS 实例的 SAP 系统。配置探测端口。
此步骤使用 PowerShell 配置 SAP 群集资源 SAP-SID2-IP 探测端口。 应在其中一个 SAP ASCS/SCS 群集节点上执行此配置。安装数据库实例。
若要安装第二个群集,请按照 SAP 安装指南中的步骤操作。安装第二个群集节点。
此步骤在现有 WSFC 群集节点 2 上安装包含高可用性 ASCS/SCS 实例的 SAP 系统。 若要安装第二个群集,请按照 SAP 安装指南中的步骤操作。打开 SAP ASCS/SCS 实例的 Windows 防火墙端口和探测端口。
在用于 SAP ASCS/SCS 实例的两个群集节点上,打开 SAP ASCS/SCS 使用的所有 Windows 防火墙端口。 SAP ASCS / SCS 端口一章中列出了这些 SAP ASCS/SCS 实例端口。有关所有其他 SAP 端口的列表,请参阅所有 SAP 产品的 TCP/IP 端口。
此外,打开 Azure 内部负载均衡器探测端口,在本例中为 62350。 本文对此进行了描述。
在新的专用 VM 上安装 SAP 主应用程序服务器,如 SAP 安装指南中所述。
在新的专用 VM 上安装 SAP 附加应用程序服务器,如 SAP 安装指南中所述。