Cloud Volumes Service を使用して Google Cloud Platform で SQL Server を構成する


このチュートリアルでは、NetApp Cloud Volumes Service(CVS)for Google Cloud を使用して、サーバー メッセージ ブロック(SMB)ファイル共有ストレージにインストールされた SQL Server 用の Google Cloud 環境を構成する方法について説明します。

Microsoft SQL Server の Always On 可用性グループ(AG)を使用すると、複数の SQL Server Enterprise インスタンス間でデータベースを複製できます。通常、従来の SQL Server Always On インスタンスでは、各ノードがデータのコピーを維持する必要があり、データベースの拡張に伴いコストが急速に増加する可能性があります。たとえば、従来の SQL Server Always On デプロイでは、データベースのサイズが 10 TB の場合、各レプリカには少なくとも 10 TB のストレージをプロビジョニングする必要があります。SQL Server に Windows Server フェイルオーバー クラスタ(WSFC)をデプロイするメリットの一つは、データのコピーを 1 つだけ用意すれば、クラスタのノード間で共有できることです。そのため、WSFC のフェイルオーバー クラスタ インスタンス(FCI)で SQL Server Always On を実行すると、必要なストレージ容量を減らして、すぐにコスト削減を実現できます。

NetApp Cloud Volumes Service は、Compute Engine インスタンスと組み合わせて高パフォーマンスの SQL Server ワークロードを実行するためのクラウド ストレージ ソリューションです。Cloud Volumes Service 上の SMB 経由の SQL Server データベースは、Google Cloud インスタンスとストレージ サービス間で極めて高いレベルの復元力を実現します。SMB 透過的フェイルオーバーにより、SMB ボリュームにデータを保存してアクセスするサーバー アプリケーションへの接続を中断することなく、Cloud Volumes Service でメンテナンス オペレーションを実行できます。SMB 透過的フェイルオーバーをサポートするために、Cloud Volumes Service は SQL Server ワークロードで使用する SMB 継続的可用性(CA)共有オプションをサポートしています。これにより、単一インスタンス、Always On フェイルオーバー クラスタ(AOFC)インスタンス、Always On 可用性グループのデプロイで、パフォーマンスの向上、スケーラビリティ、コストのメリットが得られます。

このページは、Google Cloud への Microsoft SQL Server のデプロイを担当する NetApp Cloud Volumes Service と SQL Server データベースの管理者を対象としています。次のことを前提としています。

  • ソリューションのさまざまなコンポーネントに精通している
  • Google Cloud に Active Directory がすでにデプロイされている

目標

このチュートリアルは、次の目標を達成することを目的としています。

  • SQL Server 用の Cloud Volumes Service ボリュームを作成する
  • Cloud Volumes Service で SMB 経由で Always On フェイルオーバー クラスタをデプロイする

費用

このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。

料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。

始める前に

このチュートリアルでは、Google Cloud プロジェクトが必要です。新しいプロジェクトを作成することも、すでに作成済みのプロジェクトを選択することもできます。

  1. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

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

  3. ドメイン コントローラが 1 つ以上配置された Active Directory ドメイン。Active Directory ドメインは、Managed Microsoft AD を使用して作成できます。または、Compute Engine にカスタムの Active Directory 環境をデプロイして、DNS クエリをドメイン コントローラに転送するプライベート DNS 転送ゾーンを設定することも可能です。
  4. コンピュータをドメインに参加させ、RDP を使用してログインする権限を付与された Active Directory ユーザー。Managed Microsoft AD を使用している場合は、setupadmin ユーザーを使用できます。
  5. Active Directory ドメイン コントローラと Google Cloud プロジェクトおよび VPC の接続。
  6. Google Cloud プロジェクトで NetApp Cloud Volumes API が有効になっていることを確認します。
  7. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

プロジェクトとネットワークを準備する

SQL Server Always On 可用性グループをデプロイするために Google Cloud プロジェクトと Virtual Private Cloud(VPC)を準備するには、次の操作を行います。

  1. Google Cloud コンソールで、[Cloud Shell をアクティブにする] Cloud Shell をアクティブにします。 ボタンをクリックして Cloud Shell を開きます。

    Google Cloud コンソールに移動

  2. 次の変数を初期化します。

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    次のように置き換えます。

    • VPC_NAME: VPC の名前
    • SUBNET_NAME: サブネットの名前
  3. デフォルトのプロジェクト ID を設定します。

    gcloud config set project PROJECT_ID
    

    PROJECT_ID は、Google Cloud プロジェクトの ID に置き換えます。

  4. デフォルトのリージョンを設定します。

    gcloud config set compute/region REGION
    

    REGION は、デプロイするリージョンの ID に置き換えます。

  5. デフォルト ゾーンを設定します。

    gcloud config set compute/zone ZONE
    

    ZONE は、デプロイするゾーンの ID に置き換えます。

Cloud Volumes Service で SQL Server 用の SMB を作成する

Cloud Volumes Service ボリュームを作成するには、Active Directory ポリシー、プライベート サービス アクセス、ストレージ プール、ストレージ ボリュームを作成する必要があります。

  1. 新しいプライベート サービス アクセスを作成するには、次の操作を行います。

    1. Google Cloud コンソールで、[VPC ネットワーク] ページに移動します。

      [VPC ネットワーク] に移動

    2. 使用する VPC ネットワーク名をクリックします。

    3. [プライベート サービス アクセス] タブをクリックし、[IP 範囲を割り振る] をクリックします。

      1. 内部 IP 範囲の名前を入力します。
      2. [自動] を選択し、[プレフィックスの長さ] に 24 を入力します。
      3. [割り当て] ボタンをクリックします。
    4. [サービスへのプライベート接続] タブをクリックして、次の操作を行います。

      1. [接続の作成] ボタンをクリックします。
      2. [割り当て] プルダウンで、以前に割り当てられた IP 範囲を選択します。
      3. [接続] ボタンをクリックします。
  2. 新しい Active Directory ポリシーを作成するには、次の操作を行います。

    1. Google Cloud コンソールで、[NetApp Volumes] ページに移動します。

      [NetApp Volumes] に移動

    2. ナビゲーション パネルの [ポリシー] セクションで、[Active Directory ポリシー] をクリックします。

    3. [作成] ボタンをクリックします。

    4. Active Directory ポリシーの名前を指定します。

    5. [リージョン] で、SQL Server インスタンスがホストされる場所に最も近い利用可能なリージョンを選択します。

    6. [Active Directory 接続の詳細] セクションで、次の情報を入力します。

      1. ドメインの名前
      2. Active Directory DNS サーバー アドレス
      3. Active Directory サイト名
      4. 組織部門の名前
      5. NetBIOS 名の接頭辞
    7. [Active Directory の認証情報] セクションで、指定したドメインにコンピュータを参加させることができるユーザーの認証情報を指定します。

    8. [SMB 設定] セクションで、該当する場合は [バックアップ オペレーター] と [セキュリティ特権ユーザー] を指定します。

    9. [作成] をクリックして、新しい Active Directory ポリシーの作成を完了します。

  3. 新しいストレージ プールを作成するために、次の手順を行います。

    1. ナビゲーション パネルで、[ストレージ] セクションの [ストレージ プール] をクリックします。
    2. [作成] ボタンをクリックします。
    3. [名前] に、ノードプールの名前を入力します。
    4. [ロケーション] で、SQL Server インスタンスがホストされる場所に最も近い利用可能なリージョンを選択します。
    5. 想定されるストレージ パフォーマンスを満たす [サービスレベル] を選択します。
    6. ストレージ プールの [容量] を入力します。ストレージ プールの容量は、プール内のすべてのボリュームに割り当てることができる合計ストレージ容量を定義します。
    7. [ネットワーク] リストで、次のように、SQL Server インスタンスがホストされる VPC を選択します。
      1. [接続を設定] ボタンをクリックします。
      2. 前の手順で予約した IP アドレス範囲を選択し、[続行] をクリックします。
      3. [接続の作成] ボタンをクリックします。
    8. [Active Directory ポリシー] セクションで、[ストレージ プールに Active Directory ポリシーを割り当てる] を選択し、前の手順で作成した Active Directory ポリシーを選択します。
    9. [作成] ボタンをクリックして、新しいストレージ プールの作成プロセスを完了します。
  4. 新しいストレージ ボリュームを作成するために、次の手順を行います。

    1. ナビゲーション パネルで、[ストレージ] セクションの [ボリューム] をクリックします。
    2. [作成] ボタンをクリックします。
    3. ストレージ ボリュームの名前を指定します。
    4. [ストレージ プールの詳細] で、[ストレージ プールを選択] をクリックして、前の手順で作成したストレージ プールを選択します。
    5. [ボリュームの詳細] セクションで、次の情報を指定します。
      1. 共有名
      2. ボリューム容量
    6. [大容量の構成] セクションで、SMB プロトコルを選択します。
    7. [選択したプロトコルの構成] セクションで、[SQL Server、FSLogix の CA 共有のサポートを有効にする] を選択します。
    8. [作成] ボタンをクリックして、新しいストレージ ボリュームの作成プロセスを完了します。

