¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Repartir el tráfico entre servidores (proxies, balanceadores)

La lección completa está aquí para leer. Crea una cuenta gratuita para ejecutar sus comandos en un laboratorio y hacer sus cuestionarios y tareas.

Lección de 45 minSin comandos

Las rebajas de enero

Una tienda de ropa de Sevilla abre las rebajas a las nueve en punto. En un minuto entran veinte mil personas. Un solo servidor no puede con todas.

Por eso la tienda tiene cuatro servidores iguales y una pieza delante que reparte. Los clientes no lo saben: ven una sola web con un solo nombre. En esta lección ves qué piezas se ponen en medio y para qué.

Al final de esta lección

Nota

Puedo decir qué hacen un proxy, un proxy inverso y un balanceador de carga.

Palabras clave

PalabraQué significa
Intermediariouna máquina que recibe un mensaje y lo pasa a otra
Proxyun intermediario que habla en nombre de los clientes
Proxy inversoun intermediario que habla en nombre de los servidores
Balanceador de cargaun proxy inverso que reparte peticiones entre servidores
Comprobación de saluduna prueba periódica de que un servidor responde

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un proxy habla por los clientes

Muchas empresas no dejan que los portátiles salgan solos a internet. Todo pasa por un proxy.

El portátil le pide la web al proxy. El proxy la pide en su nombre y le pasa la respuesta. Así la empresa puede bloquear webs peligrosas y guardar un registro.

La web de destino solo ve la IP del proxy, no la del portátil.

Un proxy inverso habla por los servidores

Un proxy inverso está al otro lado, delante de los servidores. El cliente cree que habla con la web, pero habla con el proxy inverso.

Este decide a qué servidor de dentro pasa cada petición. A menudo también lleva el certificado y quita el cifrado TLS, para que los servidores no tengan que hacerlo.

nginx es un proxy inverso muy usado.

Un balanceador reparte el trabajo

Un balanceador de carga es un proxy inverso que reparte las peticiones entre varios servidores iguales.

La forma más sencilla es por turnos: uno, dos, tres, y vuelta a empezar. Otra forma es mandar cada petición al servidor con menos conexiones abiertas.

Si llega más gente, se añade otro servidor detrás. Los clientes no notan nada.

Prueba: reparte por turnos

Código: python
# Tres servidores detrás de un balanceador que reparte por turnos
servers = ["app-1", "app-2", "app-3"]

for number in range(7):
    # El resto de dividir entre 3 da 0, 1, 2, 0, 1, 2...
    chosen = servers[number % len(servers)]
    print("Petición", number + 1, "->", chosen)

# Añade "app-4" a la lista y pulsa Ejecutar.

Ejemplo: seis peticiones y tres servidores

PeticiónTurnoServidor
1primeroapp-1
2segundoapp-2
3terceroapp-3
4vuelta a empezarapp-1
5segundoapp-2
6terceroapp-3

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Comprobar la salud de cada servidor

Si un servidor se cae, el balanceador no debe mandarle más clientes. Por eso hace una comprobación de salud cada pocos segundos, por ejemplo pedir /health.

Si no responde bien, lo saca del reparto. Cuando vuelve a responder, lo vuelve a meter.

Un error 502 suele significar que el proxy inverso no pudo hablar con el servidor de detrás.

Prueba: busca los errores en el registro

Código: bash
# Un registro de acceso de un proxy inverso, con el servidor que atendió cada petición
printf "10:01 GET /carrito app-1 200\n10:01 GET /carrito app-2 200\n10:02 GET /pago app-3 502\n10:02 GET /pago app-1 200\n10:03 GET /pago app-3 502\n" > acceso.log

# ¿Qué peticiones dieron error 502?
grep " 502$" acceso.log

# Cambia 502 por 200 y pulsa Ejecutar.

Un error frecuente

Advertencia

Mucha gente cree que un error 502 significa que el proxy inverso está roto. Casi siempre el proxy funciona y es el servidor de detrás el que no responde. Mira primero qué servidor atendió la petición en el registro.

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.