Configura instancias de clústeres de conmutación por error de SQL Server

Si necesitas alta disponibilidad y redundancia para tu SQL Server de Microsoft en Compute Engine, puedes configurar instancias de clústeres de conmutación por error (FCI) de Always On con espacios de almacenamiento directo (S2D).

Las FCI de Always On proporcionan una instancia única de SQL Server de Microsoft que se instala en los nodos del clústeres de conmutación por error de Windows Server (WSFC). Solo un nodo en el WSFC aloja activamente la instancia de SQL. En el caso de una conmutación por error, el servicio del WSFC transfiere la propiedad de los recursos de la instancia a un nodo de conmutación por error designado.

El S2D proporciona una SAN virtual basada en software que puede usar discos de datos de VM de Compute Engine para almacenar la base de datos de SQL.

En este instructivo, se proporciona un ejemplo de configuración. Al final de este instructivo, habrás creado FCI de Always On de SQL Server con S2D en Compute Engine.

Objetivos

  • Configurar una red de VPC con un controlador de dominio de Windows
  • Crear dos instancias de VM de Windows SQL Server para que actúen como nodos del clúster
  • Configurar el clúster de conmutación por error, incluido el almacenamiento en clúster
  • Configurar un balanceador de cargas interno para dirigir el tráfico al nodo activo
  • Probar la operación de conmutación por error para verificar que el clúster esté funcionando

Costos

En este instructivo, se utilizan imágenes de Compute Engine que incluyen licencias de Windows Server. Esto significa que el costo de ejecutar este instructivo puede ser significativo si dejas las VM en ejecución. Es una buena idea detener las VM cuando no las estés utilizando.

Consulta la Calculadora de precios a fin de obtener una estimación de los costos para completar este instructivo.

Antes de comenzar

  1. Accede a tu Cuenta de Google.

    Si todavía no tienes una cuenta, regístrate para obtener una nueva.

  2. Selecciona o crea un proyecto de GCP.

    Ir a la página Administrar recursos

  3. Asegúrate de tener habilitada la facturación para tu proyecto.

    Aprende a habilitar la facturación

  4. Habilita las Compute Engine API necesarias.

    Habilita las API

  5. Inicia una instancia de Cloud Shell donde puedas ejecutar todos los comandos de gcloud en este instructivo.
    ABRIR CLOUD SHELL
  6. Opcionalmente, revisa y solicita un aumento de tu cuota del disco persistente SSD. Necesitas 500 GB para este instructivo.

Descripción general

En este ejemplo de configuración, se incluyen los siguientes componentes y direcciones IP:

  • Red de VPC personalizada: 10.0.0.0/24
  • Controlador de dominio de Active Directory: 10.0.0.3
  • Dos nodos del WSFC con almacenamiento S2D conectado
    • node-1: 10.0.0.4
    • node-2: 10.0.0.5
  • Clúster de conmutación por error de Windows Server (para administración de clúster): 10.0.0.201
  • Balanceador de cargas interno y objeto de escucha de las FCI de SQL (para conexiones SQL): 10.0.0.200

El balanceador de cargas escucha las solicitudes. Según las verificaciones de estado, sabe qué nodo de SQL Server está activo y dirige el tráfico hacia allí. En caso de que el nodo activo falle, se activa el nodo de conmutación por error de las FCI. El verificador de estado recibe la señal del nodo en buen estado y el balanceador de cargas redirecciona el tráfico. La base de datos, almacenada en volúmenes S2D, permanece disponible.

Diagrama de arquitectura que muestra dos VM de Compute Engine en un clúster de conmutación por error

Configura la red de VPC

Si bien puedes usar una red existente para este instructivo, es una práctica recomendada aislar los sistemas en diferentes redes y subredes con reglas de firewall que limiten el tráfico.

  1. Crea una red de VPC en modo personalizado, que te brinda un control completo sobre sus subredes y rangos de IP.

    gcloud compute networks create wsfcnet --subnet-mode custom
    
  2. Agrega una subred, wsfc-subnet1, que contendrá todas las VM en este instructivo.

    gcloud compute networks subnets create wsfc-subnet1 \
        --network wsfcnet \
        --region us-central1 \
        --range 10.0.0.0/24
    
  3. Crea una regla de firewall para permitir el tráfico interno entre las VM en esta red.

    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. Crea una regla de firewall a fin de permitir el tráfico entrante para RDP en el puerto 3389. Ten en cuenta que estás abriendo tcp:3389 para todas las direcciones IP (0.0.0.0/0); en un entorno de producción, limitarías el acceso a las IP aprobadas.

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

