Configurar SQL Server en Google Cloud con volúmenes de NetApp de Google Cloud

En este tutorial se explica cómo configurar un entorno de alta resiliencia Google Cloud para SQL Server instalado en un almacenamiento de archivos compartidos de Server Message Block (SMB) mediante volúmenes de NetApp de Google Cloud.

Los grupos de disponibilidad Always On (GA) de Microsoft SQL Server te permiten replicar bases de datos en varias instancias de SQL Server Enterprise. Las instancias tradicionales de SQL Server Always On suelen requerir que cada nodo mantenga una copia de los datos, lo que puede resultar caro rápidamente a medida que crecen las bases de datos. Por ejemplo, en una implementación tradicional de SQL Server Always On, si las bases de datos tienen un tamaño de 10 TB, cada réplica debe tener al menos 10 TB de almacenamiento aprovisionado. Una de las ventajas de tener un clúster de conmutación por error de Windows Server (WSFC) implementado para SQL Server es que solo necesitas tener una copia de los datos, que se comparte entre los nodos del clúster. Por lo tanto, si ejecutas SQL Server Always On en una instancia de clúster de conmutación por error (FCI) en un WSFC, puedes ahorrar costes inmediatamente al reducir la cantidad de almacenamiento necesaria.

NetApp Volumes es una solución de almacenamiento en la nube para ejecutar cargas de trabajo de SQL Server de alto rendimiento en combinación con instancias de Compute Engine. La base de datos SQL Server a través de SMB en volúmenes de NetApp proporciona un nivel muy alto de resiliencia entre las instancias y el servicio de almacenamiento. Google Cloud La conmutación por error transparente de SMB permite realizar operaciones de mantenimiento en los volúmenes de NetApp sin interrumpir la conectividad con las aplicaciones de servidor que almacenan y acceden a datos en volúmenes de SMB. Para admitir la conmutación por error transparente de SMB, NetApp Volumes admite la opción de recursos compartidos de disponibilidad continua (CA) de SMB para usarla con cargas de trabajo de SQL Server. Esto proporciona mejoras en el rendimiento, la escalabilidad y los costes de las instancias únicas, las instancias de clúster de conmutación por error Always On (AOFC) y las implementaciones de grupos de disponibilidad Always On.

Esta página está dirigida a administradores de volúmenes de NetApp y de bases de datos de SQL Server que se encargan de implementar Microsoft SQL Server en Google Cloud. Se supone lo siguiente:

  • Conoces los distintos componentes de la solución
  • Ya has desplegado Active Directory en Google Cloud

Preparar el proyecto y la red

Para preparar tu proyecto de Google Cloud y tu nube privada virtual (VPC) para el despliegue de grupos de disponibilidad Always On de SQL Server, haz lo siguiente:

  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
    

    Haz los cambios siguientes:

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

  5. Define tu zona predeterminada:

    gcloud config set compute/zone ZONE
    

    Sustituye ZONE por el ID de la zona en la que quieras implementar el servicio.

Crear SMB en volúmenes de NetApp para SQL Server

