Configura una instancia de clústeres de conmutación por error de SQL Server que use espacios de almacenamiento directo


Las instancias de clústeres de conmutación por error (FCI) de SQL Server Microsoft te permiten ejecutar una sola 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 de forma activa la instancia de SQL. En el caso de una falla, WSFC transfiere de forma automática la propiedad de los recursos de la instancia a otro nodo.

Las FCI de SQL Server necesitan que los datos se ubiquen en almacenamiento compartido para que se pueda acceder a ellos a través de todos los nodos WSFC. En esta guía, se describe cómo implementar una instancia de clústeres de conmutación por error de SQL Server 2019 que usa espacios de almacenamiento directo (S2D) para el almacenamiento compartido. El S2D proporciona una SAN virtual basada en software que puede usar discos de datos de VM de Compute Engine para almacenar la base de datos de SQL.

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

Arquitectura

Cuando se implementa una arquitectura hiperconvergente, las instancias de VM node-1 y node-2 funcionan como nodos del WSFC y también alojan el almacenamiento compartido. Una tercera instancia de VM, witness, se usa para lograr un quórum en una situación de conmutación por error. Las tres instancias de VM se distribuyen en tres zonas y comparten una subred común.

Los clientes se comunican con la instancia de SQL Server a través de un balanceador de cargas de TCP interno. Este balanceador de cargas usa una verificación de estado personalizada para determinar qué nodo del WSFC aloja 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

  • Implementa un WSFC que incluya dos instancias de VM de SQL Server y una tercera instancia de VM que actúe como testigo de archivos compartidos.
  • Implementa una FCI de SQL Server en el WSFC.
  • Verifica que el clúster esté en funcionamiento a través de la simulación de 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:

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

  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 la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

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

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

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

    Ve a la consola de Google Cloud.

  2. Inicializa las siguientes variables:

    VPC_NAME=VPC_NAME
    SUBNET_NAME=SUBNET_NAME
    

    Aquí:

    • VPC_NAME: Es el nombre de tu VPC.
    • SUBNET_NAME: Es el 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. Configura la región predeterminada:

    gcloud config set compute/region REGION
    

    Reemplaza REGION por el ID de la región en la que deseas realizar la implementación.

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 del WSFC tienen anotaciones con la etiqueta wsfc-node.
  • Todos los servidores (incluido el testigo) están anotados 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 del 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 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 cualquier momento, solo una de estas VM funciona como el nodo de las FCI activo, mientras que el otro nodo funciona como el nodo de conmutación por error. Las dos instancias de VM deben cumplir los siguientes requisitos:

  • Se encuentran en la misma región para que un balanceador de cargas TCP interno pueda acceder a ellas.
  • Su agente invitado está configurado para usar el modo WSFC. En este modo, el agente invitado ignora las direcciones IP de los balanceadores de cargas internos cuando configura la interfaz de red local. Este comportamiento es necesario para evitar conflictos de direcciones IP durante los eventos de conmutación por error de WSFC.

Usa una imagen premium de SQL Server que tenga SQL Server 2019 preinstalado.

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

  1. Regresa a tu sesión actual de Cloud Shell.
  2. Crea una secuencia de comandos de specialize para los nodos de WSFC. La secuencia de comandos instala la función 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. Crea las instancias de VM. En las dos VMs que funcionan como nodos S2D y WSFC, conecta los discos de datos adicionales y habilita el modo WSFC mediante la configuración de 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, haz lo siguiente para 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 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 a través de 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 y reiníciala:

      Add-Computer -Domain DOMAIN -Restart
      

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

      Espera un aproximado de 1 minuto para que se complete el reinicio.

Reserva direcciones IP del clúster

Ahora debes reservar dos direcciones IP estáticas en tu red de VPC. Las dos direcciones tienen propósitos diferentes:

  • IP del balanceador de cargas: Los clientes usan esta dirección IP para conectarse a SQL Server.
  • IP de clúster: El WSFC solo usa esta dirección IP de forma interna.

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

  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 \
      --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"
    

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

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

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

Crea un archivo compartido de testigo

Para preparar witness para que funcione como testigo de archivos compartidos, crea un recurso compartido de archivos y otorga a los dos nodos del WSFC acceso a los archivos compartidos:

  1. Conéctate a witness a través de el escritorio remoto. Accede con tu cuenta de usuario de 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 de testigo y compártela:

    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$
    

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 a través de el escritorio remoto. Accede con tu cuenta de usuario de 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.

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

  5. Regresa a la sesión de PowerShell en witness y otorga 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. Regresa a la sesión de PowerShell en node-1 y configura el clúster para usar el archivo compartido en witness como un quórum del clúster:

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

    Test-Cluster
    

    Es posible que veas algunas advertencias que pueden ignorarse 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 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.

  8. Si usas AD administrado, agrega la cuenta de computadora que usa WSFC al grupo de cuentas de unión de 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$
    

Habilita espacios de almacenamiento directo

Ahora habilita S2D y creas un volumen compartido de clústeres que combine los tres discos persistentes que creaste antes:

  1. Regresa a la sesión de PowerShell en node-1.
  2. Habilita S2D:

    Enable-ClusterStorageSpacesDirect
    

    De forma opcional, si deseas obtener un mejor rendimiento del disco, puedes agregar SSD locales de SCSI a tus nodos S2D, además de los discos persistentes SSD estándares. Los SSD locales pueden actuar como capa de almacenamiento en caché S2D. Haz que la cantidad de unidades con capacidad (discos persistentes SSD en nuestro caso) sea un múltiplo de la cantidad de unidades SSD locales. Ejecuta el siguiente comando para habilitar S2D con almacenamiento en caché:

    Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
    

    Acepta el valor predeterminado cuando se te solicite confirmar. Es posible que veas algunas advertencias que pueden ignorarse 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. De forma opcional, configura la caché en memoria de volumen compartido de clúster (CSV) en 2,048 MB para una mejor capacidad de procesamiento de lectura:

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

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

Prueba la conmutación por error del grupo de almacenamiento

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

  1. Conéctate a node-2 a través de el escritorio remoto. Accede con tu cuenta de usuario de 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 ventana izquierda, navega hasta Administrador de clústeres de conmutación por error > window-fci > Almacenamiento > Grupos.

    Deberías ver un grupo llamado Grupo de clústeres 1 con Nodo propietario configurado como 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 --zone $REGION-a
    
  6. Regresa al Administrador de clústeres de conmutación por error en node-2.

  7. Observa el estado del grupo de almacenamiento. Para ello, presiona varias veces F5 para actualizar la vista.

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

Quita la instalación predeterminada de SQL Server

Ahora quitas la instalación predeterminada de SQL Server de los dos nodos y la reemplazas por una nueva configuración de FCI.

Para cada uno de los dos nodos del 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. Quita el controlador de Microsoft OLE:

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

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

    Restart-Computer
    
  7. Espera un aproximado de 1 minuto para que se complete el reinicio.

Instala FCI de SQL Server

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

  1. Vuelve a conectarte a node-1 a través de el escritorio remoto y accede con el usuario del 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 ventana izquierda, navega a Administrador de clústeres de conmutación por error > 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 principales recursos de clúster > Seleccionar nodo… > node-1 y haz clic en Aceptar.

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

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

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

Ahora debes crear una instalación nueva del clúster de conmutación por error de SQL Server 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 SQL Server y el agente de SQL, y asigna una contraseña:

    Active Directory

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

    Reemplaza DOMAIN por el nombre distinguido de tu dominio, por ejemplo DC=example,DC=org.

  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 Microsoft Update, selecciona Siguiente para comenzar la instalación.

  8. En la página Install Failover Cluster Rules, verás una advertencia de verificación de clúster de MSCS y un firewall de Windows. Puedes 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 Database Engine Services y, luego, Siguiente.

  12. En la página Configuración de instancias, ingresa sql en el nombre de la red y la instancia con nombre 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 Cluster Disk Selection, habilita el Disco virtual del clúster (FciVolume) e inhabilita todos los demás discos. Selecciona Siguiente.

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

    • DHCP: borrar
    • 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 Agente SQL Server y Motor de base de datos de SQL Server:

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

  18. En la página Database Engine Configuration, 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, revisa la configuración y, luego, selecciona Instalar.

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

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

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

  1. Conéctate a node-2 a través de 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 llegar a la página Cuentas de servicio.

  8. En la página Cuentas de servicio, ingresa la contraseña que creaste antes para el agente SQL Server y el Motor de base de datos de SQL Server. Luego, selecciona Siguiente.

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

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

Configura las verificaciones de estado

Como paso final, configura el clúster para exponer un extremo de verificación de estado que pueda usar un 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

para proporcionar un único extremo para los clientes de SQL Server, ahora debes implementar un balanceador de cargas interno. El balanceador de cargas usa una verificación de estado que garantiza que el tráfico se dirija al nodo activo del WSFC.

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

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

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

  4. Crea un servicio de backend y agrega 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. 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 $REGION \
      --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 debes probar si el clúster funciona de forma correcta.

Prepara un cliente

Crea una instancia de VM nueva 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 \
      --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. 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 minutos hasta que veas el resultado Instance setup finished 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 a través de 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 un aproximado de 1 minuto para que se complete el reinicio.

Ejecuta la prueba

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

  1. Conéctate a sqlclient a través de el escritorio remoto y accede con el usuario de tu dominio.
  2. Haz clic con el botón derecho en Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell.
  3. Conéctate al clúster de SQL Server mediante TCP/IP y el nombre de DNS sql y consulta 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"
    

    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. Regresa a Cloud Shell y desactiva la VM del nodo-1 para probar la situación de conmutación por error.

    gcloud compute instances stop node-1 --zone $REGION-a
    
  5. Repite 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"
    

    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.

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 tus datos. Utiliza una copia de seguridad de SQL nativa en su lugar.

Limpia

Una vez que completes el instructivo, puedes limpiar los recursos que creaste para que dejen de usar la cuota y generar cargos. 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 la consola de Google Cloud, 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?