Configuración de un cliente de escucha de DNN para un grupo de disponibilidad
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.
Con SQL Server en las máquinas virtuales de Azure, el nombre de red distribuida (DNN) enruta el tráfico al recurso en clústeres adecuado. Proporciona una manera más fácil de conectarse a un grupos de disponibilidad (AG) Always On que el cliente de escucha de nombre de red virtual (VNN), sin necesidad de una instancia de Azure Load Balancer.
En este artículo aprenderá a configurar un cliente de escucha de DNN para reemplazar al cliente de escucha de VNN, y a enrutar el tráfico a un grupo de disponibilidad con VM con SQL Server en Azure para lograr una alta disponibilidad y recuperación ante desastres (HADR).
En el caso de una opción de conectividad alternativa, considere la posibilidad de usar un cliente de escucha de VNN y Azure Load Balancer en su lugar.
Información general
Un cliente de escucha de nombre de red distribuida (DNN) reemplaza al cliente de escucha de grupo de disponibilidad de nombre de red virtual (VNN) tradicional cuando se usa con grupos de disponibilidad Always On en VM con SQL Server. Esto evita la necesidad de que una instancia de Azure Load Balancer enrute el tráfico, lo que simplifica la implementación y el mantenimiento, y mejora la conmutación por error.
Use el cliente de escucha de DNN para reemplazar un cliente de escucha de VNN existente o, como alternativa, úselo junto con un agente de escucha de VNN existente para que el grupo de disponibilidad tenga dos puntos de conexión distintos: uno que use el nombre del cliente de escucha de VNN (y el puerto si no es el predeterminado), y otro que use el nombre y el puerto del cliente de escucha de DNN.
Precaución
El comportamiento de enrutamiento cuando se usa un DNN es distinto de cuando se usa un VNN. No use el puerto 1433. Para más información, consulte la sección Consideraciones sobre los puertos más adelante en este artículo.
Requisitos previos
Antes de completar los pasos de este artículo, ya debe tener:
- SQL Server con SQL Server 2019 CU8 y posterior, SQL Server 2017 CU25 y posterior, o SQL Server 2016 SP3 y posterior en Windows Server 2016 y posterior.
- Decidió que el nombre de red distribuida es la opción de conectividad adecuada para su solución HADR.
- Configurado el grupo de disponibilidad Always On.
- Instaló la versión más reciente de Azure PowerShell.
- Identificó el puerto único que usará con el cliente de escucha de DNN. El puerto usado con un cliente de escucha de DNN debe ser único en todas las réplicas del grupo de disponibilidad o de la instancia de clúster de conmutación por error. Ninguna otra conexión puede compartir el mismo puerto.
Nota:
Si tiene varios grupos de disponibilidad o FCI en el mismo clúster y utiliza una escucha de DNN o VNN, cada grupo de disponibilidad o FCI necesita su propio punto de conexión independiente.
Creación del script
Use PowerShell para crear el recurso de nombre de red distribuida (DNN) y asociarlo con el grupo de disponibilidad.
Para ello, siga estos pasos:
Abra un editor de texto, como el Bloc de notas.
Copie y pegue el siguiente script:
param ( [Parameter(Mandatory=$true)][string]$Ag, [Parameter(Mandatory=$true)][string]$Dns, [Parameter(Mandatory=$true)][string]$Port ) Write-Host "Add a DNN listener for availability group $Ag with DNS name $Dns and port $Port" $ErrorActionPreference = "Stop" # create the DNN resource with the port as the resource name Add-ClusterResource -Name $Port -ResourceType "Distributed Network Name" -Group $Ag # set the DNS name of the DNN resource Get-ClusterResource -Name $Port | Set-ClusterParameter -Name DnsName -Value $Dns # start the DNN resource Start-ClusterResource -Name $Port $Dep = Get-ClusterResourceDependency -Resource $Ag if ( $Dep.DependencyExpression -match '\s*\((.*)\)\s*' ) { $DepStr = "$($Matches.1) or [$Port]" } else { $DepStr = "[$Port]" } Write-Host "$DepStr" # add the Dependency from availability group resource to the DNN resource Set-ClusterResourceDependency -Resource $Ag -Dependency "$DepStr" #bounce the AG resource Stop-ClusterResource -Name $Ag Start-ClusterResource -Name $Ag
Guarde el script como archivo
.ps1
, por ejemplo,add_dnn_listener.ps1
.
Ejecución del script
Para crear el cliente de escucha de DNN, ejecute el script pasando los parámetros para el nombre del grupo de disponibilidad, el nombre del cliente de escucha y el puerto.
Por ejemplo, suponiendo que el nombre de un grupo de disponibilidad sea ag1
, el nombre del agente de escucha sea dnnlsnr
, y el puerto del cliente de escucha sea 6789
, siga estos pasos:
Abra una herramienta de la interfaz de la línea de comandos, como el símbolo del sistema o PowerShell.
Vaya a la ubicación en la que guardó el script
.ps1
, como C:\Documentos.Ejecute el script:
add_dnn_listener.ps1 <ag name> <listener-name> <listener port>
. Por ejemplo:c:\Documents> .\add_dnn_listener.ps1 ag1 dnnlsnr 6789
Comprobación del cliente de escucha
Use SQL Server Management Studio o Transact-SQL para confirmar que el cliente de escucha de DNN se haya creado correctamente.
SQL Server Management Studio
Expanda Agentes de escucha del grupo de disponibilidad en SQL Server Management Studio (SSMS) para ver el cliente de escucha de DNN:
Transact-SQL
Use Transact-SQL para ver el estado del cliente de escucha de DNN:
SELECT * FROM SYS.AVAILABILITY_GROUP_LISTENERS
Un valor de 1
para is_distributed_network_name
indica que el cliente de escucha es un cliente de escucha de nombre de red distribuida (DNN):
Actualización de la cadena de conexión
Actualice la cadena de conexión para cualquier aplicación que necesite conectarse al cliente de escucha de DNN. La cadena de conexión al cliente de escucha de DNN debe proporcionar el número de puerto de DNN y especificar MultiSubnetFailover=True
en la cadena de conexión. Si el cliente SQL no admite el parámetro MultiSubnetFailover=True
, no es compatible con un agente de escucha de DNN.
A continuación se incluye un ejemplo de cadena de conexión para el nombre de cliente de escucha DNN_Listener y el puerto 6789:
DataSource=DNN_Listener,6789;MultiSubnetFailover=True
Conmutación por error de prueba
Pruebe la conmutación por error del grupo de disponibilidad para asegurar la funcionalidad.
Para probar la conmutación por error, siga estos pasos:
- Conéctese al cliente de escucha de DNN o a una de las réplicas mediante SQL Server Management Studio (SSMS).
- Expanda Always On Availability Group (Grupo de disponibilidad Always On) en el Explorador de objetos.
- Haga clic con el botón derecho en el grupo de disponibilidad y elija Conmutación por error para abrir el Asistente para la conmutación por error.
- Siga las notificaciones para elegir un destino de conmutación por error y conmutar por error el grupo de disponibilidad en una réplica secundaria.
- Confirme que la base de datos se encuentre en un estado sincronizado en la nueva réplica principal.
- (Opcional) Conmute por recuperación en la réplica principal o en otra réplica secundaria.
Comprobación de la conectividad
Pruebe la conectividad con el cliente de escucha de DNN con estos pasos:
- Abra SQL Server Management Studio.
- Conéctese al cliente de escucha de DNN.
- Abra una nueva ventana de consulta y compruebe a qué réplica está conectado mediante la ejecución de
SELECT @@SERVERNAME
. - Conmute por error el grupo de disponibilidad a otra réplica.
- Después de una cantidad de tiempo razonable, ejecute
SELECT @@SERVERNAME
para confirmar que el grupo de disponibilidad se hospeda ahora en otra réplica.
Limitaciones
- Los clientes de escucha de DNN SE DEBEN configurar con un puerto único. No se puede compartir el puerto con ninguna otra conexión en ninguna réplica.
- El cliente que se conecta al agente de escucha de DNN debe admitir el parámetro
MultiSubnetFailover=True
en la cadena de conexión. - Puede haber consideraciones adicionales al trabajar con otras características de SQL Server y un grupo de disponibilidad con un DNN. Para obtener más información, consulte Interoperabilidad de AG con DNN.
Consideraciones sobre los puertos
Los clientes de escucha de DNN están diseñados para escuchar en todas las direcciones IP, pero en un puerto único específico. La entrada DNS para el nombre del cliente de escucha debe resolverse en las direcciones de todas las réplicas del grupo de disponibilidad. Esta acción se realiza automáticamente con el script de PowerShell que se proporciona en la sección Creación de un script. Dado que los clientes de escucha de DNN aceptan conexiones en todas las direcciones IP, es fundamental que el puerto de escucha sea único y que no esté en uso por ninguna otra réplica del grupo de disponibilidad. Como SQL Server escucha en el puerto 1433 de manera predeterminada, ya sea directamente o por medio del servicio SQL Browser, se recomienda encarecidamente no usar el puerto 1433 para el cliente de escucha de DNN.
Si el puerto de escucha elegido para el agente de escucha de VNN está comprendido entre 49 152 y 65 536 (el intervalo de puertos dinámico predeterminado para TCP/IP), agregue una exclusión para esto. Si lo hace, impedirá que otros sistemas se asignen dinámicamente al mismo puerto.
Puede agregar una exclusión de puertos con el siguiente comando: netsh int ipv4 add excludedportrange tcp startport=<Listener Port> numberofports=1 store=persistent
Pasos siguientes
Una vez que se haya implementado el grupo de disponibilidad, puede optimizar la configuración de alta disponibilidad y recuperación ante desastres para SQL Server en máquinas virtuales de Azure.
Para obtener más información, consulte: