Compartir a través de


Configuración de un agente de escucha externo para grupos de disponibilidad en máquinas virtuales con SQL Server de Azure

En este tema se muestra cómo configurar un agente de escucha para un grupo de disponibilidad AlwaysOn al que se tiene acceso externo en Internet. Esto se realiza asociando la dirección IP Virtual pública (VIP) del servicio en la nube al agente de escucha.

Importante

Azure tiene dos modelos de implementación diferentes para crear recursos y trabajar con ellos: Resource Manager y el clásico. En este artículo se trata el modelo de implementación clásico. Microsoft recomienda que las implementaciones más recientes usen el modelo de Resource Manager.

El grupo de disponibilidad puede contener réplicas que son solo locales, solo de Azure o abarcan ambas, locales y de Azure, para configuraciones híbridas. Las réplicas de Azure pueden residir en la misma región o en varias regiones mediante varias redes virtuales (VNet). En los pasos siguientes se supone que ya tiene configurado un grupo de disponibilidad pero no un agente de escucha.

Instrucciones y limitaciones de los agentes de escucha externos

Tenga en cuenta las siguientes instrucciones acerca del agente de escucha del grupo de disponibilidad en Azure cuando se implementa con la dirección VIP pública del servicio en la nube:

  • El agente de escucha del grupo de disponibilidad es compatible con Windows Server 2008 R2, Windows Server 2012 y Windows Server 2012 R2.
  • La aplicación cliente debe residir en un servicio en la nube diferente al que contiene el grupo de disponibilidad de las máquinas virtuales. Azure no es compatible con Direct Server Return cuando el cliente y el servidor se encuentran en el mismo servicio en la nube.
  • Los pasos descritos en este artículo le mostrarán de forma predeterminada cómo configurar un agente de escucha para usar la dirección IP Virtual (VIP) del servicio en la nube. De todos modos, es posible reservar y crear varias direcciones VIP para el servicio en la nube. Esto le permitirá usar los pasos de este artículo para crear varios agentes de escucha asociados a una VIP diferente. Para obtener información sobre cómo crear varias direcciones VIP, consulte Varias direcciones VIP por cada servicio en la nube.
  • Si crea un agente de escucha para un entorno híbrido, la red local debe tener conectividad a Internet pública así como a la VPN de sitio a sitio con la red virtual de Azure. Cuando se encuentra en la subred de Azure, el agente de escucha del grupo de disponibilidad solo está disponible con la dirección IP pública del servicio en la nube respectivo.
  • No se puede crear un agente de escucha externo en el mismo servicio en la nube donde también haya creado un agente de escucha interno mediante el Equilibrador de carga interno (ILB).

Determinar la accesibilidad del agente de escucha

Es importante saber que hay dos formas de configurar un agente de escucha del grupo de disponibilidad en Azure. Estos métodos se diferencian en el tipo de equilibrador de carga de Azure que se usa al crear el agente de escucha. La siguiente tabla muestra las diferencias:

Tipo de equilibrador de carga Implementación Úsala en estos casos:
Externo Usa la dirección IP virtual pública del servicio en la nube que hospeda las máquinas virtuales. Es necesario tener acceso al agente de escucha desde el exterior de la red virtual, incluso desde Internet.
Interno Usa un equilibrador de carga interno con una dirección privada para el agente de escucha. Solo se puede acceder al agente de escucha desde la misma red virtual. Este acceso incluye una VPN de sitio a sitio en escenarios híbridos.

Importante

No incurrirá en cargos de salida por utilizar un agente de escucha que use la dirección VIP pública del servicio en la nube (equilibrador de carga externo), siempre y cuando el cliente, el agente de escucha y las bases de datos se encuentren en la misma región de Azure. En caso contrario, los datos que devuelve el agente de escucha se consideran de salida y se cobran según las tarifas de transferencia de datos normales.

Un ILB solo se puede configurar en redes virtuales con un ámbito regional. Las redes virtuales existentes que se han configurado para un grupo de afinidad no pueden usar un ILB. Para más información, consulte Información general sobre el equilibrador de carga interno.

Este artículo se centra en la creación de un agente de escucha que usa equilibrio de carga externo. Si quiere un agente de escucha que sea privado para su red virtual, vea la versión de este artículo que indica los pasos necesarios para configurar un agente de escucha con ILB.

Creación de extremos de máquina virtual de carga equilibrada con Direct Server Return

El equilibrio de carga externo usa la dirección IP virtual pública del servicio en la nube que hospeda las máquinas virtuales. Por lo que en este caso no tiene que crear ni configurar el equilibrador de carga.

Tienes que crear un extremo de carga equilibrada para cada máquina virtual que hospeda una réplica de Azure. Si tienes réplicas en varias regiones, cada réplica de esa región tiene que estar en el mismo servicio en la nube de la misma red virtual. La creación de réplicas de grupo de disponibilidad que abarcan varias regiones de Azure, requiere configurar varias redes virtuales. Para más información sobre cómo configurar la conectividad entre redes virtuales, consulta Configurar conectividad de red virtual a red virtual.

  1. En el portal de Azure, navega a todas las máquinas virtuales que hospedas una réplica y consulta los detalles.

  2. Haga clic en la pestaña Extremos para cada una de las máquinas virtuales.

  3. Compruebe que el Nombre y el Puerto público del extremo del agente de escucha que desea usar no está siendo utilizado. En el ejemplo siguiente, el nombre es "MyEndpoint" y el puerto es "1433".

  4. En el cliente local, descargue e instale el módulo de PowerShell más reciente.

  5. Inicie Azure PowerShell. Se abrirá una nueva sesión de PowerShell con los módulos de administración de Azure cargados.

  6. Ejecuta Get-AzurePublishSettingsFile. Este cmdlet te dirige a un explorador para descargar un archivo de configuración de publicación en un directorio local. Puede que tengas que escribir las credenciales de inicio de sesión de tu suscripción a Azure.

  7. Ejecuta el comando Import-AzurePublishSettingsFile con la ruta de acceso del archivo de configuración de publicación que descargaste:

    Import-AzurePublishSettingsFile -PublishSettingsFile <PublishSettingsFilePath>
    

    Una vez que el archivo de configuración de publicación se haya importado, puedes administrar tu suscripción a Azure en la sesión de PowerShell.

  8. Copie el siguiente script de PowerShell en un editor de texto y establezca los valores de variable que se ajusten a su entorno (se han proporcionado los valores predeterminados para algunos parámetros). Tenga en cuenta que si el grupo de disponibilidad abarca regiones de Azure, debe ejecutar el script una vez en cada centro de datos del servicio en la nube y los nodos que residen en ese centro de datos.

    # Define variables
    $ServiceName = "<MyCloudService>" # the name of the cloud service that contains the availability group nodes
    $AGNodes = "<VM1>","<VM2>","<VM3>" # all availability group nodes containing replicas in the same cloud service, separated by commas
    
    # Configure a load balanced endpoint for each node in $AGNodes, with direct server return enabled
    ForEach ($node in $AGNodes)
    {
        Get-AzureVM -ServiceName $ServiceName -Name $node | Add-AzureEndpoint -Name "ListenerEndpoint" -Protocol "TCP" -PublicPort 1433 -LocalPort 1433 -LBSetName "ListenerEndpointLB" -ProbePort 59999 -ProbeProtocol "TCP" -DirectServerReturn $true | Update-AzureVM
    }
    
  9. Una vez configuradas las variables, copie el script del editor de texto en la sesión de Azure PowerShell para ejecutarlo. Si el mensaje sigue mostrando >>, escriba ENTRAR de nuevo para asegurarse de que el script empieza a ejecutarse.

Comprobación de que KB2854082 está instalado si es necesario.

Después, si algún servidor del clúster está ejecutando Windows Server 2008 R2 o Windows Server 2012, debe comprobar que la revisión KB2854082 está instalada en todos los servidores locales o máquinas virtuales de Azure que forman parte del clúster. Cualquier servidor o VM que esté en el clúster, pero no en el grupo de disponibilidad, también debería tener instalada esta revisión.

En la sesión de escritorio remoto para todos los nodos del clúster, descarga la KB2854082 en un directorio local. A continuación, instale la revisión en todos los nodos del clúster secuencialmente. Si en ese momento el servicio de clúster se está ejecutando en el nodo de clúster, el servidor se reiniciará al final de la instalación de la revisión.

Advertencia

Detener el servicio de clúster o reiniciar el servidor afectará al estado del cuórum del clúster y al grupo de disponibilidad y puede provocar que el clúster se quede sin conexión. Para mantener la alta disponibilidad del clúster durante la instalación, asegúrate de que:

  • El clúster se encuentra en un estado de cuórum óptimo.
  • Todos los nodos del clúster están conectados antes de instalar la revisión en cualquier nodo.
  • Antes de instalar la revisión en cualquier otro nodo del clúster, permita que se ejecute la instalación de la revisión hasta su finalización en un nodo, incluido el reinicio completo del servidor.

Apertura de los puertos de firewall en los nodos de grupo de disponibilidad

En este paso, se creará una regla de firewall para abrir el puerto de sondeo para el punto de conexión de carga equilibrada (59999, como se especificó anteriormente) y otra regla para abrir el puerto de escucha del grupo de disponibilidad. Como se creó el punto de conexión de carga equilibrada en las máquinas virtuales que contienen réplicas del grupo de disponibilidad, será necesario abrir el puerto de sondeo y el puerto de escucha en las respectivas máquinas virtuales.

  1. Inicie el Firewall de Windows con seguridad avanzada en las máquinas virtuales que hospedan réplicas.

  2. Haga clic con el botón secundario en Reglas de entrada y, a continuación, en Nueva regla.

  3. En la página Tipo de regla, seleccione Puerto y después haga clic en Siguiente.

  4. En la página Protocolo y puertos seleccione TCP, escriba 59999 en el cuadro de texto Puertos locales específicos y haga clic en Siguiente.

  5. En la página Acción, mantenga seleccionado Permitir la conexión y luego haga clic en Siguiente.

  6. En la página Perfiles, acepte la configuración predeterminada y luego haga clic en Siguiente.

  7. En la página Nombre, especifique un nombre de regla, como Always On Listener Probe Port (Puerto de sondeo de escucha Always On), en el cuadro de texto Nombre y haga clic en Finalizar.

  8. Repita los pasos anteriores para el puerto de escucha del grupo de disponibilidad (como se especificó anteriormente en el parámetro $EndpointPort del script) y especifique un nombre de regla adecuado, como Puerto de escucha Always On.

Creación del agente de escucha de grupo de disponibilidad

Cree el agente de escucha de grupo de disponibilidad en dos pasos. En primer lugar, cree el recurso de clúster de punto de acceso de cliente y configure las dependencias. En segundo lugar, configure los recursos de clúster con PowerShell.

Creación del punto de acceso cliente y configuración de las dependencias de clúster

En este paso, se crea manualmente el agente de escucha del grupo de disponibilidad en el Administrador de clústeres de conmutación por error y SQL Server Management Studio.

  1. Abra el Administrador de clústeres de conmutación por error desde el nodo que hospeda la réplica principal.

  2. Seleccione el nodo Redes y anote el nombre de red del clúster. Este nombre se utilizará en la variable $ClusterNetworkName en el script de PowerShell.

  3. Amplía el nombre del clúster y haz clic en Funciones.

  4. En el panel Roles, haga clic con el botón derecho en el nombre del grupo de disponibilidad y después seleccione Agregar recurso>Punto de acceso cliente.

    Agregar un punto de acceso cliente para el grupo de disponibilidad

  5. En la casilla Nombre, cree un nombre para este nuevo agente de escucha, después haga clic en Siguiente dos veces y haga clic en Finalizar.
    No pongas el agente de escucha o el recurso en línea en este momento.

  6. Haga clic en la pestaña Recursos y después expanda el punto de acceso cliente que acaba de crear. Se muestra el recurso de dirección IP de cada red del clúster existente. Si se trata de una solución solo de Azure, se muestra un único recurso de dirección IP.

  7. Realice cualquiera de las siguientes acciones:

    • Para configurar una solución híbrida:

      a. Haga clic con el botón derecho en el recurso de dirección IP que corresponda a la subred local y, a continuación, seleccione Propiedades. Anote el nombre de dirección IP y el nombre de red.

      b. Seleccione Dirección IP estática, asigne una dirección IP no utilizada y, a continuación, haga clic en Aceptar.

    • Para configurar una solución solo de Azure:

      a. Haga clic con el botón derecho en el recurso de dirección IP correspondiente a la subred de Azure y, a continuación, seleccione Propiedades.

      Nota

      Si el agente de escucha no se puede poner en línea debido a una dirección IP en conflicto seleccionada por DHCP, puede configurar una dirección IP estática válida en esta ventana de propiedades.

      b. En la misma ventana de propiedades de Dirección IP, cambie el Nombre de dirección IP.
      Este nombre se utilizará en la variable $IPResourceName del script de PowerShell. Si la solución abarca varias redes virtuales de Azure, repita este paso para cada recurso de dirección IP.

Configuración de los recursos de clúster en PowerShell

  1. Para el equilibrio de carga externo, debe obtener la dirección IP virtual pública del servicio en la nube que contiene las réplicas. Inicie sesión en Azure Portal. Navegue hasta el servicio en la nube que contiene la máquina virtual del grupo de disponibilidad. Abra la vista Panel.

  2. Anote la dirección que se muestra debajo de Dirección IP virtual (VIP) pública. Si la solución abarca redes virtuales, repita este paso para cada servicio en la nube que contenga una máquina virtual que hospeda una réplica.

  3. En una de las máquinas virtuales, copie el siguiente script de PowerShell en un editor de texto y establezca las variables en los valores que anotó anteriormente.

    # Define variables
    $ClusterNetworkName = "<ClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP Address resource name
    $CloudServiceIP = "<X.X.X.X>" # Public Virtual IP (VIP) address of your cloud service
    
    Import-Module FailoverClusters
    
    # If you are using Windows Server 2012 or higher, use the Get-Cluster Resource command. If you are using Windows Server 2008 R2, use the cluster res command. Both commands are commented out. Choose the one applicable to your environment and remove the # at the beginning of the line to convert the comment to an executable line of code.
    
    # Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$CloudServiceIP";"ProbePort"="59999";"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"OverrideAddressMatch"=1;"EnableDhcp"=0}
    # cluster res $IPResourceName /priv enabledhcp=0 overrideaddressmatch=1 address=$CloudServiceIP probeport=59999  subnetmask=255.255.255.255
    
  4. Una vez establecidas las variables, abra una ventana de Windows PowerShell con privilegios elevados, copie el script del editor de texto y péguelo en la sesión de Azure PowerShell para ejecutarlo. Si el mensaje sigue mostrando >>, escriba ENTRAR de nuevo para asegurarse de que el script empieza a ejecutarse.

  5. Repita este paso en cada máquina virtual. Este script configura el recurso de dirección IP con la dirección IP del servicio en la nube y establece otros parámetros como, por ejemplo, el puerto de sondeo. El recurso de dirección IP, una vez conectado, puede responder al sondeo en el puerto de sondeo del extremo con equilibrio de carga que se creó anteriormente en este tutorial.

Conexión del agente de escucha

  1. En el Administrador de clústeres de conmutación por error, expanda Roles y, a continuación, resalte el grupo de disponibilidad.

  2. En la pestaña Recursos, haga clic con el botón derecho en el nombre del agente de escucha y, a continuación, haga clic en Propiedades.

  3. Haz clic en la pestaña Dependencias . Si aparecen varios recursos, compruebe que las direcciones IP tienen dependencias OR y no AND.

  4. Haga clic en OK.

  5. Haga clic con el botón derecho en el nombre del agente de escucha y luego haga clic en Poner en línea.

  6. Una vez que el agente de escucha está en línea, en la pestaña Recursos, haga clic con el botón derecho en el grupo de disponibilidad y haga clic en Propiedades.

    Configurar el recurso del grupo de disponibilidad

  7. Cree una dependencia en el recurso del nombre del agente de escucha (no en el nombre de los recursos de dirección IP) y, a continuación, haga clic en Aceptar.

    Agregar dependencias en el nombre del agente de escucha

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

  9. Vaya a Grupos de alta disponibilidad AlwaysOnAvailabilityGroupName<>>>Agentes de escucha del grupo de disponibilidad.>
    Debe mostrarse el nombre del agente de escucha que creó en el Administrador de clústeres de conmutación por error.

  10. Haga clic con el botón derecho en el nombre del agente de escucha y luego en Propiedades.

  11. En el cuadro de texto Puerto, especifique el número del puerto del agente de escucha del grupo de disponibilidad mediante el parámetro $EndpointPort usado anteriormente (en este tutorial, el valor predeterminado era 1433) y, después, haga clic en Aceptar.

Elementos de seguimiento

Después de crear el agente de escucha del grupo de disponibilidad, puede que sea necesario ajustar los parámetros de clúster RegisterAllProvidersIP y HostRecordTTL para el recurso del agente de escucha. Estos parámetros pueden reducir el tiempo de reconexión tras una conmutación por error que puede evitar los tiempos de expiración de la conexión. Para más información sobre estos parámetros, así como código de ejemplo, consulte Crear o configurar un agente de escucha del grupo de disponibilidad.

Prueba del agente de escucha del grupo de disponibilidad (dentro de la misma red virtual)

En este paso, se probará el agente de escucha del grupo de disponibilidad mediante una aplicación de cliente que se ejecuta en la misma red.

La conectividad del cliente tiene los requisitos siguientes:

  • Las conexiones de cliente para el agente de escucha tienen que proceder de máquinas que residan en un servicio en la nube diferente al que hospeda las réplicas de disponibilidad Always On.
  • Si las réplicas AlwaysOn están en subredes diferentes, los clientes tendrán que especificar MultisubnetFailover=True en la cadena de conexión. Esta condición se produce en los intentos de conexión en paralelo con las réplicas de las diversas subredes. Este escenario incluye una implementación de grupo de disponibilidad Always On entre regiones.

Un ejemplo sería conectarse al agente de escucha desde una de las máquinas virtuales de la misma red virtual de Azure (pero no desde una que hospede una réplica). Una manera fácil de completar esta prueba consiste en intentar conectar SQL Server Management Studio al agente de escucha del grupo de disponibilidad. Otro método sencillo es ejecutar SQLCMD.exe, como se indica a continuación:

sqlcmd -S "<ListenerName>,<EndpointPort>" -d "<DatabaseName>" -Q "select @@servername, db_name()" -l 15

Nota

Si el valor de EndpointPort es 1433, no es necesario especificarlo en la llamada. La llamada anterior también asume que el equipo cliente está unido al mismo dominio y que el llamador tiene concedidos los permisos en la base de datos mediante la autenticación de Windows.

Al probar el agente de escucha, asegúrese de conmutar por error el grupo de disponibilidad para asegurarte de que los clientes puedan conectarse al agente de escucha a través de las conmutaciones por error.

Prueba del agente de escucha del grupo de disponibilidad (por Internet)

Para obtener acceso al cliente de escucha desde el exterior de la red virtual, debe usar equilibrio de carga público o externo (descrito en este tema) en lugar de ILB, que es accesible únicamente dentro de la misma red virtual. En la cadena de conexión, especifique el nombre del servicio en la nube. Por ejemplo, si tiene un servicio en la nube denominado mycloudservice, la instrucción sqlcmd sería tal como sigue:

sqlcmd -S "mycloudservice.cloudapp.net,<EndpointPort>" -d "<DatabaseName>" -U "<LoginId>" -P "<Password>"  -Q "select @@servername, db_name()" -l 15

A diferencia del ejemplo anterior, se debe usar autenticación de SQL, ya que el autor de la llamada no puede usar la autenticación de Windows por Internet. Para más información, consulte Always On Availability Group in Azure VM: Client Connectivity Scenarios(Grupo de disponibilidad AlwaysOn en la máquina virtual de Azure: escenarios de conectividad de cliente). Al usar la autenticación de SQL, asegúrese de que crea el mismo inicio de sesión en ambas réplicas. Para obtener más información sobre cómo solucionar problemas de inicio de sesión con grupos de disponibilidad, consulte Asignar inicios de sesión o usar un usuario de base de datos SQL contenido para conectar con otras réplicas y asignarlas a las bases de datos de disponibilidad.

Si las réplicas AlwaysOn están en subredes diferentes, los clientes tendrán que especificar MultisubnetFailover=True en la cadena de conexión. Esto se traduce en intentos de conexión en paralelo con las réplicas de las diferentes subredes. Tenga en cuenta que este escenario incluye una implementación de grupo de disponibilidad AlwaysOn entre regiones.

Pasos siguientes

Además de conectar automáticamente los clientes a la réplica principal, un agente de escucha se puede utilizar para redirigir las cargas de trabajo de solo lectura a las secundarias. Esto puede mejorar el rendimiento y la escalabilidad de la solución en general. Para más información, consulte Use ReadIntent Routing with Azure Always On availability group listener (Uso del enrutamiento ReadIntent con el agente de escucha del grupo de disponibilidad de Azure Always On).

Nota

Para obtener sugerencias sobre solución de problemas en los agentes de escucha de Azure, consulte Troubleshooting Availability Group Listener in Azure (Solución de problemas de agentes de escucha de grupos de disponibilidad en Azure) en el blog del equipo de soporte técnico de AlwaysOn.

Para más información sobre el uso de SQL Server en Azure, consulte SQL Server en máquinas virtuales de Azure .