Configurar una instancia de clúster de conmutación por error de SQL Server que utilice discos Hyperdisk Balanced High Availability en el modo de escritura múltiple

Las instancias de clúster de conmutación por error (FCI) de Microsoft SQL Server son instancias de SQL Server que se implementan en varios nodos de 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 fallo, WSFC transfiere automáticamente la propiedad de los recursos de la instancia a otro nodo.

Las instancias de clústeres de conmutación por error de SQL Server requieren que los datos se ubiquen en un almacenamiento compartido para que se pueda acceder a ellos en todos los nodos de WSFC. En esta guía se describe cómo puedes desplegar una instancia de clúster de conmutación por error de SQL Server 2022 y usar Hyperdisk Balanced High Availability en el modo de escritura múltiple como almacenamiento compartido regional (multizona).

Arquitectura

Arquitectura

En este artículo se da por hecho que ya has implementado Active Directory en Google Cloud y que tienes conocimientos básicos de SQL Server, Active Directory y Compute Engine.

Preparar el proyecto y la red

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

  1. En la Google Cloud consola, abre Cloud Shell haciendo clic en el botón Activar Cloud Shell Activa Cloud Shell..

    Ir a la Google Cloud consola

  2. Inicializa las siguientes variables:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Donde:

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

    gcloud config set project PROJECT_ID
    

    Sustituye PROJECT_ID por el ID de tu Google Cloud proyecto.

  4. Define tu región predeterminada:

    gcloud config set compute/region REGION
    

    Sustituye REGION por el ID de la región en la que quieras hacer el despliegue.

Crear reglas de cortafuegos

Para permitir que los clientes se conecten a SQL Server, permitir la comunicación entre los nodos de WSFC y habilitar el balanceador de carga para que realice comprobaciones del estado, debe crear varias reglas de cortafuegos. Para simplificar la creación de estas reglas de cortafuegos, puedes usar etiquetas de red:

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

Crea reglas de cortafuegos que usen estas etiquetas de red:

  1. Vuelve a tu sesión de Cloud Shell.
  2. Crea reglas de cortafuegos para los nodos de 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. Crea una regla de cortafuegos que permita las comprobaciones de estado desde los intervalos de IP de los Google Cloud probers: (no es necesario con una configuración de DNN).

    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, despliega dos instancias de VM para el clúster de conmutación por error. En cualquier momento, solo una de estas VMs 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 tener lo siguiente:

Usas una imagen premium de SQL Server que tiene preinstalado SQL Server 2022.

Para emitir un voto de desempate y alcanzar el quórum en el escenario de conmutación por error, debes implementar una tercera VM que actúe como controlador de dominio y un testigo de recurso compartido de archivos.

  1. Vuelve a tu sesión de Cloud Shell.

  2. Crea un script especializado para los nodos de WSFC. La secuencia de comandos instala la función de Windows necesaria 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. Crea las instancias de VM y habilita el agente de clúster de conmutación por error de Windows Server en los nodos de WSFC. Para ello, asigna el valor true a la clave de metadatos enable-wsfc:

    MACHINE_TYPE=c3-standard-8
    REGION=$(gcloud config get-value compute/region)
    ZONE_1=$REGION-a
    ZONE_2=$REGION-b
    
    gcloud compute instances create node-1 \
      --zone $ZONE_1 \
      --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 hyperdisk-balanced \
      --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 $ZONE_2 \
      --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 hyperdisk-balanced \
      --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 \
      --machine-type n4-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family=windows-2022 \
      --image-project=windows-cloud \
      --tags wsfc \
      --boot-disk-size 50 \
      --boot-disk-type hyperdisk-balanced \
      --zone $ZONE_1 \
      --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
    
  4. Para unir las tres instancias de VM a Active Directory, haz lo siguiente en cada una de ellas:

    1. Monitoriza el proceso de inicialización de la VM consultando la salida de su puerto serie:

      gcloud compute instances tail-serial-port-output NAME
      

      Sustituye NAME por el nombre de la instancia de VM.

      Espera unos 3 minutos hasta que veas el resultado Instance setup finished, luego pulsa Ctrl+C. En este punto, la instancia de VM ya se puede usar.

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

    3. Conéctate a la VM mediante Escritorio remoto e inicia sesión con el nombre de usuario y la contraseña que has creado en el paso anterior.

    4. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).

    5. Confirma la solicitud de elevación haciendo clic en .

    6. Une el ordenador a tu dominio de Active Directory y reinícialo:

      Add-Computer -Domain DOMAIN -Restart
      

      Sustituye DOMAIN por el nombre DNS de tu dominio de Active Directory.

      Espera aproximadamente 1 minuto a que se complete el reinicio.

Crear discos Hyperdisk Balanced High Availability en modo multiescritura

Ahora, crea un disco Hyperdisk Balanced High Availability en modo multiescritura y conéctalo a ambos nodos de WSFC. Una de las ventajas de Hyperdisk es la posibilidad de definir IOPS y el rendimiento para que se ajusten a las necesidades de la aplicación. Para obtener más información, consulta Información sobre Hyperdisk Balanced High Availability.

  1. Vuelve a tu sesión de Cloud Shell.
  2. Crea un disco Hyperdisk Balanced High Availability:

    SIZE=200
    
    gcloud compute disks create multiwriter-datadisk-1 \
      --size $SIZE \
      --provisioned-throughput 200 \
      --provisioned-iops 5000 \
      --access-mode READ_WRITE_MANY \
      --type hyperdisk-balanced-high-availability \
      --replica-zones $ZONE_1,$ZONE_2
    
  3. Acopla el disco a node-1:

    gcloud compute instances attach-disk node-1 \
      --disk multiwriter-datadisk-1 \
      --zone $ZONE_1 \
      --disk-scope=regional
    
  4. Acopla el disco a node-2:

    gcloud compute instances attach-disk node-2 \
      --disk multiwriter-datadisk-1 \
      --zone $ZONE_2 \
      --disk-scope=regional
    

Reservar direcciones IP de clúster

Ahora tienes dos direcciones IP estáticas reservadas en tu VPC. Una dirección IP se usa como dirección IP del clúster de WSFC y la otra la usa el balanceador de carga interno.

  1. Reserva una IP estática para el balanceador de carga interno y captura la dirección en una nueva variable de entorno llamada LOADBALANCER_ADDRESS:

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

    Anota la dirección IP, ya que la necesitarás más adelante.

  2. Reserva otra dirección IP estática que uses como IP de clúster: (no es necesario con una configuración de DNN)

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

    Anota la dirección IP, ya que la necesitarás más adelante.

Tu proyecto y tu VPC ya están listos para implementar el WSFC y SQL Server.

Crear un recurso compartido de archivos de testigo

Para preparar witness para que actúe como testigo de recurso compartido de archivos, crea un recurso compartido de archivos y concédete a ti mismo y a los dos nodos de WSFC acceso al recurso compartido de archivos:

  1. Conéctate a witness mediante Escritorio Remoto. Inicia sesión con tu cuenta de usuario del dominio.
  2. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
  3. Confirma la solicitud de elevación haciendo clic en .
  4. Crea la carpeta de testigo y compártela:

    New-Item 'C:\QWitness' -type directory
    
    New-SmbShare `
    -Name QWitness `
    -Path 'C:\QWitness' `
    -Description 'SQL File Share Witness' `
    -FullAccess  $env:username,node-1$,node-2$
    
    Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-1$' -AccessRight Full -Force
    Grant-SmbShareAccess -Name 'QWitness' -AccountName 'node-2$' -AccessRight Full -Force
    

Desplegar el clúster de conmutación por error

Ahora, usa las instancias de VM para implementar un clúster de conmutación por error de Windows Server y SQL Server.

Desplegar WSFC

Ahora ya puedes crear el clúster de conmutación por error:

  1. Conéctate a node-1 mediante Escritorio Remoto. Inicia sesión con tu cuenta de usuario del dominio.
  2. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
  3. Confirma la solicitud de elevación haciendo clic en .
  4. Crea un clúster:

    • Para la configuración del balanceador de carga
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -StaticAddress CLUSTER_ADDRESS
    

    Sustituye CLUSTER_ADDRESS por la dirección IP del clúster que has creado anteriormente.

    • Configuración de DNN
    New-Cluster `
      -Name sql-cluster `
      -Node node-1,node-2 `
      -NoStorage `
      -ManagementPointNetworkType Distributed
    
  5. Vuelve a la sesión de PowerShell en witness y concede al objeto de equipo virtual del clúster permiso para acceder al recurso compartido de archivos:

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

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

    Test-Cluster
    

    Es posible que veas algunas advertencias que puedes ignorar sin problema:

    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 puedes iniciar el complemento MMC Administrador de clústeres de conmutación por error para revisar el estado del clúster ejecutando cluadmin.msc.

  8. Si usas Managed AD, añade la cuenta de ordenador que usa WSFC al grupo Cloud Service Domain Join Accounts para que pueda unir ordenadores al dominio:

    Add-ADGroupMember `
      -Identity "Cloud Service Domain Join Accounts" `
      -Members sql-cluster$
    

Añadir disco de clúster

Ahora inicializa el disco compartido Hyperdisk Balanced High Availability que has creado anteriormente y añádelo al clúster:

  1. Vuelve a la sesión de PowerShell en node-1.
  2. Inicializa el disco Hyperdisk Balanced High Availability:

    $NodeName = [System.Net.Dns]::GetHostName()
    
    $ClusterDisks = Get-PhysicalDisk -CanPool $True |
      Where-Object { ($_ |
        Get-PhysicalDiskStorageNodeView |
        Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') }
    Initialize-Disk -Number $ClusterDisks[0].DeviceId
    
  3. En el disco, crea una partición que use el sistema de archivos NTFS y formatea el disco con un tamaño de bloque de 64 KB:

    New-Partition -DiskNumber $ClusterDisks[0].DeviceId `
        -UseMaximumSize  -DriveLetter D | Format-Volume `
        -FileSystem NTFS -newfilesystemlabel DataDisk -AllocationUnitSize 65536
    
  4. Añade el disco al clúster:

    Get-ClusterAvailableDisk | Add-ClusterDisk
    

    El disco aparece automáticamente en node-2, ya que el disco Hyperdisk Balanced de alta disponibilidad subyacente está conectado a ambas instancias de VM.

  5. Abre el complemento MMC Administrador de clústeres de conmutación por error:

    cluadmin.msc
    

Probar la conmutación por error de discos

También puedes probar si la conmutación por error del disco funciona correctamente:

  1. Conéctate a node-2 mediante Escritorio Remoto. Inicia sesión con tu cuenta de usuario del dominio.
  2. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y selecciona Ejecutar.
  3. Introduce cluadmin.msc y selecciona Aceptar.
  4. En el panel de la ventana de la izquierda, vaya a Administrador de clústeres de conmutación por error > sql-cluster > Almacenamiento > Discos.

    Deberías ver un disco llamado Cluster Disk 1 con el valor node-1 en Nodo propietario.

  5. Vuelve a Cloud Shell y restablece la VM node-1 para simular una conmutación por error:

    gcloud compute instances reset node-1
    
  6. Vuelve al Administrador de clústeres de conmutación por error en node-2.

  7. Observa el estado del disco pulsando repetidamente F5 para actualizar la vista.

    Al cabo de unos 30 segundos, el nodo propietario debería cambiar automáticamente a node-2.

Quitar la instalación predeterminada de SQL Server

Ahora, elimina la instalación predeterminada de SQL Server de los dos nodos y sustitúyela por una nueva configuración de FCI.

En cada uno de los dos nodos de WSFC, node-1 y node-2, sigue estos pasos:

  1. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
  2. Confirma la solicitud de elevación haciendo clic en .
  3. Elimina la instancia de SQL Server predeterminada:

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

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

    Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
    
  6. Reinicia el ordenador:

    Restart-Computer
    
  7. Espera aproximadamente 1 minuto a que se complete el reinicio.

Instalar FCI de SQL Server

Antes de instalar la nueva configuración de FCI, comprueba que node-1 es el nodo activo del clúster:

  1. Vuelve a conectarte a node-1 con Escritorio remoto e inicia sesión con tu usuario de dominio.
  2. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y selecciona Ejecutar.
  3. Introduce cluadmin.msc y selecciona Aceptar.
  4. En el panel de la ventana de la izquierda, vaya a Administrador de clústeres de conmutación por error > sql-cluster.

    Comprueba que el servidor host actual esté configurado como node-1.

    Si el servidor host actual está configurado como node-2, haz clic con el botón derecho en sql-cluster en el panel de la ventana de la izquierda y selecciona Más acciones > Mover recursos del clúster principal > Seleccionar nodo… > nodo-1 y haz clic en Aceptar.

  5. En el panel de la ventana de la izquierda, vaya a Administrador de clústeres de conmutación por error > sql-cluster > Almacenamiento > Discos.

    Verifica que el nodo propietario de Cluster Disk 1 esté configurado como node-1.

    Si el nodo propietario está configurado como node-2, haz clic en Mover almacenamiento disponible > Seleccionar nodo... > node-1 En el menú Acciones de la derecha, selecciona Aceptar.

Ahora, crea una instalación de clúster de conmutación por error de SQL Server en node-1:

  1. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
  2. Confirma la solicitud de elevación haciendo clic en .
  3. Crea una cuenta de usuario de dominio para SQL Server y el agente de SQL, y asigna una contraseña:

    $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
    
  4. Inicia la configuración de SQL Server:

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

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

  7. En la página Edición, marca la casilla Solo tengo una licencia de SQL Server y selecciona Siguiente.

  8. En la página Términos de la licencia, revisa los términos y, si los aceptas, selecciona Siguiente.

  9. En la página Microsoft Update, selecciona Siguiente para iniciar la instalación.

  10. En la página Install Failover Cluster Rules (Instalar reglas de clúster de conmutación por error), verás las advertencias MSCS cluster verification warnings (Advertencias de verificación de clústeres MSCS) y Windows firewall (Cortafuegos de Windows). Puede ignorar estas advertencias y seleccionar Siguiente.

  11. En la página Feature Selection (Selección de funciones), selecciona Database Engine Services (Servicios del motor de base de datos) y, a continuación, Next (Siguiente).

  12. En la página Instance Configuration (Configuración de la instancia), introduce sql como nombre de red y selecciona Next (Siguiente).

  13. En la página Cluster Resource Group (Grupo de recursos del clúster), mantén los valores predeterminados y selecciona Next (Siguiente).

  14. En la página Cluster Disk Selection (Selección de disco de clúster), selecciona Cluster Disk 1 (Disco de clúster 1) y, a continuación, Next (Siguiente).

  15. En la página Cluster Network Configuration (Configuración de red del clúster), configure los siguientes ajustes y, a continuación, seleccione Next (Siguiente):

    • DHCP borrar
    • Dirección IP: introduzca la dirección IP del balanceador de carga interno.
  16. En la página Configuración del servidor, configura los siguientes ajustes para SQL Server Agent y SQL Server Database Engine:

    • Nombre de la cuenta: DOMAIN\sql_server, donde DOMAIN es el nombre NetBIOS de tu dominio de Active Directory.
    • Contraseña: introduce la contraseña que has creado antes.
  17. Seleccione la pestaña Colación y elija la colación que quiera usar. A continuación, haz clic en Siguiente.

  18. En la página Configuración del motor de base de datos, selecciona Añadir usuario actual para designar al usuario actual como administrador de SQL Server. A continuación, selecciona Siguiente.

  19. En la página Listo para instalar, revisa la configuración y selecciona Instalar.

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

Ahora, añade node-2 al clúster de conmutación por error de SQL Server:

  1. Conéctate a node-2 mediante Escritorio remoto e inicia sesión con tu usuario de dominio.
  2. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
  3. Confirma la solicitud de elevación haciendo clic en .
  4. Inicia la configuración de SQL Server:

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

  6. Selecciona Añadir un 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 que llegues a la página Cuentas de servicio.

  8. En la página Cuentas de servicio, introduce la contraseña que has creado anteriormente para Agente de SQL Server y Motor de base de datos de SQL Server. A continuación, selecciona Siguiente.

  9. En la página Listo para instalar, revisa la configuración y selecciona Instalar.

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

Configurar comprobaciones del estado

Como paso final, configura el clúster para que exponga un endpoint de comprobación del estado que pueda usar un balanceador de carga interno:

  1. Vuelve a la sesión de PowerShell en node-2
  2. Inicializa una variable con la dirección IP del balanceador de carga.

    $LoadBalancerIP = 'IP_ADDRESS'
    

    Sustituye IP_ADDRESS por la dirección IP de la dirección wsfc que has reservado anteriormente.

  3. Configura el clúster de conmutación por error para que responda al servicio de comprobación del 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. Reinicia el recurso de clúster:

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

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

Crear un balanceador de carga interno

Para proporcionar un único endpoint a los clientes de SQL Server, ahora debes desplegar un balanceador de carga interno. El balanceador de carga usa una comprobación de estado que asegura que el tráfico se dirija al nodo activo del clúster de conmutación por error de Windows Server (WSFC).

  1. Vuelve a tu sesión de Cloud Shell.
  2. Crea un grupo de instancias sin gestionar y añade los dos nodos al grupo:

    gcloud compute instance-groups unmanaged create wsfc-group-1 \
    --zone $ZONE_1
    gcloud compute instance-groups unmanaged add-instances wsfc-group-1 \
    --zone $ZONE_1 \
    --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-2 \
    --zone $ZONE_2
    gcloud compute instance-groups unmanaged add-instances wsfc-group-2 \
    --zone $ZONE_2 \
    --instances node-2
    
  3. Crea una comprobación del estado que el balanceador 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"
    

    Las sondas de comprobación del estado usan el puerto 59997, que es el que configuraste anteriormente como ProbePort para la dirección IP del clúster WSFC.

  4. Crea un servicio de backend y añade el grupo de instancias:

    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-1 \
    --instance-group-zone $ZONE_1 \
    --region $REGION
    
    gcloud compute backend-services add-backend wsfc-backend \
    --instance-group wsfc-group-2 \
    --instance-group-zone $ZONE_2 \
    --region $REGION
    
  5. Crea el balanceador 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
    

Configurar un recurso de DNN y un nombre de DNS de DNN

Al igual que el balanceador de carga interno, el recurso DNN actúa como una única puerta de enlace para los clientes de SQL Server. Durante las conmutaciones por error, el clúster dirige el tráfico de forma fluida al nodo FCI de SQL Server activo. Los clientes se conectan a la instancia de clúster de conmutación por error de SQL Server con el nombre DNS.

  1. Vuelve a la sesión de PowerShell en node-1.
  2. Ejecuta la secuencia de comandos para crear el recurso de DNN

      $DNNResourceName='fci-dnn'
      $DNN_DNSName='fcidnn'
    
      # create the DNN resource
      Add-ClusterResource -Name $DNNResourceName -ResourceType 'Distributed Network Name' -Group 'SQL Server (MSSQLSERVER)'
    
      # set the DNS name of the DNN resource
      Get-ClusterResource -Name $DNNResourceName | Set-ClusterParameter -Name DnsName -Value $DNN_DNSName
    
      # start the DNN resource
      Start-ClusterResource -Name $DNNResourceName
    
  3. Reinicia node-1 y node-2.

Probar el clúster de conmutación por error

Has completado la instalación del clúster de conmutación por error, pero aún tienes que probar si funciona correctamente.

Preparar un cliente

Crea una instancia de VM que puedas usar para conectarte al clúster de conmutación por error:

  1. Vuelve a tu sesión de Cloud Shell.
  2. Crea una instancia de 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. Monitoriza el proceso de inicialización de la VM consultando la salida de su puerto serie:

    gcloud compute instances tail-serial-port-output sqlclient
    

    Espera unos 3 minutos hasta que veas el mensaje "Instance setup finished" (Configuración de la instancia finalizada) y, a continuación, pulsa Ctrl+C. En este punto, la instancia de VM ya se puede usar.

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

  5. Conéctate a la VM mediante Escritorio remoto e inicia sesión con el nombre de usuario y la contraseña que has creado en el paso anterior.

  6. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).

  7. Confirma la solicitud de elevación haciendo clic en .

  8. Une el ordenador a tu dominio de Active Directory:

    Add-Computer -Domain DOMAIN
    

    Sustituye DOMAIN por el nombre DNS de tu dominio de Active Directory.

  9. Reinicia el ordenador:

    Restart-Computer
    

    Espera aproximadamente 1 minuto a que se complete el reinicio.

Ejecutar la prueba

Usa la VM sqlclient para comprobar que puedes conectarte al clúster de conmutación por error y que la conmutación por error funciona correctamente:

  1. Conéctate a sqlclient mediante Escritorio remoto e inicia sesión con tu usuario de dominio.
  2. Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell.
  3. Conéctate al clúster de SQL Server mediante su nombre de red sql y consulta la tabla dm_os_cluster_nodes:

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

    Sustituye SQL_SERVER_NAME por el sql de la configuración del balanceador de carga o por fcidnn de la configuración de DNN.

    La salida debería tener este aspecto:

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

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

  4. Vuelve a Cloud Shell y desactiva la VM node-1 para probar la situación de conmutación por error.

    gcloud compute instances stop node-1
    
  5. Repite la consulta:

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

    Sustituye SQL_SERVER_NAME por el sql de la configuración del balanceador de carga o por fcidnn de la configuración de DNN.

    La salida debería tener este aspecto:

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

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