ファイアウォール ルールを作成する

クライアントに SQL Server への接続、Windows Server Failover Cluster(WSFC)ノード間の通信を許可し、ロードバランサがヘルスチェックを実行できるようにするには、ファイアウォール ルールをいくつか作成する必要があります。ネットワーク タグを使用すると、こうしたファイアウォール ルールを簡単に作成できます。

  • 使用する WSFC には、wsfc-node タグが付けられます。
  • 監視サーバーを含め、すべてのサーバーに wsfc タグが付けられます。

これらのネットワーク タグを使用するファイアウォール ルールを作成するには、次の手順を行います。

  1. 既存の Cloud Shell セッションに戻ります。
  2. WSFC ノードのファイアウォール ルールを作成します。

    SUBNET_CIDR=$(gcloud compute networks subnets describe $SUBNET_NAME --format=value\('ipCidrRange'\))
    
    gcloud compute firewall-rules create allow-all-between-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp,udp,icmp \
      --enable-logging \
      --source-tags=wsfc \
      --target-tags=wsfc \
      --network=$VPC_NAME \
      --priority 10000
    
    gcloud compute firewall-rules create allow-sql-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp:1433 \
      --enable-logging \
      --source-ranges=$SUBNET_CIDR \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    
  3. Google Cloud プローバーの IP 範囲からのヘルスチェックを許可するファイアウォール ルールを作成します。

    gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \
      --direction=INGRESS \
      --action=allow \
      --rules=tcp \
      --source-ranges=130.211.0.0/22,35.191.0.0/16 \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    

VM インスタンスを作成する

フェイルオーバー クラスタ用に 3 つの VM インスタンスをデプロイします。

Node-1 は SQL Server データベースのプライマリ レプリカをホストし、node-2 はセカンダリ レプリカをホストします。2 つの VM インスタンスは、次の条件を満たしている必要があります。

  • 内部パススルー ネットワーク ロードバランサからアクセスできるように、同じリージョンに配置されている
  • SQL Server プレミアム イメージを使用して WSFC と SQL Server 2022 がインストールされている

  • Compute Engine の WSFC サポートが有効になっている

