次の方法で共有


Azure で SAP ASCS/SCS インスタンス用の Windows フェールオーバー クラスターと共有ディスクに SAP NetWeaver HA をインストールする

この記事では、Windows Server フェールオーバー クラスターと、SAP ASCS/SCS インスタンスをクラスタリングするためのクラスター共有ディスクを使用して、Azure に高可用性 SAP システムをインストールして構成する方法について説明します。 アーキテクチャ ガイド: クラスター共有ディスクを使用した Windows フェールオーバー クラスター上の SAP ASCS/SCS インスタンスのクラスタリングに関するページ記載されているように、"クラスター共有ディスク" には次に 2 つの代替手段があります。

前提条件

インストールを始める前に、次のドキュメントを確認してください。

DBMS のセットアップは使用する DBMS システムによって異なるため、この記事では説明はしません。 さまざまな DBMS ベンダーが Azure でサポートする機能を使用して、DBMS に関する高可用性の問題に対処していることを想定しています。 たとえば、SQL Server の Always On またはデータベース ミラーリング、Oracle データベースの Oracle Data Guard などがあります。 この記事では、DBMS の高可用性シナリオについては説明しません。

異なる DBMS サービスが Azure のクラスター化された SAP ASCS または SCS 構成と対話する際に、特別な考慮事項はありません。

注意

SAP NetWeaver ABAP システム、Java システム、ABAP + Java システムのインストール手順はほとんど同じです。 最も重要な違いは、SAP ABAP システムでは 1 つの ASCS インスタンスを使用することです。 SAP Java システムは 1 つの SCS インスタンスを使用します。 SAP ABAP + Java システムでは、1 つの ASCS インスタンスと、同じ Microsoft フェールオーバー クラスター グループで実行する 1 つの SCS インスタンスを使用します。 各 SAP NetWeaver インストール スタックのインストールの違いについて明確に説明します。 残りの手順は同じであると見なすことができます。

高可用性 ASCS/SCS インスタンスでの SAP のインストール

重要

SIOS を使用して共有ディスクを提供する場合は、ページ ファイルを SIOS DataKeeper ミラー ボリュームに配置しないでください。 ページ ファイルは、既定の Azure VM の一時ドライブ D: のままにすることができます。 まだ存在しない場合は、Windows ページ ファイルを Azure VM の ドライブ D: に移動します。

高可用性 ASCS/SCS インスタンスでの SAP のインストールには、以下のタスクが含まれます。

  • クラスター化された SAP ASCS/SCS インスタンスの仮想ホスト名を作成します。
  • 最初のクラスター ノードに SAP をインストールします。
  • ASCS/SCS インスタンスの SAP プロファイルを変更します。
  • プローブ ポートを追加します。
  • Windows ファイアウォール プローブ ポートを開きます。

クラスター化された SAP ASCS/SCS インスタンスの仮想ホスト名の作成

  1. Windows DNS マネージャーで、ASCS/SCS インスタンスの仮想ホスト名の DNS エントリを作成します。 例えば次が挙げられます。

    ERS-1 構成の Windows DNS マネージャーの [新しいホスト] ダイアログ ボックスのスクリーンショット。

    SAP ASCS/SCS クラスターの仮想名と TCP/IP アドレスの DNS エントリを定義する

    重要

    ASCS/SCS インスタンスの仮想ホスト名に割り当てる IP アドレスは Azure Load Balancer に割り当てた IP アドレスと同じでなければなりません。

  2. 新しい SAP エンキュー レプリケーション サーバー 2 を使用し、これもクラスター化されたインスタンスである場合、ERS2 の仮想ホスト名も DNS で予約する必要があります。

    重要

    ERS2 インスタンスの仮想ホスト名に割り当てる IP アドレスは、Azure Load Balancer に割り当てた 2 番目の IP アドレスである必要があります。

    ERS-2 構成の Windows DNS マネージャーの [新しいホスト] ダイアログ ボックスのスクリーンショット。

    SAP ERS2 クラスターの仮想名と TCP/IP アドレスの DNS エントリを定義する

  3. DNS マネージャーで仮想ホスト名に割り当てられた IP アドレスを定義するには:

    1. ゾーンを拡大する。

    2. IP アドレスを定義するために必要なエントリを開きます。

    前方参照ゾーンに複数のエントリがある Windows DNS マネージャーのスクリーンショット。

    SAP ASCS/SCS クラスター構成の新しい仮想名と TCP/IP アドレス

最初の SAP クラスター ノードのインストール

  1. クラスター ノード A で、最初のクラスター ノード オプションを実行します。次のように選択します。

    • ABAP システム:ASCS インスタンス番号 00
    • Java システム:SCS インスタンス番号 01
    • ABAP+Java システム:ASCS インスタンス番号 00SCS インスタンス番号 01

    重要

    Azure 内部ロード バランサーの負荷分散規則 (Basic SKU を使用している場合) と選択した SAP インスタンス番号の構成が一致している必要があります。

  2. SAP の説明に従ってインストール手順を行います。 [最初のクラスター ノード] の [インストールの開始] オプションで、[クラスター共有ディスク] が構成オプションとして選択されていることを確認します。

    ヒント

    SAP インストール ドキュメントでは、最初の ASCS/SCS クラスター ノードをインストールする方法が説明されています。

ASCS/SCS インスタンスの SAP プロファイルの変更

エンキュー レプリケーション サーバー 1 がある場合は、SAP プロファイル パラメーターを enque/encni/set_so_keepalive追加します。 このプロファイル パラメーターにより、SAP ワーク プロセスとエンキュー サーバー間の接続が長時間にわたってアイドル状態のときに、接続が閉じられるのを防ぐことができます。 ERS2 の場合、SAP パラメーターは必要ありません。

  1. ERS1 を使用する場合は、このプロファイル パラメーターを SAP ASCS/SCS インスタンス プロファイルに追加します。

    enque/encni/set_so_keepalive = TRUE
    

    ERS1 と ERS2 の両方について、 OS パラメーターが SAP Note 1410736 の説明に従って設定されていることを確認します。

  2. SAP プロファイル パラメーターの変更を適用するには、SAP ASCS/SCS インスタンスを再起動します。

プローブ ポートの追加

クラスター構成全体を Azure Load Balancer と連携させるには、内部ロード バランサーのプローブ機能を使用します。 通常、Azure 内部ロード バランサーは、参加している仮想マシン (VM) 間で受信ワークロードを均等に分散します。

ただし、一部のクラスター構成ではワークロードの分散が機能しません。アクティブなインスタンスは 1 つだけであるためです。 他のインスタンスはパッシブであり、ワークロードを受け付けることができません。 プローブ機能は、Azure 内部ロード バランサーがアクティブなインスタンスを検出し、アクティブなインスタンスのみを対象とするときに役立ちます。

重要

この構成例では、ProbePort は 620Nr に設定されます。 数値が 00 の SAP ASCS インスタンスの場合、** は 62000 です。 SAP インスタンス番号と SAP SID に合わせて構成を調整する必要があります。

プローブ ポートを追加するには、クラスター VM のいずれかで次の PowerShell モジュールを実行します。

SAP ASC/SCS インスタンスの場合

Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62000

クラスター化された ERS2 を使用する場合。 ERS1 については、クラスター化されていないため、プローブ ポートを構成する必要はありません。

Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID SID -ProbePort 62001 -IsSAPERSClusteredInstance $True

関数 Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource のコードは次のようになります。

function Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource {

<#
.SYNOPSIS
Set-AzureLoadBalancerHealthProbePortOnSAPClusterIPResource will set a new Azure Load Balancer Health Probe Port on 'SAP $SAPSID IP' cluster resource.

.DESCRIPTION
Set-AzureLoadBalancerHealthProbePortOnSAPClusterIPResource will set a new Azure Load Balancer Health Probe Port on 'SAP $SAPSID IP' cluster resource.
It will also restart SAP Cluster group (default behavior), to activate the changes.

You need to run it on one of the SAP ASCS/SCS Windows cluster nodes.

Expectation is that SAP group is installed with official SWPM installation tool, which will set default expected naming convention for:

- SAP Cluster Group:               'SAP $SAPSID'
- SAP Cluster IP Address Resource: 'SAP $SAPSID IP'

.PARAMETER SAPSID
SAP SID - 3 characters staring with letter.

.PARAMETER ProbePort
Azure Load Balancer Health Check Probe Port.

.PARAMETER RestartSAPClusterGroup
Optional parameter. Default value is '$True', so SAP cluster group will be restarted to activate the changes.

.PARAMETER IsSAPERSClusteredInstance
Optional parameter.Default value is '$False'.
If set to $True , then handle clustered new SAP ERS2 instance.

.EXAMPLE
# Set probe port to 62000, on SAP cluster resource 'SAP AB1 IP', and restart the SAP cluster group 'SAP AB1', to activate the changes.
Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000

.EXAMPLE
# Set probe port to 62000, on SAP cluster resource 'SAP AB1 IP'. SAP cluster group 'SAP AB1' IS NOT restarted, therefore changes are NOT active.
# To activate the changes you need to manually restart 'SAP AB1' cluster group.
Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000 -RestartSAPClusterGroup $False

.EXAMPLE
# Set probe port to 62001, on SAP cluster resource 'SAP AB1 ERS IP'. SAP cluster group 'SAP AB1 ERS' IS restarted, to activate the changes.
Set-AzureLoadBalancerHealthCheckProbePortOnSAPClusterIPResource -SAPSID AB1 -ProbePort 62000 -IsSAPERSClusteredInstance $True

#>

    [CmdletBinding()]
    param(

        [Parameter(Mandatory=$True)]
        [ValidateNotNullOrEmpty()]
        [ValidateLength(3,3)]
        [string]$SAPSID,

        [Parameter(Mandatory=$True)]
        [ValidateNotNullOrEmpty()]
        [int] $ProbePort,

        [Parameter(Mandatory=$False)]
        [bool] $RestartSAPClusterGroup = $True,

        [Parameter(Mandatory=$False)]
        [bool] $IsSAPERSClusteredInstance = $False
    )

    BEGIN{}

    PROCESS{
        try{

            if($IsSAPERSClusteredInstance){
                #Handle clustered SAP ERS Instance
                $SAPClusterRoleName = "SAP $SAPSID ERS"
                $SAPIPresourceName = "SAP $SAPSID ERS IP"
            }else{
                #Handle clustered SAP ASCS/SCS Instance
                $SAPClusterRoleName = "SAP $SAPSID"
                $SAPIPresourceName = "SAP $SAPSID IP"
            }

            $SAPIPResourceClusterParameters =  Get-ClusterResource $SAPIPresourceName | Get-ClusterParameter
            $IPAddress = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "Address" }).Value
            $NetworkName = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "Network" }).Value
            $SubnetMask = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "SubnetMask" }).Value
            $OverrideAddressMatch = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "OverrideAddressMatch" }).Value
            $EnableDhcp = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "EnableDhcp" }).Value
            $OldProbePort = ($SAPIPResourceClusterParameters | Where-Object {$_.Name -eq "ProbePort" }).Value

            $var = Get-ClusterResource | Where-Object {  $_.name -eq $SAPIPresourceName  }
            Write-Output "Current configuration parameters for SAP IP cluster resource '$SAPIPresourceName' are:"

            Get-ClusterResource -Name $SAPIPresourceName | Get-ClusterParameter

            Write-Output " "
            Write-Output "Current probe port property of the SAP cluster resource '$SAPIPresourceName' is '$OldProbePort'."
            Write-Output " "
            Write-Output "Setting the new probe port property of the SAP cluster resource '$SAPIPresourceName' to '$ProbePort' ..."
            Write-Output " "

            $var | Set-ClusterParameter -Multiple @{"Address"=$IPAddress;"ProbePort"=$ProbePort;"Subnetmask"=$SubnetMask;"Network"=$NetworkName;"OverrideAddressMatch"=$OverrideAddressMatch;"EnableDhcp"=$EnableDhcp}

            Write-Output " "

            if($RestartSAPClusterGroup){
                Write-Output ""
                Write-Output "Activating changes..."

                Write-Output " "
                Write-Output "Taking SAP cluster IP resource '$SAPIPresourceName' offline ..."
                Stop-ClusterResource -Name $SAPIPresourceName
                sleep 5

                Write-Output "Starting SAP cluster role '$SAPClusterRoleName' ..."
                Start-ClusterGroup -Name $SAPClusterRoleName

                Write-Output "New ProbePort parameter is active."
                Write-Output " "

                Write-Output "New configuration parameters for SAP IP cluster resource '$SAPIPresourceName':"
                Write-Output " "
                Get-ClusterResource -Name $SAPIPresourceName | Get-ClusterParameter
            }else
            {
                Write-Output "SAP cluster role '$SAPClusterRoleName' is not restarted, therefore changes are not activated."
           }
       }
        catch{
           Write-Error  $_.Exception.Message
       }
   }
    END {}
}

Windows ファイアウォール プローブ ポートを開く

両方のクラスター ノードで Windows ファイアウォール プローブ ポートを開きます。 次のスクリプトを使用して、Windows ファイアウォール プローブ ポートを開きます。 環境に合わせて PowerShell 変数を更新してください。 ERS2 を使用する場合は、ERS2 プローブ ポートのファイアウォール ポートを開く必要があります。

$ProbePort = 62000   # ProbePort of the Azure internal load balancer
New-NetFirewallRule -Name AzureProbePort -DisplayName "Rule for Azure Probe Port" -Direction Inbound -Action Allow -Protocol TCP -LocalPort $ProbePort

データベース インスタンスのインストール

データベース インスタンスをインストールするには、SAP インストール ドキュメントに記載されているプロセスに従います。

第 2 のクラスター ノードのインストール

第 2 のクラスター ノードをインストールするには、SAP インストール ガイドの手順に従います。

SAP プライマリ アプリケーション サーバーのインストール

PAS をホストするように指定した VM にプライマリ アプリケーション サーバー (PAS) インスタンス <SID>-di-0 をインストールします。 Azure に対する依存関係はありません。 SIOS を使用する場合、DataKeeper に固有の設定はありません。

SAP 追加アプリケーション サーバーのインストール

SAP アプリケーション サーバー インスタンスをホストするように指定されたすべての VM に SAP 追加アプリケーション サーバー (AAS) をインストールします。

SAP ASCS/SCS インスタンス フェールオーバーをテストする

このフェールオーバー テストの概要では、SAP ASCS がノード A でアクティブであることを前提としています。

  1. SAP システムがノード A からノード B に正常にフェールオーバーできることを確認します。

    次のいずれかの方法を選んで、クラスター ノード A からクラスター ノード B への SAP <SID> クラスター グループのフェールオーバーを開始します。

    • フェールオーバー クラスター マネージャー
    • フェールオーバー クラスターの PowerShell コマンドレット
    $SAPSID = "PR1"     # SAP <SID>
    $SAPClusterGroup = "SAP $SAPSID"
    Move-ClusterGroup -Name $SAPClusterGroup
    
  2. Windows ゲスト オペレーティング システムでクラスター ノード A を再起動します。 これにより、ノード A からノード B への SAP <SID> クラスター グループの自動フェールオーバーが開始されます。

  3. Azure Portal からクラスター ノード A を再起動します。 これにより、ノード A からノード B への SAP <SID> クラスター グループの自動フェールオーバーが開始されます。

  4. Azure PowerShell を使ってクラスター ノード A を再起動します。 これにより、ノード A からノード B への SAP <SID> クラスター グループの自動フェールオーバーが開始されます。

  5. フェールオーバー後に、SAP <SID> クラスター グループがクラスター ノード B で動作していることを確認します。

    ロールとして構成された SAP クラスターを含む Windows フェールオーバー クラスター マネージャーのスクリーンショット。

    フェールオーバー クラスター マネージャーで SAP <SID> クラスター グループがクラスター ノード B で動作しています

    • フェールオーバー後に、共有ディスクがクラスター ノード B にマウントされていることを確認します。
    • フェールオーバー後、SIOS を使用している場合は、SIOS DataKeeper がソース ボリューム ドライブ S: クラスター ノード B からターゲット ボリューム ドライブ S: クラスター ノード A にデータをレプリケートしていることを確認します。

    クラスター ノード B からクラスター ノード A にローカル ボリュームをレプリケートする SIOS DataKeeper のスクリーンショット。

    SIOS DataKeeper で、クラスター ノード B からクラスター ノード A にローカル ボリュームをレプリケートする