配置 SQL Server 故障转移集群实例

如果需要保证 Microsoft SQL Server 在 Compute Engine 上的高可用性和冗余,您可以使用存储空间直通 (S2D) 配置 AlwaysOn 故障转移集群实例 (FCI)。

不间断 FCI 支持在多个 Windows Server 故障转移集群 (WSFC) 节点上安装单个 Microsoft SQL Server 实例。WSFC 中只有一个节点主动托管 SQL 实例。如果发生故障转移,WSFC 服务会将实例资源的所有权转交给指定的故障转移节点。

S2D 提供了基于软件的虚拟 SAN,可以使用 Compute Engine 虚拟机数据磁盘来存储 SQL 数据库。

本教程展示了一种示例设置。按照本教程中的说明逐步操作之后,您应该可以在 Compute Engine 上创建一个采用 S2D 的不间断 SQL Server FCI。

目标

  • 使用 Windows 域控制器设置 VPC 网络。
  • 创建两个 Windows SQL Server 虚拟机实例,充当集群节点。
  • 设置故障转移集群,包括集群存储。
  • 设置内部负载平衡器,以将流量导向活动节点。
  • 测试故障转移操作,以验证集群是否正常工作。

费用

本教程使用的 Compute Engine 映像包含 Windows Server 许可。这意味着如果保持虚拟机处于运行状态,则运行本教程的费用就非常高。最好是停止那些您没有使用的虚拟机。

如果要估算完成本教程的费用,请参阅价格计算器

准备工作

  1. 登录您的 Google 帐号。

    如果您还没有 Google 帐号,请注册新帐号

  2. 选择或创建 Google Cloud Platform 项目。

    转到“管理资源”页面

  3. 确保您的 Google Cloud Platform 项目已启用结算功能。

    了解如何启用结算功能

  4. 启用Compute Engine API。

    启用 API

  5. 启动一个 Cloud Shell 实例,您可以运行本教程中的所有 gcloud 命令。
    打开 Cloud Shell
  6. (可选)查看并请求增加 SSD 永久性磁盘配额。为完成本教程中的示例,您需要 500 GB 的磁盘空间。

概览

此示例设置包括以下组件和 IP 地址:

  • 自定义 VPC 网络:10.0.0.0/24
  • Active Directory 域控制器:10.0.0.3
  • 两个带有附加 S2D 存储的 WSFC 节点
    • node-110.0.0.4
    • node-210.0.0.5
  • Windows Server 故障转移集群(用于集群管理):10.0.0.201
  • 内部负载平衡器和 SQL FCI 侦听器(用于 SQL 连接):10.0.0.200

负载平衡器会侦听请求。它能通过运行状况检查获悉哪个 SQL Server 节点处于活动状态,并将流量引导到活动的节点。如果活动节点发生故障,系统就会激活 FCI 故障转移节点。运行状况检查程序接收运行状况良好的节点发出的信号,负载平衡器则相应地重定向流量。存储在 S2D 卷上的数据库将保持可用。

显示故障转移集群中两个 Compute Engine 虚拟机的架构图

设置 VPC 网络

虽然使用现有网络也可以顺利完成本教程的学习,但最佳做法是将系统隔离到具有限制流量的防火墙规则的不同网络和子网中。

  1. 创建自定义模式 VPC 网络,使您可以完全控制其子网和 IP 范围。

    gcloud compute networks create wsfcnet --subnet-mode custom
    
  2. 添加一个子网 wsfc-subnet1,本教程中使用的所有虚拟机都会包含在此子网中。

    gcloud compute networks subnets create wsfc-subnet1 \
        --network wsfcnet \
        --region us-central1 \
        --range 10.0.0.0/24
    
  3. 创建防火墙规则,以允许此网络中虚拟机之间的内部流量。

    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 传入流量。请注意,这会对所有 IP 地址 (0.0.0.0/0) 开放 tcp:3389 端口;在生产环境中,您应该仅允许获得批准的 IP 进行访问。

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

创建和配置 Windows 域控制器

Active Directory 域用于本教程所需的域名服务、Windows 故障转移集群和存储空间直通功能。将 AD 域控制器置于同一个 VPC 中并非必要条件,只是根据本教程的目的而进行的简化。

本教程中使用的网域是 gontoso.com。域控制器虚拟机名称是 dc-windows(默认情况下,Windows 计算机名称与虚拟机名称匹配,即 dc-windows)。虚拟机在我们的子网 10.0.0.3 中创建。

  1. 创建一个虚拟机以作为域控制器。虽然您可以指定所需的任何机器类型和 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. 生成密码,以便您使用本地帐号连接到域控制器虚拟机。请记好用户名和密码,以备将来使用。

  3. 使用 RDP,通过您的本地帐号用户名和密码连接到域控制器虚拟机。

  4. 在虚拟机上,以管理员身份运行 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 Server 服务帐号,您将要将此帐号用作 SQL 代理和 SQL 管理员帐号。

    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 以管理员帐号和密码重新连接到域控制器虚拟机。

  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. 虚拟机重新启动后,使用 RDP 重新连接到虚拟机。请使用与您的原始凭据匹配的本地帐号凭据。

创建集群的虚拟机和数据磁盘

创建两个带有额外数据磁盘的 SQL Server 虚拟机。一个虚拟机用作活动 FCI 节点,另一个虚拟机用作故障转移节点。额外的磁盘用作 S2D 卷。

各 SQL Server 虚拟机都必须满足以下要求:

  • 在您先前定义的子网 wsfc-subnet1 中创建。
  • 具有在子网范围 10.0.0.0/24 内的专用 IP。
  • 已安装 Windows Server 故障转移集群功能。
  • 已启用可以监控故障转移集群中活动节点的 Compute Engine WSFC 代理
  1. 通过 Cloud Shell 创建两个带有额外数据磁盘的 SQL Server 虚拟机。这些磁盘将用作 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

配置集群虚拟机的网络

  1. 配置第一个节点。

    1. node-1 生成密码。请记好用户名和密码,以备将来使用。

    2. 使用 RDP 连接到 node-1

    3. 打开提升权限的 PowerShell。

    4. 添加防火墙规则,以便为 Compute Engine WSFC 代理打开一个端口。默认情况下,Compute Engine WSFC 代理侦听 tcp:59998 端口。您可以将其更改为其他端口,但必须与稍后定义的运行状况检查程序端口相匹配。运行状况检查过程会定期对每个集群节点上的代理执行 ping 操作,以确定其可用性。

      PS C:\> netsh advfirewall firewall add rule name="Open Compute Engine WSFC agent port for Health Check" dir=in action=allow protocol=TCP localport=59998
      
    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
      

      您将与虚拟机断开连接。使用 RDP 通过重本地用户名和密码重新连接。

    8. 将节点添加到先前创建的 Active Directory 域。

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

      系统会提示您输入凭据。使用在先前步骤中配置域控制器虚拟机时设置的管理员用户名和密码。

      此时机器会重新启动。

  2. 配置第二个节点。

    1. node-2 生成密码。请记好用户名和密码,以备将来使用。

    2. 使用 RDP 连接到 node-2

    3. 打开提升权限的 PowerShell。

    4. 添加防火墙规则,以便为 Compute Engine WSFC 代理打开一个端口。此端口必须与稍后定义的运行状况检查程序端口相匹配。

      PS C:\> netsh advfirewall firewall add rule name="Open Compute Engine WSFC agent port for Health Check" dir=in action=allow protocol=TCP localport=59998
      
    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
      

      您将与虚拟机断开连接。使用 RDP 通过重本地用户名和密码重新连接。

    8. 将节点添加到先前创建的 Active Directory 域。

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

      系统会提示您输入凭据。使用在先前步骤中配置域控制器虚拟机时设置的管理员用户名和密码。

      此时机器会重新启动。

创建文件共享见证

为了在故障转移情景中提供决定性投票权,实现仲裁,您需要创建一个充当见证者的文件共享。在本教程中,您将在域控制器虚拟机上创建文件共享见证。在生产环境中,您可以在其他位置创建此见证。

  1. 使用 RDP,通过管理员帐号连接到域控制器虚拟机 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. 创建两个实例组,并向每个组添加一个 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=59998 \
        --request=10.0.0.200 \
        --timeout="1s" \
        --response=1
    
  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. 创建一个后端服务,并添加两个后端实例组。

    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,以 gontoso.com\Administrator 身份重新连接到 node-1。您可能需要删除先前的证书才能重新连接。

  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
    
    

    您还可以通过运行 cluadmin.msc 来启动 Cluster Admin GUI,以查看集群的运行状况。

启用存储空间直通

  1. 使用 RDP,连接到 node-1node-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
    
    

    在系统提示您确认时,接受默认值。您会看到一些警告(可以忽略)。

    • (可选)如果您希望提升磁盘性能,则除了标准 SSD 永久性磁盘外,还可以在集群虚拟机中添加本地 SSD。本地 SSD 可以充当 S2D 缓存层。使容量驱动器(本例中使用的是 SSD 永久性磁盘)的数量是本地 SSD 数量的倍数。运行以下命令以使用缓存启用 S2D:

      PS C:\> Enable-ClusterS2D -CacheDeviceModel "EphemeralDisk"
      
    • 您还可以启用集群共享卷 (CSV) 内存缓存,以便提高读取吞吐量:

      PS C:\> (Get-Cluster).BlockCacheSize = 2048
      
  3. 由于 S2D 需要在每个卷中使用 2GB 空间进行管理,而每个节点有 4 个 50GB 的卷,因此请定义存储池并将其大小设置为 192GB。

    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,以 gontoso.com\Administrator 身份连接到 node-1

    2. 打开提升权限的 PowerShell。

    3. 移除默认的 SQL Server 实例。

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. 重新启动虚拟机。

      PS C:\> shutdown /r
      
  2. 从第二个节点中移除默认的 SQL Server 实例。稍后您将使用新的 FCI 配置代替。

    1. 使用 RDP,以 gontoso.com\Administrator 身份登录 node-2

    2. 打开提升权限的 PowerShell。

    3. 移除默认的 SQL Server 实例。

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. 重新启动虚拟机。

      PS C:\> shutdown /r
      
  3. 在第一个节点上使用 FCI 重新安装 SQL Server。

    1. 使用 RDP,以 gontoso\Administrator 身份登录 node-1

    2. 打开文本编辑器,例如记事本。

    3. fci_install_master_node.ini 配置文件的内容复制到 node-1 上的文本编辑器中。换行符可能无法得到保留,但配置文件仍然有效。

    4. 使用您的 gontoso.com\service_account 密码更新配置文件。必须在两个位置更新密码:AGTSVCPASSWORDSQLSVCPASSWORD。搜索 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. 在第二个节点上使用 FCI 重新安装 SQL Server。

    1. 使用 RDP,以 gontoso\Administrator 身份登录 node-2

    2. 打开文本编辑器,例如记事本。

    3. fci_add_node.ini 配置文件的内容复制到 node-1 上的文本编辑器中。

    4. 使用您的 gontoso.com\service_account 密码更新配置文件。必须在两个位置更新密码:AGTSVCPASSWORDSQLSVCPASSWORD。搜索 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. 从 Cloud Shell 中,创建一个新虚拟机,作为 SQL 客户端。

    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
      

      系统会提示您输入凭据。使用在先前步骤中配置域控制器虚拟机时设置的管理员用户名和密码。

      此时机器会重新启动。

    3. 使用 RDP,通过管理员帐号重新连接。

    4. 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 虚拟机以测试故障转移情景。

    gcloud compute instances stop node-1 --zone us-central1-f
    
  4. sqlclient-1 虚拟机上,再次运行测试查询。

    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 现在是故障转移集群的当前所有者。

清理

为避免因本教程中使用的资源而导致我们向您的 Google Cloud Platform 帐号收取费用,请执行以下操作:

完成 SQL Server FCI 教程之后,您可以清理在 Google Cloud Platform 上创建的资源,避免日后再为这些资源支付费用。以下部分介绍了如何删除或关闭这些资源。

删除项目

最简单的避免支付费用的方法是删除您为本教程创建的项目。

要删除项目,请运行以下命令:

  1. 在 GCP Console 中,转到“项目”页面。

    转到“项目”页面

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

删除实例

要删除 Compute Engine 实例,请运行以下命令:

  1. 在 GCP Console 中,转到“虚拟机实例”页面。

    转到“虚拟机实例”页面

  2. 点击 要删除的实例旁边的复选框。
  3. 点击页面顶部的删除按钮以删除实例。

删除永久性磁盘

要删除永久性磁盘,请执行以下操作:

  1. 在 GCP Console 中,转到“磁盘”页面。

    转到“磁盘”页面

  2. 选中要删除的磁盘名称旁的复选框。

  3. 点击页面顶部的删除按钮。

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
Compute Engine 文档