タイブレークのための投票を行ってフェイルオーバー シナリオのクォーラムを達成するには、ファイル共有監視として機能する 3 つ目の VM インスタンス node-3 をデプロイします。

  1. 既存の Cloud Shell セッションに戻ります。
  2. WSFC ノード用のスクリプトを作成します。このスクリプトは、必要な Windows 機能をインストールし、WSFC と SQL Server 用のファイアウォール ルールを作成します。

    cat << "EOF" > specialize-node.ps1
    
    $ErrorActionPreference = "stop"
    
    # Install required Windows features
    Install-WindowsFeature Failover-Clustering -IncludeManagementTools
    Install-WindowsFeature RSAT-AD-PowerShell
    
    # Open firewall for WSFC
    netsh advfirewall firewall add rule name="Allow SQL Server health check" dir=in action=allow protocol=TCP localport=59997
    
    # Open firewall for SQL Server
    netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433
    
    # Open firewall for SQL Server replication
    netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022
    
    EOF
    
  3. VM インスタンスを作成します。WSFC ノードとして機能する 2 つの VM で、追加のデータディスクをアタッチして、メタデータキー enable-wsfctrue に設定し、Windows Server フェイルオーバー クラスタリングを有効にします。

    REGION=$(gcloud config get-value compute/region)
    PD_SIZE=200
    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --zone $REGION-a \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-1" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --zone $REGION-b \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-2" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --zone $REGION-c \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family=windows-2022 \
      --image-project=windows-cloud \
      --tags wsfc \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
    
  4. 3 つの VM インスタンスを Active Directory に参加させるには、3 つの各 VM インスタンスに対して次の操作を行います。

    1. シリアルポートの出力を表示して、VM の初期化プロセスをモニタリングします。

      gcloud compute instances tail-serial-port-output NAME
      

      NAME は VM インスタンスの名前に置き換えます。

      Instance setup finished という出力が表示されるまで数分待ちます。表示されたら Ctrl+C キーを押します。この時点で、VM インスタンスが使用できるようになります。

    2. VM インスタンスにユーザー名とパスワードを作成します。

    3. リモート デスクトップを使用して VM に接続し、前のステップで作成したユーザー名とパスワードを使用してログインします。

    4. [スタート] ボタンを右クリックするか Win + X を押して、[Windows PowerShell(管理者)] をクリックします。

    5. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。

    6. VM インスタンスを Active Directory ドメインに追加して再起動します。

      Add-Computer -Domain DOMAIN -Restart
      

      DOMAIN は、Active Directory ドメインの DNS 名に置き換えます。

      VM インスタンスが再起動するまで待ちます。

ストレージの権限を割り当てる

クラウド ボリューム ストレージに権限を割り当てるには、次の手順を行います。

  1. Google Cloud コンソールで、Cloud Volumes を選択し、先ほど作成したボリュームを選択します。

    Cloud Volume

  2. リモート デスクトップを使用して、node-1 に接続します。ドメイン ユーザー アカウントでログインします。

  3. Windows エクスプローラーを開き、[PC] を右クリックします。

  4. [ネットワーク ドライブの割り当て] を選択します。

  5. コピーした SMB パスをフォルダに貼り付けます。

    Cloud Volume

  6. ログイン時に [再接続] オプションを無効にします。

  7. [完了] をクリックします。

  8. 割り当てられたネットワーク ドライブを右クリックして、[プロパティ] を選択します。

    Cloud Volume

  9. [セキュリティ] タブで [編集] をクリックします。

  10. すべてのユーザーを削除し、SQL Server インストーラと SQL Server サービス アカウントを追加してフルコントロール権限を付与します。

    Cloud Volume

  11. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。

クラスタの IP アドレスを予約する

VPC で 2 つの静的 IP アドレスを予約します。1 つは WSFC クラスタの IP アドレス用、もう 1 つは内部ロードバランサ用です。

  1. 内部ロードバランサ用に静的 IP を予約し、そのアドレスを LOADBALANCER_ADDRESS という新しい環境変数でキャプチャします。

    gcloud compute addresses create wsfc \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --subnet $SUBNET_NAME
    
    LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --format=value\(address\)) && \
    echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
    

    後で必要になるため、IP アドレスをメモします。

  2. クラスタ IP として使用する別の静的 IP アドレスを予約します。

    gcloud compute addresses create wsfc-cluster \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) && \
    CLUSTER_ADDRESS=$(gcloud compute addresses describe wsfc-cluster \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --format=value\(address\)) && \
    echo "Cluster IP: $CLUSTER_ADDRESS"
    

    後で必要になるため、IP アドレスをメモします。

これで、プロジェクトと VPC を WSFC と SQL Server にデプロイする準備が整いました。

監視ファイル共有を作成する

witness をファイル共有監視として使用できるように準備するには、ファイル共有を作成し、ご自身と 2 つの WSFC ノードにファイル共有へのアクセス権を付与します。

  1. リモート デスクトップを使用して、witness に接続します。ドメイン ユーザー アカウントでログインします。
  2. [スタート] ボタンを右クリックするか Win + X を押して、[Windows PowerShell(管理者)] をクリックします。
  3. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。
  4. 監視フォルダを作成して共有します。

    New-Item "C:\QWitness" –type directory
    
    icacls C:\QWitness\ /grant 'node-1$:(OI)(CI)(M)'
    icacls C:\QWitness\ /grant 'node-2$:(OI)(CI)(M)'
    
    New-SmbShare `
      -Name QWitness `
      -Path "C:\QWitness" `
      -Description "SQL File Share Witness" `
      -FullAccess  $env:username,node-1$,node-2$
    

