SAP ASCS/SCS 用の Windows フェールオーバー クラスターと共有ディスクを使用して SAP HA 向けに Azure インフラストラクチャを準備する

Windows OS Windows

この記事では、SAP ASCS インスタンスのクラスタリングのオプションとして "クラスター共有ディスク" を使うことで、Windows フェールオーバー クラスター上に高可用性の SAP ASCS/SCS システムをインストールして構成するための Azure インフラストラクチャを準備する手順について説明します。 "クラスター共有ディスク" の 2 つの代替手段については、次のドキュメントを参照してください。

このドキュメントでは、データベース層については説明していません。

前提条件

インストールを開始する前に、この記事を確認してください。

ASCS VM を作成する

SAP ASCS/SCS クラスターの場合、デプロイの種類に基づいて、Azure 可用性セットまたは Azure 可用性ゾーンに 2 つの VM をデプロイします。 VM がデプロイされたら、次のようにします。

  • SAP ASCS/SCS インスタンスの Azure 内部ロード バランサーを作成します。
  • AD ドメインに Windows VM を追加します。

デプロイの種類に基づいて、シナリオのホスト名と IP アドレスは次のようになります。

Azure 可用性セットでの SAP のデプロイ

ホスト名の役割 ホスト名 静的 IP アドレス 可用性セット ディスクの SkuName
最初のクラスター ノードの ASCS/SCS クラスター pr1-ascs-10 10.0.0.4 pr1-ascs-avset Premium_LRS
2 番目のクラスター ノードの 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
2 番目のクラスター ノードの 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 Premium 共有ディスク用に LRS をデプロイする必要があり (Premium_LRS)、クラスターが可用性ゾーンで実行されている場合は Azure Premium 共有ディスク用に ZRS をデプロイする必要があります (Premium_ZRS)。

Note

Azure 近接配置グループは Azure 共有ディスクには必要ありません。 ただし、PPG を使用した SAP デプロイの場合、以下のガイドラインに従ってください。

  • リージョンにデプロイされた SAP システムに対して PPG を使用する場合、ディスクを共有するすべての仮想マシンが同じ PPG に含まれている必要があります。
  • ゾーン デプロイを使用した近接配置グループ」で説明されているように、ゾーン間にデプロイされた SAP システムに PPG を使用する場合は、ディスクを共有する仮想マシンに Premium_ZRS ストレージをアタッチできます。

Azure 内部ロード バランサーを作成する

VM の構成中に、ネットワーク セクションで既存のロード バランサーを作成または選択できます。 Windows 上の ENSA1 アーキテクチャでは、SAP ASCS/SCS に必要な仮想 IP アドレスは 1 つだけです。 一方、ENSA2 アーキテクチャには、SAP ASCS/SCS 用と ERS2 用の 2 つの仮想 IP アドレスが必要です。 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<Instance-no.> for ASCS]
      • 間隔: 5
      • プローブのしきい値: 2
    • アイドル タイムアウト (分): 30
    • [Enable Floating IP]\(フローティング IP を有効にする\) をオンにします
  4. ENSA2 アーキテクチャにのみ適用: ポイント 1 と 3 で説明されているように、追加のフロントエンド IP (10.0.0.44)、負荷分散規則 (ERS2 正常性プローブ ポートに 621<インスタンス番号> を使用) を作成します。

Note

正常性プローブ構成プロパティ numberOfProbes (ポータルでは [異常のしきい値] と呼ばれます) が順守されていません。 したがって、成功または失敗した連続プローブの数を制御するには、プロパティ "probeThreshold" を 2 に設定します。 現在、Azure portal を使用してこのプロパティを設定することはできません。そのため、Azure CLI または PowerShell コマンドを使用します。

重要

負荷分散シナリオでは、ネットワーク インターフェイス カード (NIC) のセカンダリ IP 構成のフローティング IP アドレスはサポートされていません。 詳細については、Azure Load Balancer の制限事項に関する記事を参照してください。 VM に別の IP アドレスが必要な場合は、2 つ目の NIC をデプロイします。

Note

パブリック IP アドレスのない VM が、内部の (パブリック IP アドレスのない) Standard Azure Load Balancer のバックエンド プール内に配置されている場合、パブリック エンドポイントへのルーティングを許可するように追加の構成が実行されない限り、送信インターネット接続はありません。 送信接続を実現する方法の詳細については、「SAP の高可用性シナリオにおける Azure Standard Load Balancer を使用した Virtual Machines のパブリック エンドポイント接続」を参照してください。

ヒント

Azure 共有ディスクを使用した SAP ASCS/SCS インスタンス用の WSFC の Azure Resource Manager テンプレートを使うと、ERS1 で 1 つの SAP SID に Azure 共有ディスクを使用して、インフラストラクチャの準備を自動化することができます。
Azure ARM テンプレートにより、2 つの Windows 2019 または 2016 VM が作成され、Azure 共有ディスクが作成されて VM に接続されます。 Azure 内部ロード バランサーも作成され、構成されます。 詳細については、ARM テンプレートを参照してください。

ASCS/SCS インスタンスの両方のクラスター ノードにレジストリ エントリを追加する

一定の期間、接続がアイドル状態で、アイドル タイムアウトを超えた場合、Azure Load Balancer によって接続が閉じられる可能性があります。 SAP ワーク プロセスで、最初のエンキュー/デキュー要求の送信が必要になるとすぐに、SAP エンキュー プロセスへの接続が開かれます。 これらの接続が中断されないようにするには、両方のクラスター ノードで TCP/IP KeepAliveTime と KeepAliveInterval の値を変更します。 ERS1 を使用する場合は、この記事で後述するように、SAP プロファイル パラメーターを追加する必要もあります。 両方のクラスター ノードで、次のレジストリ エントリを変更する必要があります。

  • KeepAliveTime
  • KeepAliveInterval
Path [変数名] 変数の型 ドキュメント
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters KeepAliveTime REG_DWORD (Decimal) 120000 KeepAliveTime
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters KeepAliveInterval REG_DWORD (Decimal) 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 Server フェールオーバー クラスターをテストして構成する

Windows 2019 では、クラスターは Azure で実行されていることを自動的に認識し、クラスター管理 IP の既定のオプションとして、分散ネットワーク名を使用します。 そのため、クラスター ノードのローカル IP アドレスのいずれかを使用します。 そのため、クラスターの専用 (仮想) ネットワーク名は必要なく、Azure Internal Load Balancer でこの 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 にデプロイされたクラスターに合わせて、一部のしきい値を調整する必要があります。 変更するパラメーターについては、「Tuning failover cluster network thresholds」(フェールオーバー クラスター ネットワークのしきい値の調整) をご覧ください。 ASCS/SCS 用の Windows クラスター構成を構築する 2 つの 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 インスタンスをインストールするには、共有ディスク リソースが必要です。 オプションの 1 つは、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 ドメイン ユーザーを作成します。

Note

DataKeeperSvc ドメイン ユーザーを、両方のクラスター ノードのローカルの Administrator グループに追加します。

  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. ダイアログ ボックスでは、 [Domain or Server account](ドメインまたはサーバーのアカウント) を選択することをお勧めします。

    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 の管理および構成ツールを起動し、 [Connect to Server (サーバーに接続)] を選択します

    Figure 36: SIOS DataKeeper Management and Configuration tool

    SIOS DataKeeper の管理および構成ツール

  2. 管理および構成ツールが接続する 1 番目のノードの名前または TCP/IP アドレスを入力し、次の手順で 2 番目のノードを入力します。

    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

    管理および構成ツールが接続する 1 番目のノードの名前または TCP/IP アドレスを入力し、次の手順で 2 番目のノードの情報を入力する

  3. 2 つのノード間のレプリケーション ジョブを作成します。

    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. 確認する必要があるもう 1 つの設定は、レプリケーションを非同期と同期のどちらで行うかです。 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 同期ミラーリングがアクティブになっている

    図 45 のように、フェールオーバー クラスター マネージャーでディスクが DataKeeper ディスクとして表示されるようになりました。

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

    DataKeeper がレプリケートしたディスクがフェールオーバー クラスター マネージャーに表示される

次のステップ