Para crear un volumen de NetApp, debes crear una política de Active Directory, un acceso a servicios privados, un pool de almacenamiento y un volumen de almacenamiento.

  1. Crea un acceso privado a los servicios para los volúmenes de NetApp siguiendo las instrucciones que se indican en Configurar acceso privado a servicios.

  2. Para crear una política de Active Directory, haz lo siguiente:

    1. En la Google Cloud consola, ve a la página Volúmenes de NetApp.

      Ir a NetApp Volumes

    2. En el panel de navegación, haga clic en Políticas de Active Directory en la sección Políticas.

    3. Haz clic en el botón Crear.

    4. Especifique un nombre para la política de Active Directory.

    5. En Región, selecciona la región disponible más cercana a la ubicación donde se alojarán las instancias de SQL Server.

    6. En la sección Detalles de la conexión de Active Directory, proporciona la siguiente información:

      1. Nombre del dominio
      2. Direcciones del servidor DNS de Active Directory
      3. Nombre del sitio de Active Directory
      4. Nombre de la unidad organizativa
      5. Prefijo de nombre de NetBIOS
    7. En la sección Credenciales de Active Directory, proporciona las credenciales de un usuario que tenga permiso para unir ordenadores al dominio especificado.

    8. En la sección Configuración de SMB, indica los Operadores de copia de seguridad y los Usuarios con privilegios de seguridad, si procede.

    9. Haga clic en Crear para completar el proceso de creación de una política de Active Directory.

  3. Para crear un nuevo grupo de almacenamiento, sigue estos pasos:

    1. En el panel de navegación, haga clic en Grupos de almacenamiento en la sección Almacenamiento.
    2. Haz clic en el botón Crear.
    3. Escribe un nombre para el grupo de almacenamiento.
    4. En Ubicación, selecciona la región disponible más cercana a la ubicación donde se alojarán las instancias de SQL Server.
    5. Selecciona un nivel de servicio que cumpla el rendimiento de almacenamiento esperado.

    6. Introduce la capacidad del grupo de almacenamiento. La capacidad del grupo de almacenamiento define la capacidad total de almacenamiento que se puede asignar a todos los volúmenes del grupo.

    7. En la lista Red, selecciona la VPC en la que se alojarán las instancias de SQL Server.

    8. En la sección Política de Active Directory, selecciona Asignar una política de Active Directory al grupo de almacenamiento y elige la política de Active Directory que has creado en el paso anterior.

    9. Haga clic en el botón Crear para completar el proceso de creación de un nuevo grupo de almacenamiento.

  4. Para probar la conexión entre el grupo de almacenamiento y el directorio activo, haz lo siguiente:

    1. En la Google Cloud consola, ve a la página Política de Active Directory.

      Ir a las políticas de Active Directory

    2. Haga clic en la política de Active Directory que asignó al grupo de almacenamiento en el paso anterior.

    3. Busca Grupos de almacenamiento asociados y haz clic en Probar conexión de Active Directory.

  5. Para crear un volumen de almacenamiento, sigue estos pasos:

    1. En el panel de navegación, haga clic en Volúmenes en la sección Almacenamiento.
    2. Haz clic en el botón Crear.
    3. Especifica un nombre para el volumen de almacenamiento.
    4. En Detalles del grupo de almacenamiento, haz clic en Seleccionar grupo de almacenamiento para elegir el que has creado en el paso anterior.
    5. En la sección Detalles del volumen, proporcione la siguiente información:
      1. Nombre de la acción
      2. Capacidad de volumen
    6. En la sección Protocol(s) configuration (Configuración de protocolos), selecciona el protocolo SMB y Enable CA share support for SQL Server, FSLogix (Habilitar la compatibilidad con el recurso compartido de CA para SQL Server y FSLogix).
    7. Haga clic en el botón Crear para completar el proceso de creación de un nuevo volumen de almacenamiento.

Crear reglas de cortafuegos

Para permitir que los clientes se conecten a SQL Server, permita la comunicación entre los nodos del clúster de conmutación por error de Windows Server (WSFC) y habilite el balanceador de carga para realizar comprobaciones de estado. Para ello, debe crear varias reglas de cortafuegos. Para simplificar la creación de estas reglas de cortafuegos, puede usar etiquetas de red:

  • Los WSFC que utilices se anotarán con la etiqueta wsfc-node.
  • Todos los servidores, incluido el de testigo, están anotados con la etiqueta wsfc.

Para crear reglas de cortafuegos que usen estas etiquetas de red, siga estos pasos:

  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 del estado de los intervalos de direcciones IP de los Google Cloud probers:

    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 desplegarás tres instancias de VM para el clúster de conmutación por error.

Node-1 alojará la réplica principal de la base de datos de SQL Server y node-2 alojará la réplica secundaria. Las dos instancias de VM deben cumplir los siguientes requisitos:

  • Estar en la misma región para que se pueda acceder a ellos mediante un balanceador de carga de red de paso a través interno
  • Tener instalado WSFC y SQL Server 2022 mediante la imagen premium de SQL Server

  • Tener habilitada la compatibilidad con WSFC de Compute Engine

Para emitir un voto de desempate y alcanzar el quórum en el escenario de conmutación por error, se despliega una tercera instancia de VM node-3 que actúa como testigo de recurso compartido de archivos.

  1. Vuelve a tu sesión de Cloud Shell.
  2. Crea una secuencia de comandos 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
    
    # Open firewall for SQL Server replication
    netsh advfirewall firewall add rule name="Allow SQL Server replication" dir=in action=allow protocol=TCP localport=5022
    
    EOF
    
  3. Crea las instancias de VM. En las dos VMs que actúan como nodos de WSFC, conecta un disco de datos adicional y habilita Windows Server Failover Clustering. Para ello, asigna el valor true a la clave de metadatos enable-wsfc:

    REGION=$(gcloud config get-value compute/region)
    PD_SIZE=200
    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-2022-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" \
      --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-2022-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" \
      --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 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 minutos hasta que veas el resultado Instance setup finished. A continuación, 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 la instancia de VM a tu dominio de Active Directory y reiníciala:

      Add-Computer -Domain DOMAIN -Restart
      

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

      Espera a que se reinicie la instancia de VM.

Asignar permisos de almacenamiento

Para asignar permisos al almacenamiento de volúmenes en la nube, sigue estos pasos:

  1. En la Google Cloud consola, selecciona Cloud Volumes y, a continuación, el volumen que acabas de crear.

    Volumen de Cloud

  2. Conéctate a node-1 mediante Escritorio Remoto. Inicia sesión con tu cuenta de usuario del dominio.

  3. Abre el Explorador de Windows y haz clic con el botón derecho en Este equipo.

  4. Selecciona Asignar unidad de red.

  5. Pega la ruta SMB copiada en la carpeta.

    Volumen de Cloud

  6. Al iniciar sesión, inhabilita la opción Volver a conectar.

  7. Haz clic en Finalizar.

  8. Haz clic con el botón derecho en la unidad de red asignada y selecciona Propiedades.

    Volumen de Cloud

  9. En la pestaña Seguridad, haz clic en Editar.

  10. Elimina a todos los usuarios y añade las cuentas de servicio del instalador y del servicio de SQL Server con permisos de control total.

    Volumen de Cloud

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

Reservar direcciones IP de clúster

Reserva dos direcciones IP estáticas en tu VPC: una para la dirección IP del clúster WSFC y otra para 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 $(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"
    

    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:

    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"
    

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

Desplegar el clúster de conmutación por error

Ahora usarás las instancias de VM para desplegar 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:

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

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

  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 'windows-fci$:(OI)(CI)(M)'
    Grant-SmbShareAccess `
      -Name QWitness `
      -AccountName 'windows-fci$' `
      -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 instancias de VM al dominio:

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

Quitar la instalación predeterminada de SQL Server

Ahora, eliminarás la instalación predeterminada de SQL Server de los dos nodos y la sustituirás 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 a que se reinicie la instancia de VM.

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 > windows-fci y haga lo siguiente:

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

    2. 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 izquierda y selecciona Más acciones > Mover recursos del clúster principal > Seleccionar nodo… > nodo-1 y haz clic en Aceptar.

Crearás una nueva 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. Inicia la configuración de SQL Server:

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

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

  6. En la página Edición, introduce la clave de producto, selecciona el tipo de licencia de software y haz clic en Siguiente.

  7. En la página Términos de la licencia, revisa los términos y, si los aceptas, haz clic en Siguiente.

  8. En la página Microsoft Update, haz clic en Siguiente para iniciar la instalación.

  9. 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). Puedes ignorar estas advertencias y hacer clic en Siguiente.

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

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

  12. En la página Cluster Resource Group (Grupo de recursos del clúster), puede ignorar las advertencias de calificación y hacer clic en Next (Siguiente).

  13. En la página Cluster Disk Selection (Selección de disco del clúster), haz clic en Next (Siguiente).

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

    • DHCP borrar
    • Dirección IP: introduzca la dirección IP del balanceador de carga interno.
  15. 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 del usuario sql_server.
  16. Seleccione la pestaña Colación y elija la colación que quiera usar. A continuación, haz clic en Siguiente.

  17. 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. En la pestaña Directorios de datos, introduce la ruta SMB en el campo Directorio raíz de datos y selecciona Siguiente. Aparecerá una ventana de mensaje en la que se le pedirá que verifique que la cuenta de servicio de SQL Server tiene permiso de control total para compartir. Selecciona para continuar.

    Volumen de Cloud

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

  19. 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 desplegarás 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:

    REGION=$(gcloud config get-value compute/region)
    
    gcloud compute instance-groups unmanaged create wsfc-group-a \
      --zone $REGION-a
    gcloud compute instance-groups unmanaged add-instances wsfc-group-a \ 
      --zone $REGION-a --instances node-1
    
    gcloud compute instance-groups unmanaged create wsfc-group-b \
      --zone $REGION-b
    gcloud compute instance-groups unmanaged add-instances wsfc-group-b \ 
    --zone $REGION-b --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-a \
      --instance-group-zone $REGION-a \
      --region $REGION
    gcloud compute backend-services add-backend wsfc-backend \
      --instance-group wsfc-group-b \
      --instance-group-zone $REGION-b \
      --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
    

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 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 la instancia de VM a tu dominio de Active Directory:

    Add-Computer -Domain DOMAIN
    

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

  9. Reinicia la instancia de VM:

    Restart-Computer
    

    Espera a que se reinicie la instancia de VM.

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 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    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 -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
    

    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.