フェイルオーバー クラスタのデプロイ

次に、VM インスタンスを使用して WSFC と SQL Server をデプロイします。

WSFC をデプロイする

ここでは、フェイルオーバー クラスタを作成します。

  1. リモート デスクトップを使用して、node-1 に接続します。ドメイン ユーザー アカウントでログインします。
  2. [スタート] ボタンを右クリックするか Win + X を押して、[Windows PowerShell(管理者)] をクリックします。
  3. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。
  4. 新しいクラスタの作成

    New-Cluster `
      -Name windows-fci `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

    CLUSTER_ADDRESS は、前に作成したクラスタ IP アドレスに置き換えます。

  5. witness の PowerShell セッションに戻り、クラスタの仮想コンピュータ オブジェクトにファイル共有へのアクセス権限を付与します。

    icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'windows-fci$' `
      -AccessRight Full `
      -Force
    
  6. node-1 の PowerShell セッションに戻り、witness のファイル共有をクラスタ クォーラムとして使用するようにクラスタを構成します。

    Set-ClusterQuorum -FileShareWitness \\witness\QWitness
    
  7. クラスタが正常に作成されたことを確認します。

    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).
    

    cluadmin.msc を実行してフェイルオーバー クラスタ マネージャー MMC スナップインを起動し、クラスタの正常性を確認することもできます。

  8. Managed AD を使用している場合は、WSFC が使用するコンピュータ アカウントを Cloud Service Domain Join Accounts グループに追加して、VM インスタンスをドメインに参加させることができるようにします。

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members windows-fci$
    

デフォルトの SQL Server インストールを削除する

2 つのノードからデフォルトの SQL Server インストールを削除し、新しい FCI 構成に置き換えます。

node-1node-2 の 2 つの WSFC ノードそれぞれに、次の手順を行います。

  1. [スタート] ボタンを右クリックするか Win + X を押して、[Windows PowerShell(管理者)] をクリックします。
  2. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。
  3. デフォルトの SQL Server インスタンスを削除します。

    C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
    
  4. Microsoft OLE ドライバを削除します。

    Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
    
  5. Microsoft ODBC ドライバを削除します。

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. コンピュータを再起動します。

    Restart-Computer
    
  7. VM インスタンスが再起動するまで待ちます。

SQL Server FCI をインストールする

新しい FCI 構成をインストールする前に、node-1 がクラスタのアクティブ ノードであることを確認します。

  1. リモート デスクトップを使用して node-1 に再接続し、ドメイン ユーザーを使用してログインします。
  2. [スタート] ボタンを右クリックするか Win + X を押して、[実行] を選択します。
  3. cluadmin.msc」と入力して [OK] を選択します。
  4. 左側のウィンドウ ペインで、[Failover Cluster Manager] > [windows-fci] に移動し、次の操作を行います。

    1. [Current host server] が「node-1」に設定されていることを確認します。

    2. [Current host server] が「node-2」に設定されている場合は、左側のウィンドウ ペインで [windows-fci] を右クリックして、[More actions] > [Move core cluster resources] > [Select node…] > [node-1] を選択し、[OK] をクリックします。

node-1 で新しい SQL Server フェイルオーバー クラスタ インストールを作成します。

  1. [スタート] ボタンを右クリックするか Win + X を押して、[Windows PowerShell(管理者)] をクリックします。
  2. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。

  3. SQL Server の設定を開始します。

    & c:\sql_server_install\setup.exe
    
  4. 左側のメニューで [Installation] を選択します。

  5. [New SQL Server failover cluster installation] を選択します。

  6. [Edition] ページでプロダクトキーを入力し、ソフトウェア ライセンスの種類を選択して、[Next] をクリックします。

  7. [License Terms] ページで、規約を確認し、同意する場合は [Next] をクリックします。

  8. [Microsoft Update] ページで、[Next] をクリックしてインストールを開始します。

  9. [Install Failover Cluster Rules] ページに、MSCS クラスタの確認の警告Windows ファイアウォールの警告が表示されます。この警告は無視して [Next] をクリックします。

  10. [Feature Selection] ページで [Database Engine Services] を選択し、[Next] をクリックします。

  11. [Instance Configuration] ページで、ネットワーク名として「sql」を入力し、[Next] をクリックします。

  12. [Cluster Resource Group] ページで、要件の警告を無視して [Next] をクリックします。

  13. [Cluster Disk Selection] ページで [Next] をクリックします。

  14. [Cluster Network Configuration] ページで次の設定を構成し、[Next] をクリックします。

    • DHCP: 消去します。
    • IP アドレス: 内部ロードバランサの IP アドレスを入力します。
  15. [Server configuration] ページで、SQL Server エージェントSQL Server データベース エンジンの両方について、次の設定を構成します。

    • アカウント名: DOMAIN\sql_serverDOMAIN は Active Directory ドメインの NetBIOS 名です。
    • パスワード: sql_server ユーザーのパスワードを入力します。
  16. [Collation] タブを選択し、使用する照合を選択します。[Next] をクリックします。

  17. [Database Engine Configuration] ページで、[Add current user] を選択して現在のユーザーを SQL Server 管理者として指定します。[Data Directories] タブの [Data root directory] フィールドに SMB パスを入力し、[Next] を選択します。SQL Server サービス アカウントにフル コントロール共有権限があることを確認するよう求めるメッセージ ウィンドウが表示されます。続行するには [Yes] を選択します。

    Cloud Volume

  18. [Ready to Install] ページで設定内容を確認し、[Install] を選択します。

  19. インストールが完了したら、[Close] を選択します。

次に、node-2 を SQL Server フェイルオーバー クラスタに追加します。

  1. リモート デスクトップを使用して node-2 に接続し、ドメイン ユーザーを使用してログインします。
  2. [スタート] ボタンを右クリックするか Win + X を押して、[Windows PowerShell(管理者)] をクリックします。
  3. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。
  4. SQL Server の設定を開始します。

    & c:\sql_server_install\setup.exe
    
  5. 左側のメニューで [Installation] を選択します。

  6. [Add node to a SQL Server failover cluster] を選択します。

  7. インストール ウィザードの手順に沿って、[Service Accounts] ページが表示されるまでデフォルトの設定を受け入れます。

  8. [Service Accounts] ページで、以前に作成した SQL Server エージェントSQL Server データベース エンジンのパスワードを入力します。[Next] を選択します。

  9. [Ready to Install] ページで設定内容を確認し、[Install] を選択します。

  10. インストールが完了したら、[Close] を選択します。

ヘルスチェックを構成する

最後の手順として、内部ロードバランサで使用可能なヘルスチェック エンドポイントを公開するようにクラスタを構成します。

  1. node-2 の PowerShell セッションに戻ります。
  2. ロードバランサの IP アドレスを使用して変数を初期化します。

    $LoadBalancerIP = 'IP_ADDRESS'
    

    IP_ADDRESS は、前に予約した wsfc アドレスの IP アドレスに置き換えます。

  3. ヘルスチェック サービスに応答するようにフェイルオーバー クラスタを構成します。

    $SqlGroup = Get-ClusterGroup |
      Where-Object {$_.Name.StartsWith("SQL Server")}
    $SqlIpAddress = Get-ClusterResource |
      Where-Object {$_.Name.StartsWith("SQL IP Address")}
    
    $SqlIpAddress | Set-ClusterParameter -Multiple @{
     'Address'=$LoadBalancerIP;
     'ProbePort'= 59997;
     'SubnetMask'='255.255.255.255';
     'Network'= (Get-ClusterNetwork).Name;
     'EnableDhcp'=0; }
    
  4. クラスタ リソースを再起動します。

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. クラスタ グループを再起動します。

    $SqlGroup | Stop-ClusterGroup
    $SqlGroup | Start-ClusterGroup
    

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

SQL Server クライアントに単一のエンドポイントを指定するため、内部ロードバランサをデプロイします。ロードバランサはヘルスチェックを使用して、トラフィックが WSFC のアクティブ ノードに転送されるかどうかを確認します。

  1. 既存の Cloud Shell セッションに戻ります。
  2. 非マネージド インスタンス グループを作成し、2 つのノードをグループに追加します。

    REGION=$(gcloud config get-value compute/region)
    
    gcloud compute instance-groups unmanaged create wsfc-group-a \
      --zone $REGION-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-a \ 
      --zone $REGION-a --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-b \
      --zone $REGION-b
    gcloud compute instance-groups unmanaged add-instances wsfc-group-b \ 
    --zone $REGION-b --instances node-2
    
  3. ロードバランサがアクティブ ノードの判別に使用できるヘルスチェックを作成します。

    gcloud compute health-checks create tcp wsfc-healthcheck \
      --check-interval="2s" \
      --healthy-threshold=1 \
      --unhealthy-threshold=2 \
      --port=59997 \
      --timeout="1s"
    

    ヘルスチェック プローブ ポート 59997 は、以前に WSFC クラスタの IP アドレスに ProbePort として構成したポートです。

  4. バックエンド サービスを作成し、インスタンス グループを追加します。

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $REGION \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-a \
      --instance-group-zone $REGION-a \
      --region $REGION
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-b \
      --instance-group-zone $REGION-b \
      --region $REGION
    
  5. 内部ロードバランサを作成します。

    gcloud compute forwarding-rules create wsfc-sql \
      --load-balancing-scheme internal \
      --address $LOADBALANCER_ADDRESS \
      --ports 1433 \
      --network $VPC_NAME \
      --subnet $SUBNET_NAME \
      --region $REGION \
      --backend-service wsfc-backend
    

フェイルオーバー クラスタのテスト

フェイルオーバー クラスタのインストールは完了しましたが、クラスタが正常に機能するかどうかをテストする必要があります。

クライアントを準備する

フェイルオーバー クラスタへの接続に使用できる新しい VM インスタンスを作成します。

  1. 既存の Cloud Shell セッションに戻ります。
  2. 新しい VM インスタンスを作成します。

    gcloud compute instances create sqlclient \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2022-win-2022 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. シリアルポートの出力を表示して、VM の初期化プロセスをモニタリングします。

    gcloud compute instances tail-serial-port-output sqlclient
    

    インスタンスの設定が完了したという内容の出力が表示されるまで数分待ちます。表示されたら Ctrl+C キーを押します。この時点で、VM インスタンスが使用できるようになります。

  4. VM インスタンスにユーザー名とパスワードを作成します。

  5. リモート デスクトップを使用して VM に接続し、前のステップで作成したユーザー名とパスワードを使用してログインします。

  6. [スタート] ボタンを右クリックするか Win + X を押して、[Windows PowerShell(管理者)] をクリックします。

  7. 特権昇格を確認するプロンプトが表示されたら [はい] をクリックします。

  8. VM インスタンスを Active Directory ドメインに参加させます。

    Add-Computer -Domain DOMAIN
    

    DOMAIN は、Active Directory ドメインの DNS 名に置き換えます。

  9. VM インスタンスを再起動します。

    Restart-Computer
    

    VM インスタンスが再起動するまで待ちます。

テストを実行する

sqlclient VM を使用して、フェイルオーバー クラスタに接続できることをテストし、フェイルオーバーが正しく機能していることを確認します。

  1. リモート デスクトップを使用して sqlclient に接続し、ドメイン ユーザーを使用してログインします。
  2. [スタート] ボタンを右クリックするか Win + X を押して、[Windows PowerShell] をクリックします。
  3. ネットワーク名 sql を使用して SQL Server クラスタに接続し、dm_os_cluster_nodes テーブルに対してクエリを行います。

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S sql -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 フェイルオーバー クラスタ リソースの現在のオーナーであることがわかります。

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

    gcloud compute instances stop node-1
    
  5. クエリを繰り返します。

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S sql -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 がフェイルオーバー クラスタの現在のオーナーであることが示されます。

クリーンアップ

チュートリアルが終了したら、作成したリソースをクリーンアップして、割り当ての使用を停止し、課金されないようにできます。次のセクションで、リソースを削除または無効にする方法を説明します。

プロジェクトの削除

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

プロジェクトを削除するには、次のようにします。

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.