SQL Server フェイルオーバー クラスタ インスタンスの構成

Compute Engine 上の Microsoft SQL Server に高可用性および冗長性が必要な場合、Always On フェイルオーバー クラスタ インスタンス(FCI)と記憶域スペース ダイレクト(S2D)を構成できます。

Always On FCI は、複数の Windows Server フェイルオーバー クラスタ(WSFC)ノードにわたってインストールされる単一の Microsoft SQL Server インスタンスを提供します。WSFC 内の 1 つのノードのみが SQL インスタンスをアクティブにホストします。フェイルオーバーが発生すると、WSFC サービスはインスタンスのリソースのオーナー権限を指定されたフェイルオーバー ノードに譲渡します。

S2D は、Compute Engine VM データディスクを使用して SQL データベースを格納できるソフトウェアベースの仮想 SAN を提供します。

このチュートリアルでは、設定例を示します。このチュートリアルを終了すると、Always On SQL Server FCI と S2D を Compute Engine に作成できるようになります。

目標

  • Windows ドメイン コントローラを使用して VPC ネットワークを設定する。
  • クラスタノードとして機能する 2 つの Windows SQL Server VM インスタンスを作成する。
  • クラスタ ストレージを含むフェイルオーバー クラスタを設定する。
  • トラフィックをアクティブ ノードに誘導するための内部ロードバランサを設定する。
  • フェイルオーバーのオペレーションをテストして、クラスタが機能していることを確認する。

費用

このチュートリアルでは、Windows Server ライセンスを含む Compute Engine イメージを使用します。つまり、VM を実行したままにしておくと、このチュートリアルを実行するために相当な費用がかかる可能性があります。VM を使用していないときに VM を停止することをおすすめします。

このチュートリアルを完了するための費用の見積もりについては、料金計算ツールをご覧ください。

始める前に

  1. Google アカウントにログインします。

    Google アカウントをまだお持ちでない場合は、新しいアカウントを登録します。

  2. Google Cloud Platform プロジェクトを選択または作成します。

    [リソースの管理] ページに移動

  3. Google Cloud Platform プロジェクトに対して課金が有効になっていることを確認します。

    課金を有効にする方法について

  4. Compute Engine API を有効にします。

    APIを有効にする

  5. このチュートリアルのすべての gcloud コマンドを実行できる Cloud Shell のインスタンスを起動します。
    Cloud Shell を開く
  6. 必要に応じて、SSD の永続ディスク割り当てを確認して上限の引き上げをリクエストします。このチュートリアルでは 500 GB が必要です。

概要

この設定例には、次のコンポーネントと IP アドレスが含まれています。

  • カスタム VPC ネットワーク: 10.0.0.0/24
  • Active Directory ドメイン コントローラ: 10.0.0.3
  • S2D ストレージが接続された以下の 2 つの WSFC ノード
    • node-1: 10.0.0.4
    • node-2: 10.0.0.5
  • Windows Server フェイルオーバー クラスタ(クラスタ管理用): 10.0.0.201
  • 内部ロードバランサと SQL FCI リスナー(SQL 接続用): 10.0.0.200

ロードバランサはリクエストをリッスンします。ヘルスチェックに基づいて、どの SQL Server ノードがアクティブであるかを認識し、そこにトラフィックを誘導します。アクティブ ノードに障害が発生した場合、FCI フェイルオーバー ノードがアクティブになります。ヘルス チェッカーは健全なノードの信号を受信し、ロードバランサはトラフィックをリダイレクトします。S2D ボリュームに格納されているデータベースは引き続き使用できます。

フェイルオーバー クラスタ内の 2 つの Compute Engine VM を示すアーキテクチャ図

VPC ネットワークの設定

このチュートリアルでは既存のネットワークを使用できますが、おすすめの方法としては、システムを複数のネットワークとサブネットに分離し、ファイアウォール ルールを使用してトラフィックを制限します。

  1. カスタムモードの VPC ネットワークを作成します。カスタムモードでは、VPC ネットワークのサブネットと IP 範囲を完全に制御できます。

    gcloud compute networks create wsfcnet --subnet-mode custom
    
  2. このチュートリアルのすべての VM を組み込むサブネット wsfc-subnet1 を追加します。

    gcloud compute networks subnets create wsfc-subnet1 \
        --network wsfcnet \
        --region us-central1 \
        --range 10.0.0.0/24
    
  3. このネットワーク内の VM 間の内部トラフィックを許可するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create allow-internal-ports \
        --network wsfcnet \
        --allow tcp:1-65535,udp:1-65535,icmp \
        --source-ranges 10.0.0.0/24
    
  4. ポート 3389 で RDP の着信トラフィックを許可するファイアウォール ルールを作成します。ここでは tcp:3389 をすべての IP アドレス(0.0.0.0/0)に対して開いていますが、本番環境では、承認された IP にアクセスを制限します。

    gcloud compute firewall-rules create allow-rdp \
        --network wsfcnet \
        --allow tcp:3389 \
        --source-ranges 0.0.0.0/0
    

Windows ドメイン コントローラの作成と構成

このチュートリアルで必要となるドメイン ネーム サービス、Windows フェイルオーバー クラスタリング、および記憶域スペース ダイレクト機能に対して Active Directory ドメインが使用されます。同じ VPC 内に AD ドメイン コントローラを配置することは要件ではありませんが、チュートリアルを簡素化できます。

このチュートリアルでは、ドメインは gontoso.com です。ドメイン コントローラの VM 名は dc-windows です(さらに、デフォルトでは Windows のコンピュータ名は VM 名 dc-windows に一致します)。VM はサブネット内の 10.0.0.3 に作成されます。

  1. ドメイン コントローラとして使用する VM を作成します。必要な任意のマシンタイプと Windows サーバーを指定できますが、この例では以下のパラメータを使用します。

    gcloud compute instances create "dc-windows" \
        --zone "us-central1-a" \
        --machine-type "n1-standard-2" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.3" \
        --can-ip-forward \
        --image-family "windows-2016" \
        --image-project "windows-cloud" \
        --boot-disk-size "200" \
        --boot-disk-type "pd-standard" \
        --boot-disk-device-name "dc-windows"
    
  2. パスワードを生成し、ローカル アカウントを使用してドメイン コントローラ VM に接続できるようにします。今後の使用に備えてユーザー名とパスワードを記録しておきます。

  3. RDP を使用して、ローカル アカウントのユーザー名とパスワードでドメイン コントローラ VM に接続します。

  4. VM 上で、管理者として PowerShell を実行して、昇格した PowerShell プロンプトを開きます。

  5. 管理者ユーザーを設定します。

    1. 次のコマンドを実行し、管理者アカウントで使用するパスワードを入力します。

      PS C:\> $Password = Read-Host -AsSecureString
      

      入力したパスワードを記録しておきます。このパスワードは管理者アカウント用に使用します。

    2. 管理者アカウントのパスワードを設定します。

      PS C:\> Set-LocalUser -Name Administrator -Password $Password
      
    3. 管理者アカウントを有効にします。

      PS C:\> Enable-LocalUser -Name Administrator
      
  6. SQL Agent アカウントと SQL Admin アカウントの両方として使用する SQL Server サービス アカウントを設定します。

    1. SQL Server サービス アカウントで使用するパスワードをセキュアな文字列として入力します。

      PS C:\> $Password = Read-Host -AsSecureString
      

      入力したパスワードを記録しておきます。このパスワードは、SQL Server サービス アカウントに使用します。

    2. SQL Server サービス アカウントを作成し、そのパスワードを設定します。

      PS C:\> New-LocalUser -Name "service_account" -Description "SQL Agent and SQL Admin account."  -Password $Password
      
  7. ログオフし、RDP を使用して、ドメイン コントローラの VM に管理者のアカウントとパスワードで再接続します。

  8. 昇格した PowerShell で、次の変数を設定します。これらの変数は、Active Directory フォレストの構成に使用されます。

    PS C:\> $DomainName = "gontoso.com";
    PS C:\> $DomainMode = "Win2012R2";
    PS C:\> $ForestMode = "Win2012R2";
    PS C:\> $DatabasePath = "C:\Windows\NTDS";
    PS C:\> $LogPath = "C:\Windows\NTDS";
    PS C:\> $SysvolPath = "C:\Windows\SYSVOL";
    
  9. Active Directory サービスとツールをインストールします。

    PS C:\> Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
    
    Success Restart Needed Exit Code      Feature Result
    ------- -------------- ---------      --------------
    True    No             Success        {Active Directory Domain Services, Group P...
    
    
  10. Active Directory フォレストをインストールして構成します。次のコマンドでは認証情報が要求されます。前の手順で作成した Administrator のユーザー名とパスワードを認証情報として使用します。

    PS C:\> Install-ADDSForest -CreateDnsDelegation:$false -DatabasePath $DatabasePath -LogPath $LogPath -SysvolPath $SysvolPath -DomainName $DomainName -DomainMode $DomainMode -ForestMode $ForestMode -InstallDNS:$true -NoRebootOnCompletion:$false -SafeModeAdministratorPassword ((Get-Credential).Password) -Force:$true;
    
    cmdlet Get-Credential at command pipeline position 1
    Supply values for the following parameters:
    Credential
    ...
    
    

    マシンが再起動します。

  11. VM が再起動したら、RDP を使用して VM に再接続します。その際、元の認証情報と一致するローカル アカウントの認証情報を使用します。

クラスタの VM とデータディスクの作成

2 つの SQL Server VM と、追加のデータディスクを作成します。1 つの VM がアクティブな FCI ノードとして機能し、もう 1 つの VM はフェイルオーバー ノードとして機能します。追加のディスクは S2D ボリュームとして機能します。

各 SQL Server VM は次の要件を満たしている必要があります。

  • 前に定義したサブネット wsfc-subnet1 内で作成されている。
  • プライベート IP は、サブネット範囲 10.0.0.0/24 にある。
  • Windows Server フェイルオーバー クラスタリング機能がインストールされている。
  • フェイルオーバー クラスタ内のアクティブ ノードをモニタリングできる Compute Engine WSFC エージェントが有効である。
  1. Cloud Shell で、2 つの SQL Server VM と、追加のデータディスクを作成します。作成するディスクは S2D の容量およびキャッシュ ボリュームとして使用されます。

    gcloud compute instances create "node-1" \
        --zone "us-central1-f" \
        --machine-type "n1-highmem-4" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.4" \
        --can-ip-forward \
        --image-family "sql-ent-2016-win-2016" \
        --image-project "windows-sql-cloud" \
        --boot-disk-size "50" \
        --boot-disk-type "pd-ssd" \
        --boot-disk-device-name "node-1" \
        --create-disk=name=node-1-datadisk-1,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-2,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-3,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-1-datadisk-4,size=50,type=pd-ssd,auto-delete=no \
        --metadata enable-wsfc=true,sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
    
    gcloud compute instances create "node-2" \
        --zone "us-central1-a" \
        --machine-type "n1-highmem-4" \
        --subnet "wsfc-subnet1" \
        --private-network-ip "10.0.0.5" \
        --can-ip-forward \
        --image-family "sql-ent-2016-win-2016" \
        --image-project "windows-sql-cloud" \
        --boot-disk-size "50" \
        --boot-disk-type "pd-ssd" \
        --boot-disk-device-name "node-2" \
        --create-disk=name=node-2-datadisk-1,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-2,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-3,size=50,type=pd-ssd,auto-delete=no \
        --create-disk=name=node-2-datadisk-4,size=50,type=pd-ssd,auto-delete=no \
        --metadata enable-wsfc=true,sysprep-specialize-script-ps1="Install-WindowsFeature Failover-Clustering -IncludeManagementTools;"
      
  2. 必要に応じて、RDP を使用して各ノードに接続し、昇格した PowerShell からフェイルオーバー クラスタリングが有効になっていることを確認します。

    PS C:> Get-WindowsFeature Failover-Clustering
    Display Name                                            Name                       Install State


    [X] Failover Clustering Failover-Clustering Installed

クラスタ VM のネットワークの構成

  1. 最初のノードを構成します。

    1. node-1パスワードを生成します。今後の使用に備えてユーザー名とパスワードを記録しておきます。

    2. RDP を使用して node-1 に接続します。

    3. 昇格した PowerShell を開きます。

    4. ヘルスチェック サービスに対してポートを開くファイアウォール ルールを追加します。このチュートリアルでは tcp:59997 を使用します。別のポートに変更することもできますが、その場合、後で定義するヘルス チェッカー ポートと一致させる必要があります。ヘルスチェック プロセスは、各クラスタノード上のエージェントに定期的に ping して、エージェントの可用性を判断します。

      PS C:\> netsh advfirewall firewall add rule name="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
      
    5. SQL Server インスタンスに対してポートを開くファイアウォール ルールを追加します。通常、このインスタンスは tcp:1433 で実行されます。

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. ドメイン コントローラに DNS を設定します。

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. 静的 IP アドレスを使用するようにノードを更新し、ネットマスクを設定します。

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.4 255.255.0.0 10.0.0.1 1
      

      VM から切断されます。RDP を使用して、ローカルのユーザー名とパスワードで再接続します。

    8. 前に作成した Active Directory ドメインにノードを追加します。

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      資格情報の入力を求められます。前の手順でドメイン コントローラ VM を構成したときに設定した管理者のユーザー名とパスワードを使用します。

      マシンが再起動します。

  2. 2 番目のノードを構成します。

    1. node-2パスワードを生成します。今後の使用に備えてユーザー名とパスワードを記録しておきます。

    2. RDP を使用して node-2 に接続します。

    3. 昇格した PowerShell を開きます。

    4. ヘルス チェッカーに対してポートを開くファイアウォール ルールを追加します。ポートは、後で定義するヘルス チェッカー ポートと一致させる必要があります。

      PS C:\> netsh advfirewall firewall add rule name="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
      
    5. SQL Server インスタンスに対してポートを開くファイアウォール ルールを追加します。通常、このインスタンスは tcp:1433 で実行されます。

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. ドメイン コントローラに DNS を設定します。

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. 静的 IP アドレスを使用するようにノードを更新し、ネットマスクを設定します。

      PS C:\> netsh interface ip set address name=Ethernet static 10.0.0.5 255.255.0.0 10.0.0.1 1
      

      VM から切断されます。RDP を使用して、ローカルのユーザー名とパスワードで再接続します。

    8. 前に作成した Active Directory ドメインにノードを追加します。

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      資格情報の入力を求められます。前の手順でドメイン コントローラ VM を構成したときに設定した管理者のユーザー名とパスワードを使用します。

      マシンが再起動します。

ファイル共有監視の作成

タイブレークのための投票を行ってフェイルオーバー シナリオのクォーラムを達成するために、監視として機能するファイル共有を作成します。このチュートリアルでは、ドメイン コントローラ VM にファイル共有監視を作成します。本番環境では別の場所に作成します。

  1. RDP を使用して、管理者アカウントでドメイン コントローラ VM(dc-windows)に接続します。

  2. 昇格した PowerShell を開きます。

  3. 監視フォルダを作成します。

    PS C:\> New-Item "C:\QWitness" –type directory
    
  4. フォルダを共有します。

    PS C:\> New-SmbShare -Name "QWitness" -Path "C:\QWitness" -Description "SQL File Share Witness" -FullAccess "gontoso.com\Administrator", "gontoso.com\node-1$", "gontoso.com\node-2$"
    
  5. 必要に応じて、RDP を使用していずれかのノードに gontoso.com\Administrator として接続し、共有ディレクトリにアクセスできることを確認します。

    PS C:\> dir \\\\dc-windows\QWitness
    

内部ロードバランサの作成

内部ロードバランサは、SQL Server 用の単一の IP を提供します。ロードバランサはリクエストをリッスンし、ネットワーク トラフィックをアクティブなクラスタノードにルーティングします。ヘルス チェッカーが各ノードに対して実行されているため、ロードバランサはどのノードがアクティブ ノードであるかを把握しています。アクティブ ノードだけが正常であると応答します。アクティブ ノードが停止すると、SQL FCI フェイルオーバー ノードがアクティブになります。ヘルス チェッカーは信号を受信し、トラフィックはそこにリダイレクトされます。

  1. 2 つのインスタンス グループを作成し、各グループに 1 つの SQL Server ノードを追加します。これらのインスタンス グループは、ロードバランサがトラフィックを送信できるバックエンドとして機能します。

    gcloud compute instance-groups unmanaged create wsfc-group-f --zone us-central1-f
    gcloud compute instance-groups unmanaged add-instances wsfc-group-f --instances node-1 --zone us-central1-f
    
    gcloud compute instance-groups unmanaged create wsfc-group-a --zone us-central1-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-a --instances node-2 --zone us-central1-a
    
  2. ロードバランサがアクティブ ノードの判別に使用できるヘルスチェックを作成します。

    gcloud compute health-checks create tcp sql-healthcheck \
        --check-interval="2s" \
        --healthy-threshold=1 \
        --unhealthy-threshold=2 \
        --port=59997 \
        --request=10.0.0.200 \
        --timeout="1s" \
    
  3. ヘルスチェックを許可するファイアウォール ルールを追加します。

    gcloud compute firewall-rules create allow-health-check \
        --network wsfcnet \
        --source-ranges 130.211.0.0/22,35.191.0.0/16 \
        --allow tcp
    
  4. 1 つのバックエンド サービスを作成し、2 つのバックエンド インスタンス グループを追加します。

    gcloud compute backend-services create wsfcbackend \
        --load-balancing-scheme internal \
        --region us-central1 \
        --health-checks sql-healthcheck \
        --protocol tcp
    
    gcloud compute backend-services add-backend wsfcbackend \
        --instance-group wsfc-group-a \
        --instance-group-zone us-central1-a \
        --region us-central1
    
    gcloud compute backend-services add-backend wsfcbackend \
        --instance-group wsfc-group-f \
        --instance-group-zone us-central1-f \
        --region us-central1
    
  5. SQL FCI のアクティブ ノードにリクエストを転送する内部ロードバランサを作成します。FCI は後で作成され、10.0.0.200 をリッスンするように構成されます。

    gcloud compute forwarding-rules create wsfc-forwarding-rule \
        --load-balancing-scheme internal \
        --ports 1433 \
        --network wsfcnet \
        --subnet wsfc-subnet1 \
        --region us-central1 \
        --backend-service wsfcbackend \
        --address 10.0.0.200
    

Windows フェイルオーバー クラスタの作成

  1. RDP を使用して、node-1gontoso.com\Administrator として再接続します。以前の証明書を削除しないと再接続できない場合があります。

  2. 昇格した PowerShell を開きます。

  3. クラスタを作成します。

    PS C:\> New-Cluster -Name windows-fci -Node node-1, node-2 -StaticAddress 10.0.0.201 -NoStorage
    
    PS C:\> Set-ClusterQuorum -FileShareWitness \\\\dc-windows\QWitness
    
  4. クラスタをテストします。いくつかの警告が表示されますが、無視します。

    PS C:\> Test-Cluster
    WARNING: System Configuration - Validate All Drivers Signed: The test reported some warnings..
    WARNING: Network - Validate Network Communication: The test reported some warnings..
    WARNING:
    Test Result:
    HadUnselectedTests, ClusterConditionallyApproved
    Testing has completed for the tests you selected. You should review the warnings in the Report.  A cluster solution is
    supported by Microsoft only if you run all cluster validation tests, and all tests succeed (with or without warnings).
    Test report file path: C:\Users\Administrator\AppData\Local\Temp\Validation Report 2018.05.01 At 19.25.01.htm
    
    Mode                LastWriteTime         Length Name
    ----                -------------         ------ ----
    -a----         5/1/2018   7:26 PM         747166 Validation Report 2018.05.01 At 19.25.01.htm
    
    

    また、Cluster Admin GUI を起動して、cluadmin.msc を実行してクラスタの正常性を確認することもできます。

記憶域スペース ダイレクトの有効化

  1. RDP を使用して、node-1 または node-2 のいずれかに接続し、昇格した PowerShell を開きます。

  2. 記憶域スペース ダイレクトを有効にします。

    PS C:\> Enable-ClusterS2D
    
    Confirm
    Are you sure you want to perform this action?
    Performing operation 'Enable Cluster Storage Spaces Direct' on Target 'windows-fci'.
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"): Y
    WARNING: 2018/05/01-19:36:41.315 Node node-1: No disks found to be used for cache
    WARNING: 2018/05/01-19:36:41.330 Node node-2: No disks found to be used for cache
    WARNING: 2018/05/01-19:36:41.362 C:\Windows\Cluster\Reports\Enable-ClusterS2D on 2018.05.01-19.36.41.362.htm
    
    

    確認のメッセージが表示されたら、デフォルトを受け入れます。いくつかの警告が表示されますが、無視します。

    • 必要に応じて、ディスクのパフォーマンスを向上するには、クラスタの VM に標準の SSD 永続ディスクに加えて、ローカル SSD を追加できます。ローカル SSD は S2D キャッシュ層として機能します。容量ドライブ(このケースでは SSD 永続ディスク)の数をローカル SSD の数の倍数にします。キャッシュを使用して S2D を有効にするには、次のコマンドを実行します。

      PS C:\> Enable-ClusterS2D -CacheDeviceModel "EphemeralDisk"
      
    • クラスタ共有ボリューム(CSV)のメモリ内キャッシュを有効にして、読み取りスループットを向上させることもできます。

      PS C:\> (Get-Cluster).BlockCacheSize = 2048
      
  3. S2D ではボリュームごとに 2 GB を管理に使用する必要があります。各ノードには 50 GB のボリュームが 4 つあるため、ストレージ プールを定義してそのサイズを 192 GB に設定します。

    PS C:\> New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 192GB
    
  4. ストレージ ボリュームが読み取り / 書き込みモードで存在することを確認します。

    PS C:\> dir C:\ClusterStorage\Volume1\ | Get-ACL
    
    Directory: C:\ClusterStorage\Volume1
    
    Path                Owner                  Access
    ----                -----                  ------
    MSSQL13.MSSQLSERVER BUILTIN\Administrators BUILTIN\Administrators Allow  FullControl...
    
    

FCI を使用した SQL Server の高可用性の構成

  1. 最初のノードからデフォルトの SQL Server インスタンスを削除します。後で新しい FCI 構成に置き換えます。

    1. RDP を使用して、node-1gontoso.com\Administrator として接続します。

    2. 昇格した PowerShell を開きます。

    3. デフォルトの SQL Server インスタンスを削除します。

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. VM を再起動します。

      PS C:\> shutdown /r
      
  2. 2 番目のノードからデフォルトの SQL Server インスタンスを削除します。後で新しい FCI 構成に置き換えます。

    1. RDP を使用して、node-2gontoso.com\Administrator としてログインします。

    2. 昇格した PowerShell を開きます。

    3. デフォルトの SQL Server インスタンスを削除します。

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. VM を再起動します。

      PS C:\> shutdown /r
      
  3. 最初のノードで FCI を使用して SQL Server を再インストールします。

    1. RDP を使用して、node-1gontoso\Administrator としてログインします。

    2. メモ帳などのテキスト エディタを開きます。

    3. fci_install_master_node.ini 構成ファイルの内容を node-1 上のテキスト エディタにコピーします。改行が保持されない場合もありますが、それでも機能します。

    4. 構成ファイルを更新して gontoso.com\service_account のパスワードを反映させます。パスワードは、AGTSVCPASSWORDSQLSVCPASSWORD の 2 つの場所で更新する必要があります。changeme を検索し、定義したパスワードに置き換えます。更新後のファイルを、C:\fci_install_master_node.ini というファイル名のプレーン テキスト ファイルとして保存します。

    5. 昇格した PowerShell を開き、構成ファイルを使用して SQL Server をインストールします。

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_install_master_node.ini
      
  4. 2 番目のノードで FCI を使用して SQL Server を再インストールします。

    1. RDP を使用して、node-2gontoso\Administrator としてログインします。

    2. メモ帳などのテキスト エディタを開きます。

    3. fci_add_node.ini 構成ファイルの内容を node-1 上のテキスト エディタにコピーします。

    4. 構成ファイルを更新して gontoso.com\service_account のパスワードを反映させます。パスワードは、AGTSVCPASSWORDSQLSVCPASSWORD の 2 つの場所で更新する必要があります。changeme を検索し、定義したパスワードに置き換えます。更新後のファイルを、C:\fci_add_node.ini というファイル名のプレーン テキスト ファイルとして保存します。

    5. 昇格した PowerShell を開き、SQL Server をインストールします。

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_add_node.ini
      

ヘルス チェッカーのクラスタを構成する

  1. RDP を使用して、node-1gontoso.com\Administrator として再接続します。

  2. 昇格した PowerShell で次の PowerShell スクリプトを実行して、ヘルスチェック サービスに対して Windows フェイルオーバー クラスタに応答させます。

    $cluster_network_name = 'Cluster Network 1'
    $ip_resource_name = 'SQL IP Address 1 (SQL2016FCI)'
    $load_balancer_ip = '10.0.0.200'
    [int]$health_check_port = 59997
    Get-ClusterResource $ip_resource_name |
      Set-ClusterParameter -Multiple @{ 'Address'=$load_balancer_ip;
                                        'ProbePort'=$health_check_port;
                                        'SubnetMask'='255.255.255.255';
                                        'Network'=$cluster_network_name;
                                        'EnableDhcp'=0}
    

フェイルオーバー シナリオのテスト

クライアントの準備

  1. Cloud Shell で、SQL クライアントとして機能する新しい VM を作成します。

    gcloud compute instances create "sqlclient-1" \
    --zone "us-central1-a" \
    --machine-type "n1-standard-2" \
    --subnet "wsfc-subnet1" \
    --private-network-ip "10.0.0.10" \
    --can-ip-forward \
    --image-family "sql-ent-2016-win-2016" \
    --image-project "windows-sql-cloud" \
    --boot-disk-size "200" \
    --boot-disk-type "pd-standard" \
    --boot-disk-device-name "sqlclient-1"
    
  2. RDP を使用して sqlclient-1 に接続します。

  3. 昇格した PowerShell を開きます。

  4. クライアントを構成します。

    1. ドメイン コントローラに DNS を設定します。

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    2. 前に作成した Active Directory ドメインにノードを追加します。

      PS C:\> Add-Computer -DomainName gontoso.com -Restart -Force -Credential gontoso.com\Administrator
      

      資格情報の入力を求められます。前の手順でドメイン コントローラ VM を構成したときに設定した管理者のユーザー名とパスワードを使用します。

      マシンが再起動します。

    3. RDP を使用して、管理者アカウントで再接続します。

    4. ローカルの Administrators グループに gontoso.com\service_account を追加します。

      PS C:\> Add-LocalGroupMember -Group "Administrators" -Member "gontoso.com\service_account"
      
    5. ログオフします。

      PS C:\> logoff
      

テストの実行

  1. RDP を使用して、gontoso.com\service_account のユーザー名とパスワードで sqlclient-1 に再接続します。

  2. PowerShell で、システムの dm_os_cluster_nodes テーブルに対してテストクエリを実行します。

    PS C:\> & "c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S 10.0.0.200 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    
    NodeName                       status      status_description is_current_owner
    \------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    
    

    node-1 が SQL Server フェイルオーバー クラスタ リソースの現在のオーナーであることがわかります。

  3. Cloud Shell を使用して node-1 VM を停止して、フェイルオーバー シナリオをテストします。

    gcloud compute instances stop node-1 --zone us-central1-f
    
  4. sqlclient-1 VM で、テストクエリを再実行します。

    PS C:\> & "c:\Program Files\Microsoft SQL Server\Client SDK\ODBC\130\Tools\Binn\SQLCMD.EXE" -S 10.0.0.200 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    
    NodeName                       status      status_description is_current_owner
    \------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    
    

    node-1 が失われたにもかかわらず、クエリに成功し、node-2 がフェイルオーバー クラスタの現在のオーナーであることが示されます。

制限事項

  • 記憶域スペース ダイレクト(S2D)は Windows 2016 以降でのみサポートされています。
  • S2D では、各ディスクにデータ全体の部分的なビューのみが含まれます。したがって、永続ディスクのスナップショットを作成するだけでは、データをバックアップしきれません。代わりにネイティブ SQL バックアップを使用してください。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud Platform アカウントに課金されないようにする手順は次のとおりです。

SQL Server FCI のチュートリアルが終了したら、GCP で作成したリソースをクリーンアップして、今後料金が発生しないようにします。次のセクションで、リソースを削除または無効にする方法を説明します。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

プロジェクトを削除する手順は次のとおりです。

  1. GCP Console で [プロジェクト] ページに移動します。

    プロジェクト ページに移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

インスタンスの削除

Compute Engine インスタンスを削除するには:

  1. GCP Console の [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 次のチェックボックスをオンにします。 削除するインスタンス。
  3. インスタンスを削除するには、[削除] () をクリックします。

永続ディスクを削除する

永続ディスクを削除する手順は次のとおりです。

  1. GCP Console で [ディスク] ページに移動します。

    [ディスク] ページに移動

  2. 削除するディスクの名前の横にあるチェックボックスをオンにします。

  3. ページ上部にある [削除] ボタンをクリックします。

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Compute Engine ドキュメント