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

针对 SAP ASCS/SCS 使用 Windows 故障转移群集和共享磁盘准备 SAP HA 的 Azure 基础结构

Windows OS Windows

本文介绍使用群集共享磁盘作为群集化 SAP ASCS 实例的选项,在 Windows 故障转移群集上安装和配置高可用性 SAP ASCS/SCS 实例之前准备 Azure 基础结构所要执行的步骤。 文档中提供了两种群集共享磁盘备选方案:

本文档没有涵盖数据库层。

先决条件

开始安装之前,请查看本文:

创建 ASCS VM

对于 SAP ASCS/SCS 群集,根据部署的类型在 Azure 可用性集或 Azure 可用性区域中部署两个 VM。 在部署 VM 后,请执行以下操作:

  • 为 SAP ASCS/SCS 实例创建 Azure 内部负载均衡器。
  • 将 Windows VM 添加到 AD 域。

根据部署类型,方案的主机名和 IP 地址如下所示:

Azure 可用性集中的 SAP 部署

主机名角色 主机名 静态 IP 地址 可用性集 磁盘 SkuName
第一个群集节点 ASCS/SCS 群集 pr1-ascs-10 10.0.0.4 pr1-ascs-avset Premium_LRS
第二个群集节点 ASCS/SCS 群集 pr1-ascs-11 10.0.0.5 pr1-ascs-avset
群集网络名称 pr1clust 10.0.0.42(仅适用于 Win 2016 群集) 不适用
ASCS 群集网络名称 pr1-ascscl 10.0.0.43 不适用
ERS 群集网络名称(仅适用于 ERS2) pr1-erscl 10.0.0.44 不适用

Azure 可用性区域中的 SAP 部署

主机名角色 主机名 静态 IP 地址 可用性区域 磁盘 SkuName
第一个群集节点 ASCS/SCS 群集 pr1-ascs-10 10.0.0.4 AZ01 Premium_ZRS
第二个群集节点 ASCS/SCS 群集 pr1-ascs-11 10.0.0.5 AZ02
群集网络名称 pr1clust 10.0.0.42(仅适用于 Win 2016 群集) 不适用
ASCS 群集网络名称 pr1-ascscl 10.0.0.43 不适用
ERS 群集网络名称(仅适用于 ERS2) pr1-erscl 10.0.0.44 不适用

本文档中所述的步骤对于这两种部署类型是相同的。 但如果群集在可用性集中运行,则需部署 Azure 高级共享磁盘的 LRS (Premium_LRS);如果群集在可用性区域中运行,则需部署 Azure 高级共享磁盘的 ZRS (Premium_ZRS)。

注意

Azure 共享磁盘不需要 Azure 邻近放置组。 但对于使用 PPG 进行 SAP 部署,请遵循以下准则:

  • 如果要将 PPG 用于在某个区域部署的 SAP 系统,那么共享磁盘的所有虚拟机必须属于同一个 PPG。
  • 如果要将 PPG 用于跨区域部署的 SAP 系统,如文档“具有区域部署的临近放置组”所述,则可以将 Premium_ZRS 存储附加到共享磁盘的虚拟机。

创建 Azure 内部负载均衡器

在 VM 配置期间,可以在网络部分创建或选择退出的负载均衡器。 对于 Windows 上的 ENSA1 体系结构,只需要 SAP ASCS/SCS 的一个虚拟 IP 地址。 另一方面,ENSA2 体系结构需要两个虚拟 IP 地址-一个用于 SAP ASCS/SCS,另一个用于 ERS2。 在 Windows 上为 SAP ASCS/SCS 的 HA 设置配置 标准内部负载均衡器 时,请遵循以下准则。

  1. 前端 IP 配置: 创建前端 IP(例如:10.0.0.43)。 选择与 ASCS/ERS 虚拟机相同的虚拟网络和子网。
  2. 后端池: 创建后端池并添加 ASCS 和 ERS VM。 在此示例中,VM 是 pr1-ascs-10 和 pr1-ascs-11。
  3. 入站规则: 创建负载均衡规则。
    • 前端 IP 地址:选择前端 IP
    • 后端池:选择后端池
    • 检查“高可用性端口”
    • 协议:TCP
    • 运行状况探测:使用以下详细信息创建运行状况探测
      • 协议:TCP
      • 端口:[例如:620<实例-否。> 对于 ASCS]
      • 间隔:5
      • 探测阈值:2
    • 空闲超时(分钟):30
    • 选中“启用浮动 IP”
  4. 仅适用于 ENSA2 体系结构:创建其他前端 IP(10.0.0.44)、负载均衡规则(对 ERS2 运行状况探测端口使用 621<实例号> ),如第 1 点和第 3 点中所述。

