Uso de las plantillas de inicio rápido de Azure para configurar un grupo de disponibilidad para SQL Server en una máquina virtual de Azure

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.

En este artículo se explica cómo usar las plantillas de inicio rápido de Azure para automatizar parcialmente la implementación de una configuración de grupo de disponibilidad Always On para máquinas virtuales (VM) con SQL Server en una única subred de Azure. Son dos las plantillas de inicio rápido de Azure que se usan en este proceso:

Plantilla Descripción
sql-vm-ag-setup Crea el clúster de conmutación por error de Windows y une a él las máquinas virtuales con SQL Server.
sql-vm-aglistener-setup Crea la escucha de grupo de disponibilidad y configura el equilibrador de carga interno. Esta plantilla solo se puede usar si se creó el clúster de conmutación por error de Windows con la plantilla 101-sql-vm-ag-setup.

Otras partes de la configuración del grupo de disponibilidad deben realizarse manualmente, como la creación del grupo de disponibilidad y del equilibrador de carga interno. En este artículo se proporciona la secuencia de pasos manuales y automatizados.

Si bien en este artículo se usan las plantillas de inicio rápido de Azure para configurar el entorno del grupo de disponibilidad, también es posible hacerlo mediante Azure Portal, PowerShell o la CLI de Azure, o manualmente.

Nota:

Ahora es posible migrar mediante lift and shift la solución de grupo de disponibilidad a SQL Server en máquinas virtuales de Azure mediante Azure Migrate. Para más información, consulte Migración del grupo de disponibilidad.

Requisitos previos

Para automatizar la configuración de un grupo de disponibilidad Always On mediante plantillas de inicio rápido, debe cumplir los siguientes requisitos previos:

Permisos

Los siguientes permisos son necesarios para configurar el grupo de disponibilidad Always On mediante las plantillas de inicio rápido de Azure:

  • Una cuenta de usuario de dominio existente que tenga el permiso Crear objeto de equipo en el dominio. Por ejemplo, una cuenta de administrador de dominio normalmente tiene permisos suficientes (como account@domain.com). Esta cuenta también debe formar parte del grupo de administradores local en cada máquina virtual para crear el clúster.
  • La cuenta de usuario de dominio que controla SQL Server.

Crear clúster

Una vez que se han registrado las máquinas virtuales con SQL Server con la extensión Agente de IaaS de SQL, puede unirlas a SqlVirtualMachineGroups. Este recurso define los metadatos del clúster de conmutación por error de Windows. Los metadatos incluyen la versión, la edición, el nombre de dominio completo, las cuentas de Active Directory para administrar tanto el clúster como SQL Server y la cuenta de almacenamiento como testigo en la nube.

