pfSense: BALANCE DE CARGA

(traducción del manual de pfsense: Inbound Load Balancing)

El Balance de carga entrante es una técnica útil para soportar múltiples servidores que externamente aparece como un único servidor. Esto hace que sea posible distribuir la carga de un sitio web a través de varios servidores físicos, de una manera semi-inteligente, reconoce si un servidor se cae, etc.

1. FAILOVER

No se admite directamente, pero se puede configurar mediante el uso separado de pooles de servidores utilizados en la configuración de Virtual Servers. Por ejemplo, con una configuración de dos servidores (activo / en espera activa), se pone el servidor primario en un pool y el secundario en un segundo pool, se elige el pool del servidor principal para el Virtual Server Pool y se selecciona el segundo pool para el Fall Back Pool. No es posible hacer 3 o más niveles de conmutación automático por error.

2. CONFIGURACIÓN DEL LOAD BALANCING POOL

Se crea el pool (Services > Load Balancer, Pools). Se le da un nombre y una descripción, se selecciona Load Balance en el modo y se establece el puerto apropiado (80 para HTTP). Se escoge un tipo de monitor (se encargará del seguimiento del estatus arriba / abajo) tipo http y se introducen una a una las direcciones IPs de los servidores que servirán contenidos para el sitio.
Se debe tener en cuenta que si hay más de un servidor, estos deben estar sincronizados y sirviendo el mismo contenido. Si se utiliza un servidor de aplicaciones web que utiliza sesiones del lado del servidor, las sesiones deben ser compartidas por todos los servidores. Por ejemplo, se debe utiliza un servidor de estado de sesión, o almacenar todos los datos de la sesión en una base de datos compartida. La carga de tráfico estará equilibrada entre los servidores del pool monitoreados. Si un servidor se cae, se dejará de enviar tráfico a ese servidor que se redirigirá al activo.

3. CONFIGURACIÓN DEL VIRTUAL SERVERS

El siguiente paso es enviar el tráfico al pool. Para ello se añade un Virtual Server (Services > Load balancer, Virtual Servers). Se introduce un nombre y una descripción y la dirección IP WAN. Se puede usar la IP de la interfaz WAN o se pude configurar una IP virtual. El puerto que es el puerto TCP al que los clientes se conectan a la interfaz WAN. Este puede ser diferente del puerto utilizado por los servidores del pool para escuchar.
Se selecciona el pool creado previamente y, opcionalmente el Fall Back Pool. El Fall Back Pool puede servir el mismo contenido que el resto de los servidores del grupo (por ejemplo, en una de dos servidores de configuración en vivo / en espera activa), o puede ser un servidor que siempre devuelve un estático “Lo sentimos, este sitio no está en línea “mensaje. Si no se seleccionado un Fall Back Pool, o si el servidor no está disponible, las conexiones con el servidor virtual se caen y no serán redirigidos.

4. CONFIGURACIÓN AVANZADA

Services > Load Balancer contiene las opciones globales configuración de como relayd monitoriza y provee servicios:

  • Timeout: Tiempo de espera global en milisegundos para los controles de salud. El valor por defecto cuando se deja en blanco es de 1000 ms (1 segundo). Para los servidores con mucha carga o sensibles y ciertos tipos de controles de salud, esto puede no ser lo suficientemente.
  • Interval: Número de segundos entre los controles de salud. El valor por defecto cuando está en blanco es de 10 segundos. Al igual que el tiempo de espera.
  • Prefork: El número de procesos generados por el demonio relayd (reenvío) para manejar las peticiones. Sólo se aplica al modo de DNS, ya que es el único modo en pfSense donde relayd actúa como un proxy en lugar de un retransmisor

5. FIREWALL RULES

Se deben establecer reglas Firewall en la interfaz WAN donde está situado el Virtual Server. Si el relayd está basado en reglas NAT, estas reglas deben permitir el acceso a los puertos y direcciones del pool.

6. NOTAS ADICIONALES

Sticky connections (System > Advanced, Miscellaneous)

Por definición una sticky connection (conexiones adhesivas o pegajosas) es un tipo conexión que se establece entre un cliente y el servidor y que se mantiene por un periodo definido, es decir, la información de la sesión de usuario se cachea en la memoria del proceso de la aplicación y espera peticiones futuras del mismo visitante para redirigirle al mismo proceso. Se usa en el escenario, en el que se tiene un pool de servidores sirviendo un mismo sitio web, cuando un cliente establece una conexión con uno de los servidores para realizar para realizar una operación p. e. solicitar sus contenidos multimedia (streaming audio o vídeo), realizar operaciones transaccionales (e-commerce), para que el servicio lo realice el mismo servidor se activa esta opción. Alivia el problema de las sesiones compartidas, pero no son tan confiables como usar sesiones compartida almacenadas. El periodo de duración de la sticky connection de la configuración.

Failover and Recovery
El relayd daemon es el que se encarga de monitorizar todos los servidores de un pool (por defecto cada 10 segundos). Si detecta que alguno se cae, para inmediatamente de enviarle tráfico pero continua intentando conectarse, hasta que detecte que está nuevamente activo y vuelve a reenviarle tráfico. Si envía una petición de un cliente a un servidor caído (antes de que detecte que este está caído) lo desconectará.
Si todos los servidores del pool server se caen, pfSense redigirá el tráfico al fall back pool si este está configurado. Una vez que se reestablezca el pool server, se le volverán a enviar peticiones, aunque algunas se seguirán enviando al fall back pool por un breve periodo de tiempo, especialmente cuando las sticky connections están activas. Por ello, si el fall back pool está sirviendo los mismos contenidos que el pool server es importante que comparta contenido /sesiones con el pool server como haría un pool servers múltiple.

Lack of NAT Reflection
El servicio relayd implementa el equilibrio de carga del servidor en pf utilizando NAT. No obstante, añade automáticamente reglas de reflexión NAT incluso cuando se habilita NAT reflexión. Ese parámetro se aplica al reenvío de puertos y 1:1 NAT. Esto significa que por defecto no se puede conectarse a los servidores virtuales de la misma red en la que residen los servidores reales. Para evitar estas limitaciones de deben añadir manualmente reglas NAT de salida. Estas reglas deben ocultar las fuentes de del tráfico, siendo transparente para el cliente

7. LIMITACIONES

EL relayd load balancing daemon es bueno para despliegues simples. Para implementaciones más avanzadas se requiere de un proxy, como por ejemplo: HAproxy.

Documento en que se muestra la implementación de un balance de carga con pfSense: pfsense_balance_de_carga

 

Anuncios
Tagged with: , , ,
Publicado en Control de accesos, Seguridad

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: