Azure で Windows Server フェールオーバー クラスタリングと共有ディスクを使用する SAP ASCS/SCS インスタンスのマルチ SID 高可用性

Windows OS Windows

SAP がデプロイされている場合は、内部ロード バランサーを使用して SAP Central Services (ASCS/SCS) インスタンスの Windows クラスター構成を作成できます。

この記事では、共有ディスクをシミュレートする SIOS を使用して、追加の SAP ASCS/SCS クラスター化インスタンスを、共有ディスクを持つ既存の Windows Server フェールオーバー クラスタリング (WSFC) クラスターにインストールすることによって、単一の ASCS/SCS インストールから SAP マルチ SID 構成に移行する方法に焦点を当てます。 このプロセスが完了したら、SAP マルチ SID クラスターの構成は完了です。

Note

この機能は、Azure Resource Manager デプロイ モデルでのみ使用できます。

Azure 内部ロード バランサーごとにプライベート フロントエンド IP の数に制限があります。

1 つの WSFC クラスターにおける SAP ASCS/SCS インスタンスの最大数は、Azure 内部ロード バランサーあたりのプライベート フロントエンド IP の最大数と等しくなります。

ロード バランサーの制限の詳細については、ネットワークの制限:Azure Resource Manager

重要

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

注意

Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

前提条件

次の図に示すように、ファイル共有を使って 1 つの SAP ASCS/SCS インスタンスに使う WSFC クラスターを構成済みであることが必要です。

High-availability SAP ASCS/SCS instance

重要

セットアップは次の条件を満たしている必要があります。

  • SAP ASCS/SCS インスタンスは同じ WSFC クラスターを共有している必要があります。
  • 各データベース管理システム (DBMS) SID には、独自の専用 WSFC クラスターが必要です。
  • 1 つの SAP システム SID に属する SAP アプリケーション サーバーは、独自の専用 VM を持っている必要があります。
  • エンキュー レプリケーション サーバー 1 とエンキュー レプリケーション サーバー 2 を同じクラスター上に配置することは、サポートされていません。

共有ディスクを使用した SAP ASCS/SCS マルチ SID アーキテクチャ

次の例のように、複数の SAP ABAP ASCS または SAP Java SCS クラスター化インスタンスを同じ WSFC クラスター内にインストールすることが目標です。

Multiple SAP ASCS/SCS clustered instances in Azure

ロード バランサーの制限の詳細については、ネットワークの制限:Azure Resource Manager

2 つの高可用性 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 Load Balancer IP アドレス) 10.0.0.50
SAP ASCS/SCS インスタンスの番号 50
追加の SAP ASCS/SCS インスタンスの ILB プローブ ポート 62350

Note

SAP ASCS/SCS のクラスター インスタンスの場合、IP アドレスごとに一意のプローブ ポートが必要です。 たとえば、Azure 内部ロード バランサー上の 1 つの IP アドレスでプローブ ポート 62300 が使用されている場合、そのロード バランサー上の他の IP アドレスではプローブ ポート 62300 を使用できません。

今回の目的上、プローブ ポート 62300 は既に予約されているため、プローブ ポート 62350 を使用します。

ノードを 2 つ持つ既存の WSFC クラスターに追加の SAP ASCS/SCS インスタンスをインストールすることができます。

仮想マシンの役割 仮想マシンのホスト名 静的 IP アドレス
ASCS/SCS インスタンスの第 1 のクラスター ノード pr1-ascs-0 10.0.0.10
ASCS/SCS インスタンスの第 2 のクラスター ノード 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 Manager に表示されます。

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

Note

追加の ASCS/SCS インスタンスの仮想ホスト名に割り当てる新しい IP アドレスは SAP Azure Load Balancer に割り当てた新しい IP アドレスと同じである必要があります。

このシナリオでは、IP アドレスは 10.0.0.50 です。

PowerShell を使用して既存の Azure 内部ロード バランサーに IP アドレスを追加する

同じ WSFC クラスターに複数の SAP ASCS/SCS インスタンスを作成するには、PowerShell を使用して既存の Azure 内部ロード バランサーに IP アドレスを追加します。 各 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 Portal で結果を確認できます。

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 をデプロイする

2 番目の SAP システムのインフラストラクチャの準備を完了するには、次の操作をします。

  1. SAP アプリケーション サーバー用に専用の VM をデプロイし、それぞれを独自の専用可用性グループに配置します。
  2. DBMS クラスター用に専用の VM をデプロイし、それぞれを独自の専用可用性グループに配置します。

SAP NetWeaver マルチ SID システムのインストール

第 2 の 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. データベース インスタンスをインストールします。
    第 2 のクラスター ノードをインストールするには、SAP インストール ガイドの手順に従います。

  5. 第 2 のクラスター ノードをインストールします。
    このステップでは、既存の WSFC クラスター ノード 2 に、高可用性 ASCS/SCS インスタンスを使用した SAP をインストールします。 第 2 のクラスター ノードをインストールするには、SAP インストール ガイドの手順に従います。

  6. SAP ASCS/SCS インスタンスとプローブ ポート用に Windows Firewall ポートを開きます。
    SAP ASCS/SCS インスタンスで使用する両方のクラスター ノードで、SAP ASCS/SCS ポートが使用するすべての Windows ファイアウォール ポートを開きます。 これらの SAP ASCS/SCS インスタンスのポートは、「SAP ASCS/SCS のポート」のセクションに一覧があります。

    その他すべての SAP ポートの一覧については、「TCP/IP Ports of All SAP Products (SAP の全製品の TCP/IP ポート)」をご覧ください。

    また、Azure 内部ロード バランサー プローブ ポート (このシナリオでは 62350) を開きます。 こちらの記事に説明があります。

  7. SAP インストール ガイドで記載されているように、新しい専用 VM に SAP プライマリ アプリケーション サーバーをインストールします。

  8. SAP インストール ガイドで記載されているように、新しい専用 VM に追加の SAP アプリケーション サーバーをインストールします。

  9. SAP ASCS/SCS インスタンスのフェールオーバーと SIOS レプリケーションをテストします

次のステップ