Note:

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.

Imagen 1

Exclusiones para este tutorial

Objetivos

Requisitos

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)

  1. En el nodo DevSQL1, vaya a Inicio, busque y abra el Gestor de configuración de SQL Server 2022.

  2. 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).

    Imagen 3

  3. Haga clic en Grupos de disponibilidad siempre activos y seleccione Activar grupos de disponibilidad siempre activos.

    Imagen 4

  4. Seleccione Aplicar y haga clic en Aceptar.

  5. Reinicie el servicio SQL Server.

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

  1. En el nodo DevSQL1, vaya a Inicio, busque SSMS y abra SQL Server Management Studio (SSMS).

  2. Conéctese al servidor SQL principal. En este tutorial, es DevSQL1.

    Imagen 6

  3. En Explorador de objetos, haga clic con el botón derecho en Bases de datos y haga clic en Nueva base de datos.

    Imagen 7

  4. En General, introduzca Nombre de base de datos y, en Opciones, seleccione Completo como Modelo de recuperación.

    Imagen 8

    Imagen 9

  5. Haga clic en Aceptar.

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

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

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

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

    Imagen 10

    Se abrirá una página Nuevo grupo de disponibilidad. Haga clic en Siguiente.

    Imagen 11

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

    Imagen 12

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

    Imagen 13

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

    Imagen 14

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

    Imagen 15

    Nota: Para este tutorial, mantendremos todas las demás opciones por defecto. No cree un listener a partir de ahora.

  6. A continuación, debemos seleccionar la sincronización de datos. Seleccione Inicio automático y haga clic en Siguiente.

    Imagen 16

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

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

    Imagen 17

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

    Imagen 18

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.

  1. Vaya a la consola de OCI, vaya a Networking y haga clic en Virtual Cloud Networks.

  2. Vaya a la VCN que está utilizando para los nodos de SQL Server.

  3. Haga clic en Subredes y vaya a la subred que se utiliza para los nodos de SQL Server.

  4. En Recursos, haga clic en Direcciones IPv4.

  5. Haga clic en Agregar dirección IPv4 reservada.

    Imagen 33

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

    Imagen 34

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.

  1. Vaya a la consola de OCI, vaya a Networking y Load Balancers.

    Imagen 19

  2. Haga clic en Equilibrador de carga y en Crear equilibrador de carga.

    Imagen 20

  3. Introduzca Nombre de equilibrador de carga y seleccione Privado como Tipo de visibilidad.

    Imagen 21

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

    Imagen 22

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

    Imagen 23

  6. En Backends, especifique una política de equilibrio de carga como round-robin ponderado.

  7. En Seleccionar servidores de backend, agregue los nodos de SQL Server: DevSQL1 y DevSQL2. Cambie el número de puerto a 1433; en caso de que esté utilizando un puerto diferente para SQL Server, introduzca el número de puerto correspondiente.

    Imagen 24

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

    Imagen 25

  9. Mantenga todos los demás valores como por defecto y estamos utilizando la lista de seguridad para la VCN seleccionada. Haga clic en Siguiente.

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

    Imagen 26

  11. Haga clic en Siguiente, revise la configuración y haga clic en Enviar.

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

    Imagen 35

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

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

  2. Vaya a Networks y anote el Name de red como una variable $ClusterNetworkName.

    Imagen 27

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

    1. En Gestor de clusters de failover, amplíe el nombre del cluster y seleccione Roles.

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

      Imagen 28

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

    4. Haga clic en Siguiente dos veces y seleccione Terminar. No ponga el listener ni el recurso en línea en este punto.

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

  5. Configure el recurso IP para el grupo de disponibilidad.

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

    2. 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 es IP Address 10.0.0.0.

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

    Imagen 29

  6. Haga que el grupo de disponibilidad de SQL Server dependa del punto de acceso del cliente.

    1. En Gestor de clusters de failover, haga clic en Roles y seleccione el grupo de disponibilidad.

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

    3. Haga clic en Dependencias y agregue el nombre del punto de acceso del cliente (el listener).

      Imagen 30

    4. Haga clic en Aceptar.

  7. Haga que el punto de acceso del cliente dependa de la dirección IP.

    1. En Gestor de clusters de failover, haga clic en Roles y seleccione el grupo de disponibilidad.

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

      Imagen 31

    3. 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).

  8. Defina los parámetros del cluster en Windows PowerShell.

    1. 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, como 59999. 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}
      
    2. Defina los parámetros del cluster ejecutando el script PowerShell en uno de los nodos del cluster.

  9. 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
    
  10. 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.

  11. En SQL Server Management Studio, defina el puerto del listener.

    1. Abra SQL Server Management Studio y conéctese a la réplica principal.

    2. Vaya a Siempre en alta disponibilidad, Grupos de disponibilidad y haga clic en listeners de grupo de disponibilidad.

    3. Haga clic con el botón derecho en el nombre del listener creado en la tarea 2.2 y haga clic en Propiedades.

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

    Imagen 32

  12. 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 de 10.0.0.148 y hemos actualizado la seguridad para garantizar que el objeto de computadora SQLAGL$ no pueda actualizar este registro y solo pueda leerlo.

    Imagen 36

    Imagen 37

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.

Agradecimientos

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.