Configura una instancia de clúster de conmutación por error de SQL Server que use discos persistentes en modo de multiescritura

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

Las FCI de SQL Server requieren que los datos se ubiquen en el almacenamiento compartido para que se pueda acceder a ellos en todos los nodos de WSFC. En esta guía, se describe cómo implementar una instancia de clúster de conmutación por error de SQL Server 2019 y usar discos persistentes en modo multiescritura como almacenamiento compartido.

En el siguiente diagrama, se muestra la implementación:

Arquitectura

Debido a que los discos persistentes en modo multiescritura son un recurso zonal, todos los nodos de WSFC se implementan en la misma zona y usan una subred común. Los clientes se comunican con la instancia de SQL Server a través de un balanceador de cargas TCP interno. Este balanceador de cargas usa el agente de agrupamiento en clústeres de conmutación por error de Windows Server para determinar qué nodo WSFC aloja actualmente la instancia de SQL y enruta el tráfico a esa instancia.

En el artículo, se supone que ya implementaste Active Directory en Google Cloud y que tienes conocimientos básicos de SQL Server, Active Directory y Compute Engine.

Objetivos

  • Implementar un WSFC que contenga dos instancias de VM de SQL Server y una tercera instancia de VM que actúe como testigo de archivos compartidos
  • Implementar una FCI de SQL Server en el WSFC.
  • Verifique que el clúster funcione si simula una conmutación por error.

Costos

En este instructivo, se usan los siguientes componentes facturables de Google Cloud:

Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.

Antes de comenzar

Para completar esta guía, necesitas lo siguiente:

  • Un dominio de Active Directory con al menos un controlador de dominio. Puedes crear un dominio de Active Directory con Microsoft AD administrado. Como alternativa, puedes implementar un entorno de Active Directory personalizado en Compute Engine y configurar una zona privada de reenvío de DNS que reenvíe las consultas de DNS a los controladores de tu dominio.
  • Un usuario de Active Directory con permiso para unir computadoras al dominio y que puede acceder con RDP Si usas Microsoft AD administrado, puedes usar el usuario setupadmin.
  • Un proyecto de Google Cloud y una VPC con conectividad a los controladores de dominio de Active Directory.
  • Una subred para usar en las instancias de VM de WSFC.

Asegúrate de revisar las restricciones actuales de los discos persistentes en el modo de multiescritura y selecciona una zona en la que estén disponibles los discos persistentes en modo de multiescritura.

Para completar la guía, también necesitas un proyecto de GCP:

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyecto

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Descubre cómo confirmar que tienes habilitada la facturación en un proyecto.

Cuando finalices este instructivo, puedes borrar los recursos creados para evitar que se te siga facturando. Para obtener más información, consulta Realiza una limpieza.

Prepara el proyecto y la red

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

  1. En Google Cloud Console, haz clic en el botón Activar Cloud ShellActiva Cloud Shell. para abrir Cloud Shell.

    Ir a Google Cloud Console.

  2. Inicializa las siguientes variables:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Aquí:

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

    gcloud config set project PROJECT_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto de Google Cloud.

  4. Configure su zona predeterminada:

    gcloud config set compute/zone ZONE
    

    Reemplaza ZONE con el ID de la zona en la que deseas implementar.

Crea reglas de firewall

Para permitir que los clientes se conecten a SQL Server, permitir la comunicación entre los nodos de WSFC y habilitar que el balanceador de cargas realice verificaciones de estado, debes crear varias reglas de firewall. Para simplificar la creación de estas reglas de firewall, debes usar las etiquetas de red:

  • Los 2 nodos de WSFC se anotan con la etiqueta wsfc-node.
  • Todos los servidores (incluido el testigo) se anotan con la etiqueta wsfc.

Crea reglas de firewall que usen estas etiquetas de red:

  1. Regresa a tu sesión actual de Cloud Shell.
  2. Crea reglas de firewall para los nodos WSFC:

    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 \
      --target-tags=wsfc-node \
      --network=$VPC_NAME \
      --priority 10000
    
  3. Crea una regla de firewall que permita las verificaciones de estado de los rangos de IP de los sistemas de sondeo 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
    

Cree instancias de VM

Ahora implementará dos instancias de VM para el clúster de conmutación por error. En algún momento, solo una de estas VM sirve como el nodo FCI activo, mientras que el otro nodo funciona como el nodo de conmutación por error. Las dos instancias de VM deben cumplir con estos requisitos:

  • se encuentran en la misma zona para que puedan acceder a los mismos discos persistentes.
  • tengan clústeres de conmutación por error de Windows Server y SQL Server instalados.
  • Tener habilitada la compatibilidad con WSFC de Compute Engine

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

A fin de proporcionar un voto de desempate y lograr un quórum para la situación de conmutación por error, implementa una tercera VM que funcione como un testigo de archivos compartidos.

  1. Regresa a tu sesión actual de Cloud Shell.
  2. Crea una política de posición que distribuya los nodos de WSFC a través de la infraestructura subyacente del centro de datos para que no compartan el mismo host ni sistema de energía:

    ZONE=$(gcloud config get-value compute/zone)
    gcloud compute resource-policies create group-placement spread-placement \
      --availability-domain-count 2 \
      --region ${ZONE::-2}
    
  3. Crea una secuencia de comandos de specialize para los nodos 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="Open port for Health Check" dir=in action=allow protocol=TCP localport=59997
    
    # Open firewall for SQL Server
    netsh advfirewall firewall add rule name="Open SQL Server port" dir=in action=allow protocol=TCP localport=1433
    
    EOF
    
  4. Crea las instancias de VM y habilita el agente de agrupamiento en clústeres de conmutación por error de Windows Server en los nodos WSFC mediante la configuración de la clave de metadatos enable-wsfc en true:

    MACHINE_TYPE=n2-standard-8
    
    gcloud compute instances create node-1 \
      --resource-policies spread-placement \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2019 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-1" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create node-2 \
      --resource-policies spread-placement \
      --machine-type $MACHINE_TYPE \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2019 \
      --image-project windows-sql-cloud \
      --tags wsfc,wsfc-node \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --boot-disk-device-name "node-2" \
      --metadata enable-wsfc=true \
      --metadata-from-file=sysprep-specialize-script-ps1=specialize-node.ps1
    
    gcloud compute instances create "witness" \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family=windows-2019 \
      --image-project=windows-cloud \
      --tags wsfc \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd \
      --metadata sysprep-specialize-script-ps1="add-windowsfeature FS-FileServer"
    
  5. Para unir las 3 instancias de VM a Active Directory, haz lo siguiente en cada una de las 3 instancias de VM:

    1. Supervisa el proceso de inicialización de la VM cuando ves su salida de puerto en serie:

      gcloud compute instances tail-serial-port-output NAME
      

      Reemplaza NAME con el nombre de la instancia de VM.

      Espera unos 3 minutos hasta que veas el resultado Instance setup finished y presiona Ctrl+C. En este punto, la instancia de VM está lista para usarse.

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

    3. Conéctate a la VM mediante el escritorio remoto y accede con el nombre de usuario y la contraseña que creaste en el paso anterior.

    4. Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).

    5. Para confirmar el símbolo de elevación, haz clic en .

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

      Add-Computer -Domain DOMAIN
      

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

    7. Reinicia la computadora:

      Restart-Computer
      

      Espera aproximadamente 1 minuto para que se complete el reinicio.

Crea discos persistentes en modo multiescritura

Ahora crearás 3 discos persistentes en modo de multiescritura y adjuntarás cada uno de ellos a los nodos WSFC.

  1. Regresa a tu sesión actual de Cloud Shell.
  2. Cree 3 discos persistentes compartidos:

    PD_SIZE=50
    
    gcloud beta compute disks create datadisk-1 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    gcloud beta compute disks create datadisk-2 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    gcloud beta compute disks create datadisk-3 \
      --size $PD_SIZE \
      --type pd-ssd \
      --multi-writer \
      --zone $(gcloud config get-value compute/zone)
    
  3. Adjunta los discos a node-1:

    gcloud compute instances attach-disk node-1 --disk datadisk-1
    gcloud compute instances attach-disk node-1 --disk datadisk-2
    gcloud compute instances attach-disk node-1 --disk datadisk-3
    
  4. Adjunta los discos a node-2:

    gcloud compute instances attach-disk node-2 --disk datadisk-1
    gcloud compute instances attach-disk node-2 --disk datadisk-2
    gcloud compute instances attach-disk node-2 --disk datadisk-3
    

Reserva direcciones IP del clúster

Ahora debes reservar dos direcciones IP estáticas en tu VPC. El balanceador de cargas interno usa la dirección IP como la dirección IP del clúster de WSFC.

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

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

    Toma nota de la dirección IP, que la necesitarás más adelante.

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

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

    Toma nota de la dirección IP, que la necesitarás más adelante.

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

Crea un archivo de testigo

A fin de preparar witness para que funcione como testigo de archivos compartidos, crea un recurso compartido de archivos y otórgale y que los dos nodos de WSFC accedan a estos archivos:

  1. Conéctate a witness mediante el escritorio remoto. Accede con la cuenta de usuario de tu dominio.
  2. Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
  3. Para confirmar el símbolo de elevación, haz clic en .
  4. Crea la carpeta 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$
    

Implementa el clúster de conmutación por error

Ahora usa las instancias de VM para implementar un WSFC y SQL Server.

Implementa WSFC

Ya estás listo para crear el clúster de conmutación por error.

  1. Conéctate a node-1 mediante el escritorio remoto. Accede con la cuenta de usuario de tu dominio.
  2. Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
  3. Para confirmar el símbolo de elevación, haz clic en .
  4. Crea un clúster nuevo:

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

    Reemplaza CLUSTER_ADDRESS por la dirección IP del clúster que creaste antes.

  5. Configura el clúster para usar el recurso de archivos compartidos en witness como un quórum de clúster:

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

    Test-Cluster
    

    Es posible que veas algunas advertencias que se puedan ignorar sin riesgo.

    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 de MMC del administrador de clústeres de conmutación por error para revisar el estado del clúster si ejecutas cluadmin.msc.

  7. Si usas AD administrado, agrega la cuenta de computadora que usa WSFC al grupo de cuentas de unión de dominio de Cloud Service para que pueda unir computadoras al dominio:

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

Crea un grupo de almacenamiento

Ahora crearás un grupo de almacenamiento que combina los tres discos persistentes que creaste antes y usas el grupo de almacenamiento para crear un volumen compartido del clúster:

  1. Regresa a la sesión de PowerShell en node-1.
  2. Crea un nuevo grupo de almacenamiento que use los 3 discos persistentes:

    $NodeName = [System.Net.Dns]::GetHostName()
    
    $ClusterDisks = Get-PhysicalDisk -CanPool $True |
      Where-Object { ($_ |
        Get-PhysicalDiskStorageNodeView |
        Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') }
    
    $Pool = New-StoragePool `
      -StorageSubsystemFriendlyName 'Clustered*' `
      -FriendlyName FciPool `
      -PhysicalDisks $ClusterDisks `
      -Verbose
    
  3. En el grupo de almacenamiento, crea un volumen nuevo que use las versiones de volumen compartida del clúster de ReFS y un tamaño de clúster de 64 KB:

    $Pool | New-Volume `
      -FriendlyName FciVolume `
      -FileSystem CSVFS_ReFS `
      -Size 100GB `
      -AllocationUnitSize 65536
    

    El volumen se muestra de forma automática en node-2, ya que los discos persistentes subyacentes se conectan a ambas instancias de VM.

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

    cluadmin.msc
    
  5. En el panel de la izquierda, navegue a Conmutación por error del clúster de clústeres > Windows-fci > Almacenamiento > Discos.

  6. Haz clic derecho en Clúster virtual Disco (FciVolume) y selecciona Quitar de los volúmenes compartidos del clúster.

  7. Selecciona Cluster Virtual Disk (FciVolume).

  8. En la pestaña Volumen, en la parte inferior, haz clic con el botón derecho en el volumen y selecciona Cambiar letra de unidad.

  9. Selecciona la letra de unidad D y haz clic en Aceptar.

Prueba la conmutación por error del grupo de almacenamiento

De manera opcional, ahora puedes probar si la conmutación por error del grupo de almacenamiento funciona de forma correcta:

  1. Conéctate a node-2 mediante el escritorio remoto. Accede con la cuenta de usuario de tu dominio.
  2. Haz clic con el botón derecho en Inicio (o presiona Win + X) y selecciona Ejecutar
  3. Ingresa cluadmin.msc y selecciona Aceptar.
  4. En el panel de la izquierda, ve a Conmutación por error del clúster de clústeres > Windows-fci > Almacenamiento > Grupos.

    Debería ver un grupo llamado Grupo de clústeres 1 con Nodo de propietario configurado en node-1.

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

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

  7. Observa el estado del grupo de almacenamiento presionando F5 de forma repetida para actualizar la vista.

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

Quita la instalación predeterminada de SQL Server

Ahora quitarás la instalación predeterminada de SQL Server de los dos nodos y la reemplazarás por una nueva configuración de FCI.

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

  1. Haz clic derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
  2. Para confirmar el símbolo de elevación, haz clic en .
  3. Quita la instancia predeterminada de SQL Server:

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

    Restart-Computer
    
  5. Espera aproximadamente 1 minuto para que se complete el reinicio.

Instala la FCI de SQL Server

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

  1. Vuelve a conectarte a node-1 con el escritorio remoto y accede con el usuario de tu dominio.
  2. Haz clic con el botón derecho en Inicio (o presiona Win + X) y selecciona Ejecutar
  3. Ingresa cluadmin.msc y selecciona Aceptar.
  4. En el panel de la izquierda, navegue a Conmutación por error del clúster de clústeres > windows-fci.

    Verifica 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 windows-fci en el panel de la ventana izquierda y selecciona Más acciones > Mover recursos del clúster principal > Seleccionar nodo... > node-1 y haz clic en Aceptar.

  5. En el panel de la izquierda, ve a Conmutación por error del clúster de clústeres > Windows-fci > Almacenamiento > Grupos.

    Verifica que el nodo de propietario del Grupo de clústeres 1 esté configurado como node-1.

    Si el nodo de propietario está configurado como node-2, haz clic con el botón derecho en el grupo, selecciona Mover > Seleccionar nodo > node1 y haz clic en Aceptar..

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

  1. Haz clic derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
  2. Para confirmar el símbolo de elevación, haz clic en .
  3. Crea una cuenta de usuario de dominio para el servidor SQL 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 Actualización de Microsoft, selecciona Siguiente para comenzar la instalación.

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

  9. En la página Clave del producto, mantén los valores predeterminados y selecciona Siguiente.

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

  11. En la página Selección de características, selecciona Servicios de motor de base de datos y Siguiente.

  12. En la página Configuración de la instancia, ingresa sql como nombre de la red y selecciona Siguiente.

  13. En la página Grupo de recursos de clúster, mantén los valores predeterminados y selecciona Siguiente.

  14. En la página Selección del disco de clúster, selecciona Clúster virtual de disco (FciVolume) y, luego, Siguiente.

  15. En la página Configuración de red del clúster, establece la siguiente configuración y, luego, selecciona Siguiente:

    • DHCP: claro
    • Dirección IP: Ingresa la dirección IP del balanceador de cargas interno.
  16. En la página Configuración del servidor, establece la siguiente configuración para SQL Server Agent y SQL Server Database Engine:

    • Nombre de la cuenta: DOMAIN\sql_server en el que DOMAIN es el nombre de NetBIOS de tu dominio de Active Directory
    • Contraseña: Ingrese la contraseña que creó anteriormente.
  17. Selecciona la pestaña Intercalación y selecciona la intercalación que deseas usar. Luego, haga clic en Next.

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

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

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

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

  1. Conéctate a node-2 mediante el escritorio remoto y accede con el usuario de tu dominio.
  2. Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
  3. Para confirmar el símbolo de elevación, haz 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 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 que llegues a la página Cuentas de servicio.

  8. En la página Cuentas de servicio, ingresa la contraseña que creaste anteriormente para SQL Server Agent y SQL Server Database Engine. Luego, selecciona Siguiente.

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

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

Configura verificaciones de estado

Como último paso, configura el clúster a fin de usar la dirección IP que reservaste para el balanceador de cargas interno:

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

    $LoadBalancerIP = 'IP_ADDRESS'
    

    Reemplaza IP_ADDRESS por la dirección IP de la dirección wsfc que reservaste antes.

  3. Configura 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. Ejecuta el siguiente comando para reiniciar el recurso del clúster:

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

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

Crea un balanceador de cargas interno

A fin de proporcionar un extremo único para los clientes de SQL Server, debes implementar un balanceador de cargas interno que use una verificación de estado que garantice que el tráfico se dirija al nodo activo del WSFC. La verificación de estado sondea un extremo especial del agente de Compute Engine. Este extremo responde solo en buen estado si la VM es el nodo activo actualmente en el WSFC.

  1. Regresa a tu sesión actual de Cloud Shell.
  2. Crea un grupo de instancias no administrado y agrega los dos nodos al grupo:

    gcloud compute instance-groups unmanaged create wsfc-group
    gcloud compute instance-groups unmanaged add-instances wsfc-group --instances node-1,node-2
    
  3. 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 wsfc-healthcheck \
      --check-interval="2s" \
      --healthy-threshold=1 \
      --unhealthy-threshold=2 \
      --port=59997 \
      --timeout="1s"
    
  4. Crea un servicio de backend y agrega el siguiente grupo de instancias:

    gcloud compute backend-services create wsfc-backend \
      --load-balancing-scheme internal \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --health-checks wsfc-healthcheck \
      --protocol tcp
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group \
      --instance-group-zone $(gcloud config get-value compute/zone) \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev)
    
  5. Crea el balanceador de cargas interno:

    gcloud compute forwarding-rules create wsfc-sql \
      --load-balancing-scheme internal \
      --address=$LOADBALANCER_ADDRESS \
      --ports 1433 \
      --network $VPC_NAME \
      --subnet $SUBNET_NAME \
      --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \
      --backend-service wsfc-backend
    

Prueba el clúster de conmutación por error

Completaste la instalación del clúster de conmutación por error, pero aún es necesario que pruebes si el clúster funciona de forma correcta.

Prepara un cliente

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

  1. Regresa a tu sesión actual de Cloud Shell.
  2. Crea una instancia de VM nueva:

    gcloud compute instances create sqlclient \
      --machine-type n2-standard-2 \
      --subnet $SUBNET_NAME \
      --image-family sql-ent-2019-win-2019 \
      --image-project windows-sql-cloud \
      --boot-disk-size 50 \
      --boot-disk-type pd-ssd
    
  3. Supervisa el proceso de inicialización de la VM cuando ves su salida de puerto en serie:

    gcloud compute instances tail-serial-port-output sqlclient
    

    Espera unos 3 minutos hasta que finalice la configuración de la instancia de salida y presiona Ctrl+C. En este punto, la instancia de VM está lista para usarse.

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

  5. Conéctate a la VM mediante el escritorio remoto y accede con el nombre de usuario y la contraseña que creaste en el paso anterior.

  6. Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).

  7. Para confirmar el símbolo de elevación, haz clic en .

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

    Add-Computer -Domain DOMAIN
    

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

  9. Reinicia la computadora:

    Restart-Computer
    

    Espera aproximadamente 1 minuto para que se complete el reinicio.

Ejecuta la prueba

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

  1. Conéctate a sqlclient mediante el escritorio remoto y accede con el usuario de tu dominio.
  2. Haz clic derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell.
  3. Conéctate al clúster de SQL Server con 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 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    El resultado debería verse así:

    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 del clúster de conmutación por error de SQL Server.

  4. Regrese a Cloud Shell y desactive 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 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    Ahora, el resultado debería verse de la siguiente manera:

    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 tiene éxito y muestra que node-2 es el propietario actual del clúster de conmutación por error.

Realice una limpieza

Una vez que hayas terminado el instructivo de clústeres de conmutación por error, puedes limpiar los recursos que creaste en Google Cloud para que no consuman la cuota y no se te cobren 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, sigue estos pasos:

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

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

¿Qué sigue?