注意

不会遵循运行状况探测配置属性 numberOfProbes(在门户中也称为“运行不正常阈值”)。 因此,若要控制连续探测成功或失败的次数,请将属性“probeThreshold”设置为 2。 目前无法使用 Azure 门户 设置此属性,因此请使用 Azure CLIPowerShell 命令。

重要

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

注意

如果没有公共 IP 地址的 VM 放在内部(无公共 IP 地址)标准 Azure 负载均衡器的后端池中,就不会有出站 Internet 连接,除非执行额外的配置来允许路由到公共终结点。 有关如何实现出站连接的详细信息,请参阅 SAP 高可用性方案中使用 Azure 标准负载均衡器的虚拟机的公共终结点连接

提示

借助适用于带 Azure 共享磁盘的 SAP ASCS/SCS 实例的 WSFC 的 Azure 资源管理器模板,你可以通过 ERS1 将 Azure 共享磁盘用于一个 SAP SID,从而自动执行基础结构准备工作。
Azure ARM 模板会创建两个 Windows 2019 或 2016 VM,创建 Azure 共享磁盘并将其附加到 VM。 同时还会创建并配置 Azure 内部负载均衡器。 有关详细信息,请参阅 ARM 模板。

在 ASCS/SCS 实例的两个群集节点上添加注册表项

如果连接空闲了一段时间并且该时间超过空闲超时,则 Azure 负载均衡器可能会关闭连接。 SAP 工作进程会在需要发送第一个排队/取消排队请求时立即打开与 SAP 排队进程的连接。 若要避免中断这些连接,请更改两个群集节点上的 TCP/IP KeepAliveTime 和 KeepAliveInterval 值。 如果使用 ERS1,还需要添加 SAP 配置文件参数,如本文稍后所述。 必须在两个群集节点上更改以下注册表项:

  • KeepAliveTime
  • KeepAliveInterval
路径 变量名称 变量类型 文档
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters KeepAliveTime REG_DWORD(十进制) 120000 KeepAliveTime
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters KeepAliveInterval REG_DWORD(十进制) 120000 KeepAliveInterval

若要应用更改,请重新启动两个群集节点。

将 Windows VM 添加到域

将静态 IP 地址分配到虚拟机后,请将虚拟机添加到域。

安装并配置 Windows 故障转移群集

安装 Windows 故障转移群集功能

在其中一个群集节点上运行以下命令:

# Hostnames of the Win cluster for SAP ASCS/SCS
$SAPSID = "PR1"
$ClusterNodes = ("pr1-ascs-10","pr1-ascs-11")
$ClusterName = $SAPSID.ToLower() + "clust"

# Install Windows features.
# After the feature installs, manually reboot both nodes
Invoke-Command $ClusterNodes {Install-WindowsFeature Failover-Clustering, FS-FileServer -IncludeAllSubFeature -IncludeManagementTools }

在功能安装完成后,重启两个群集节点。

测试并配置 Windows 故障转移群集

在 Windows 2019 上,群集会自动识别它在 Azure 中运行,并且作为群集管理 IP 的默认选项,它使用分布式网络名称。 因此,它使用任何群集节点本地 IP 地址。 因此,不需要群集的专用(虚拟)网络名称,也无需在 Azure 内部负载均衡器上配置此 IP 地址。