Crea y configura un controlador de dominio de Windows

Se utiliza un dominio de Active Directory para los servicios de nombres de dominio, el agrupamiento en clústeres de conmutación por error de Windows y las funciones de espacios de almacenamiento directo que se necesitan para este instructivo. No es obligatorio tener el controlador de dominio AD en la misma VPC, sino una simplificación a los efectos de este instructivo.

En este instructivo, el dominio es gontoso.com. El nombre de la VM del controlador de dominio es dc-windows (y, de manera predeterminada, el nombre de la computadora Windows coincide con el nombre de la VM, dc-windows). La VM se crea en nuestra subred en 10.0.0.3.

  1. Crea una VM para usar como controlador de dominio. Si bien puedes especificar cualquier tipo de máquina y servidor de Windows que necesites, para este ejemplo utiliza los siguientes parámetros.

    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. Genera una contraseña para poder conectarte a la VM del controlador de dominio con una cuenta local. Toma nota del nombre de usuario y la contraseña para utilizarlos más adelante.

  3. Con RDP, conéctate a la VM del controlador de dominio con el nombre de usuario y la contraseña de tu cuenta local.

  4. En la VM, ejecuta PowerShell como administrador para abrir un indicador de PowerShell elevado.

  5. Configura un usuario administrador.

    1. Ejecuta el siguiente comando, luego ingresa una contraseña, que utilizarás con la Cuenta de administrador.

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

      Anota la contraseña que ingresaste. La utilizarás para la Cuenta de administrador.

    2. Configura la contraseña de la Cuenta de administrador.

      PS C:\> Set-LocalUser -Name Administrator -Password $Password
      
    3. Habilita la Cuenta de administrador.

      PS C:\> Enable-LocalUser -Name Administrator
      
  6. Configura una cuenta de servicio de SQL Server, que utilizarás como la cuenta de agente de SQL y administrador de SQL.

    1. Ingresa de forma segura una contraseña para usar con la cuenta de servicio de SQL Server.

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

      Anota la contraseña que ingresaste. La utilizarás para la cuenta de servicio de SQL Server.

    2. Crea la cuenta de servicio de SQL Server y configura su contraseña.

      PS C:\> New-LocalUser -Name "service_account" -Description "SQL Agent and SQL Admin account."  -Password $Password
      
  7. Cierra sesión y, luego, vuelve a conectarte a la VM del controlador de dominio mediante RDP con la cuenta y la contraseña de administrador.

  8. En un PowerShell elevado, establece las siguientes variables, que se usarán para configurar el bosque de 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. Instala servicios y herramientas de 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. Instala y configura el bosque de Active Directory. Este comando te pedirá credenciales; usa el nombre de usuario y la contraseña de Administrator que creaste en un paso anterior.

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

    La máquina se reiniciará.

  11. Después de reiniciar la VM, vuelve a conectarte a ella mediante RDP. Usa las credenciales de tu cuenta local, que coinciden con tus credenciales originales.

Crea las VM y los discos de datos del clúster

Crea dos VM de SQL Server con discos de datos adicionales. Una VM actúa como el nodo de las FCI activo, la otra como el nodo de conmutación por error. Los discos adicionales actúan como volúmenes S2D.

Cada VM de SQL Server debe cumplir los siguientes requisitos.

  • Debe crearse en la subred que definiste anteriormente, wsfc-subnet1.
  • Debe tener una IP privada en el rango de subred, 10.0.0.0/24.
  • La función de clúster de conmutación por error de Windows Server debe estar instalada.
  • El agente del WSFC de Compute Engine, que puede supervisar el nodo activo en el clúster de conmutación por error, debe estar habilitado.
  1. Desde Cloud Shell, crea dos VM de SQL Server con discos de datos adicionales. Los discos se utilizarán como capacidad S2D y volúmenes de caché.

    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. Opcionalmente, conéctate a cada nodo mediante RDP y, desde un PowerShell elevado, verifica que el clúster de conmutación por error esté habilitado.

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


    [X] Failover Clustering Failover-Clustering Installed

Configura la red de VM del clúster

  1. Configura el primer nodo.

    1. Genera una contraseña para node-1. Toma nota del nombre de usuario y la contraseña para utilizarlos más adelante.

    2. Conéctate a node-1 mediante RDP.

    3. Abre un PowerShell elevado.

    4. Agrega una regla de firewall a fin de abrir un puerto para el servicio de verificación de estado. Este instructivo usará tcp:59997. Puedes cambiar esto a un puerto diferente, pero debe coincidir con el puerto del verificador de estado que definirás más adelante. El proceso de verificación de estado periódicamente hace ping al agente en cada nodo del clúster para determinar su disponibilidad.

      PS C:\> netsh advfirewall firewall add rule name="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
      
    5. Agrega una regla de firewall a fin de abrir un puerto para la instancia de SQL Server, que normalmente se ejecuta en tcp:1433.

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. Establece el DNS en el controlador de dominio.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. Actualiza el nodo para usar una dirección IP estática y configura la máscara de red.

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

      Se te desconectará de la VM. Con RDP, vuelve a conectarte con tu nombre de usuario y contraseña locales.

    8. Agrega el nodo al dominio de Active Directory que creaste anteriormente.

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

      Se te solicitarán credenciales. Usa el nombre de usuario y la contraseña de administrador que estableciste cuando configuraste la VM del controlador de dominio en un paso anterior.

      La máquina se reiniciará.

  2. Configura el segundo nodo.

    1. Genera una contraseña para node-2. Toma nota del nombre de usuario y la contraseña para utilizarlos más adelante.

    2. Conéctate a node-2 mediante RDP.

    3. Abre un PowerShell elevado.

    4. Agrega una regla de firewall a fin de abrir un puerto para el verificador de estado. El puerto debe coincidir con el puerto del verificador de estado que definirás más adelante.

      PS C:\> netsh advfirewall firewall add rule name="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
      
    5. Agrega una regla de firewall a fin de abrir un puerto para la instancia de SQL Server, que normalmente se ejecuta en tcp:1433.

      PS C:\> netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
      
    6. Establece el DNS en el controlador de dominio.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    7. Actualiza el nodo para usar una dirección IP estática y configura la máscara de red.

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

      Se te desconectará de la VM. Con RDP, vuelve a conectarte con tu nombre de usuario y contraseña locales.

    8. Agrega el nodo al dominio de Active Directory que creaste anteriormente.

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

      Se te solicitarán credenciales. Usa el nombre de usuario y la contraseña de administrador que estableciste cuando configuraste la VM del controlador de dominio en un paso anterior.

      La máquina se reiniciará.

Crea un testigo de archivos compartidos

A fin de proporcionar un voto de desempate y lograr un quórum para la situación de conmutación por error, crea un recurso de archivos compartidos que actuará como testigo. Para los fines de este instructivo, crearás el testigo de archivos compartidos en la VM del controlador de dominio. En un entorno de producción, lo crearías en otro lugar.

  1. Con RDP, conéctate a la VM del controlador de dominio, dc-windows, con la Cuenta de administrador.

  2. Abre un PowerShell elevado.

  3. Crea la carpeta del testigo.

    PS C:\> New-Item "C:\QWitness" –type directory
    
  4. Comparte la carpeta.

    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. Opcionalmente, mediante RDP, conéctate a cualquier nodo como gontoso.com\Administrator y verifica que puedes acceder al directorio compartido.

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

Crea un balanceador de cargas interno

Un balanceador de cargas interno proporciona una única IP para SQL Server. El balanceador de cargas escucha las solicitudes y dirige el tráfico de red al nodo del clúster activo. Sabe cuál es el nodo activo porque se ejecuta un verificador de estado en cada nodo. Solo el nodo activo responde como en buen estado. Si el nodo activo se cae, se activa el nodo de conmutación por error de las FCI de SQL. El verificador de estado recibe la señal y el tráfico se redirecciona allí.

  1. Crea dos grupos de instancias y agrega un nodo de SQL Server a cada grupo. Estos grupos de instancias actúan como backends a los que el balanceador de cargas puede dirigir el tráfico.

    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. Crea una verificación de estado que el balanceador de cargas pueda usar para determinar cuál es el nodo activo.

    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. Agrega una regla de firewall para permitir la verificación de estado.

    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. Crea un servicio de backend y agrega los dos grupos de instancias de backend.

    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. Crea un balanceador de cargas interno a fin de reenviar solicitudes al nodo activo en las FCI de SQL. Las FCI se crearán más tarde y se configurarán para escuchar en 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
    

Crea un clúster de conmutación por error de Windows

  1. Mediante RDP, vuelve a conectarte a node-1 como gontoso.com\Administrator. Es posible que debas borrar los certificados anteriores para volver a conectarte.

  2. Abre un PowerShell elevado.

  3. Crea el clúster.

    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. Prueba el clúster Verás algunas advertencias que pueden ignorarse.

    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
    
    

    También puedes iniciar la GUI de administrador del clúster para revisar el estado del clúster si ejecutas cluadmin.msc.

Habilita espacios de almacenamiento directo

  1. Mediante RDP, conéctate a node-1 o node-2 y abre un PowerShell elevado.

  2. Habilita espacios de almacenamiento directo.

    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
    
    

    Acepta el valor predeterminado cuando se te solicite confirmar. Verás algunas advertencias que puedes ignorar.

    • Opcionalmente, si deseas un mejor rendimiento del disco, puedes agregar SSD locales a las VM de tu clúster, además de los discos persistentes SSD estándares. Los SSD locales pueden actuar como capa de almacenamiento en caché S2D. Haz que la cantidad de unidades con capacidad (discos persistentes SSD en nuestro caso) sea un múltiplo de la cantidad de unidades SSD locales. Ejecuta el siguiente comando para habilitar S2D con almacenamiento en caché:

      PS C:\> Enable-ClusterS2D -CacheDeviceModel "EphemeralDisk"
      
    • También puedes habilitar la caché en memoria de volumen compartido de clúster (CSV) para una mejor lectura a través de:

      PS C:\> (Get-Cluster).BlockCacheSize = 2048
      
  3. Debido a que S2D requiere 2 GB por volumen para la administración, y hay cuatro volúmenes de 50 GB por nodo, define el conjunto de almacenamiento y configura su tamaño en 192 GB.

    PS C:\> New-Volume -StoragePoolFriendlyName S2D* -FriendlyName VDisk01 -FileSystem CSVFS_REFS -Size 192GB
    
  4. Verifica que el volumen de almacenamiento exista en modo lectura o escritura.

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

Configura la alta disponibilidad para SQL Server con FCI

  1. Quita la instancia predeterminada de SQL Server del primer nodo. Lo reemplazarás más tarde con una nueva configuración de FCI.

    1. Mediante RDP, conéctate a node-1 como gontoso.com\Administrator.

    2. Abre un PowerShell elevado.

    3. Quita la instancia predeterminada de SQL Server.

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. Reinicia la VM.

      PS C:\> shutdown /r
      
  2. Quita la instancia predeterminada de SQL Server del segundo nodo. Lo reemplazarás más tarde con una nueva configuración de FCI.

    1. Con RDP, inicia sesión en node-2 como gontoso.com\Administrator.

    2. Abre un PowerShell elevado.

    3. Quita la instancia predeterminada de SQL Server.

      PS C:\> C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
      
    4. Reinicia la VM.

      PS C:\> shutdown /r
      
  3. Vuelve a instalar SQL Server con FCI en el primer nodo.

    1. Con RDP, inicia sesión en node-1 como gontoso\Administrator.

    2. Abre un editor de texto, como Bloc de notas.

    3. Copia el contenido del archivo de configuración fci_install_master_node.ini en el editor de texto en node-1. Los saltos de línea pueden no conservarse, pero aún funciona.

    4. Actualiza el archivo de configuración con tu contraseña de gontoso.com\service_account. La contraseña debe actualizarse en dos lugares: AGTSVCPASSWORD y SQLSVCPASSWORD. Busca changeme y reemplázalo con la contraseña que definiste. Guarda el archivo como un archivo de texto sin formato con nombre de archivo, C:\fci_install_master_node.ini.

    5. Abre un PowerShell elevado y, además, instala SQL Server con el archivo de configuración.

      PS C:\> C:\sql_server_install\Setup.exe /CONFIGURATIONFILE=C:\fci_install_master_node.ini
      
  4. Vuelve a instalar SQL Server con FCI en el segundo nodo.

    1. Con RDP, inicia sesión en node-2 como gontoso\Administrator.

    2. Abre un editor de texto, como Bloc de notas.

    3. Copia el contenido del archivo de configuración fci_add_node.ini en el editor de texto en el node-1.

    4. Actualiza el archivo de configuración con tu contraseña de gontoso.com\service_account. La contraseña debe actualizarse en dos lugares: AGTSVCPASSWORD y SQLSVCPASSWORD. Busca changeme y reemplázalo con la contraseña que definiste. Guarda el archivo como un archivo de texto sin formato con nombre de archivo, C:\fci_add_node.ini.

    5. Abre un PowerShell elevado y, además, instala SQL Server.

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

Configura el clúster para el verificador de estado

  1. Mediante RDP, vuelve a conectarte a node-1 como gontoso.com\Administrator.

  2. Ejecuta la siguiente secuencia de comandos de PowerShell en un PowerShell elevado para permitir que el clúster de conmutación por error de Windows responda al servicio de verificación de estado:

    $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}
    

Prueba la situación de conmutación por error

Prepara un cliente

  1. Desde Cloud Shell, crea una nueva VM para que actúe como cliente de 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. Con RDP, conéctate a sqlclient-1.

  3. Abre un PowerShell elevado.

  4. Configura el cliente.

    1. Establece el DNS en el controlador de dominio.

      PS C:\> netsh interface ip set dns Ethernet static 10.0.0.3
      
    2. Agrega el nodo al dominio de Active Directory que creaste anteriormente.

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

      Se te solicitarán credenciales. Usa el nombre de usuario y la contraseña de administrador que estableciste cuando configuraste la VM del controlador de dominio en un paso anterior.

      La máquina se reiniciará.

    3. Mediante RDP, vuelve a conectarte con la cuenta de administrador.

    4. Agrega gontoso.com\service_account al grupo de administradores locales.

      PS C:\> Add-LocalGroupMember -Group "Administrators" -Member "gontoso.com\service_account"
      
    5. Cierra sesión.

      PS C:\> logoff
      

Ejecuta la prueba

  1. Mediante RDP, vuelve a conectarte a sqlclient-1 con el nombre de usuario y la contraseña de gontoso.com\service_account.

  2. En PowerShell, ejecuta una consulta de prueba en la tabla dm_os_cluster_nodes del sistema.

    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)
    
    

    Observa que node-1 es el propietario actual del recurso de clúster de conmutación por error de SQL Server.

  3. Con Cloud Shell, baja la VM del node-1 para probar la situación de conmutación por error.

    gcloud compute instances stop node-1 --zone us-central1-f
    
  4. En la VM sqlclient-1, ejecuta la consulta de prueba nuevamente.

    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)
    
    

    A pesar de la pérdida de node-1 , la consulta tiene éxito y muestra que node-2 ahora es el propietario actual del clúster de conmutación por error.

Limitaciones

  • El espacio de almacenamiento directo (S2D) solo se admite para Windows 2016 y versiones posteriores.
  • Con S2D, cada disco solo contiene una vista parcial de los datos generales. Por lo tanto, tomar una instantánea de un disco persistente no será suficiente para hacer una copia de seguridad de tus datos. Utiliza una copia de seguridad de SQL nativa en su lugar.

Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud Platform por los recursos que usaste en este instructivo:

Una vez que termines el instructivo de las FCI de SQL Server, puedes limpiar los recursos que creaste en GCP para que no consuman tu cuota y no se te facturen en el futuro. En las siguientes secciones, se describe cómo borrar o desactivar estos recursos.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, haz lo siguiente:

  1. En la GCP Console, dirígete a la página Proyectos.

    Ir a la página Proyectos

  2. En la lista de proyectos, selecciona el proyecto que deseas borrar y haz clic en Borrar.
  3. En el cuadro de diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

Cómo borrar instancias

Para borrar una instancia de Compute Engine, haz lo siguiente:

  1. En GCP Console, dirígete a la página Instancias de VM.

    Ir a la página Instancias de VM

  2. Haz clic en la casilla de verificación junto ala instancia que deseas borrar.
  3. Haz clic en el botón Borrar en la parte superior de la página para borrar la instancia.

Borra discos persistentes

Para borrar un disco persistente, realiza los siguientes pasos:

  1. En GCP Console, ve a la página Discos.

    Ir a la página Discos

  2. Selecciona la casilla de verificación junto al nombre del disco que deseas borrar.

  3. Haz clic en el botón Borrar en la parte superior de la página.

¿Te sirvió esta página? Envíanos tu opinión:

Enviar comentarios sobre…

Documentación de Compute Engine