Tutorial: Configuración de una escucha de grupo de disponibilidad en máquinas virtuales Linux

Se aplica a:SQL Server en VM de Azure

En este tutorial se explican los pasos para crear una escucha de grupo de disponibilidad para los servidores SQL en máquinas virtuales Linux en Azure, para Red Hat Enterprise Linux (RHEL), SUSE Linux Enterprise Server (SLES) y Ubuntu.

Aprenderá a:

  • Crear un equilibrador de carga en Azure Portal
  • Configurar el grupo de back-end para el equilibrador de carga
  • Crear un sondeo para el equilibrador de carga
  • Configuración de las reglas de equilibrio de carga
  • Crear el recurso del equilibrador de carga en el clúster
  • Cree la escucha de grupo de disponibilidad
  • Probar la conexión a la escucha
  • Probar una conmutación por error

Nota:

Comunicación sin prejuicios

Este artículo contiene referencias al término esclavo, que Microsoft considera ofensivo cuando se usa en este contexto. El término aparece en este artículo porque actualmente aparece en el software. Cuando se quite el término del software, se quitará también del artículo.

Requisito previo

Creación del equilibrador de carga en Azure Portal

Las instrucciones siguientes te guiarán por los pasos del 1 al 4 de la sección Creación y configuración del equilibrador de carga en Azure Portal del artículo Configuración de una escucha de grupo de disponibilidad y equilibrador de carga (SQL Server en VM Azure).

Creación del equilibrador 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 y, a continuación, en los resultados de la búsqueda, seleccione el equilibrador de carga 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 Nombre de texto que representa el equilibrador de carga; Por ejemplo, sqlLB.
    Tipo Interno
    Red virtual La red virtual predeterminada que se creó debe denominarse VM1VNET.
    Subred Seleccione la subred en la que se encuentran las instancias de SQL Server. El valor predeterminado debe ser VM1Subnet.
    Asignación de dirección IP Estática
    Dirección IP privada Use la dirección IP virtualip que se creó en el clúster.
    Suscripción Use la suscripción que se usó para el grupo de recursos.
    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.

Configuración del grupo back-end

En Azure, el grupo de direcciones de back-end se denomina grupo de back-end. En este caso, el grupo de back-end contiene las direcciones de las tres instancias de SQL Server del grupo de disponibilidad.

  1. En el grupo de recursos, seleccione el equilibrador de carga que ha creado.

  2. En Configuración, seleccione Grupos de back-end.

  3. En Grupos de back-end, seleccione Agregar para crear un grupo de direcciones de back-end.

  4. En Agregar grupo back-end en Nombre, especifique un nombre para el grupo de back-end.

  5. En Asociado a, seleccione Máquina virtual.

  6. Seleccione cada una de las máquinas virtuales del entorno y asocie la dirección IP adecuada a cada selección.

    Screenshot showing how to add a backend pool.

  7. Seleccione Agregar.

Elaboración de un sondeo

Este sondeo establece el modo en que Azure va a comprobar cuál de las instancias de SQL Server es el propietario actual del agente de escucha del grupo de disponibilidad. Azure analiza el servició con arreglo a la dirección IP de un puerto que estableció al crear el sondeo.

  1. En el panel Configuración del equilibrador de carga, seleccione Sondeos de estado.

  2. En el panel Sondeos de estado , seleccione Agregar.

  3. Configure el sondeo en el panel Agregar sondeo . Utilice los valores siguientes para configurar el sondeo.

    Configuración Value
    Nombre Nombre de texto que representa el sondeo. Por ejemplo, SQLAlwaysOnEndPointProbe.
    Protocolo TCP
    Puerto Puede usar cualquier puerto que esté disponible. Por ejemplo, 59999.
    Intervalo 5
    Umbral incorrecto 2
  4. Seleccione Aceptar.

  5. Inicie sesión en todas las máquinas virtuales y abra el puerto de sondeo con los siguientes comandos:

    sudo firewall-cmd --zone=public --add-port=59999/tcp --permanent
    sudo firewall-cmd --reload
    

Azure crea el sondeo y, a continuación, lo usa para comprobar qué instancia de SQL Server tiene el agente de escucha del grupo de disponibilidad.

Establecimiento de las reglas de equilibrio de carga

Las reglas de equilibrio de carga determinan cómo el equilibrador de carga enruta el tráfico a las instancias de SQL Server. En este equilibrador de carga, habilite Direct Server Return, ya que solo una de las tres instancias de SQL Server puede ser el propietario del recurso de la escucha de grupo de disponibilidad simultáneamente.

  1. En el panel Configuración del equilibrador de carga, seleccione Reglas de equilibrio de carga.

  2. En el panel Reglas de equilibrio de carga, seleccione Agregar.

  3. Utilice el panel Add load balancing rules (Agregar reglas de equilibrio de carga) para configurar la regla de equilibrio de carga. Use la configuración siguiente:

    Configuración Value
    Nombre Nombre de texto que representa las reglas de equilibrio de carga. Por ejemplo, SQLAlwaysOnEndPointListener.
    Protocolo TCP
    Puerto 1433
    Puerto back-end 1433. Este valor se ignorará porque la regla usa IP flotante (Direct Server Return).
    Sondeo Utilice el nombre del sondeo que creó para este equilibrador de carga.
    Persistencia de la sesión None
    Tiempo de espera de inactividad (minutos) 4
    IP flotante (Direct Server Return) Habilitado

    Screenshot showing how to add a load balancing rule.

  4. Seleccione Aceptar.

  5. Azure configura la regla de equilibrio de carga. Ahora, el equilibrador de carga está configurado para enrutar el tráfico a la instancia de SQL Server que hospeda el agente de escucha del grupo de disponibilidad.

En este punto, el grupo de recursos dispone de un equilibrador de carga que se conecta con todas las máquinas de SQL Server. El equilibrador de carga también contiene una dirección IP de la escucha de grupo de disponibilidad AlwaysOn de SQL Server, por lo que cualquier máquina puede responder a las solicitudes de los grupos de disponibilidad.

Creación del recurso de agente de escucha de grupo de disponibilidad

Antes de crear un recurso de equilibrador de carga en Pacemaker, cree primero el recurso del agente de escucha:

sudo crm configure primitive virtualip \
ocf:heartbeat:IPaddr2 \
params ip=x.y.z.a

En el ejemplo anterior, x.y.z.a hace referencia a la dirección IP de front-end del equilibrador de carga.

Creación del recurso del equilibrador de carga en el clúster

Siga las instrucciones de la distribución que esté configurando.

  1. Inicie sesión en la máquina virtual principal. Tenemos que crear el recurso para habilitar el puerto de sondeo del equilibrador de carga de Azure (en nuestro ejemplo se usa 59999). Ejecute el siguiente comando:

    sudo pcs resource create azure_load_balancer azure-lb port=59999
    
  2. Cree un grupo que contenga los recursos virtualip y azure_load_balancer:

    sudo pcs resource group add virtualip_group azure_load_balancer virtualip
    

Incorporación de restricciones

  1. Tiene que configurarse una restricción de ubicación para asegurarse de que el recurso de grupo de disponibilidad y la dirección IP del equilibrador de carga de Azure se están ejecutando en el mismo nodo. Ejecute el siguiente comando:

    sudo pcs constraint colocation add azure_load_balancer ag_cluster-master INFINITY with-rsc-role=Master
    
  2. Cree una restricción de orden para asegurarse de que el recurso de grupo de disponibilidad está en funcionamiento antes que la dirección IP del equilibrador de carga de Azure. Aunque la restricción de ubicación implica una restricción de orden, esto la aplica.

    sudo pcs constraint order promote ag_cluster-master then start azure_load_balancer
    
  3. Para comprobar las restricciones, ejecute el siguiente comando:

    sudo pcs constraint list --full
    

    Debería ver la siguiente salida:

    Location Constraints:
    Ordering Constraints:
      promote ag_cluster-master then start virtualip (kind:Mandatory) (id:order-ag_cluster-master-virtualip-mandatory)
      promote ag_cluster-master then start azure_load_balancer (kind:Mandatory) (id:order-ag_cluster-master-azure_load_balancer-mandatory)
    Colocation Constraints:
      virtualip with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-virtualip-ag_cluster-master-INFINITY)
      azure_load_balancer with ag_cluster-master (score:INFINITY) (with-rsc-role:Master) (id:colocation-azure_load_balancer-ag_cluster-master-INFINITY)
    Ticket Constraints:
    

Creación del agente de escucha de grupo de disponibilidad

  1. En el nodo principal, ejecute el siguiente comando en sqlcmd o SSMS. Reemplace la dirección IP que se usa a continuación con la dirección IP virtualip.

    • SQL Server 2022 y versiones posteriores:

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '0.0.0.0'
          )),
          PORT = 1433
      );
      GO
      
    • SQL Server 2017 y SQL Server 2019:

      ALTER AVAILABILITY GROUP [ag1]
      ADD LISTENER 'ag1-listener' (
          WITH IP((
              '10.0.0.7',
              '255.255.255.255'
          )),
          PORT = 1433
      );
      GO
      
  2. Inicie sesión en cada nodo de la máquina virtual. Use el siguiente comando para abrir el archivo de hosts y configurar la resolución de nombres de host de ag1-listener en cada máquina.

    sudo vi /etc/hosts
    

    En el editor de vi, escriba i para insertar texto y, en una línea en blanco, agregue la dirección IP de ag1-listener. A continuación, agregue ag1-listener después de un espacio junto a la dirección IP.

    <IP of ag1-listener> ag1-listener
    

    Para salir del editor de vi, primero presione la tecla Esc y, a continuación, escriba el comando :wq para escribir en el archivo y salir. Haga esto en cada nodo.

Prueba de la escucha y de una conmutación por error

En esta sección se describe el inicio de sesión en una escucha de grupo de disponibilidad de SQL Server y la comprobación de una conmutación por error.

Prueba del inicio de sesión en SQL Server mediante la escucha de grupo de disponibilidad

  1. Use sqlcmd para iniciar sesión en el nodo principal de SQL Server mediante el nombre de la escucha de grupo de disponibilidad:

    • Use un inicio de sesión que se haya creado previamente y reemplace <YourPassword> por la contraseña correcta. En el ejemplo siguiente se usa el inicio de sesión sa que se creó con la instancia de SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  2. Compruebe el nombre del servidor al que está conectado. Ejecute el comando siguiente en sqlcmd:

    SELECT @@SERVERNAME;
    

    El resultado debería mostrar el nodo principal actual. Este debe ser VM1 si nunca ha probado una conmutación por error.

    Salga de la sesión de SQL Server escribiendo el comando exit.

Prueba de una conmutación por error

  1. Ejecute el siguiente comando para realizar manualmente la conmutación por error de la réplica principal en <VM2> u otra réplica. Reemplace <VM2> por el valor del nombre del servidor.

    sudo pcs resource move ag_cluster-master <VM2> --master
    
  2. Si comprueba las restricciones, verá que se ha agregado otra restricción debido a la conmutación por error manual:

    sudo pcs constraint list --full
    

    Verá que se ha agregado una restricción con el identificador cli-prefer-ag_cluster-master.

  3. Para quitar la restricción con el identificador cli-prefer-ag_cluster-master, ejecute el comando siguiente:

    sudo pcs constraint remove cli-prefer-ag_cluster-master
    
  4. Compruebe los recursos del clúster mediante el comando sudo pcs resource y observará que la instancia principal es ahora <VM2>.

    Nota

    Este artículo contiene referencias al término esclavo, un término que Microsoft ya no usa. Cuando se elimine el término del software, se eliminará también de este artículo.

    [<username>@<VM1> ~]$ sudo pcs resource
    Master/Slave Set: ag_cluster-master [ag_cluster]
        Masters: [ <VM2> ]
        Slaves: [ <VM1> <VM3> ]
    Resource Group: virtualip_group
        azure_load_balancer        (ocf::heartbeat:azure-lb):      Started <VM2>
        virtualip  (ocf::heartbeat:IPaddr2):       Started <VM2>
    
  5. Use sqlcmd para iniciar sesión en la réplica principal mediante el nombre de la escucha:

    • Use un inicio de sesión que se haya creado previamente y reemplace <YourPassword> por la contraseña correcta. En el ejemplo siguiente se usa el inicio de sesión sa que se creó con la instancia de SQL Server.
    sqlcmd -S ag1-listener -U sa -P <YourPassword>
    
  6. Compruebe el servidor con el que está conectado. Ejecute el comando siguiente en sqlcmd:

    SELECT @@SERVERNAME;
    

    Verá que ahora está conectado a la máquina virtual a la que ha conmutado por error.

Paso siguiente

Para utilizar una escucha de grupo de disponibilidad para las instancias de SQL Server, necesitará crear y configurar un equilibrador de carga.