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 2022 y usar discos persistentes en el modo de multiescritura como almacenamiento compartido.
En un entorno local, puedes permitir que WSFC realice anuncios ARP si se produce una conmutación por error para notificar al equipo de red sobre un cambio en la dirección IP. Sin embargo, Google Cloud ignora los anuncios de ARP. Por lo tanto, debes implementar una de las dos opciones siguientes:
- Balanceador de cargas interno (consulta Ejecuta los clústeres de conmutación por error de Windows Server)
- Nombre de red distribuida (DNN) (consulta Cómo configurar un DNN para una instancia de clúster de conmutación por error)
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.
- Configura un balanceador de cargas o un nombre de red distribuida (DNN) para enrutar el tráfico a tu grupo de disponibilidad con SQL Server
- 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:
- Compute Engine
- Cloud Load Balancing (no es necesario con una configuración de DNN)
Usa la calculadora de precios para generar una estimación de los costos según el uso previsto.
Antes de comenzar
Para completar esta guía, necesitas lo siguiente:
- Un dominio de Active Directory con al menos un controlador de dominio. Puedes crear un dominio de Active Directory a través de Microsoft AD administrado. También puedes implementar un entorno personalizado de Active Directory en Compute Engine y configurar una zona de reenvío de DNS privado que reenvíe las consultas de DNS a los controladores de tu dominio.
- Un usuario de Active Directory que tenga permiso para unir computadoras al dominio y pueda acceder a través de RDP. Si usas Microsoft AD administrado, puedes usar el usuario
setupadmin
. - Un proyecto de Google Cloud y una VPC con conectividad a los controladores de dominio de Active Directory.
- Una subred para usar en las instancias de VM de WSFC.
Asegúrate de revisar las restricciones de los discos persistentes en el modo multiescritura y selecciona una zona en la que estén disponibles los discos persistentes en el modo multiescritura.
Para completar la guía, también necesitas un proyecto de Google Cloud:
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
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:
En la consola de Google Cloud, haz clic en el botón Activar Cloud Shell para abrir Cloud Shell.
Ve a la consola de Google Cloud.
Inicializa las siguientes variables:
VPC_NAME=
VPC_NAME
SUBNET_NAME=SUBNET_NAME
Donde
VPC_NAME
: Es el nombre de tu VPC.SUBNET_NAME
: Es el nombre de tu subred.
Establece tu ID del proyecto predeterminado:
gcloud config set project
PROJECT_ID
Reemplaza
PROJECT_ID
por el ID del proyecto de Google Cloud.Establece la zona predeterminada:
gcloud config set compute/zone
ZONE
Reemplaza
ZONE
por el ID de la zona 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:
- Regresa a tu sesión actual de Cloud Shell.
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
Crea una regla de firewall que permita las verificaciones de estado de los rangos de IP de los sistemas de sondeo de Google Cloud: (no es necesario con una configuración de DNN)
gcloud compute firewall-rules create allow-health-check-to-wsfc-nodes \ --direction=INGRESS \ --action=allow \ --rules=tcp \ --source-ranges=130.211.0.0/22,35.191.0.0/16 \ --target-tags=wsfc-node \ --network=$VPC_NAME \ --priority 10000
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 estos requisitos:
- se ubiquen en la misma zona para que puedan acceder a los mismos discos persistentes.
- deben tener instalados clústeres de conmutación por error de Windows Server y SQL Server
- deben tener habilitada la compatibilidad con WSFC de Compute Engine
Usa una imagen premium de SQL Server que tenga SQL Server 2022 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.
- Regresa a tu sesión actual de Cloud Shell.
Crea una política de posición distribuida que distribuya los nodos del WSFC a través de la infraestructura del centro de datos subyacente para que no compartan el mismo host o sistema de energía:
ZONE=$(gcloud config get-value compute/zone) gcloud compute resource-policies create group-placement spread-placement \ --availability-domain-count 2 \ --region ${ZONE::-2}
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
Crea las instancias de VM y habilita el agente de clústeres de conmutación por error de Windows Server en los nodos del WSFC mediante la configuración de la clave de metadatos
enable-wsfc
entrue
:MACHINE_TYPE=n2-standard-8 gcloud compute instances create node-1 \ --resource-policies spread-placement \ --machine-type $MACHINE_TYPE \ --subnet $SUBNET_NAME \ --image-family sql-ent-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 \ --resource-policies spread-placement \ --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" \ --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"
A fin de unir las 3 instancias de VM a Active Directory, haz lo siguiente para cada una de las 3 instancias de VM:
Supervisa el proceso de inicialización de la VM cuando ves su salida de puerto en serie:
gcloud compute instances tail-serial-port-output
NAME
Reemplaza
NAME
con el nombre de la instancia de VM.Espera unos 3 minutos hasta que veas el resultado
Instance setup finished
y presiona Ctrl+C. En este punto, la instancia de VM está lista para usarse.Crea un nombre de usuario y una contraseña para la instancia de VM.
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.
Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
Para confirmar el símbolo de elevación, haz clic en Sí.
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 aproximadamente 1 minuto para que se complete el reinicio.
Crea discos persistentes en modo de multiescritura
Ahora, debes crear 3 discos persistentes en modo de multiescritura y conectar cada uno de ellos a ambos nodos de WSFC.
- Regresa a tu sesión actual de Cloud Shell.
Crea 3 discos persistentes compartidos:
PD_SIZE=50 gcloud beta compute disks create datadisk-1 \ --size $PD_SIZE \ --type pd-ssd \ --multi-writer \ --zone $(gcloud config get-value compute/zone) gcloud beta compute disks create datadisk-2 \ --size $PD_SIZE \ --type pd-ssd \ --multi-writer \ --zone $(gcloud config get-value compute/zone) gcloud beta compute disks create datadisk-3 \ --size $PD_SIZE \ --type pd-ssd \ --multi-writer \ --zone $(gcloud config get-value compute/zone)
Adjunta los discos a
node-1
:gcloud compute instances attach-disk node-1 --disk datadisk-1 gcloud compute instances attach-disk node-1 --disk datadisk-2 gcloud compute instances attach-disk node-1 --disk datadisk-3
Adjunta los discos a
node-2
:gcloud compute instances attach-disk node-2 --disk datadisk-1 gcloud compute instances attach-disk node-2 --disk datadisk-2 gcloud compute instances attach-disk node-2 --disk datadisk-3
Reserva direcciones IP del clúster
Ahora debes reservar dos direcciones IP estáticas en tu VPC. Una dirección IP se usa como la dirección IP del clúster de WSFC; la otra la usa el balanceador de cargas interno.
Reserva una IP estática para el balanceador de cargas interno y captura la dirección en una variable de entorno nueva llamada
LOADBALANCER_ADDRESS
:gcloud compute addresses create wsfc \ --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \ --subnet $SUBNET_NAME LOADBALANCER_ADDRESS=$(gcloud compute addresses describe wsfc \ --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \ --format=value\(address\)) && \ echo "Load Balancer IP: $LOADBALANCER_ADDRESS"
Anota la dirección IP, ya que la necesitarás más adelante.
Reserva otra dirección IP estática para usarla como IP de clúster: (no es necesario con una configuración de DNN)
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 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:
- Conéctate a
witness
mediante el escritorio remoto. Accede con tu cuenta de usuario de dominio. - Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
- Para confirmar el símbolo de elevación, haz 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$
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.
- Conéctate a
node-1
mediante el escritorio remoto. Accede con tu cuenta de usuario de dominio. - Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
- Para confirmar el símbolo de elevación, haz clic en Sí.
Crea un clúster nuevo:
- Para la configuración del balanceador de cargas
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -StaticAddress
CLUSTER_ADDRESS
Reemplaza
CLUSTER_ADDRESS
por la dirección IP del clúster que creaste antes.- Para la configuración del DNN
New-Cluster ` -Name sql-cluster ` -Node node-1,node-2 ` -NoStorage ` -ManagementPointNetworkType Distributed
Regresa a la sesión de PowerShell en
witness
y otorga permiso al objeto de computadora virtual del clúster para acceder al archivo compartido:icacls C:\QWitness\ /grant 'sql-cluster$:(OI)(CI)(M)' Grant-SmbShareAccess ` -Name QWitness ` -AccountName 'sql-cluster$' ` -AccessRight Full ` -Force
Regresa a la sesión de PowerShell en
node-1
y configura el clúster para usar el archivo compartido enwitness
como un quórum del clúster:Set-ClusterQuorum -FileShareWitness \\witness\QWitness
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
.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:
Add-ADGroupMember ` -Identity "Cloud Service Domain Join Accounts" ` -Members sql-cluster$
Crea un grupo de almacenamiento
Ahora, crea un grupo de almacenamiento que combine los tres discos persistentes que creaste antes y usa el grupo para almacenar un volumen compartido de clúster:
- Regresa a la sesión de PowerShell en
node-1
. Crea un nuevo grupo de almacenamiento que use los 3 discos persistentes:
$NodeName = [System.Net.Dns]::GetHostName() $ClusterDisks = Get-PhysicalDisk -CanPool $True | Where-Object { ($_ | Get-PhysicalDiskStorageNodeView | Select-Object -Property StorageNodeObjectId) -like ('*' + $NodeName + '*') } $Pool = New-StoragePool ` -StorageSubsystemFriendlyName 'Clustered*' ` -FriendlyName FciPool ` -PhysicalDisks $ClusterDisks ` -ResiliencySettingNameDefault Simple ` -Verbose
En el grupo de almacenamiento, crea un volumen nuevo que use las versiones de volumen compartido de ReFS del clúster y un tamaño de clúster de 64 KB:
$Pool | New-Volume ` -FriendlyName FciVolume ` -FileSystem CSVFS_ReFS ` -Size 100GB ` -AllocationUnitSize 65536
El volumen aparece de forma automática en
node-2
, ya que los discos persistentes subyacentes están conectados a ambas instancias de VM.Abre el complemento Administrador de clústeres de conmutación por error de MMC:
cluadmin.msc
En el panel de la ventana izquierda, navega al Administrador de clústeres de conmutación por error > sql-cluster > Almacenamiento > Discos.
Haz clic con el botón derecho en Disco virtual del clúster (FciVolume) y selecciona Quitar de los volúmenes compartidos de clúster.
Selecciona Disco virtual de clúster (FciVolume).
En la pestaña Volúmenes de la parte inferior, haz clic con el botón derecho en el volumen y selecciona Cambiar letra de unidad.
Selecciona la letra de la unidad D y haz clic en Aceptar.
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:
- Conéctate a
node-2
mediante el escritorio remoto. Accede con tu cuenta de usuario de dominio. - Haz clic con el botón derecho en Inicio (o presiona Win + X) y selecciona Ejecutar
- Ingresa
cluadmin.msc
y selecciona Aceptar. En el panel de la ventana izquierda, navega a Administrador de clústeres de conmutación por error > sql-cluster > Almacenamiento > Grupos.
Deberías ver un grupo llamado Grupo de clústeres 1 con Nodo propietario configurado como
node-1
.Regresa a Cloud Shell y restablece la VM
node-1
para simular una conmutación por error:gcloud compute instances reset node-1
Regresa al Administrador de clústeres de conmutación por error en
node-2
.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:
- Haz clic derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
- Para confirmar el símbolo de elevación, haz clic en Sí.
Quita la instancia predeterminada de SQL Server:
C:\sql_server_install\Setup.exe /Action=Uninstall /FEATURES=SQL,AS,IS,RS /INSTANCENAME=MSSQLSERVER /Q
Quita el controlador de Microsoft OLE:
Get-Package -Name "Microsoft OLE*" | Uninstall-Package -Force
Quita el controlador ODBC de Microsoft:
Get-Package -Name "Microsoft ODBC*" | Uninstall-Package -Force
Reinicia la computadora:
Restart-Computer
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:
- Vuelve a conectarte a
node-1
a través del escritorio remoto y accede con el usuario del dominio. - Haz clic con el botón derecho en Inicio (o presiona Win + X) y selecciona Ejecutar
- Ingresa
cluadmin.msc
y selecciona Aceptar. En el panel de la ventana izquierda, navega a Administrador de clústeres de conmutación por error > sql-cluster.
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 sql-cluster 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.En el panel de la ventana izquierda, navega hasta Administrador de clústeres de conmutación por error > sql-cluster > 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
:
- Haz clic derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
- Para confirmar el símbolo de elevación, haz clic en Sí.
Crea una cuenta de usuario de dominio para SQL Server y el agente de SQL, y asigna una contraseña:
$Credential = Get-Credential -UserName sql_server -Message 'Enter password' New-ADUser ` -Name "sql_server" ` -Description "SQL Agent and SQL Admin account." ` -AccountPassword $Credential.Password ` -Enabled $true -PasswordNeverExpires $true
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 Edición, marca Solo tengo una licencia de SQL Server y selecciona Siguiente.
En la página Términos de licencia, revisa los términos y, si los aceptas, selecciona Siguiente.
En la página Microsoft Update, selecciona Siguiente para comenzar la instalación.
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.
En la página Selección de características, selecciona Database Engine Services y, luego, Siguiente.
En la página Configuración de instancias, ingresa
sql
como nombre de la red y selecciona Siguiente.En la página Grupo de recursos de clúster, mantén los valores predeterminados y selecciona Siguiente.
En la página Selección del disco del clúster, selecciona Disco virtual del clúster (FciVolume) y selecciona Siguiente.
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.
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 queDOMAIN
es el nombre de NetBIOS de tu dominio de Active Directory - Contraseña: Ingresa la contraseña que creaste antes
- Nombre de la cuenta:
Selecciona la pestaña Intercalación y la intercalación que deseas usar. Luego, haga clic en Next.
En la página Database Engine Configuration, selecciona Agregar usuario actual para designar al usuario actual como administrador de SQL Server. Luego, selecciona Siguiente.
En la página Listo para instalar, revisa la configuración y, luego, selecciona Instalar.
Una vez finalizada la instalación, selecciona Cerrar.
Ahora agrega node-2
al clúster de conmutación por error de SQL Server:
- Conéctate a
node-2
a través del escritorio remoto y accede con el usuario de tu dominio. - Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
- Para confirmar el símbolo de elevación, haz 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 Agregar 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 llegar a la página Cuentas de servicio.
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.
En la página Listo para instalar, revisa la configuración y, luego, selecciona Instalar.
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:
- Regresa a la sesión de PowerShell en
node-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ónwsfc
que reservaste antes.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; }
Ejecuta el siguiente comando para reiniciar el recurso del clúster:
$SqlIpAddress | Stop-ClusterResource $SqlIpAddress | Start-ClusterResource
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.
- Regresa a tu sesión actual de Cloud Shell.
Crea un grupo de instancias no administrado y agrégale los dos nodos:
gcloud compute instance-groups unmanaged create wsfc-group gcloud compute instance-groups unmanaged add-instances wsfc-group --instances node-1,node-2
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 comoProbePort
para la dirección IP del clúster del WSFC.Crea un servicio de backend y agrega el siguiente grupo de instancias:
gcloud compute backend-services create wsfc-backend \ --load-balancing-scheme internal \ --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \ --health-checks wsfc-healthcheck \ --protocol tcp gcloud compute backend-services add-backend wsfc-backend \ --instance-group wsfc-group \ --instance-group-zone $(gcloud config get-value compute/zone) \ --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev)
Crea el balanceador de cargas interno:
gcloud compute forwarding-rules create wsfc-sql \ --load-balancing-scheme internal \ --address $LOADBALANCER_ADDRESS \ --ports 1433 \ --network $VPC_NAME \ --subnet $SUBNET_NAME \ --region $(gcloud config get-value compute/zone | rev | cut -c 3- | rev) \ --backend-service wsfc-backend
Configura un recurso de DNN y un nombre de DNS de DNN
Al igual que el balanceador de cargas interno, el recurso de DNN actúa como una única puerta de enlace para los clientes de SQL Server. Durante las conmutaciones por error, el clúster enruta el tráfico sin problemas al nodo activo de FCI de SQL Server. Los clientes se conectan a las FCI de SQL Server con el nombre de DNS.
- Regresa a la sesión de PowerShell en
node-1
. Ejecuta la secuencia de comandos para crear el recurso DNN
$DNNResourceName='fci-dnn' $DNN_DNSName='fcidnn' # create the DNN resource Add-ClusterResource -Name $DNNResourceName -ResourceType 'Distributed Network Name' -Group 'SQL Server (MSSQLSERVER)' # set the DNS name of the DNN resource Get-ClusterResource -Name $DNNResourceName | Set-ClusterParameter -Name DnsName -Value $DNN_DNSName # start the DNN resource Start-ClusterResource -Name $DNNResourceName
Reinicia
node-1
ynode-2
.
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:
- Regresa a tu sesión actual de Cloud Shell.
Crea una instancia de VM nueva:
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
Supervisa el proceso de inicialización de la VM cuando ves su salida de puerto en serie:
gcloud compute instances tail-serial-port-output sqlclient
Espera unos 3 minutos hasta que veas que la configuración de la instancia de salida finalizó y, luego, presiona Ctrl+C. En este punto, la instancia de VM está lista para usarse.
Crea un nombre de usuario y una contraseña para la instancia de VM.
Conéctate a la VM mediante el escritorio remoto y accede con el nombre de usuario y la contraseña que creaste en el paso anterior.
Haz clic con el botón derecho en el botón Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell (Admin).
Para confirmar el símbolo de elevación, haz clic en Sí.
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.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:
- Conéctate a
sqlclient
a través del escritorio remoto y accede con el usuario de tu dominio. - Haz clic con el botón derecho en Iniciar (o presiona Windows+X) y, luego, en Windows PowerShell.
Conéctate al clúster de SQL Server a través de su nombre de red
sql
y consulta la tabladm_os_cluster_nodes
:& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S
SQL_SERVER_NAME
-E -Q "SELECT * FROM sys.dm_os_cluster_nodes"Reemplaza
SQL_SERVER_NAME
porsql
para la configuración del balanceador de cargas ofcidnn
para la configuración de DNN.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.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
Repite la consulta:
& "$env:ProgramFiles\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\SQLCMD.EXE" ` -S
SQL_SERVER_NAME
-E -Q "SELECT * FROM sys.dm_os_cluster_nodes"Reemplaza
SQL_SERVER_NAME
porsql
para la configuración del balanceador de cargas ofcidnn
para la configuración de DNN.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 quenode-2
es el propietario actual del clúster de conmutación por error.
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:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
¿Qué sigue?
- Obtén más información sobre los discos persistentes en modo de escritor múltiple.
- Obtén información para configurar una instancia de clústeres de conmutación por error de SQL Server que usa espacios de almacenamiento directo.