Note:
- Este tutorial requiere acceso a Oracle Cloud. Para registrarse para obtener una cuenta gratuita, consulte Introducción a la cuenta gratuita de Oracle Cloud Infrastructure.
- Utiliza valores de ejemplo para credenciales, arrendamiento y compartimentos de Oracle Cloud Infrastructure. Al finalizar la práctica, sustituya estos valores por otros específicos de su entorno en la nube.
Configuración del grupo de disponibilidad Always On de Microsoft SQL Server en OCI con el listener y el equilibrador de carga
Introducción
El despliegue de Microsoft SQL Server en Oracle Cloud Infrastructure (OCI) ofrece a las empresas una plataforma potente para cumplir sus objetivos de alta disponibilidad y continuidad del negocio. Uno de los enfoques más eficaces para la alta disponibilidad de Microsoft SQL Server es la función de grupo de disponibilidad Always On. Los grupos de disponibilidad Always On de Microsoft SQL Server proporcionan una solución de alta disponibilidad y recuperación ante desastres que permite una conmutación por error y replicación de datos sin problemas en varias instancias de SQL Server.
Hay varias formas de configurar un grupo de disponibilidad de Microsoft SQL Server. Un enfoque es colocar las máquinas virtuales de SQL Server en subredes separadas dentro de la misma red virtual. Para desplegar un grupo de disponibilidad de SQL Server mediante una arquitectura de varias subredes, consulte Despliegue de una base de datos de Microsoft SQL Server de alta disponibilidad en OCI mediante grupos de disponibilidad Always On y Despliegue de grupos de disponibilidad Always On de Microsoft SQL Server para alta disponibilidad y recuperación ante desastres en OCI.
Siguiendo este tutorial, desplegará y configurará un grupo de disponibilidad Always On de SQL Server en OCI mediante máquinas virtuales dentro de una única subred. Esta configuración incluye un equilibrador de carga de OCI privado que actúa como listener, lo que permite una conectividad de cliente perfecta y una alta disponibilidad. Este enfoque es ideal para entornos donde la sencillez y la fiabilidad son clave, proporcionando failover automático, redundancia de datos y acceso ininterrumpido a las bases de datos de SQL Server. Con esta configuración, su infraestructura está bien posicionada para soportar cargas de trabajo esenciales con una sólida continuidad del negocio. Para los despliegues de producción, considere la posibilidad de implantar estrategias mejoradas de supervisión, registro, endurecimiento de la seguridad y copia de seguridad para complementar esta configuración de alta disponibilidad.
Si desea desplegar un grupo de disponibilidad Always On en una única subred, este tutorial proporciona orientación paso a paso para configurarlo mediante máquinas virtuales de OCI y un equilibrador de carga de OCI. En este tutorial se muestra cómo configurar un grupo de disponibilidad Always On de dos nodos en OCI mediante máquinas virtuales en una sola subred con un equilibrador de carga de OCI.
Arquitectura
En la siguiente imagen se muestra un ejemplo de arquitectura de alto nivel de la solución.
Exclusiones para este tutorial
-
Configuración de servicios de dominio de Active Directory en OCI. Para obtener más información, consulte Creación de servicios de dominio de Active Directory en Oracle Cloud Infrastructure.
-
Instalación y configuración de SQL Server en OCI. Para obtener más información, consulte Microsoft SQL Server en Oracle Cloud Infrastructure.
-
Configuración del cluster de failover de Windows. Para obtener más información, consulte Creación del cluster.
-
Configuración de testigo de recurso compartido de archivo. Para obtener más información, consulte Add a file share for a cluster quorum.
Objetivos
- Desplegar y configurar grupos de disponibilidad Always On de SQL Server en OCI mediante máquinas virtuales en una única subred. Abarca la configuración del grupo de disponibilidad Always On de SQL Server 2022 y un equilibrador de carga de OCI para permitir la alta disponibilidad y el failover automático con un listener para una conectividad de cliente perfecta.
Requisitos
-
Se recomienda un conocimiento básico de los grupos de disponibilidad Always On de SQL Server.
-
Acceso a un arrendamiento de OCI con un compartimento definido para alojar todos los recursos relacionados.
-
Una red virtual en la nube (VCN) configurada con al menos una subred privada.
-
Se necesitarán al menos 6 direcciones IP privadas para este tutorial.
- 1 para controlador de dominio
- 2 para dos nodos de SQL Server
- 1 para IP de cluster de failover de Windows Server
- 1 para IP de listener de grupo de disponibilidad Always On de SQL Server
- 1 para OCI Load Balancer
Dado que la dirección IP flotante de OCI no está soportada, la dirección IP para el listener del grupo de disponibilidad SQL (AG) y el equilibrador de carga de OCI será diferente.
-
Reglas de lista de seguridad configuradas para implementar grupos de disponibilidad Always On de SQL Server: puertos
1433
y5022
abiertos. -
Tres instancias de máquina virtual de OCI de Windows Server 2022.
- Una máquina virtual configurada como controlador de dominio de Active Directory.
- Dos máquinas virtuales con SQL Server 2022 y SQL Server Management Studio (SSMS) instalados.
-
Se requiere un testigo de recurso compartido de archivos para admitir la configuración del quórum.
- Para simplificarlo, en este tutorial, use una carpeta compartida en el controlador de dominio para alojar el testigo de recurso compartido de archivo.
- Para entornos de producción, considere la posibilidad de implantar modelos de quórum más sólidos.
-
Se debe configurar un cluster de failover de Windows entre las dos máquinas virtuales de SQL Server.
Tarea 1: Configuración del grupo de disponibilidad Always On de SQL Server
Tarea 1.1: Activar grupos de disponibilidad en los nodos de SQL Server (DevSQL1
y DevSQL2
)
-
En el nodo
DevSQL1
, vaya a Inicio, busque y abra el Gestor de configuración de SQL Server 2022. -
Seleccione Servicios de SQL Server, haga clic con el botón derecho en el servicio SQL Server (MSSQLSERVER) y seleccione Propiedades. Si utiliza una instancia con nombre, será SQL Server (
INSTANCENAME
). -
Haga clic en Grupos de disponibilidad siempre activos y seleccione Activar grupos de disponibilidad siempre activos.
-
Seleccione Aplicar y haga clic en Aceptar.
-
Reinicie el servicio SQL Server.
-
Repita los pasos del 1 al 5 en el otro nodo (
DevSQL2
).
Tarea 1.2: Creación de una base de datos en el primer nodo de SQL Server (DevSQL1
) y realización de una copia de seguridad completa
-
En el nodo
DevSQL1
, vaya a Inicio, busque SSMS y abra SQL Server Management Studio (SSMS). -
Conéctese al servidor SQL principal. En este tutorial, es
DevSQL1
. -
En Explorador de objetos, haga clic con el botón derecho en Bases de datos y haga clic en Nueva base de datos.
-
En General, introduzca Nombre de base de datos y, en Opciones, seleccione Completo como Modelo de recuperación.
-
Haga clic en Aceptar.
-
Para realizar una copia de seguridad completa, haga clic con el botón derecho en base de datos "AdventureWorks2022", Tareas y haga clic en Copia de seguridad.
-
En General, asegúrese de que Tipo de copia de seguridad sea Completa y, en Destino, seleccione Disco como Copia de seguridad en, haga clic en Agregar e introduzca la ubicación y el nombre de archivo para la copia de seguridad completa.
-
Haga clic en Aceptar.
También puede realizar una copia de seguridad mediante Transact-SQL. Por ejemplo:
Transact-SQL:
BACKUP DATABASE [AdventureWorks2022] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\Backup\AdventuresWork2022.bak' WITH NOFORMAT, NOINIT, NAME = N'AdventureWorks2022-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO
Tarea 1.3: Creación de un grupo de disponibilidad
-
Abra SQL Server Management Studio, conéctese a
DevSQL1
. En Object Explorer, haga clic con el botón derecho en Always On High Availability y haga clic en New Availability Group Wizard.Se abrirá una página Nuevo grupo de disponibilidad. Haga clic en Siguiente.
-
En Especificar opciones, introduzca Nombre de grupo de disponibilidad como
DevAG
, Tipo de cluster como Cluster de failover de Windows Server y haga clic en Siguiente. -
En Seleccionar bases de datos, seleccione la base de datos que desea agregar a este grupo de disponibilidad. En estado, debe ver Cumplir los requisitos para poder agregar la base de datos al grupo de disponibilidad. Si hay algún problema, le indicará el motivo y debemos tomar las medidas necesarias para cumplir con los requisitos previos. Por ejemplo, una copia de seguridad completa de la base de datos puede estar pendiente.
-
En Especificar réplicas, agregue las réplicas. Haga clic en Replicas para asegurarse de que se agregan ambos nodos en Replicas de disponibilidad y cambie el Modo de disponibilidad a Confirmación síncrona. Puede tener un modo de disponibilidad diferente según sus requisitos.
-
Haga clic en Puntos finales para asegurarse de que ambos puntos finales utilizan el mismo puerto y de que estos puertos están abiertos en el firewall y la lista de seguridad. Por defecto, será el puerto
5022
.Nota: Para este tutorial, mantendremos todas las demás opciones por defecto. No cree un listener a partir de ahora.
-
A continuación, debemos seleccionar la sincronización de datos. Seleccione Inicio automático y haga clic en Siguiente.
-
En Validación, asegúrese de que la validación es Correcta y corrija los fallos. Puede ignorar la advertencia Comprobación de la configuración del listener, ya que crearemos el listener más adelante. Haga clic en Siguiente y, una vez creado el grupo de disponibilidad, seleccione Cerrar para cerrar el asistente.
-
En Explorador de objetos, amplíe Siempre en alta disponibilidad y, a continuación, amplíe Grupos de disponibilidad. Ahora debería ver el nuevo grupo de disponibilidad en este contenedor. Haga clic con el botón derecho en el grupo de disponibilidad y seleccione Mostrar panel de control.
-
Abra Failover Cluster Manager (Gestor de clusters de failover), vaya a Start (Inicio), busque y abra Failover Cluster Manager (Gestor de clusters de failover). Conéctese al cluster y haga clic en Roles.
El nombre del grupo de disponibilidad que hemos utilizado es un rol en el cluster y ese grupo de disponibilidad no tiene una dirección IP para las conexiones de cliente porque no hemos configurado un listener. Configuraremos el listener después de crear un equilibrador de carga de OCI.
En esta etapa, el grupo de disponibilidad se ha configurado correctamente con dos réplicas de SQL Server, lo que permite el failover entre las instancias. Sin embargo, la conectividad del cliente mediante el listener aún no es posible porque no se ha configurado un listener.
Tarea 2: Creación de un equilibrador de carga de OCI y configuración de un listener de grupo de disponibilidad
Hay varios enfoques para configurar un listener de grupo de disponibilidad Always On de SQL Server en OCI, incluido el uso de una configuración de varias subredes o la asignación de una dirección IP secundaria a cada máquina virtual. Si bien estos métodos son válidos, a menudo requieren una configuración adicional o secuencias de comandos personalizadas para gestionar el movimiento de IP durante los eventos de failover.
Si desea desplegar un grupo de disponibilidad Always On en un único entorno de subred y prefiere evitar la creación de scripts personalizados, el uso de un OCI Load Balancer privado ofrece una solución optimizada y fiable. Esta sección le guiará a través de la configuración del equilibrador de carga de OCI para que actúe como listener para el grupo de disponibilidad Always On, lo que permite una conectividad perfecta y un manejo de failover dentro de una única subred.
Tarea 2.1: Reserva de una dirección IP privada estática para SQL Server Always On Availability Group Listener
Reserve una IP privada estática en OCI que posteriormente se asignará a la IP del listener del grupo de disponibilidad Always On de SQL Server en el cluster de failover de Windows. Reservamos esta dirección IP para garantizar que no se asigne esta dirección IP a ningún otro servicio o máquina virtual en OCI. Los clientes no utilizarán esta dirección IP para conectarse, pero ayudará al failover del grupo de disponibilidad y garantizará que el equilibrador de carga de OCI enrute la conexión al servidor principal correcto.
-
Vaya a la consola de OCI, vaya a Networking y haga clic en Virtual Cloud Networks.
-
Vaya a la VCN que está utilizando para los nodos de SQL Server.
-
Haga clic en Subredes y vaya a la subred que se utiliza para los nodos de SQL Server.
-
En Recursos, haga clic en Direcciones IPv4.
-
Haga clic en Agregar dirección IPv4 reservada.
-
Introduzca la dirección IP que desea asignar al listener de grupo de disponibilidad Always On de SQL Server. Esta puede ser cualquier dirección IP no utilizada. Tenga en cuenta que los clientes no podrán conectarse mediante esta dirección IP de forma remota. Esta es una IP ficticia que asignaremos al listener del grupo de disponibilidad Always On de SQL Server en el cluster de failover de Windows. Para este tutorial, hemos utilizado
10.0.0.148
.
Tarea 2.2: Creación de un equilibrador de carga de OCI privado
Nota: Los campos que no se mencionan aquí se mantienen como predeterminados.
-
Vaya a la consola de OCI, vaya a Networking y Load Balancers.
-
Haga clic en Equilibrador de carga y en Crear equilibrador de carga.
-
Introduzca Nombre de equilibrador de carga y seleccione Privado como Tipo de visibilidad.
-
En Seleccionar red, seleccione el nombre de compartimento para la VCN y la subred que se utilizarán para este equilibrador de carga. Utilice la misma VCN y subred que ha utilizado para los nodos de SQL Server.
-
En Gestión, seleccione el compartimento en el que se creará este equilibrador de carga. Asegúrese de activar Prevenir la supresión del equilibrador de carga, los listeners y los backends cuando aún estén activos para evitar la interrupción involuntaria de los servicios y haga clic en Siguiente.
-
En Backends, especifique una política de equilibrio de carga como round-robin ponderado.
-
En Seleccionar servidores de backend, agregue los nodos de SQL Server:
DevSQL1
yDevSQL2
. Cambie el número de puerto a1433
; en caso de que esté utilizando un puerto diferente para SQL Server, introduzca el número de puerto correspondiente. -
En Especificar política de comprobación del sistema, utilice Protocolo TCP con el número de puerto
59999
. Puede utilizar cualquier puerto no utilizado. -
Mantenga todos los demás valores como por defecto y estamos utilizando la lista de seguridad para la VCN seleccionada. Haga clic en Siguiente.
-
En Configurar listener, introduzca Nombre del listener, tráfico de TCP y número de Puerto como
1433
. Mantener los demás valores por defecto. -
Haga clic en Siguiente, revise la configuración y haga clic en Enviar.
-
Una vez aprovisionado OCI Load Balancer, puede anotar la dirección IP privada del equilibrador de carga de OCI. Para ello, vaya a Networking, Load Balancers y haga clic en Load Balancer.
En este tutorial, la dirección IP del equilibrador de carga es 10.0.0.149
. Esta es la dirección IP que los clientes utilizarán para conectarse al listener del grupo de disponibilidad Always On de SQL Server.
Tarea 2.3: Configurar el listener del grupo de disponibilidad Always On de SQL Server
-
Protocolo de escritorio remoto (RDP) en la máquina virtual que aloja la réplica principal. En este tutorial, es
DevSQL1
. Para confirmarlo, puede abrir Windows Failover Cluster Manager (Gestor de clusters de failover de Windows), Roles (Roles) y, para el rol de grupo de disponibilidad SQL, consulte la columna Owner Node (Nodo de propietario) para confirmar qué nodo es la réplica principal. -
Vaya a Networks y anote el Name de red como una variable
$ClusterNetworkName
. -
Agregue el punto de acceso del cliente. El punto de acceso de cliente es el nombre de red que utilizan las aplicaciones para conectarse a las bases de datos de un grupo de disponibilidad.
-
En Gestor de clusters de failover, amplíe el nombre del cluster y seleccione Roles.
-
Haga clic en Roles, haga clic con el botón derecho en el nombre del grupo de disponibilidad, seleccione Agregar Recurso y haga clic en Punto de Acceso de Cliente.
-
En Nombre, cree un nombre para este nuevo listener. El nombre del nuevo listener es el nombre de red que utilizan las aplicaciones para conectarse a las bases de datos del grupo de disponibilidad de SQL Server.
-
Haga clic en Siguiente dos veces y seleccione Terminar. No ponga el listener ni el recurso en línea en este punto.
-
-
Ponga fuera de línea el rol de cluster para el grupo de disponibilidad. En Gestor de clusters de failover, haga clic en Roles, haga clic con el botón derecho en el rol y seleccione Parar rol.
-
Configure el recurso IP para el grupo de disponibilidad.
-
Haga clic en Recursos y amplíe el punto de acceso de cliente que ha creado. El punto de acceso del cliente está fuera de línea.
-
Haga clic con el botón secundario en el recurso de IP y seleccione Propiedades. Tenga en cuenta el nombre de la dirección IP como una variable
$IPResourceName
. En este tutorial, el nombre esIP Address 10.0.0.0
. -
Haga clic en IP Address (Dirección IP estática) y seleccione Static IP Address (Dirección IP estática). Establezca la dirección IP como la dirección IP que reservamos en la tarea 2.1. En este tutorial, es
10.0.0.148
.
-
-
Haga que el grupo de disponibilidad de SQL Server dependa del punto de acceso del cliente.
-
En Gestor de clusters de failover, haga clic en Roles y seleccione el grupo de disponibilidad.
-
Haga clic en Recursos, en Otros recursos, haga clic con el botón derecho en el recurso del grupo de disponibilidad y haga clic en Propiedades.
-
Haga clic en Dependencias y agregue el nombre del punto de acceso del cliente (el listener).
-
Haga clic en Aceptar.
-
-
Haga que el punto de acceso del cliente dependa de la dirección IP.
-
En Gestor de clusters de failover, haga clic en Roles y seleccione el grupo de disponibilidad.
-
Haga clic en Recursos, haga clic con el botón derecho en el punto de acceso de cliente en Nombre de servidor y haga clic en Propiedades.
-
Haga clic en Dependencias y verifique que la dirección IP sea una dependencia. Si no es así, establezca una dependencia en la dirección IP. Si se muestran varios recursos, verifique que las direcciones IP tengan dependencias OR, no AND, y haga clic en OK (Aceptar).
-
-
Defina los parámetros del cluster en Windows PowerShell.
-
Copie el siguiente script PowerShell en una de las instancias de SQL Server. Actualice las variables de su entorno.
-
Busque el nombre
$ClusterNetworkName
en Failover Cluster Manager (Gestor de clusters de failover) seleccionando Networks (Redes), haga clic con el botón derecho en la red y seleccione Properties (Propiedades).$ClusterNetworkName
está en Nombre en el separador General. -
$IPResourceName
es el nombre proporcionado al recurso de dirección IP en Failover Cluster Manager. Esto se encuentra en el Gestor de clusters de failover seleccionando Roles, seleccione el grupo de disponibilidad de SQL Server o el nombre de FCI, seleccione Recursos en Nombre del servidor, haga clic con el botón derecho en el recurso de dirección IP y haga clic en Propiedades. El valor correcto se encuentra en Nombre en el separador General. -
$ListenerILBIP
es la dirección IP que ha creado en el equilibrador de carga de Azure para el listener del grupo de disponibilidad. Busque$ListenerILBIP
en Failover Cluster Manager en la misma página de propiedades que el nombre de recurso del listener de SQL Server AG/FCI. -
$ListenerProbePort
es el puerto que ha configurado en el equilibrador de carga de Azure para el listener del grupo de disponibilidad, como59999
. Cualquier puerto TCP no utilizado es válido.
$ClusterNetworkName = "<MyClusterNetworkName>" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name. $IPResourceName = "<IPResourceName>" # The IP address resource name. $ListenerILBIP = "<n.n.n.n>" # The IP address that we reserved in Task 2.1. This is the static IP address for the SQL Server AG Listener that you reserved in OCI Console. [int]$ListenerProbePort = <nnnnn> Import-Module FailoverClusters Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
Para este tutorial, hemos utilizado lo siguiente:
$ClusterNetworkName = "Cluster Network 1" # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name. $IPResourceName = "IP Address 10.0.0.0" # The IP address resource name. $ListenerILBIP = "10.0.0.148" # The IP address of the internal load balancer. This is the static IP address for the load balancer that you configured in the Azure portal. [int]$ListenerProbePort = 59999 Import-Module FailoverClusters Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
-
-
Defina los parámetros del cluster ejecutando el script PowerShell en uno de los nodos del cluster.
-
-
La agregación de una exclusión evitará que otros procesos del sistema se asignen dinámicamente al mismo puerto. Para este escenario, configure las siguientes exclusiones en todos los nodos del cluster.
netsh int ipv4 add excludedportrange tcp startport=59999 numberofports=1 store=persistent
-
Ponga en línea el rol de cluster para el grupo de disponibilidad. En Gestor de clusters de failover, haga clic en Roles, haga clic con el botón derecho en el rol y seleccione Iniciar rol.
-
En SQL Server Management Studio, defina el puerto del listener.
-
Abra SQL Server Management Studio y conéctese a la réplica principal.
-
Vaya a Siempre en alta disponibilidad, Grupos de disponibilidad y haga clic en listeners de grupo de disponibilidad.
-
Haga clic con el botón derecho en el nombre del listener creado en la tarea 2.2 y haga clic en Propiedades.
-
En Puerto, especifique el número de puerto para el listener del grupo de disponibilidad y haga clic en Aceptar. El valor por defecto es
1433
.
-
-
En el servidor DNS, asegúrese de que haya un registro de host A para la dirección IP privada del equilibrador de carga de OCI que apunte al nombre del listener del grupo de disponibilidad SQL. Asegúrese de que el objeto de computadora del listener SQL no puede actualizar los registros DNS. Esto es para garantizar que después de la conmutación por error la entrada DNS no se actualice a la dirección IP que se utiliza en el cluster de failover de Windows.
En este tutorial, hemos actualizado el registro Host A del listener del grupo de disponibilidad SQL con la dirección IP
10.0.0.149
en lugar de10.0.0.148
y hemos actualizado la seguridad para garantizar que el objeto de computadoraSQLAGL$
no pueda actualizar este registro y solo pueda leerlo.
Puede haber más métodos para lograrlo, puede implementar su propia solución. El objetivo es tener un registro de DNS para el listener del grupo de disponibilidad de SQL Server con la dirección IP del equilibrador de carga de OCI.
Ahora puede probar la conexión al listener de grupo de disponibilidad de SQL Server desde SSMS o cualquier otra herramienta de cliente.
Enlaces relacionados
-
Grupos de disponibilidad a escala de lectura en Oracle Cloud Infrastructure
-
Creación de servicios de dominio de Active Directory en Oracle Cloud Infrastructure
Agradecimientos
- Autor: Deviprasad Moolya (arquitecto principal de nube)
Más recursos de aprendizaje
Explore otros laboratorios en docs.oracle.com/learn o acceda a más contenido de formación gratuita en el canal YouTube de Oracle Learning. Además, visite education.oracle.com/learning-explorer para convertirse en un explorador de Oracle Learning.
Para obtener documentación sobre el producto, visite Oracle Help Center.
Configure Microsoft SQL Server Always On Availability Group on OCI with Listener and Load Balancer
G33417-01
Copyright ©2025, Oracle and/or its affiliates.