Las instancias de clúster 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úster de conmutación por error de Windows Server (WSFC). En cualquier momento, uno de los nodos del clúster aloja activamente la instancia de SQL. En caso de fallo, WSFC transfiere automáticamente la propiedad de los recursos de la instancia a otro nodo.
Las instancias de clústeres de conmutación por error de SQL Server requieren que los datos se ubiquen en un almacenamiento compartido para que se pueda acceder a ellos en todos los nodos de WSFC. En esta guía se describe cómo puedes implementar una instancia de clúster de conmutación por error de SQL Server 2019 que utilice Espacios de almacenamiento directo (S2D) para el almacenamiento compartido. S2D proporciona una SAN virtual basada en software que puede usar discos de datos de máquinas virtuales de Compute Engine para almacenar la base de datos SQL.
En el siguiente diagrama se muestra la implementación:
Al implementar una arquitectura hiperconvergente, las instancias de VM node-1
y node-2
actúan como nodos de WSFC y también alojan el almacenamiento compartido. Se usa una tercera instancia de VM, witness
, para conseguir un quórum en un escenario 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 carga TCP interno. Este balanceador de carga usa una comprobación del estado personalizada para determinar qué nodo de WSFC aloja la instancia de SQL y dirige el tráfico a esa instancia.
En este artículo se da por hecho que ya has implementado Active Directory en Google Cloud y que tienes conocimientos básicos de SQL Server, Active Directory y Compute Engine.
Preparar el proyecto y la red
Para preparar tu proyecto y tu VPC para la implementación de FCI de SQL Server, haz lo siguiente: Google Cloud
En la Google Cloud consola, abre Cloud Shell haciendo clic en el botón Activar Cloud Shell
.
Inicializa las siguientes variables:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Donde:
VPC_NAME
: nombre de tu VPCSUBNET_NAME
: nombre de tu subred
Configura tu ID de proyecto predeterminado:
gcloud config set project
PROJECT_ID
Sustituye
PROJECT_ID
por el ID de tu Google Cloud proyecto.Define tu región predeterminada:
gcloud config set compute/region
REGION
Sustituye
REGION
por el ID de la región en la que quieras hacer el despliegue.
Crear reglas de cortafuegos
Para permitir que los clientes se conecten a SQL Server, permitir la comunicación entre los nodos de WSFC y habilitar el balanceador de carga para que realice comprobaciones del estado, debe crear varias reglas de cortafuegos. Para simplificar la creación de estas reglas de cortafuegos, puedes usar etiquetas de red:
- Los dos nodos de WSFC se anotan con la etiqueta
wsfc-node
. - Todos los servidores (incluido el testigo) están anotados con la etiqueta
wsfc
.
Crea reglas de cortafuegos que usen estas etiquetas de red:
- Vuelve a tu sesión de Cloud Shell.
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
Crea una regla de cortafuegos que permita las comprobaciones de estado desde los intervalos de direcciones IP de los verificadores de Google Cloud:
gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=wsfc-node \ --network=$VPC_NAME \ --priority 10000
Crear instancias de VM
Ahora, despliega dos instancias de VM para el clúster de conmutación por error. En cualquier momento, solo una de estas VMs actúa como nodo FCI activo, mientras que el otro nodo actúa como nodo de conmutación por error. Las dos instancias de VM deben cumplir los siguientes requisitos:
- Se encuentran en la misma región para que un balanceador de carga 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 carga internos al configurar 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.
Usas una imagen premium de SQL Server que tiene preinstalado SQL Server 2019.
Para proporcionar un voto de desempate y alcanzar el quórum en el escenario de conmutación por error, debes implementar una tercera VM que actúe como testigo de recurso compartido de archivos.
- Vuelve a tu sesión de Cloud Shell.
Crea un script especializado para los nodos de WSFC. La secuencia de comandos instala la función de Windows necesaria y crea reglas de firewall para WSFC y SQL Server:
cat << "EOF" > specialize-node.ps1 $ErrorActionPreference = "stop" # Install required Windows features Install-WindowsFeature Failover-Clustering -IncludeManagementTools Install-WindowsFeature RSAT-AD-PowerShell # Open firewall for WSFC netsh advfirewall firewall add rule name="Allow SQL Server health check" dir=in action=allow protocol=TCP localport=59997 # Open firewall for SQL Server netsh advfirewall firewall add rule name="Allow SQL Server" dir=in action=allow protocol=TCP localport=1433 EOF
Crea las instancias de VM. En las dos máquinas virtuales que actúan como nodos de S2D y WSFC, conecta discos de datos adicionales y habilita el modo WSFC configurando la clave de metadatos
enable-wsfc
entrue
: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"
Para unir las tres instancias de VM a Active Directory, haz lo siguiente en cada una de ellas:
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.Crea un nombre de usuario y una contraseña para la instancia de VM.
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.
Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
Confirma la solicitud de elevación haciendo clic en Sí.
Une el ordenador a tu dominio de Active Directory y reinícialo:
Add-Computer -Domain
DOMAIN -Restart
Sustituye
DOMAIN
por el nombre DNS de tu dominio de Active Directory.Espera aproximadamente 1 minuto a que se complete el reinicio.
Reservar direcciones IP de clúster
Ahora, reserva dos direcciones IP estáticas en tu red de VPC. Las dos direcciones tienen finalidades distintas:
- IP del balanceador de carga: los clientes usan esta dirección IP para conectarse a SQL Server.
- IP de clúster: esta dirección IP solo la usa internamente WSFC.
Para reservar las direcciones IP estáticas, sigue estos pasos:
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 \ --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.
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/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 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:
- Conéctate a
witness
mediante Escritorio Remoto. Inicia sesión con tu cuenta de usuario del dominio. - Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
- Confirma la solicitud de elevación haciendo clic en Sí.
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, usa las instancias de VM para implementar un clúster de conmutación por error de Windows Server y SQL Server.
Desplegar WSFC
Ahora ya puedes crear el clúster de conmutación por error:
- Conéctate a
node-1
mediante Escritorio Remoto. Inicia sesión con tu cuenta de usuario del dominio. - Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
- Confirma la solicitud de elevación haciendo clic en Sí.
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.El comando crea una cuenta de ordenador
windows-fci
en tu dominio de Active Directory.Vuelve a la sesión de PowerShell en
witness
y concede a la cuenta de ordenadorwindows-fci
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
Vuelve a la sesión de PowerShell en
node-1
y configura el clúster para que use el recurso compartido de archivos enwitness
como quórum del clúster:Set-ClusterQuorum -FileShareWitness \\witness\QWitness
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
.Si usas Managed AD, añade la cuenta de ordenador que usa WSFC al grupo Cloud Service Domain Join Accounts para que pueda unir ordenadores al dominio:
Install-WindowsFeature RSAT-ADDS Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members windows-fci$
Habilitar Espacios de almacenamiento directo
Ahora habilita S2D y crea un volumen compartido de clúster que combina los tres discos persistentes que has creado anteriormente:
- Vuelve a la sesión de PowerShell en
node-1
. Habilita S2D:
Enable-ClusterStorageSpacesDirect
Si quieres mejorar el rendimiento del disco, puedes añadir SSD locales SCSI a tus nodos de S2D, además de los discos persistentes SSD estándar. Las SSDs locales pueden servir como capa de almacenamiento en caché de S2D. Haz que el número de unidades de capacidad (en nuestro caso, discos persistentes SSD) sea un múltiplo del número de SSD locales. En su lugar, ejecuta el siguiente comando para habilitar S2D con almacenamiento en caché:
Enable-ClusterStorageSpacesDirect -CacheDeviceModel "EphemeralDisk"
Acepta el valor predeterminado cuando se te solicite que lo confirmes. Es posible que veas algunas advertencias que puedes ignorar sin problema:
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
Opcionalmente, puedes definir la caché en memoria del volumen compartido de clúster (CSV) en 2048 MB para mejorar el rendimiento de lectura:
(Get-Cluster).BlockCacheSize = 2048
Crea un volumen que use las versiones de volumen compartido de clúster de ReFS y un tamaño de clúster de 64 KB:
New-Volume ` -StoragePoolFriendlyName S2D* ` -FriendlyName FciVolume ` -FileSystem CSVFS_ReFS ` -UseMaximumSize ` -AllocationUnitSize 65536
Probar la conmutación por error del grupo de almacenamiento
También puedes probar si la conmutación por error del grupo de almacenamiento funciona correctamente:
- Conéctate a
node-2
mediante Escritorio Remoto. Inicia sesión con tu cuenta de usuario del dominio. - Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y selecciona Ejecutar.
- Introduce
cluadmin.msc
y selecciona Aceptar. En el panel de la ventana de la izquierda, vaya a Administrador de clústeres de conmutación por error > windows-fci > Almacenamiento > Grupos.
Deberías ver un grupo llamado Cluster Pool 1 con el valor
node-1
en Nodo propietario.Vuelve 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
Vuelve al Administrador de clústeres de conmutación por error en
node-2
.Observa el estado del grupo de almacenamiento pulsando repetidamente F5 para actualizar la vista.
Al cabo de unos 30 segundos, el nodo propietario debería cambiar automáticamente a
node-2
.
Quitar la instalación predeterminada de SQL Server
Ahora, elimina la instalación predeterminada de SQL Server de los dos nodos y sustitúyela por una nueva configuración de FCI.
En cada uno de los dos nodos de WSFC, node-1
y node-2
, sigue estos pasos:
- Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
- Confirma la solicitud de elevación haciendo clic en Sí.
Elimina la instancia de SQL Server predeterminada:
C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
Quitar el controlador OLE de Microsoft:
Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
Quitar el controlador ODBC de Microsoft:
Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
Reinicia el ordenador:
Restart-Computer
Espera aproximadamente 1 minuto a que se complete el reinicio.
Instalar FCI de SQL Server
Antes de instalar la nueva configuración de FCI, comprueba que node-1
es el nodo activo del clúster:
- Vuelve a conectarte a
node-1
con Escritorio remoto e inicia sesión con tu usuario de dominio. - Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y selecciona Ejecutar.
- Introduce
cluadmin.msc
y selecciona Aceptar. En el panel de la ventana de la izquierda, vaya a Administrador de clústeres de conmutación por error > windows-fci.
Comprueba que el servidor host actual esté configurado como
node-1
.Si el servidor host actual está configurado como
node-2
, haz clic con el botón derecho en 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.En el panel de la ventana de la izquierda, vaya a Administrador de clústeres de conmutación por error > windows-fci > Almacenamiento > Grupos.
Verifica que el nodo propietario de Cluster Pool 1 esté configurado como
node-1
.Si el nodo propietario está definido 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, crea una instalación de clúster de conmutación por error de SQL Server en node-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).
- Confirma la solicitud de elevación haciendo clic en Sí.
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 gestionado
$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"
Sustituye
DOMAIN
por el nombre distintivo de tu dominio (por ejemplo,DC=example,DC=org
).Inicia la configuración de SQL Server:
& c:\sql_server_install\setup.exe
En el menú de la izquierda, selecciona Instalación.
Selecciona Nueva instalación de clúster de conmutación por error de SQL Server.
En la página Microsoft Update, selecciona Siguiente para iniciar la instalación.
En la página Install Failover Cluster Rules (Instalar reglas de clúster de conmutación por error), verás las advertencias MSCS cluster verification warnings (Advertencias de verificación de clústeres MSCS) y Windows firewall (Cortafuegos de Windows). Puede ignorar estas advertencias y seleccionar Siguiente.
En la página Clave de producto, mantenga los valores predeterminados y seleccione Siguiente.
En la página Términos de la licencia, revisa los términos y, si los aceptas, selecciona Siguiente.
En la página Feature Selection (Selección de funciones), selecciona Database Engine Services (Servicios del motor de base de datos) y, a continuación, Next (Siguiente).
En la página Instance Configuration (Configuración de la instancia), introduce
sql
como nombre de la red y de la instancia con nombre, y selecciona Next (Siguiente).En la página Cluster Resource Group (Grupo de recursos del clúster), mantén los valores predeterminados y selecciona Next (Siguiente).
En la página Cluster Disk Selection (Selección de disco de clúster), habilita Cluster Virtual Disk (FciVolume) (Disco virtual de clúster [FciVolume]) y inhabilita todos los demás discos. Selecciona Siguiente.
En la página Cluster Network Configuration (Configuración de red del clúster), configure los siguientes ajustes y, a continuación, seleccione Next (Siguiente):
- DHCP borrar
- Dirección IP: introduzca la dirección IP del balanceador de carga interno.
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
, dondeDOMAIN
es el nombre NetBIOS de tu dominio de Active Directory. - Contraseña: introduce la contraseña que has creado antes.
- Nombre de la cuenta:
Seleccione la pestaña Colación y elija la colación que quiera usar. A continuación, haz clic en Siguiente.
En la página Configuración del motor de base de datos, selecciona Añadir usuario actual para designar al usuario actual como administrador de SQL Server. A continuación, selecciona Siguiente.
En la página Listo para instalar, revisa la configuración y selecciona Instalar.
Una vez completada la instalación, selecciona Cerrar.
Tu dominio de Active Directory ahora contiene una cuenta de ordenador sql
que representa la instancia de SQL Server y una entrada de DNS correspondiente que apunta a la dirección IP del balanceador de carga interno.
Ahora, añade node-2
al clúster de conmutación por error de SQL Server:
- Conéctate a
node-2
con Escritorio Remoto e inicia sesión con tu usuario de dominio. - Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
- Confirma la solicitud de elevación haciendo clic en Sí.
Inicia la configuración de SQL Server:
& c:\sql_server_install\setup.exe
En el menú de la izquierda, selecciona Instalación.
Selecciona Añadir un nodo a un clúster de conmutación por error de SQL Server.
Sigue las instrucciones del asistente de instalación y acepta la configuración predeterminada hasta que llegues a la página Cuentas de servicio.
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.
En la página Listo para instalar, revisa la configuración y selecciona Instalar.
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:
- Vuelve a la sesión de PowerShell en
node-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ónwsfc
que has reservado anteriormente.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; }
Reinicia el recurso de clúster:
$SqlIpAddress | Stop-ClusterResource $SqlIpAddress | Start-ClusterResource
Reinicia el grupo de clústeres:
$SqlGroup | Stop-ClusterGroup $SqlGroup | Start-ClusterGroup
Crear un balanceador de carga interno
Para proporcionar un único endpoint a los clientes de SQL Server, ahora debes desplegar un balanceador de carga interno. El balanceador de carga usa una comprobación de estado que asegura que el tráfico se dirija al nodo activo del clúster de conmutación por error de Windows Server (WSFC).
- Vuelve a tu sesión de Cloud Shell.
Crea dos grupos de instancias sin gestionar, uno por zona, y añade los dos nodos a los grupos:
gcloud compute instance-groups unmanaged create wsfc-group-1 --zone $REGION-a gcloud compute instance-groups unmanaged add-instances wsfc-group-1 --zone $REGION-a \ --instances node-1 gcloud compute instance-groups unmanaged create wsfc-group-2 --zone $REGION-b gcloud compute instance-groups unmanaged add-instances wsfc-group-2 --zone $REGION-b \ --instances node-2
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"
La comprobación del estado sondea el puerto
59997
, que es el puerto que configuraste anteriormente comoProbePort
para el recurso de dirección IP de SQL Server.Crea un servicio de backend y añade 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
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:
- Vuelve a tu sesión de Cloud Shell.
Crea una instancia de VM:
gcloud compute instances create sqlclient \ --zone $REGION-a \ --machine-type n2-standard-2 \ --subnet $SUBNET_NAME \ --image-family sql-ent-2019-win-2022 \ --image-project windows-sql-cloud \ --boot-disk-size 50 \ --boot-disk-type pd-ssd
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 resultado
Instance setup finished
y, a continuación, pulsa Ctrl+C. En este punto, la instancia de VM ya se puede usar.Crea un nombre de usuario y una contraseña para la instancia de VM.
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.
Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell (Administrador).
Confirma la solicitud de elevación haciendo clic en Sí.
Une el ordenador a tu dominio de Active Directory:
Add-Computer -Domain
DOMAIN
Sustituye
DOMAIN
por el nombre DNS de tu dominio de Active Directory.Reinicia el ordenador:
Restart-Computer
Espera aproximadamente 1 minuto a que se complete el reinicio.
Ejecutar la prueba
Usa la VM sqlclient
para comprobar que puedes conectarte al clúster de conmutación por error y que la conmutación por error funciona correctamente:
- Conéctate a
sqlclient
con Escritorio Remoto e inicia sesión con tu usuario de dominio. - Haz clic con el botón derecho en el botón Inicio (o pulsa Win+X) y, a continuación, en Windows PowerShell.
Conéctate al clúster de SQL Server mediante TCP/IP y el nombre DNS
sql
, y consulta la tabladm_os_cluster_nodes
:& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S tcp:sql -E -Q "SELECT * FROM sys.dm_os_cluster_nodes"
La salida debería 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.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 --zone $REGION-a
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"
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 quenode-2
es ahora 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, hacer una captura de un disco persistente no será suficiente para crear una copia de seguridad de tus datos. En su lugar, usa la copia de seguridad nativa de SQL.