有关详细信息,请参阅 Windows Server 2019 故障转移群集新功能;在其中一个群集节点上运行以下命令:

# Hostnames of the Win cluster for SAP ASCS/SCS
$SAPSID = "PR1"
$ClusterNodes = ("pr1-ascs-10","pr1-ascs-11")
$ClusterName = $SAPSID.ToLower() + "clust"

# IP adress for cluster network name is needed ONLY on Windows Server 2016 cluster
$ClusterStaticIPAddress = "10.0.0.42"

# Test cluster
Test-Cluster –Node $ClusterNodes -Verbose

$ComputerInfo = Get-ComputerInfo

$WindowsVersion = $ComputerInfo.WindowsProductName

if($WindowsVersion -eq "Windows Server 2019 Datacenter"){
    write-host "Configuring Windows Failover Cluster on Windows Server 2019 Datacenter..."
    New-Cluster –Name $ClusterName –Node  $ClusterNodes -Verbose
}elseif($WindowsVersion -eq "Windows Server 2016 Datacenter"){
    write-host "Configuring Windows Failover Cluster on Windows Server 2016 Datacenter..."
    New-Cluster –Name $ClusterName –Node  $ClusterNodes –StaticAddress $ClusterStaticIPAddress -Verbose 
}else{
    Write-Error "Not supported Windows version!"
}

配置群集云仲裁

使用 Windows Server 2016 或 2019 时,建议配置 Azure 云见证作为群集仲裁。

在其中一个群集节点上运行以下命令:

$AzureStorageAccountName = "cloudquorumwitness"
Set-ClusterQuorum –CloudWitness –AccountName $AzureStorageAccountName -AccessKey <YourAzureStorageAccessKey> -Verbose

优化 Windows 故障转移群集阈值

成功安装 Windows 故障转移群集后,你需要调整某些阈值,使其适用于在 Azure 中部署的群集。 调整故障转移群集网络阈值中记录了要更改的参数。 假设构成 ASCS/SCS 的 Windows 群集配置的两个 VM 位于同一子网中,则需要将以下参数更改为这些值:

  • SameSubNetDelay = 2000
  • SameSubNetThreshold = 15
  • RouteHistoryLength = 30

这些设置经过客户测试,已经进行了合理的折衷。 它们具有足够的复原能力,但它们还提供足够快的故障转移来应对 SAP 工作负荷或 VM 故障中的实际错误情况。

配置 Azure 共享磁盘

仅当使用 Azure 共享磁盘时,本部分才适用。

使用 PowerShell 创建并附加 Azure 共享磁盘

在其中一个群集节点上运行以下命令。 需要调整资源组、Azure 区域、SAPSID 等的值。

#############################
# Create Azure Shared Disk
#############################

$ResourceGroupName = "MyResourceGroup"
$location = "MyAzureRegion"
$SAPSID = "PR1"

$DiskSizeInGB = 512
$DiskName = "$($SAPSID)ASCSSharedDisk"

# With parameter '-MaxSharesCount', we define the maximum number of cluster nodes to attach the shared disk
$NumberOfWindowsClusterNodes = 2

# For SAP deployment in availability set, use below storage SkuName
$SkuName = "Premium_LRS"
# For SAP deployment in availability zone, use below storage SkuName
$SkuName = "Premium_ZRS"
   
$diskConfig = New-AzDiskConfig -Location $location -SkuName $SkuName  -CreateOption Empty  -DiskSizeGB $DiskSizeInGB -MaxSharesCount $NumberOfWindowsClusterNodes
$dataDisk = New-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $DiskName -Disk $diskConfig

##################################
## Attach the disk to cluster VMs
##################################
# ASCS Cluster VM1
$ASCSClusterVM1 = "$SAPSID-ascs-10"

# ASCS Cluster VM2
$ASCSClusterVM2 = "$SAPSID-ascs-11"

# Add the Azure Shared Disk to Cluster Node 1
$vm = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $ASCSClusterVM1 
$vm = Add-AzVMDataDisk -VM $vm -Name $DiskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0
Update-AzVm -VM $vm -ResourceGroupName $ResourceGroupName -Verbose

# Add the Azure Shared Disk to Cluster Node 2
$vm = Get-AzVM -ResourceGroupName $ResourceGroupName -Name $ASCSClusterVM2
$vm = Add-AzVMDataDisk -VM $vm -Name $DiskName -CreateOption Attach -ManagedDiskId $dataDisk.Id -Lun 0
Update-AzVm -VM $vm -ResourceGroupName $ResourceGroupName -Verbose

用 PowerShell 格式化共享磁盘

  1. 获取磁盘编号。 在其中一个群集节点上运行以下 PowerShell 命令:

    Get-Disk | Where-Object PartitionStyle -Eq "RAW"  | Format-Table -AutoSize 
    # Example output
    # Number Friendly Name     Serial Number HealthStatus OperationalStatus Total Size Partition Style
    # ------ -------------     ------------- ------------ ----------------- ---------- ---------------
    # 2      Msft Virtual Disk               Healthy      Online                512 GB RAW            
    
  2. 格式化磁盘。 在此示例中,它是磁盘编号 2。

    # Format SAP ASCS Disk number '2', with drive letter 'S'
    $SAPSID = "PR1"
    $DiskNumber = 2
    $DriveLetter = "S"
    $DiskLabel = "$SAPSID" + "SAP"
    
    Get-Disk -Number $DiskNumber | Where-Object PartitionStyle -Eq "RAW" | Initialize-Disk -PartitionStyle GPT -PassThru |  New-Partition -DriveLetter $DriveLetter -UseMaximumSize | Format-Volume  -FileSystem ReFS -NewFileSystemLabel $DiskLabel -Force -Verbose
    # Example outout
    # DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining      Size
    # ----------- --------------- ---------- --------- ------------ ----------------- -------------      ----
    # S           PR1SAP          ReFS       Fixed     Healthy      OK                    504.98 GB 511.81 GB
    
  3. 验证磁盘现在是否作为群集磁盘显示。

    # List all disks
    Get-ClusterAvailableDisk -All
    # Example output
    # Cluster    : pr1clust
    # Id         : 88ff1d94-0cf1-4c70-89ae-cbbb2826a484
    # Name       : Cluster Disk 1
    # Number     : 2
    # Size       : 549755813888
    # Partitions : {\\?\GLOBALROOT\Device\Harddisk2\Partition2\}
    
  4. 在群集中注册磁盘。

    # Add the disk to cluster 
    Get-ClusterAvailableDisk -All | Add-ClusterDisk
    # Example output  
    # Name           State  OwnerGroup        ResourceType 
    # ----           -----  ----------        ------------ 
    # Cluster Disk 1 Online Available Storage Physical Disk
    

适用于 SAP ASCS/SCS 群集共享磁盘的 SIOS DataKeeper Cluster Edition

仅当使用第三方软件 SIOS DataKeeper Cluster Edition 创建模拟群集共享磁盘的镜像存储时,本部分才适用。

现在,Azure 中有一个有效的 Windows Server 故障转移群集配置。 若要安装 SAP ASCS/SCS 实例,需要一个共享磁盘资源。 其中一个选项是使用 SIOS DataKeeper Cluster Edition,它是可用于创建共享磁盘资源的第三方解决方案。

为 SAP ASCS/SCS 群集共享磁盘安装 SIOS DataKeeper Cluster Edition 的过程包括以下任务:

  • 添加 Microsoft .NET Framework(如果需要)。 有关最新的 .NET Framework 要求,请参阅 SIOS 文档
  • 安装 SIOS DataKeeper
  • 配置 SIOS DataKeeper

安装 SIOS DataKeeper

在群集中的每个节点上安装 SIOS DataKeeper Cluster Edition。 要创建包含 SIOS DataKeeper 的虚拟共享存储,请创建同步的镜像,并模拟群集共享存储。

在安装 SIOS 软件之前,请创建 DataKeeperSvc 域用户。

注意

将 DataKeeperSvc 域用户添加到两个群集节点上的“本地管理员”组中。

  1. 在两个群集节点上安装 SIOS 软件。

    SIOS installer

    Figure 31: First page of the SIOS DataKeeper installation

    SIOS DataKeeper 安装程序的第一页

  2. 在对话框中,选择“是”

    Figure 32: DataKeeper informs you that a service will be disabled

    DataKeeper 通知你某个服务将被禁用

  3. 在对话框中,建议选中“域或服务器帐户”

    Figure 33: User selection for SIOS DataKeeper

    用户为 SIOS DataKeeper 选中的选项

  4. 输入为 SIOS DataKeeper 创建的域帐户用户名和密码。

    Figure 34: Enter the domain user name and password for the SIOS DataKeeper installation

    输入域用户名和密码以安装 SIOS DataKeeper

  5. 如图 35 所示,安装 SIOS DataKeeper 实例的许可证密钥。

    Figure 35: Enter your SIOS DataKeeper license key

    输入你的 SIOS DataKeeper 许可证密钥

  6. 根据提示重新启动虚拟机。

配置 SIOS DataKeeper

在两个节点上安装 SIOS DataKeeper 之后,开始进行配置。 配置的目的是在连接到每个虚拟机的附加磁盘之间进行同步数据复制。

  1. 启动 DataKeeper 管理和配置工具,并选择“连接服务器”。

    Figure 36: SIOS DataKeeper Management and Configuration tool

    SIOS DataKeeper 管理和配置工具

  2. 输入管理和配置工具应连接到的第一个节点的名称或 TCP/IP 地址,并在第二个步骤中,插入第二个节点的相关数据。

    Figure 37: Insert the name or TCP/IP address of the first node the Management and Configuration tool should connect to, and in a second step, the second node

    插入管理和配置工具应连接到的第一个节点的名称或 TCP/IP 地址,并在第二个步骤中插入第二个节点的相关数据

  3. 在两个节点之间创建复制作业。

    Figure 38: Create a replication job

    创建复制作业

    向导指导完成创建复制作业的过程。

  4. 定义复制作业的名称。

    Figure 39: Define the name of the replication job

    定义复制作业的名称

    Figure 40: Define the base data for the node, which should be the current source node

    定义节点(应为当前源节点)的基本数据

  5. 定义目标节点的名称、TCP/IP 地址和磁盘卷。

    Figure 41: Define the name, TCP/IP address, and disk volume of the current target node

    定义当前目标节点的名称、TCP/IP 地址和磁盘卷

  6. 定义压缩算法。 在本例中,建议压缩复制流。 尤其是在重新同步的情况下,压缩复制流可大幅缩短重新同步的时间。 压缩需要占用虚拟机的 CPU 和 RAM 资源。 随着压缩率增加,CPU 资源量也增加。 稍后可调整此设置。

  7. 需要检查的另一项设置是复制以异步还是同步方式发生。 保护 SAP ASCS/SCS 配置时,必须使用同步复制。

    Figure 42: Define replication details

    定义复制详细信息

  8. 定义是否应向 Windows Server 故障转移群集配置将复制作业所复制的卷表示为共享磁盘。 对于 SAP ASCS/SCS 配置,选择“是”,以便 Windows 群集将复制的卷视为可用作群集卷的共享磁盘。

    Figure 43: Select Yes to set the replicated volume as a cluster volume

    选择“是”,将复制的卷设置为群集卷

    创建卷后,DataKeeper 管理和配置工具显示复制作业处于活动状态。

    Figure 44: DataKeeper synchronous mirroring for the SAP ASCS/SCS share disk is active

    SAP ASCS/SCS 共享磁盘的 DataKeeper 同步镜像处于活动状态

    现在,故障转移群集管理器将磁盘显示为 DataKeeper 磁盘,如图 45 所示:

    Figure 45: Failover Cluster Manager shows the disk that DataKeeper replicated

    故障转移群集管理器显示 DataKeeper 复制的磁盘

后续步骤