Configuración de una instancia de clúster de conmutación por error de SQL Server que utiliza Storage Spaces Direct


Las instancias de clúster de conmutación por error (FCI) Always On de Microsoft SQL Server le permiten ejecutar una única instancia de SQL Server en varios nodos del clúster de conmutación por error de Windows Server (WSFC). En cualquier momento, uno de los nodos del clúster aloja activamente la instancia de SQL. En caso de falla, WSFC transfiere automáticamente la propiedad de los recursos de la instancia a otro nodo.

SQL Server FCI requiere que los datos estén ubicados en un almacenamiento compartido para que se pueda acceder a ellos desde todos los nodos de WSFC. Esta guía describe cómo implementar una instancia de clúster de conmutación por error de SQL Server 2019 que utiliza Storage Spaces Direct (S2D) para almacenamiento compartido. S2D proporciona una SAN virtual basada en software que puede utilizar discos de datos de Compute Engine VM para almacenar la base de datos SQL.

El siguiente diagrama ilustra la implementación:

Arquitectura

Al implementar una arquitectura hiperconvergente, las instancias de VM node-1 y node-2 sirven como nodos WSFC y también albergan el almacenamiento compartido. Se utiliza una tercera instancia de VM, witness , para lograr un quórum en un escenario de conmutación por error. Las tres instancias de VM están distribuidas en tres zonas y comparten una subred común.

Los clientes se comunican con la instancia de SQL Server a través de un equilibrador de carga TCP interno . Este equilibrador de carga utiliza una verificación de estado personalizada para determinar qué nodo WSFC aloja actualmente la instancia de SQL y enruta el tráfico a esa instancia.

El artículo supone que ya implementó Active Directory en Google Cloud y que tiene conocimientos básicos de SQL Server, Active Directory y Compute Engine.

Objetivos

  • Implemente un WSFC que comprenda dos instancias de VM de SQL Server y una tercera instancia de VM que actúe como testigo del recurso compartido de archivos.
  • Implemente una FCI de SQL Server en el WSFC.
  • Verifique que el clúster esté funcionando simulando una conmutación por error.

Costos

Este tutorial utiliza componentes facturables de Google Cloud, incluido:

Utilice la calculadora de precios para generar una estimación de costos basada en su uso proyectado.

Antes de comenzar

Para completar esta guía, necesita lo siguiente:

  • Un dominio de Active Directory con al menos un controlador de dominio. Puede crear un dominio de Active Directory utilizando Microsoft AD administrado . Alternativamente, puedes implementar un entorno de Active Directory personalizado en Compute Engine y configurar una zona de reenvío de DNS privada que reenvíe consultas de DNS a tus controladores de dominio.
  • Un usuario de Active Directory que tiene permiso para unir computadoras al dominio y puede iniciar sesión mediante RDP. Si está utilizando Microsoft AD administrado, puede usar el usuario setupadmin .
  • Un proyecto de Google Cloud y VPC con conectividad a sus controladores de dominio de Active Directory.
  • Una subred que se utilizará para las instancias de VM de WSFC.

Para completar la guía, también necesitas un Google Cloud proyecto:

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

Cuando termine este tutorial, podrá evitar la facturación continua eliminando los recursos que creó. Para obtener más información, consulte Limpieza .

Preparando el proyecto y la red.

Para preparar su proyecto de Google Cloud y VPC para la implementación de SQL Server FCI, haga lo siguiente:

  1. En la consola de Google Cloud, abra Cloud Shell haciendo clic en Activar Cloud ShellActive Cloud Shell. botón.

    Ve a la consola de Google Cloud

  2. Inicialice las siguientes variables:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Dónde:

    • VPC_NAME : nombre de su VPC
    • SUBNET_NAME : nombre de tu subred
  3. Establece tu ID de proyecto predeterminado:

    gcloud config set project PROJECT_ID
    

    Reemplace PROJECT_ID con el ID de su proyecto de Google Cloud.

  4. Establece tu región predeterminada:

    gcloud config set compute/region REGION
    

    Reemplace REGION con el ID de la región en la que desea implementar.

Crear reglas de firewall

Para permitir que los clientes se conecten a SQL Server, permitir la comunicación entre los nodos WSFC y permitir que el equilibrador de carga realice comprobaciones de estado , debe crear varias reglas de firewall. Para simplificar la creación de estas reglas de firewall, utiliza etiquetas de red :

  • Los 2 nodos WSFC están anotados con la etiqueta wsfc-node .
  • Todos los servidores (incluido el testigo) están anotados con la etiqueta wsfc .

Cree reglas de firewall que utilicen estas etiquetas de red:

  1. Regrese a su sesión actual de Cloud Shell.
  2. Cree reglas de firewall para los nodos 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. Cree una regla de firewall que permita realizar comprobaciones de estado de los rangos de IP de los sondadores de Google Cloud :

    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
    

Crear instancias de VM

Ahora implementará dos instancias de VM para el clúster de conmutación por error. En cualquier momento, solo una de estas máquinas virtuales actúa como nodo FCI activo, mientras que el otro nodo actúa como nodo de conmutación por error. Las dos instancias de VM deben cumplir los siguientes requisitos:

  • Están ubicados en la misma región para que un equilibrador de carga TCP interno pueda acceder a ellos.
  • Su agente invitado está configurado para usar el modo WSFC . En este modo, el agente invitado ignora las direcciones IP de los balanceadores de carga internos al configurar la interfaz de red local. Este comportamiento es necesario para evitar conflictos de direcciones IP durante eventos de conmutación por error de WSFC.

Utiliza una imagen premium de SQL Server que tiene SQL Server 2019 preinstalado.

Para proporcionar una votación de desempate y lograr un quórum para el escenario de conmutación por error, implemente una tercera máquina virtual que sirva como testigo del recurso compartido de archivos .

  1. Regrese a su sesión actual de Cloud Shell.
  2. Cree un script especializado para los nodos WSFC. El script instala la característica necesaria de Windows y crea reglas de firewall para WSFC y 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
    
    EOF
    
  3. Cree las instancias de VM. En las dos máquinas virtuales que sirven como nodos S2D y WSFC, conecte discos de datos adicionales y habilite el modo WSFC configurando la clave de metadatos enable-wsfc en true :

    REGION=$(gcloud config get-value compute/region)
    PD_SIZE=50
    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-2019-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" \
      --create-disk=name=node-1-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-1-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --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-2019-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" \
      --create-disk=name=node-2-datadisk-1,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-2,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-3,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --create-disk=name=node-2-datadisk-4,size=$PD_SIZE,type=pd-ssd,auto-delete=no \
      --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. Para unir las 3 instancias de VM a Active Directory, haga lo siguiente para cada una de las 3 instancias de VM:

    1. Supervise el proceso de inicialización de la VM viendo la salida del puerto serie:

      gcloud compute instances tail-serial-port-output NAME
      

      Reemplace NAME con el nombre de la instancia de VM.

      Espere unos minutos hasta que vea que la Instance setup finished y luego presione Ctrl+C. En este punto, la instancia de VM está lista para usarse.

    2. Cree un nombre de usuario y contraseña para la instancia de VM

    3. Conéctese a la máquina virtual mediante Escritorio remoto e inicie sesión con el nombre de usuario y la contraseña creados en el paso anterior.

    4. Haga clic derecho en el botón Inicio (o presione Win+X ) y haga clic en Windows PowerShell (Administrador) .

    5. Confirme el mensaje de elevación haciendo clic en .

    6. Una la computadora a su dominio de Active Directory y reinicie:

      Add-Computer -Domain DOMAIN -Restart
      

      Reemplace DOMAIN con el nombre DNS de su dominio de Active Directory.

      Espere aproximadamente 1 minuto para que se complete el reinicio.

Reservar direcciones IP del clúster

Ahora reserva dos direcciones IP estáticas en su red VPC. Las dos direcciones tienen diferentes propósitos:

  • IP del equilibrador de carga : los clientes utilizan esta dirección IP para conectarse a SQL Server.
  • IP del clúster : esta dirección IP solo la utiliza internamente WSFC.

Para reservar las direcciones IP estáticas, haga lo siguiente:

  1. Reserve una IP estática para el equilibrador de carga interno y capture la dirección en una nueva variable de entorno denominada LOADBALANCER_ADDRESS :

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

    Anote la dirección IP, la necesitará más tarde.

  2. Reserve otra dirección IP estática que utilice como IP del clúster:

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

    Anote la dirección IP, la necesitará más tarde.

Su proyecto y VPC ahora están listos para la implementación de WSFC y SQL Server.

Crear un recurso compartido de archivos testigo

Para preparar witness para que actúe como testigo del recurso compartido de archivos, cree un recurso compartido de archivos y otorgue a usted y a los dos nodos WSFC acceso al recurso compartido de archivos:

  1. Conéctese para witness mediante Escritorio remoto . Inicie sesión con su cuenta de usuario de dominio.
  2. Haga clic derecho en el botón Inicio (o presione Win+X ) y haga clic en Windows PowerShell (Administrador) .
  3. Confirme el mensaje de elevación haciendo clic en .
  4. Cree la carpeta de testigos y comparta la carpeta:

    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$
    

Implementación del clúster de conmutación por error

Ahora utilizará las instancias de VM para implementar WSFC y SQL Server.

Implementar WSFC

Ahora está listo para crear el clúster de conmutación por error:

  1. Conéctese al node-1 mediante Escritorio remoto . Inicie sesión con su cuenta de usuario de dominio.
  2. Haga clic derecho en el botón Inicio (o presione Win+X ) y haga clic en Windows PowerShell (Administrador) .
  3. Confirme el mensaje de elevación haciendo clic en .
  4. Cree un nuevo clúster:

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

    Reemplace CLUSTER_ADDRESS con la dirección IP del clúster que creó anteriormente.

    El comando crea una cuenta de computadora windows-fci en su dominio de Active Directory.

  5. Regrese a la sesión de PowerShell en witness y otorgue permiso a la cuenta de computadora windows-fci para acceder al archivo compartido:

    icacls C:\QWitness\ /grant 'windows-fci$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'windows-fci$' `
      -AccessRight Full `
      -Force
    
  6. Regrese a la sesión de PowerShell en node-1 y configure el clúster para usar el recurso compartido de archivos en witness como quórum del clúster:

    Set-ClusterQuorum -FileShareWitness \\witness\QWitness
    
  7. Verifique que el clúster se haya creado correctamente:

    Test-Cluster
    

    Es posible que vea algunas advertencias que se pueden ignorar de forma segura:

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

    También puede iniciar el complemento MMC del Administrador de clústeres de conmutación por error para revisar el estado del clúster ejecutando cluadmin.msc .

  8. Si está utilizando AD administrado, agregue la cuenta de computadora utilizada por WSFC al grupo Cuentas de unión al dominio del servicio en la nube para que pueda unir computadoras al dominio:

    Install-WindowsFeature RSAT-ADDS
    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members windows-fci$
    

Habilitación de espacios de almacenamiento directo

Ahora habilita S2D y crea un volumen compartido de clúster que combina los tres discos persistentes que creó anteriormente:

  1. Regrese a la sesión de PowerShell en node-1 .
  2. Habilitar S2D:

    Enable-ClusterStorageSpacesDirect
    

    Opcionalmente, si desea un mejor rendimiento del disco, puede agregar SSD locales SCSI a sus nodos S2D además de los discos persistentes SSD estándar. Los SSD locales pueden servir como capa de almacenamiento en caché S2D. Haga que la cantidad de unidades de capacidad (discos persistentes SSD en nuestro caso) sea un múltiplo de la cantidad de SSD locales. En su lugar, ejecute el siguiente comando para habilitar S2D con almacenamiento en caché:

    Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
    

    Acepte el valor predeterminado cuando se le solicite confirmar. Es posible que vea algunas advertencias que se pueden ignorar de forma segura:

    WARNING: 2021/04/08-13:12:26.159 Node node-1: No disks found to be used for cache
    WARNING: 2021/04/08-13:12:26.159 Node node-2: No disks found to be used for cache
    
  3. Opcionalmente, configure la caché en memoria del volumen compartido del clúster (CSV) en 2048 MB para obtener un mejor rendimiento de lectura:

    (Get-Cluster).BlockCacheSize = 2048
    
  4. Cree un nuevo volumen que utilice las versiones de volumen compartido del clúster de ReFS y un tamaño de clúster de 64 KB:

    New-Volume `
      -StoragePoolFriendlyName S2D* `
      -FriendlyName FciVolume `
      -FileSystem CSVFS_ReFS `
      -UseMaximumSize `
      -AllocationUnitSize 65536
    

Prueba de conmutación por error del grupo de almacenamiento

Opcionalmente, ahora puede probar si la conmutación por error del grupo de almacenamiento funciona correctamente:

  1. Conéctese al node-2 mediante Escritorio remoto . Inicie sesión con su cuenta de usuario de dominio.
  2. Haga clic derecho en el botón Inicio (o presione Win+X ) y seleccione Ejecutar
  3. Ingrese cluadmin.msc y seleccione Aceptar .
  4. En el panel izquierdo de la ventana, navegue hasta Administrador de clústeres de conmutación por error > windows-fci > Almacenamiento > Grupos .

    Debería ver un grupo llamado Grupo de clúster 1 con el nodo Propietario establecido en node-1 .

  5. Regrese a Cloud Shell y restablezca la máquina virtual node-1 para simular una conmutación por error:

    gcloud compute instances reset node-1 --zone $REGION-a
    
  6. Regrese al Administrador de clústeres de conmutación por error en node-2 .

  7. Observe el estado del grupo de almacenamiento presionando repetidamente F5 para actualizar la vista.

    Después de unos 30 segundos, el nodo propietario debería cambiar automáticamente al node-2 .

Eliminar la instalación predeterminada de SQL Server

Ahora elimina la instalación predeterminada de SQL Server de los dos nodos y la reemplaza con una nueva configuración de FCI.

Para cada uno de los dos nodos WSFC, node-1 y node-2 , realice los siguientes pasos:

  1. Haga clic derecho en el botón Inicio (o presione Win+X ) y haga clic en Windows PowerShell (Administrador) .
  2. Confirme el mensaje de elevación haciendo clic en .
  3. Elimine la instancia predeterminada de SQL Server:

    C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
    
  4. Eliminar el controlador OLE de Microsoft:

    Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
    
  5. Eliminar el controlador ODBC de Microsoft:

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. Reinicie la computadora:

    Restart-Computer
    
  7. Espere aproximadamente 1 minuto para que se complete el reinicio.

Instalar SQL Server FCI

Antes de instalar la nueva configuración de FCI, verifique que el node-1 sea el nodo activo en el clúster:

  1. Vuelva a conectarse al node-1 mediante Escritorio remoto e inicie sesión con el usuario de su dominio.
  2. Haga clic derecho en el botón Inicio (o presione Win+X ) y seleccione Ejecutar
  3. Ingrese cluadmin.msc y seleccione Aceptar .
  4. En el panel izquierdo de la ventana, navegue hasta Administrador de clústeres de conmutación por error > windows-fci .

    Verifique que el servidor host actual esté configurado en node-1 .

    Si el servidor host actual está configurado en node-2 , haga clic con el botón derecho en windows-fci en el panel izquierdo de la ventana y seleccione Más acciones > Mover recursos centrales del clúster > Seleccionar nodo… > nodo-1 y haga clic en Aceptar .

  5. En el panel izquierdo de la ventana, navegue hasta Administrador de clústeres de conmutación por error > windows-fci > Almacenamiento > Grupos .

    Verifique que el nodo propietario del grupo de clústeres 1 esté configurado en node-1 .

    Si el nodo propietario está configurado en node-2 , haga clic derecho en el grupo, seleccione Mover > Seleccionar nodo > nodo-1 y haga clic en Aceptar .

Ahora creará una nueva instalación de clúster de conmutación por error de SQL Server en node-1 :

  1. Haga clic derecho en el botón Inicio (o presione Win+X ) y haga clic en Windows PowerShell (Administrador) .
  2. Confirme el mensaje de elevación haciendo clic en .
  3. Cree una cuenta de usuario de dominio para el servidor SQL y el agente SQL y asigne una contraseña:

    Directorio activo

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true
    

    Microsoft AD administrado

    $Credential = Get-Credential -UserName sql_server -Message 'Enter password'
    New-ADUser `
      -Name "sql_server" `
      -Description "SQL Agent and SQL Admin account." `
      -AccountPassword $Credential.Password `
      -Enabled $true -PasswordNeverExpires $true `
      -Path "OU=Cloud,DOMAIN"
    

    Reemplace DOMAIN con el nombre completo de su dominio, por ejemplo DC=example,DC=org .

  4. Inicie la configuración de SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. En el menú de la izquierda, seleccione Instalación .

  6. Seleccione Nueva instalación de clúster de conmutación por error de SQL Server

  7. En la página de Microsoft Update , seleccione Siguiente para iniciar la instalación.

  8. En la página Instalar reglas de clúster de conmutación por error , verá una Advertencia , advertencias de verificación del clúster MSCS y firewall de Windows . Puede ignorar estas advertencias y seleccionar Siguiente .

  9. En la página Clave de producto , mantenga los valores predeterminados y seleccione Siguiente .

  10. En la página Términos de licencia , revise los términos y, si los acepta, seleccione Siguiente .

  11. En la página Selección de funciones , seleccione Servicios del motor de base de datos y seleccione Siguiente .

  12. En la página Configuración de instancia , ingrese sql para el nombre de la red y la instancia nombrada, y seleccione Siguiente .

  13. En la página Grupo de recursos del clúster , mantenga los valores predeterminados y seleccione Siguiente .

  14. En la página Selección de disco de clúster , habilite el Disco virtual de clúster (FciVolume) y desactive todos los demás discos. Seleccione Siguiente .

  15. En la página Configuración de red del clúster , configure los siguientes ajustes y luego seleccione Siguiente :

    • DHCP : claro
    • Dirección IP: ingrese la dirección IP del balanceador de carga interno.
  16. En la página de configuración del servidor , configure las siguientes opciones tanto para el Agente SQL Server como para el Motor de base de datos de SQL Server :

    • Nombre de cuenta : DOMAIN \sql_server donde DOMAIN es el nombre NetBIOS de su dominio de Active Directory
    • Contraseña : Ingrese la contraseña que creó anteriormente
  17. Seleccione la pestaña Intercalación y seleccione la intercalación que desea utilizar. Luego haga clic en Siguiente .

  18. En la página Configuración del motor de base de datos , seleccione Agregar usuario actual para designar al usuario actual como administrador de SQL Server. Luego seleccione Siguiente .

  19. En la página Listo para instalar , revise la configuración y luego seleccione Instalar .

  20. Una vez completada la instalación, seleccione Cerrar .

Su dominio de Active Directory ahora contiene una cuenta de computadora sql que representa la instancia de SQL Server y una entrada DNS correspondiente que apunta a la dirección IP del equilibrador de carga interno.

Ahora agregue node-2 al clúster de conmutación por error de SQL Server:

  1. Conéctese al node-2 mediante Escritorio remoto e inicie sesión con el usuario de su dominio.
  2. Haga clic derecho en el botón Inicio (o presione Win+X ) y haga clic en Windows PowerShell (Administrador) .
  3. Confirme el mensaje de elevación haciendo clic en .
  4. Inicie la configuración de SQL Server:

    & c:\sql_server_install\setup.exe
    
  5. En el menú de la izquierda, seleccione Instalación .

  6. Seleccione Agregar nodo a un clúster de conmutación por error de SQL Server .

  7. Sigue las instrucciones del asistente de instalación y acepta la configuración predeterminada hasta llegar a la página Cuentas de servicio .

  8. En la página Cuentas de servicio , ingrese la contraseña que creó anteriormente para el Agente SQL Server y el Motor de base de datos SQL Server . Luego seleccione Siguiente .

  9. En la página Listo para instalar , revise la configuración y luego seleccione Instalar .

  10. Una vez completada la instalación, seleccione Cerrar .

Configurar controles de salud

Como paso final, configure el clúster para exponer un punto final de verificación de estado que pueda ser utilizado por un balanceador de carga interno:

  1. Regrese a la sesión de PowerShell en node-2
  2. Inicialice una variable con la dirección IP del equilibrador de carga.

    $LoadBalancerIP = 'IP_ADDRESS'
    

    Reemplace IP_ADDRESS con la dirección IP de la dirección wsfc que reservó anteriormente.

  3. Configure el clúster de conmutación por error para responder al servicio de verificación de estado:

    $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. Reinicie el recurso del clúster:

    $SqlIpAddress | Stop-ClusterResource
    $SqlIpAddress | Start-ClusterResource
    
  5. Reinicie el grupo de clústeres:

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

Crear un equilibrador de carga interno

Para proporcionar un único punto final para los clientes de SQL Server, ahora debe implementar un equilibrador de carga interno . El equilibrador de carga utiliza una verificación de estado que garantiza que el tráfico se dirija al nodo activo del WSFC.

  1. Regrese a su sesión actual de Cloud Shell.
  2. Crea dos grupos de instancias no administrados , uno por zona, y agrega los dos nodos a los grupos:

    gcloud compute instance-groups unmanaged create wsfc-group-1 --zone $REGION-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $REGION-a \
      --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $REGION-b
    gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $REGION-b \
      --instances node-2
    
  3. Cree una verificación de estado que el equilibrador de carga pueda usar para determinar cuál es el nodo activo.

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

    La verificación de estado sondea el puerto 59997 , que es el puerto que configuró previamente como ProbePort para el recurso de dirección IP de SQL Server.

  4. Cree un servicio backend y agregue los dos grupos de instancias:

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $(gcloud config get-value compute/region) \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-1 \
      --instance-group-zone $REGION-a \
      --region $REGION
    
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-2 \
      --instance-group-zone $REGION-b \
      --region $REGION
    
  5. Cree el equilibrador de carga interno:

    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
    

Prueba del clúster de conmutación por error

Ha completado la instalación del clúster de conmutación por error, pero aún debe probar si el clúster funciona correctamente.

preparar un cliente

Cree una nueva instancia de VM que pueda usar para conectarse al clúster de conmutación por error:

  1. Regrese a su sesión actual de Cloud Shell.
  2. Cree una nueva instancia de VM:

    gcloud compute instances create sqlclient \
      --zone $REGION-a \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2022 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. Supervise el proceso de inicialización de la VM viendo la salida del puerto serie:

    gcloud compute instances tail-serial-port-output sqlclient
    

    Espere unos minutos hasta que vea que la Instance setup finished y luego presione Ctrl+C. En este punto, la instancia de VM está lista para usarse.

  4. Cree un nombre de usuario y contraseña para la instancia de VM

  5. Conéctese a la máquina virtual mediante Escritorio remoto e inicie sesión con el nombre de usuario y la contraseña creados en el paso anterior.

  6. Haga clic derecho en el botón Inicio (o presione Win+X ) y haga clic en Windows PowerShell (Administrador) .

  7. Confirme el mensaje de elevación haciendo clic en .

  8. Une la computadora a tu dominio de Active Directory:

    Add-Computer -Domain DOMAIN
    

    Reemplace DOMAIN con el nombre DNS de su dominio de Active Directory.

  9. Reinicie la computadora:

    Restart-Computer
    

    Espere aproximadamente 1 minuto para que se complete el reinicio.

ejecutar la prueba

Utilice la máquina virtual sqlclient para probar que puede conectarse al clúster de conmutación por error y verificar que la conmutación por error funciona correctamente:

  1. Conéctese a sqlclient mediante Escritorio remoto e inicie sesión con el usuario de su dominio.
  2. Haga clic derecho en el botón Inicio (o presione Win+X ) y haga clic en Windows PowerShell .
  3. Conéctese al clúster de SQL Server utilizando TCP/IP y el nombre DNS sql y consulte la tabla dm_os_cluster_nodes :

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    La salida debería verse así:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   0 up                                1
    NODE-2                                   0 up                                0
    
    (2 rows affected)
    

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

  4. Regrese a Cloud Shell y cierre la máquina virtual del nodo 1 para probar el escenario de conmutación por error.

    gcloud compute instances stop node-1 --zone $REGION-a
    
  5. Repetir la consulta:

    & "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" `
       -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    La salida ahora debería verse así:

    NodeName                       status      status_description is_current_owner
    ------------------------------ ----------- ------------------ ----------------
    NODE-1                                   1 down                              0
    NODE-2                                   0 up                                1
    
    (2 rows affected)
    

    Observe que a pesar de la pérdida del node-1 , la consulta se realiza correctamente y muestra que node-2 ahora es el propietario actual del clúster de conmutación por error.

Limitaciones

  • S2D solo es compatible con Windows Server 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 sus datos. Utilice una copia de seguridad SQL nativa en su lugar.

Limpiar

Una vez que termine el tutorial, puede limpiar los recursos que creó para que dejen de usar cuota y de incurrir en cargos. Las siguientes secciones describen cómo eliminar o desactivar estos recursos.

Eliminando el proyecto

La forma más sencilla de eliminar la facturación es eliminar el proyecto que creaste para el tutorial.

Para eliminar el proyecto:

  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.

¿Qué sigue?