La adición de las VM con SQL Server al grupo de recursos SqlVirtualMachineGroups arranca el servicio de clúster de conmutación por error de Windows para crear el clúster y luego une las máquinas virtuales con SQL Server al clúster. Este paso se automatiza con la plantilla de inicio rápido 101-sql-vm-ag-setup. Puede implementarlo siguiendo estos pasos:

  1. Vaya a la plantilla de inicio rápido sql-vm-ag-setup. Después, seleccione Implementar en Azure para abrir la plantilla de inicio rápido en Azure Portal.

  2. Rellene los campos obligatorios para configurar los metadatos del clúster de conmutación por error de Windows. Puede dejar los campos opcionales en blanco.

    En la tabla siguiente se muestran los valores necesarios para la plantilla:

    Campo Value
    Suscripción La suscripción donde se encuentran sus máquinas virtuales con SQL Server.
    Grupos de recursos El grupo de recursos donde residen sus máquinas virtuales con SQL Server.
    Failover Cluster Name (Nombre del clúster de conmutación por error) El nombre que desea para el nuevo clúster de conmutación por error de Windows.
    Existing Vm List (Lista de máquinas virtuales existentes) Las máquinas virtuales con SQL Server que quiere que participen en el grupo de disponibilidad y que, por lo tanto, formen parte de este nuevo clúster. Separe estos valores con una coma y un espacio (por ejemplo: SQLVM1, SQLVM2).
    SQL Server Version (Versión de SQL Server) La versión de SQL Server de las máquinas virtuales con SQL Server. Selecciónela en la lista desplegable. Actualmente, solo se admiten imágenes de SQL Server 2016 y SQL Server 2017.
    Existing Fully Qualified Domain Name (Nombre de dominio completo existente) El FQDN existente del dominio en el que residen sus máquinas virtuales con SQL Server.
    Existing Domain Account (Cuenta de dominio existente) Una cuenta de usuario de dominio existente que tenga el permiso Create Computer Object en el dominio cuando el CNO se crea durante la implementación de la plantilla. Por ejemplo, una cuenta de administrador de dominio normalmente tiene permisos suficientes (como account@domain.com). Esta cuenta también debe formar parte del grupo de administradores local en cada máquina virtual para crear el clúster.
    Domain Account Password (Contraseña de la cuenta de dominio) La contraseña de la cuenta de usuario de dominio mencionada anteriormente.
    Existing Sql Service Account (Cuenta del servicio SQL existente) La cuenta de usuario de dominio que controla el servicio SQL Server durante la implementación del grupo de disponibilidad (p. ej.: account@domain.com).
    Sql Service Password (Contraseña del servicio SQL) La contraseña usada por la cuenta de usuario de dominio que controla SQL Server.
    Cloud Witness Name (Nombre del testigo en la nube) Se trata de una nueva cuenta de almacenamiento de Azure que se creará y usará para el testigo en la nube. Este nombre se puede modificar.
    _artifacts Location (Ubicación de _artefactos) Este campo se configura de forma predeterminada y no debe modificarse.
    _artifacts Location SaS Token (Token de SaS de ubicación de _artefactos) Este campo se deja en blanco intencionadamente.
  3. Si acepta los términos y condiciones, active la casilla Acepto los términos y condiciones indicados anteriormente. Después, seleccione Comprar para finalizar la implementación de la plantilla de inicio rápido.

  4. Para supervisar la implementación, seleccione la implementación en el icono de la campana Notificaciones del banner de navegación superior o vaya a Grupo de recursos en Azure Portal. Seleccione Implementaciones en Configuración y elija la implementación Microsoft.Template.

Nota:

Las credenciales proporcionadas durante la implementación de la plantilla se almacenan solo mientras dure dicha implementación. Una vez finalizada la implementación, se quitan esas contraseñas. Se le pedirá que las proporcione de nuevo si agrega más máquinas virtuales con SQL Server al clúster.

Configuración de un cuórum

Aunque el testigo de disco es la opción de cuórum más resistente, requiere un disco compartido de Azure que impone algunas limitaciones al grupo de disponibilidad. Por lo tanto, el testigo en la nube es la solución de cuórum recomendada para los clústeres que hospedan grupos de disponibilidad de SQL Server en VM de Azure.

Si tiene un número par de votos en el clúster, configure la solución de cuórum que mejor se adapte a sus necesidades empresariales. Para más información, consulte Cuórum con VM SQL Server.

Validar el clúster

Para que un clúster de conmutación por error sea compatible con Microsoft, debe pasar la validación del clúster. Conéctese a la máquina virtual mediante el método que prefiera, por ejemplo, Protocolo de escritorio remoto (RDP), y compruebe que el clúster pasa la validación antes de continuar. Si no lo hace, el clúster queda en un estado no admitido.

Puede validar el clúster mediante el Administrador de clústeres de conmutación por error (FCM) o el siguiente comando de PowerShell:

Test-Cluster –Node ("<node1>","<node2>") –Include "Inventory", "Network", "System Configuration"

Crear grupo de disponibilidad

Cree el grupo de disponibilidad manualmente del modo habitual, ya sea mediante SQL Server Management Studio, PowerShell o Transact-SQL.

Importante

No cree un cliente de escucha en este momento porque lo hace automáticamente la plantilla de inicio rápido 101-sql-vm-aglistener-setup en el paso 4.

Creación de un equilibrador de carga

Nota:

Las implementaciones del grupo de disponibilidad en varias subredes no requieren un equilibrador de carga. En un entorno de una sola subred, los clientes de SQL Server 2019 CU8 y versiones posteriores en Windows 2016 y versiones posteriores pueden reemplazar el cliente de escucha de nombre de red virtual (VNN) tradicional y Azure Load Balancer con un cliente de escucha de nombre de red distribuida (DNN). Si quiere usar un DNN, omita los pasos del tutorial que configuren Azure Load Balancer para el grupo de disponibilidad.

El cliente de escucha de grupo de disponibilidad Always On requiere una instancia interna de Azure Load Balancer. El equilibrador de carga interno proporciona una dirección IP "flotante" para la escucha de grupo de disponibilidad, que permite conmutar por error y volver a conectarse de manera más rápida. Si las máquinas virtuales con SQL Server de un grupo de disponibilidad forman parte del mismo conjunto de disponibilidad, puede usar un equilibrador de carga básico. De lo contrario, debe usar uno estándar.

Importante

El equilibrador de carga interno debe estar en la misma red virtual que las instancias de máquina virtual con SQL Server.

Solo tiene que crear el equilibrador de carga interno. En el paso 4, la plantilla de inicio rápido 101-sql-vm-aglistener-setup controla el resto de la configuración (por ejemplo, el grupo de back-end, el sondeo de estado y las reglas de equilibrio de carga).

  1. En el Portal de Azure, abra el grupo de recursos que contiene las máquinas virtuales de SQL Server.

  2. En el grupo de recursos, seleccione Agregar.

  3. Busque el equilibrador de carga. En los resultados de la búsqueda, seleccione Load Balancer, publicado por Microsoft.

  4. En el panel Equilibrador de carga, seleccione Crear.

  5. En el cuadro de diálogo Crear equilibrador de carga, configure el equilibrador de carga tal y como se explica a continuación:

    Configuración Value
    Nombre Escriba un nombre de texto que represente el equilibrador de carga. Por ejemplo, sqlLB.
    Tipo Internas: en la mayoría de las implementaciones se usa un equilibrador de carga interno que permite que las aplicaciones dentro de la misma red virtual se conecten al grupo de disponibilidad.
    Externo: permite que las aplicaciones se conecten al grupo de disponibilidad a través de una conexión a Internet pública.
    Red virtual Seleccione la red virtual en la que se encuentran las instancias de SQL Server.
    Subred Seleccione la subred en la que se encuentran las instancias de SQL Server.
    Asignación de dirección IP Estática
    Dirección IP privada Especifique una dirección IP disponible de la subred.
    Suscripción Si tiene varias suscripciones, puede aparecer este campo. Seleccione la suscripción que quiere asociar con este recurso. Normalmente, será la misma suscripción que se utiliza con todos los recursos del grupo de disponibilidad.
    Grupos de recursos Seleccione el grupo de recursos en el que se encuentran las instancias de SQL Server.
    Ubicación Seleccione la ubicación de Azure en la que se encuentran las instancias de SQL Server.
  6. Seleccione Crear.

Importante

El recurso de IP pública de cada máquina virtual con SQL Server debe tener una SKU estándar para que sea compatible con el equilibrador de carga estándar. Para determinar la SKU del recurso de IP pública de la máquina virtual, vaya a Grupo de recursos, seleccione su recurso Dirección IP pública para la máquina virtual con SQL Server y busque el valor que aparece debajo de SKU en el panel Información general.

Eliminar el agente de escucha

Cree la escucha de grupo de disponibilidad y configure el equilibrador de carga interno automáticamente mediante la plantilla de inicio rápido 101-sql-vm-aglistener-setup. La plantilla aprovisiona el recurso Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/AvailabilityGroupListener. La plantilla de inicio rápido 101-sql-vm-aglistener-setup realiza las siguientes acciones mediante la extensión Agente de IaaS de SQL:

  • Crea un nuevo recurso IP de front-end (según el valor de dirección IP proporcionado durante la implementación) para el agente de escucha.
  • Ajusta la configuración de red del clúster y el equilibrador de carga interno.
  • Configura el grupo de back-end del equilibrador de carga interno, el sondeo de estado y las reglas de equilibrio de carga.
  • Crea la escucha de grupo de disponibilidad con el nombre y la dirección IP especificados.

Nota:

Puede usar la plantilla 101-sql-vm-aglistener-setup solo si se creó el clúster de conmutación por error de Windows con la plantilla 101-sql-vm-ag-setup.

Para configurar el equilibrador de carga interno y crear la escucha de grupo de disponibilidad, haga lo siguiente:

  1. Vaya a la plantilla de inicio rápido sql-vm-aglistener-setup y seleccione Implementar en Azure para iniciar la plantilla de inicio rápido en Azure Portal.

  2. Rellene los campos obligatorios para configurar el equilibrador de carga interno y crear la escucha de grupo de disponibilidad. Puede dejar los campos opcionales en blanco.

    En la tabla siguiente se muestran los valores necesarios para la plantilla:

    Campo Value
    Grupos de recursos El grupo de recursos donde residen sus máquinas virtuales con SQL Server y el grupo de disponibilidad.
    Failover Cluster Name (Nombre del clúster de conmutación por error) El nombre del clúster al que se han unido sus máquinas virtuales con SQL Server.
    Existing Sql Availability Group (Grupo de disponibilidad de SQL existente) El nombre del grupo de disponibilidad del que forman parte las máquinas virtuales con SQL Server.
    Existing Vm List (Lista de máquinas virtuales existentes) Los nombres de las máquinas virtuales con SQL Server que forman parte del grupo de disponibilidad mencionado anteriormente. Separe los nombres con una coma y un espacio (por ejemplo: SQLVM1, SQLVM2).
    Agente de escucha El nombre DNS que desea asignar al cliente de escucha. De forma predeterminada, esta plantilla especifica el nombre "aglistener", pero puede cambiarse. El nombre no debe superar los 15 caracteres.
    Listener Port (Puerto de escucha) El puerto que quiere que use el cliente de escucha. Normalmente, este puerto debe ser el valor predeterminado 1433. Este es el número de puerto que especifica la plantilla. Sin embargo, si el puerto predeterminado ha cambiado, el puerto de escucha debe usar en su lugar ese valor.
    IP de agente de escucha: La dirección IP que desea que use el cliente de escucha. Esta dirección se creará durante la implementación de la plantilla, por lo que debe proporcionar una que no esté en uso.
    Existing Subnet (Subred existente) El nombre de la subred interna de sus máquinas virtuales con SQL Server (p. ej.: el predeterminado). Puede determinar este valor yendo a Grupo de recursos, seleccionando la red virtual, eligiendo Subredes en el panel Configuración y copiando el valor en Nombre.
    Existing Internal Load Balancer (Load Balancer interno existente) El nombre del equilibrador de carga interno que creó en el paso 3.
    Puerto de sondeo El puerto de sondeo que desea que utilice el equilibrador de carga interno. La plantilla usa 59999 de forma predeterminada, pero este valor se puede cambiar.
  3. Si acepta los términos y condiciones, active la casilla Acepto los términos y condiciones indicados anteriormente. Seleccione Comprar para finalizar la implementación de la plantilla de inicio rápido.

  4. Para supervisar la implementación, seleccione la implementación en el icono de la campana Notificaciones del banner de navegación superior o vaya a Grupo de recursos en Azure Portal. Seleccione Implementaciones en Configuración y elija la implementación Microsoft.Template.

Nota:

Si la implementación genera errores a mitad del proceso, deberá quitar el cliente de escucha recién creado de forma manual mediante PowerShell antes de volver a implementar la plantilla de inicio rápido 101-sql-vm-aglistener-setup.

Quitar el agente de escucha

Si posteriormente necesita quitar la escucha de grupo de disponibilidad configurada por la plantilla, debe pasar por la extensión Agente de IaaS de SQL. Puesto que el cliente de escucha se registra mediante la extensión Agente de IaaS de SQL, no basta con eliminarlo mediante SQL Server Management Studio.

El mejor método consiste en eliminarlo a través de la extensión Agente de IaaS de SQL mediante el siguiente fragmento de código en PowerShell. Al hacerlo, se quitan los metadatos del cliente de escucha de grupo de disponibilidad de la extensión Agente de IaaS de SQL. También elimina físicamente el cliente de escucha de grupo de disponibilidad.

# Remove the availability group listener
# example: Remove-AzResource -ResourceId '/subscriptions/a1a11a11-1a1a-aa11-aa11-1aa1a11aa11a/resourceGroups/SQLAG-RG/providers/Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/Cluster/availabilitygrouplisteners/aglistener' -Force
Remove-AzResource -ResourceId '/subscriptions/<SubscriptionID>/resourceGroups/<resource-group-name>/providers/Microsoft.SqlVirtualMachine/SqlVirtualMachineGroups/<cluster-name>/availabilitygrouplisteners/<listener-name>' -Force

Errores comunes

En esta sección se describen algunos problemas conocidos y sus posibles soluciones.

La escucha de grupo de disponibilidad del grupo de disponibilidad "<AG-Name>" ya existe El grupo de disponibilidad seleccionado que se usa en la plantilla de inicio rápido de Azure para la escucha de grupo de disponibilidad ya contiene un cliente de escucha. Se encuentra físicamente dentro del grupo de disponibilidad, o bien sus metadatos permanecen en la extensión Agente de IaaS de SQL. Quite la escucha mediante PowerShell antes de volver a implementar la plantilla de inicio rápido 101-sql-vm-aglistener-setup.

La conexión solo funciona desde la réplica principal Este comportamiento puede deberse a una implementación incorrecta de la plantilla 101-sql-vm-aglistener-setup que deja la configuración del equilibrador de carga interno con un estado incoherente. Compruebe que el grupo de servidores back-end muestra el conjunto de disponibilidad y que existen reglas para el sondeo de estado y el equilibrio de carga. Si falta algo, la configuración del equilibrador de carga interno tendrá un estado incoherente.

Para resolver este comportamiento, quite el cliente de escucha mediante PowerShell, elimine el equilibrador de carga interno mediante Azure Portal y comience de nuevo en el paso 3.

BadRequest: solo se puede actualizar la lista de máquinas virtuales de SQL Este error puede producirse al implementar la plantilla 101-sql-vm-aglistener-setup si la escucha se eliminó mediante SQL Server Management Studio (SSMS), pero no se ha eliminado de la extensión Agente de IaaS de SQL. Al eliminar el cliente de escucha a través de SSMS, no se quitan los metadatos del cliente de escucha de la extensión Agente de IaaS de SQL. El cliente de escucha debe eliminarse del proveedor de recursos a través de PowerShell.

La cuenta de dominio no existe Este error puede tener dos causas. O bien la cuenta de dominio especificada no existe o faltan los datos del nombre principal de usuario (UPN). La plantilla 101-sql-vm-ag-setup espera una cuenta de dominio en formato UPN (es decir, user@domain.com), pero es posible que falte en algunas cuentas de dominio. Esto suele suceder cuando un usuario local se ha migrado para que sea la primera cuenta de administrador de dominio cuando el servidor se promovió a un controlador de dominio, o bien cuando se creó un usuario a través de PowerShell.

Compruebe que la cuenta existe. Si es así, puede que se encuentre en la segunda situación. Para resolver este problema, haga lo siguiente:

  1. En el controlador de dominio, abra la ventana Usuarios y equipos de Active Directory desde la opción Herramientas del Administrador del servidor.

  2. Vaya a la cuenta seleccionando Usuarios en el panel izquierdo.

  3. Haga clic con el botón derecho en la cuenta y seleccione Propiedades.

  4. Seleccione la pestaña Cuenta. Si el cuadro Nombre de inicio de sesión de usuario está en blanco, esta es la causa del error.

    Blank user account indicates missing UPN

  5. Rellene el cuadro Nombre de inicio de sesión de usuario para que coincida con el nombre del usuario y seleccione el dominio adecuado en la lista desplegable.

  6. Seleccione Aplicar para guardar los cambios y cierre el cuadro de diálogo seleccionando Aceptar.

Una vez realizados estos cambios, trate de implementar la plantilla de inicio rápido de Azure una vez más.

Pasos siguientes

Para obtener más información, consulte: