Saltar al contenido
Personaje de Palentinoinfograph/ palentino.es
INFOGRAPHVolver a la colección
PHP · GIF animado1.920 × 2.760 pxNuevo

Balanceo de carga y alta disponibilidad con MySQL: explicación paso a paso

100 %
LECTURA NÍTIDAAbrir GIF original ↗1920 × 2760 px · el aumento no añade detalle al archivo
Balanceo de carga y alta disponibilidad con MySQL: explicación paso a paso
Auto adapta la lectura · + − zoom · 0 ver completa · Esc salirVista normal

PARA ENTENDER EL ESQUEMA

Sobre esta infografía

Cuando muchas personas entran a una web, cada una consulta información, pulsa botones o confirma compras. Por detrás se coordinan aplicaciones, conexiones y servidores con responsabilidades distintas.

La animación que acompaña esta entrada muestra esa coordinación mediante una arquitectura concreta: HAProxy distribuye las peticiones web, MySQL Router encamina las conexiones SQL e InnoDB Cluster mantiene los datos replicados y permite elegir otro principal si falla el actual.

Vamos a seguir tres situaciones: registrar un pedido, consultar un catálogo y continuar el servicio después de la caída del servidor principal.

1. Las piezas de la arquitectura

El ejemplo utiliza tres instancias de aplicación, cada una con su pool de conexiones y su Router local, y tres servidores MySQL dentro del mismo clúster.

Elemento

Función en la animación

Navegador

Envía peticiones HTTPS y recibe las respuestas de la web.

HAProxy

Selecciona una aplicación disponible: APP-A, APP-B o APP-C.

Aplicaciones

Validan la operación, ejecutan la lógica del negocio y solicitan acceso a los datos.

Pool de conexiones

Presta y reutiliza conexiones SQL dentro de cada aplicación.

MySQL Router

Encauza las conexiones hacia el servidor adecuado según la ruta y el estado del clúster.

MySQL A, B y C

Almacenan copias de los datos y participan en Group Replication.

InnoDB Cluster integra MySQL Server con Group Replication, la administración mediante MySQL Shell y el acceso mediante MySQL Router. En esta arquitectura se utiliza el modo single-primary: A es inicialmente el principal y B y C son secundarios.

Los Router dibujados junto a las aplicaciones representan procesos de software. Pueden ejecutarse en el mismo servidor que su aplicación, una disposición habitual que evita concentrar todas las conexiones en un único Router central.

2. Dos decisiones distintas: aplicación y servidor de datos

Al llegar una petición, HAProxy decide qué aplicación la atiende.

Puede utilizar, por ejemplo, una estrategia de reparto por turnos —round robin— junto con comprobaciones de salud. Los servidores que no superan los controles salen de la rotación según los umbrales configurados.

Después, cuando la aplicación necesita la base de datos, MySQL Router determina el destino de la conexión SQL.

La animación utiliza estas rutas del protocolo clásico de MySQL:

Tramo

Puerto del ejemplo

Uso

Navegador → entrada web

443

HTTPS.

Aplicación → Router local

6446

Ruta de lectura y escritura hacia el principal.

Aplicación → Router local

6447

Ruta de lectura hacia los secundarios, según la configuración.

Router → servidor MySQL

3306

Acceso al servidor de base de datos seleccionado.

Los puertos son configurables. 6446 y 6447 son entradas del Router; 3306 corresponde al servidor MySQL en este ejemplo.

En el dibujo, la entrada pública es HTTPS. Las aplicaciones, sus Router y el clúster pertenecen al entorno privado. El navegador se comunica con la aplicación web; esta realiza el acceso SQL con sus propias conexiones y credenciales.

Aquí se representa el enrutamiento básico por conexión. Una conexión destinada a B mantiene ese destino mientras se utiliza. La aplicación escoge la ruta de lectura o escritura; este esquema no representa un análisis automático de cada sentencia para enviarla a otro servidor.

3. Cómo interpretar las flechas y las pausas

La animación contiene 21 etapas, agrupadas en tres escenas. El color diferencia peticiones y control, escrituras, replicación, respuestas y fallos.

Unas etapas representan comunicación por la red y otras representan trabajo local. Obtener una conexión del pool o ejecutar una transacción dentro de InnoDB son operaciones distintas de enviar paquetes entre máquinas.

Las flechas verdes representan la distribución y confirmación lógica de la replicación. El protocolo real incluye más mensajes de coordinación de los que resulta útil dibujar.

Las pausas permiten leer los globos explicativos. No representan el tiempo real de una compra ni el tiempo de recuperación ante un fallo.

4. Primera escena: registrar un pedido, en diez pasos

Paso 1. El navegador envía la petición

El usuario confirma una compra. Su navegador envía una petición HTTPS a la entrada pública de la web.

Todavía no ha enviado una consulta SQL ni conoce qué servidor MySQL guardará el pedido.

Paso 2. HAProxy selecciona APP-A

El balanceador entrega esta petición a APP-A. APP-B y APP-C quedan disponibles para otras peticiones.

Durante este recorrido seguimos una sola operación. La respuesta la prepara la misma instancia que la está atendiendo.

Paso 3. APP-A pide una conexión al pool

La aplicación valida la solicitud y solicita una conexión de escritura. El pool puede prestarle una ya abierta o crear una si su configuración lo permite.

Mientras está prestada, la conexión se utiliza de forma exclusiva para ese trabajo. Al terminar, vuelve al pool y puede atender otra operación.

Si todas están ocupadas y se ha alcanzado el máximo, la soli

2 visitas
Valora este esquema—/5 · 0 votos
Pulsa una estrella para votar

Puedes cambiar tu elección desde el pie de cualquier página. Las opciones adicionales empiezan desactivadas.