Configuración de un cliente de escucha de DNN para un grupo de disponibilidad

Se aplica a:SQL Server en VM 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:

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:

  1. Abra un editor de texto, como el Bloc de notas.

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

  1. Abra una herramienta de la interfaz de la línea de comandos, como el símbolo del sistema o PowerShell.

  2. Vaya a la ubicación en la que guardó el script .ps1, como C:\Documentos.

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

View the DNN listener under availability group listeners in SQL Server Management Studio (SSMS)

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):

Use sys.availability_group_listeners to identify DNN listeners that have a value of 1 in is_distributed_network_name

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:

  1. Conéctese al cliente de escucha de DNN o a una de las réplicas mediante SQL Server Management Studio (SSMS).
  2. Expanda Always On Availability Group (Grupo de disponibilidad Always On) en el Explorador de objetos.
  3. 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.
  4. 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.
  5. Confirme que la base de datos se encuentre en un estado sincronizado en la nueva réplica principal.
  6. (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:

  1. Abra SQL Server Management Studio.
  2. Conéctese al cliente de escucha de DNN.
  3. Abra una nueva ventana de consulta y compruebe a qué réplica está conectado mediante la ejecución de SELECT @@SERVERNAME.
  4. Conmute por error el grupo de disponibilidad a otra réplica.
  5. 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: