Configuración de equilibrio de carga

Todos nuestros servicios web se desarrollan e implementan de manera tal que admiten el equilibrio de carga para proporcionar redundancia y alta disponibilidad. Una implementación de equilibrio de carga de cualquier producto consta de n + 1 nodos. Los clientes son ajenos al nodo con el que establecen una conexión. Nuestros productos admiten conexiones sin estado para garantizar que el comportamiento de la aplicación sea independiente del nodo al que se conecta el cliente.

Este documento describe la configuración especial que nuestros productos admiten para una implementación de carga equilibrada:


Sesiones Persistentes

La esencia misma del equilibrio de carga significa que si un nodo se cae, otro cliente que está activo sirve sin problemas a un cliente. Sin embargo, un cliente en cualquier momento tiene una gran cantidad de datos contextuales que identifican la sesión del cliente con el servidor, como los datos del carrito de compras, la información del usuario, las preferencias, etc. Para garantizar que los clientes no perciban ningún tiempo de inactividad al cambiar entre nodos, nuestros productos crean un almacén central de sesión persistente que es utilizado comúnmente por todos los nodos


Sesiones Sticky

Un nodo no baja con frecuencia. Por lo tanto, es una sobrecarga de rendimiento adicional cargar los datos de la sesión del almacén persistente para cada solicitud de cliente. La arquitectura de carga equilibrada se configura de tal manera que un cliente continúa conectándose al mismo Nodo a menos que ese Nodo se caiga, y los datos de sesión se obtienen del almacén de sesión persistente solo cuando se realiza una modificación.


Monitoreo en vivo y detección instantánea de cualquier tiempo de inactividad

Varios scripts supervisan el estado de los distintos nodos y responden a cualquier tiempo de inactividad. Algunos de estos simplemente deben configurarse en Load Balancer. Sin embargo, los tiempos de inactividad son de naturaleza variada. En muchas ocasiones, un Nodo puede continuar respondiendo a una solicitud del puerto 80, pero la aplicación en sí misma puede no responder. Esto podría deberse a cualquier bloqueo de recursos, falta de disponibilidad de recursos, memoria o problemas con el servidor de aplicaciones. Varios scripts adicionales también monitorean estas circunstancias y activan los indicadores apropiados en el equilibrador de carga para permitir que se tomen medidas automatizadas para que un nodo vuelva al estado operativo.


Actualizaciones y parcheo de errores

Con una arquitectura n + 1 es importante asegurarse de que todos los nodos estén ejecutando el mismo código en todo momento. Sería catastrófico para Data Integrity si hubiera diferentes bases de código ejecutándose en diferentes nodos. Para este fin, se implementa un conjunto separado de scripts de implementación para una configuración de carga equilibrada que garantiza que todas las modificaciones, actualizaciones y parches de cualquier código se repliquen automáticamente en todos los nodos.


Modificación sincrónica de configuraciones

Varios parámetros y metadatos que requiere la aplicación se almacenan en archivos XML y de propiedad. Cada nodo tiene una copia separada de estos archivos que se cargan en el momento del inicio y se mantienen en la memoria. Nuestra implementación garantiza que cualquier modificación de estos archivos se replique en los nodos.


Copias de seguridad de múltiples nodos

Cada nodo tiene un almacén de datos dinámicos separado para varios archivos dinámicos que se generan en tiempo de ejecución. Cuando varios nodos se extienden a través de los servidores, un agente de respaldo inteligente asegura que todos estos archivos se respalden en todos los nodos.


NAT para parecerse a un servidor único

A pesar de que una configuración de equilibrio de carga consiste en un grupo de servidores, varias aplicaciones requieren un grupo de equilibrio de carga para aparecer como un único servidor en el mundo externo. Por ejemplo, los recursos externos a los que se conectan estos servidores web pueden tener firewalls que permiten la conectividad desde un conjunto de direcciones IP especificadas. A medida que los nodos web se multiplican, aumenta el número de direcciones IP de origen. No todos los proveedores externos permiten provisiones para múltiples direcciones IP. Por lo tanto, se configura una enmascaramiento de IP entre los nodos web y el equilibrador de carga, de modo que los nodos web intenten conectarse a recursos externos utilizando direcciones IP virtuales que luego el enmascarador de carga enmascara a las direcciones IP reales en vivo. Esto permite que todo el clúster de carga equilibrada aparezca como un único servidor para el mundo externo.