SAP ASCS/SCS 用の Windows フェールオーバー クラスターと共有ディスクを使用して SAP HA 向けに Azure インフラストラクチャを準備する
Windows
この記事では、SAP ASCS インスタンスのクラスタリングのオプションとして "クラスター共有ディスク" を使うことで、Windows フェールオーバー クラスター上に高可用性の SAP ASCS/SCS システムをインストールして構成するための Azure インフラストラクチャを準備する手順について説明します。 "クラスター共有ディスク" の 2 つの代替手段については、次のドキュメントを参照してください。
- Azure 共有ディスク
- クラスター共有ディスクをシミュレートする、SIOS DataKeeper Cluster Edition を使用したミラー化ストレージの作成
このドキュメントでは、データベース層については説明していません。
前提条件
インストールを始める前に、次の記事を確認してください。
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 セットアップのために標準の内部ロード バランサーを構成するときは、以下のガイドラインに従ってください。
- フロントエンド IP 構成: フロントエンド IP を作成します (例: 10.0.0.43)。 ASCS/ERS 仮想マシンと同じ仮想ネットワークとサブネットを選択します。
- バックエンド プール: バックエンド プールを作成し、ASCS および ERS VM を追加します。 この例では、VM は pr1-ascs-10 と pr1-ascs-11 です。
- インバウンド規則: 負荷分散規則を作成します。
- フロントエンド IP アドレス: フロントエンド IP を選択します
- バックエンド プール: バックエンド プールを選択します
- [High availability ports] (高可用性ポート) をオンにします
- プロトコル: TCP
- 正常性プローブ: 以下の詳細を使って正常性プローブを作成します
- プロトコル: TCP
- ポート: [例: ASCS の場合、620<インスタンス番号>]
- 間隔: 5
- プローブしきい値: 2
- アイドル タイムアウト (分): 30
- [Floating IP を有効にする] をオンにします
- ENSA2 アーキテクチャにのみ適用: ポイント 1 と 3 で説明されているように、追加のフロントエンド IP (10.0.0.44)、負荷分散規則 (ERS2 正常性プローブ ポートに 621 <インスタンス番号>を使用) を作成します。
Note
正常性プローブ構成プロパティ numberOfProbes (ポータルでは [異常のしきい値] と呼ばれます) が順守されていません。 このため、成功または失敗した連続プローブの数を制御するには、プロパティ "probeThreshold" を 2 に設定します。 現在、このプロパティは Azure portal を使用して設定できないため、Azure CLI または PowerShell コマンドを使用してください。
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 内部ロード バランサーでこの 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 address 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 を使用して共有ディスクをフォーマットする
ディスク番号を取得します。 クラスター ノードのいずれかでこれらの 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 です。
# 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 output # DriveLetter FileSystemLabel FileSystem DriveType HealthStatus OperationalStatus SizeRemaining Size # ----------- --------------- ---------- --------- ------------ ----------------- ------------- ---- # S PR1SAP ReFS Fixed Healthy OK 504.98 GB 511.81 GB
ディスクがクラスター ディスクとして表示されるようになったことを確認します。
# 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\}
クラスターにディスクを登録します。
# 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 グループに追加します。
SIOS ソフトウェアを両方のクラスター ノードにインストールします。
SIOS DataKeeper のインストールの最初のページ
ダイアログ ボックスで [はい] を選択します。
DataKeeper からサービスを無効にすることが通知される
ダイアログ ボックスでは、 [Domain or Server account](ドメインまたはサーバーのアカウント) を選択することをお勧めします。
SIOS DataKeeper のユーザー選択
SIOS DataKeeper 用に作成したドメイン アカウントのユーザー名とパスワードを入力します。
SIOS DataKeeper インストールのドメイン ユーザー名とパスワードを入力する
図 35 に示すように、SIOS DataKeeper インスタンスのライセンス キーをインストールします。
SIOS DataKeeper ライセンス キーを入力する
メッセージが表示されたら、仮想マシンを再起動します。
SIOS DataKeeper を構成する
両方のノードに SIOS DataKeeper をインストールした後、構成を開始します。 この構成の目的は、各仮想マシンに接続された追加ディスク間で同期データ レプリケーションを実現することです。
DataKeeper の管理および構成ツールを起動し、 [Connect to Server (サーバーに接続)] を選択します
SIOS DataKeeper の管理および構成ツール
管理および構成ツールが接続する 1 番目のノードの名前または TCP/IP アドレスを入力し、次の手順で 2 番目のノードを入力します。
管理および構成ツールが接続する 1 番目のノードの名前または TCP/IP アドレスを入力し、次の手順で 2 番目のノードの情報を入力する
2 つのノード間のレプリケーション ジョブを作成します。
レプリケーション ジョブを作成する
ウィザードでレプリケーション ジョブの作成手順が示されます。
レプリケーション ジョブの名前を定義します。
レプリケーション ジョブの名前を定義する
現在のソース ノードとして使用するノードの基本データを定義する
ターゲット ノードの名前、TCP/IP アドレス、ディスク ボリュームを定義します。
現在のターゲット ノードの名前、TCP/IP アドレス、ディスク ボリュームを定義する
圧縮アルゴリズムを定義します。 この例では、レプリケーション ストリームを圧縮することをお勧めします。 特に再同期の状況では、レプリケーション ストリームを圧縮すると、再同期時間が大幅に短縮されます。 圧縮では仮想マシンの CPU および RAM リソースが使用されます。 圧縮率を大きくするほど、使われる CPU リソースの量も増えます。 この設定は後で調整できます。
確認する必要があるもう 1 つの設定は、レプリケーションを非同期と同期のどちらで行うかです。 SAP ASCS/SCS の構成を保護する場合は、同期レプリケーションを使う必要があります。
レプリケーションの詳細を定義する
レプリケーション ジョブによってレプリケートされたボリュームを、Windows Server フェールオーバー クラスター構成に共有ディスクとして示すかどうかを定義します。 SAP ASCS/SCS の構成では、Windows クラスターがレプリケートされたボリュームをクラスター ボリュームとして使用できる共有ディスクとして認識するように、 [はい] を選択します。
[はい] を選択し、レプリケートされたボリュームをクラスター ボリュームとして設定する
ボリュームが作成された後、DataKeeper の管理および構成ツールではレプリケーション ジョブがアクティブであると表示されます。
SAP ASCS/SCS 共有ディスクの DataKeeper 同期ミラーリングがアクティブになっている
図 45 のように、フェールオーバー クラスター マネージャーでディスクが DataKeeper ディスクとして表示されるようになりました。
DataKeeper がレプリケートしたディスクがフェールオーバー クラスター マネージャーに表示される