Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server en máquina virtual de Azure
Sugerencia
Hay muchos métodos para implementar un grupo de disponibilidad. Simplifique la implementación y elimine la necesidad de un nombre de red distribuida (DNN) o un equilibrador de carga de Azure para el grupo de disponibilidad Always On mediante la creación de las máquinas virtuales (VM) de SQL Server en varias subredes dentro de la misma red virtual de Azure. Si ya ha creado el grupo de disponibilidad en una sola subred, puede migrarlo a un entorno de varias subredes.
En máquinas virtuales de Azure, los clústeres utilizan un equilibrador de carga para mantener una dirección IP que es preciso que esté en un nodo del clúster a la vez. En esta solución, el equilibrador de carga mantiene la dirección IP para el listener del nombre de red virtual (VNN) del grupo de disponibilidad Always On cuando las máquinas virtuales de SQL Server están en una única subred.
En este artículo aprende a configurar un equilibrador de carga mediante el servicio Azure Load Balancer. El equilibrador de carga enruta el tráfico al listener del grupo de disponibilidad con SQL Server en máquinas virtuales de Azure para lograr alta disponibilidad y recuperación ante desastres (HADR).
Para obtener una opción de conectividad alternativa para los clientes que se encuentran en SQL Server 2019 CU8 y versiones posteriores, considere un escuchador de nombre de red distribuida (DNN) en su lugar. Un cliente de escucha de DNN ofrece una configuración simplificada y una conmutación por error mejorada.
Requisitos previos
Antes de completar los pasos de este artículo, ya debe tener:
- Decidido que Azure Load Balancer es la opción de conectividad adecuada para su grupo de disponibilidad.
- Instalada la versión más reciente de PowerShell.
Creación de un equilibrador de carga
Puede crear cualquiera de estos tipos de equilibradores de carga:
Interno: solo los recursos privados pueden acceder a un equilibrador de carga interno. Cuando configure un equilibrador de carga interno y sus reglas, use la misma dirección IP que el cliente de escucha del grupo de disponibilidad para la dirección IP del front-end.
Externo: un equilibrador de carga externo enruta el tráfico desde el público a los recursos internos. Al configurar un equilibrador de carga externo, no puede usar la misma dirección IP que el cliente de escucha del grupo de disponibilidad, ya que la dirección IP del cliente de escucha no puede ser una dirección IP pública.
Para usar un equilibrador de carga externo, asigne lógicamente una dirección IP en la misma subred que el grupo de disponibilidad que no entre en conflicto con ninguna otra dirección IP. Use esta dirección como dirección IP de front-end para las reglas de equilibrio de carga.
Nota:
Se ha retirado el equilibrador de carga básico. En el caso de las nuevas implementaciones, use el equilibrador de carga estándar. Si tiene una implementación existente que usa el equilibrador de carga básico, actualice al equilibrador de carga estándar.
Para crear el equilibrador de carga:
En Azure Portal, vaya al grupo de recursos que contiene las máquinas virtuales.
Seleccione Agregar. Busque Equilibrador de carga en Azure Marketplace. Seleccione Equilibrador de carga.
Seleccione Crear.
En Crear equilibrador de carga, en la pestaña Aspectos básicos, configure el equilibrador de carga mediante los valores siguientes:
- Suscripción: Su suscripción de Azure.
- Grupo de recursos: El grupo de recursos que contiene las máquinas virtuales.
- Name: un nombre que identifica el equilibrador de carga.
- Región: La ubicación de Azure que contiene las máquinas virtuales.
- SKU: Estándar.
- Tipo: Pública o interna. A los equilibradores de carga internos se puede acceder desde la red virtual. La mayoría de las aplicaciones de Azure pueden usar un equilibrador de carga interno. Si la aplicación necesita acceder a SQL Server directamente a través de Internet, utilice un equilibrador de carga público.
- Nivel: Regional.
Seleccione Siguiente: Configuración de la dirección IP de frontend.
Seleccione Agregar una configuración de IP de front-end.
Configure la dirección IP de front-end con los valores siguientes:
- Nombre: un nombre que identifica la configuración de la dirección IP de front-end.
- Red virtual: la misma red que la de las máquinas virtuales.
- Subred: la misma subred que la de las máquinas virtuales.
- Asignación: estática.
- Dirección IP: la dirección IP que asignó al recurso de red en clúster.
- Zona de disponibilidad: una zona de disponibilidad opcional en la que se implementará la dirección IP.
Seleccione Agregar para crear la dirección IP de front-end.
Seleccione Revisar y crear para crear el equilibrador de carga.
Configurar un grupo de backend
Vuelva al grupo de recursos de Azure que contiene las máquinas virtuales y busque el equilibrador de carga nuevo. Es posible que tenga que actualizar la vista en el grupo de recursos. Seleccione el equilibrador de carga.
Seleccione Grupos de back-end y, a continuación, seleccione + Agregar.
En Nombre, escriba un nombre para el grupo de back-end.
En Configuración del grupo de back-end, seleccione NIC.
Seleccione Agregar para asociar el grupo de back-end con el conjunto de disponibilidad que contiene las máquinas virtuales.
En Máquina virtual, elija las máquinas virtuales que participarán como nodos de clúster. No olvide incluir todas las máquinas virtuales que hospedarán el grupo de disponibilidad.
Agregue solo la dirección IP principal de cada máquina virtual. No agregue ninguna dirección IP secundaria.
Seleccione Agregar para agregar las máquinas virtuales al grupo de back-end.
Seleccione Guardar para crear el grupo de back-end.
Configura una sonda de salud
En el panel del equilibrador de carga, seleccione Sondeos de estado.
En Agregar sondeo de estado, establezca los parámetros siguientes:
- Name: nombre para la sonda de salud.
- Protocolo: TCP.
- Puerto: El puerto que creó en el firewall específicamente para el sondeo de estado. En este artículo, el ejemplo usa el puerto TCP 59999.
- Intervalo: 5 segundos.
Seleccione Agregar.
Establecimiento de reglas de equilibrio de carga
En el panel del equilibrador de carga, seleccione Reglas de equilibrio de carga.
Seleccione Agregar.
Establezca estos parámetros:
- Nombre: nombre de la regla de equilibrio de carga.
- Dirección IP de front-end: la dirección IP que estableció al configurar el front-end.
- Backend pool: el grupo de back-end que contiene las máquinas virtuales destinadas al equilibrador de carga.
- Puertos HA: habilita el equilibrio de carga para los protocolos TCP y UDP en todos los puertos.
- Protocolo: TCP.
- Puerto: el puerto TCP de SQL Server. El valor predeterminado es 1433.
- Puerto de backend: el mismo puerto que el valor del Puerto cuando se habilita IP Flotante (retorno directo al servidor).
- Sondeo de salud: el sondeo de salud que configuró anteriormente.
- Persistencia de la sesión: Ninguna.
- Tiempo de espera de inactividad (minutos): 4.
- IP flotante (Direct Server Return) : Habilitado.
Seleccione Guardar.
Configuración de un sondeo de clúster
Establezca el parámetro del puerto de sondeo de clúster en PowerShell.
Actualice las variables del siguiente script con los valores del entorno. Quite los corchetes angulares (< y >).
$ClusterNetworkName = "<Cluster Network Name>"
$IPResourceName = "<AG Listener IP Address Resource Name>"
$ILBIP = "<n.n.n.n>"
[int]$ProbePort = <nnnnn>
Import-Module FailoverClusters
Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ILBIP";"ProbePort"=$ProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
En la tabla siguiente se describen los valores que debe actualizar:
| Variable | Valor |
|---|---|
ClusterNetworkName |
Nombre del clúster de conmutación por error de Windows Server para la red. En Administrador de clústeres de conmutación por error>Redes, haga clic con el botón derecho en la red y después seleccione Propiedades. El valor correcto está debajo del campo Nombre en la pestaña General. |
IPResourceName |
Nombre del recurso para la dirección IP del listener del grupo de disponibilidad (AG). En Administrador de clústeres de conmutación por error>Roles, en el rol de grupo de disponibilidad, en Nombre del servidor, haga clic con el botón derecho en el recurso de la dirección IP y después seleccione Propiedades. El valor correcto está debajo del campo Nombre en la pestaña General. |
ILBIP |
Dirección IP del equilibrador de carga interno. Esta dirección se configura en Azure Portal como la dirección front-end del equilibrador de carga interno. Es la misma dirección IP que la del listener del grupo de disponibilidad. Lo puede encontrar en el Administrador de clústeres de conmutación por error, en la misma página de propiedades donde encontró el valor de IPResourceName. |
ProbePort |
El puerto de sondeo que configuraste en el sondeo de estado del equilibrador de carga. Cualquier puerto TCP no utilizado es válido. |
SubnetMask |
Máscara de subred para el parámetro de clúster. Debe ser la dirección de difusión TCP/IP: 255.255.255.255. |
Los cambios realizados no surten efecto hasta que se desconecte el recurso de dirección IP y vuelva a ponerlo en línea. Realice una conmutación por error del grupo de disponibilidad para que este cambio surta efecto. Después de establecer el sondeo de clúster puede ver todos los parámetros del clúster en PowerShell. Ejecute este script:
Get-ClusterResource $IPResourceName | Get-ClusterParameter
Configuración de la exclusión de puertos
Cuando se usa un puerto de sondeo de estado entre 49 152 y 65 536 (el intervalo de puertos dinámico predeterminado para TCP/IP), agregue una exclusión para cada puerto de sondeo de estado en cada máquina virtual.
La configuración de la exclusión de puertos impide que otros procesos del sistema asignen dinámicamente el mismo puerto en la máquina virtual.
Para establecer una exclusión de puerto en cada máquina virtual para cada puerto de sondeo de estado, use el siguiente script de PowerShell:
[int]$ProbePort = <nnnnn> # The probe port that you configured in the health probe of the load balancer. Any unused TCP port is valid.
netsh int ipv4 add excludedportrange tcp startport=$ProbePort numberofports=1 store=persistent
Para confirmar que ha configurado las exclusiones correctamente, use el siguiente comando:
netsh int ipv4 show excludedportrange tcp
Modificación de la cadena de conexión
Para los clientes que lo admitan, agregue MultiSubnetFailover=True a la cadena de conexión. Aunque la opción de conexión MultiSubnetFailover no es necesaria, ofrece la ventaja de una conmutación por error más rápida de la subred. Esta ventaja se debe a que el controlador cliente intenta abrir un socket TCP para cada dirección IP en paralelo. El controlador de cliente espera a que la primera dirección IP responda correctamente. Después de la respuesta correcta, el controlador de cliente usa esa dirección IP para la conexión.
Si su cliente no admite el parámetro MultiSubnetFailover, puede modificar la configuración de RegisterAllProvidersIP y HostRecordTTL para evitar retrasos en la conectividad tras la conmutación por error.
Use PowerShell para modificar la configuración RegisterAllProvidersIp y HostRecordTTL:
Get-ClusterResource yourListenerName | Set-ClusterParameter RegisterAllProvidersIP 0
Get-ClusterResource yourListenerName | Set-ClusterParameter HostRecordTTL 300
Para obtener más información, consulte la documentación sobre el tiempo de espera de la conexión del oyente en SQL Server.
Sugerencia
- Establezca el parámetro
MultiSubnetFailoverentrueen la cadena de conexión, incluso para las soluciones HADR que abarcan una sola subred. Esta configuración admite la expansión futura de subredes sin necesidad de actualizar las cadenas de conexión. - De forma predeterminada, los clientes almacenan en memoria caché los registros DNS de clúster durante 20 minutos. Al reducir
HostRecordTTL, se reduce el tiempo de vida (TTL) del registro almacenado en caché. Los clientes de legado pueden volver a conectarse más rápidamente. Como tal, reducir la configuraciónHostRecordTTLpodría aumentar el tráfico a los servidores DNS.
Prueba de conmutación por error
Pruebe la conmutación por error del recurso de clúster para validar la funcionalidad del clúster:
- Abra SQL Server Management Studio y conéctese al listener del grupo de disponibilidad.
- En Explorador de objetos, expanda Always On Availability Group.
- Haga clic con el botón derecho en el grupo de disponibilidad y seleccione Conmutación por error.
- Siga las indicaciones del asistente para realizar la conmutación por error del grupo de disponibilidad a una réplica secundaria.
La conmutación por error se realiza correctamente cuando las réplicas cambian de roles y se sincronizan.
Comprobación de la conectividad
Para probar la conectividad, inicie sesión en otra máquina virtual de la misma red virtual. Abra SQL Server Management Studio y conéctese al cliente de escucha del grupo de disponibilidad.
Nota:
Instale la versión más reciente de SQL Server Management Studio (SSMS).
Pasos siguientes
Después de crear el VNN, considere la posibilidad de optimizar la configuración del clúster para las máquinas virtuales con SQL Server.
Para obtener más información, consulte:
- Clúster de conmutación por error de Windows Server con SQL Server en máquinas virtuales de Azure
- Grupos de disponibilidad Always On para SQL Server en Azure Virtual Machines
- Información general de los Grupos de disponibilidad AlwaysOn
- Configuración de HADR (alta disponibilidad y recuperación ante desastres) para SQL Server en máquinas virtuales de Azure