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
En el Portal de Azure, abra el grupo de recursos que contiene las máquinas virtuales de SQL Server.
En el grupo de recursos, seleccione Agregar.
Busque el equilibrador de carga y, a continuación, en los resultados de la búsqueda, seleccione el equilibrador de carga publicado por Microsoft.
En el panel Equilibrador de carga, seleccione Crear.
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.
En el grupo de recursos, seleccione el equilibrador de carga que ha creado.
En Configuración, seleccione Grupos de back-end.
En Grupos de back-end, seleccione Agregar para crear un grupo de direcciones de back-end.
En Agregar grupo back-end en Nombre, especifique un nombre para el grupo de back-end.
En Asociado a, seleccione Máquina virtual.
Seleccione cada una de las máquinas virtuales del entorno y asocie la dirección IP adecuada a cada selección.
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.
En el panel Configuración del equilibrador de carga, seleccione Sondeos de estado.
En el panel Sondeos de estado , seleccione Agregar.
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
Seleccione Aceptar.
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.
En el panel Configuración del equilibrador de carga, seleccione Reglas de equilibrio de carga.
En el panel Reglas de equilibrio de carga, seleccione Agregar.
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 Seleccione Aceptar.
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.
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
Cree un grupo que contenga los recursos
virtualip
yazure_load_balancer
:sudo pcs resource group add virtualip_group azure_load_balancer virtualip
Incorporación de restricciones
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
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
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
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
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 deag1-listener
. A continuación, agregueag1-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
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ónsa
que se creó con la instancia de SQL Server.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- Use un inicio de sesión que se haya creado previamente y reemplace
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
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
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
.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
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>
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ónsa
que se creó con la instancia de SQL Server.
sqlcmd -S ag1-listener -U sa -P <YourPassword>
- Use un inicio de sesión que se haya creado previamente y reemplace
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.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de