Balanceadores de Carga: Así puedes mejorar el rendimiento de tu web

Balanceadores de Carga: Así puedes mejorar el rendimiento de tu web

Lorena Fernández

Siempre que queremos conectarnos a Internet, necesitamos que los sitios web sean accesibles lo más rápido posible, para tener la mejor experiencia de usuario. Sin embargo, debemos recordar que estos sitios web están alojados en servidores web y estos, a su vez, cuentan con un límite de capacidad. Una web con alta demanda no podría, realmente, subsistir sin un balanceador de carga. Esta herramienta permite que el sitio web que administremos esté siempre disponible, y sea capaz de servir todas las peticiones a la máxima velocidad posible. Este tutorial te explicará de qué manera puede un balanceador de carga, o también conocido como Load Balancer, mejorar el rendimiento de tu web.

Los sitios web que ofrecen servicios como compras en línea, prensa online, o servicios multimedia, tiene una gran demanda de tráfico de manera casi continua, sobre todo por la tarde-noche que es cuando más tráfico de Internet hay porque todas las personas están en sus casas descansando de un duro día de trabajo. Los servidores web son los principales responsables de que cuando visitamos un determinado sitio web, la carga de la página sea muy rápida para proporcionar la mejor experiencia de usuario posible.

Cada uno de los negocios en línea (e-commerce) debe tener presente que es obligatorio contar con servidores web de alto rendimiento y disponibilidad. Tan sólo unos breves eventos de lentitud o no acceso a los sitios de compras, e incluso problemas a la hora de realizar los pagos, puede influir en la decisión del cliente de volver a realizar sus compras en tales sitios.

¿En qué puede ayudar un balanceador de carga (Load Balancer)?

Si eres el responsable de la infraestructura que da vida a sitios web de alta demanda como los de e-commerce, y quieres garantizar que los servidores web mantengan altos niveles de servicio, debes tener muy en cuenta montar una infraestructura con balanceo de carga, o también conocido como Load Balancing.

¿Para qué sirven? Estos aseguran que el tráfico web no se concentre en un sólo servidor, el cual eventualmente acaba saturándose debido a las miles de peticiones por segundo que recibe de los diferentes clientes. A su vez, esa saturación desemboca en extrema lentitud de los sitios web o simplemente, que el mismo no se encuentre disponible y nos devuelva un error. De hecho, el «rol» de Load Balancer lo puede cumplir un servidor web en sí. En vez de estar invirtiendo constantemente en la adquisición de un sólo servidor de cada vez mayor capacidad, se podría optar por dos o más servidores de prestaciones idénticos con el fin de balancear el tráfico en cada uno de ellos.

Para aplicar ese proceso de balanceo, se acostumbra a optar por la funcionalidad de DNS Round-Robin para distribuir de forma equitativa las peticiones de los clientes a los servidores web. El resultado es una disponibilidad y rendimiento constante de los servidores. La desventaja que tiene este proceso es que no es aplicable en un escenario en donde los servidores tengan prestaciones y capacidades diferentes entre sí. Round-Robin trata a todos los servidores disponibles de manera equitativa y no verifica si se encuentran operando o no disponibles.

A raíz de esto, los distintos proveedores aplicaron mejorías. Lo hicieron mediante la creación de herramientas que aseguran que los servidores sean tolerantes a fallos: los balanceadores de carga. Esto, mediante el redireccionamiento de tráfico y clientes de parte de un servidor fallido a otro disponible. Así, los usuarios percibirán muy pocos inconvenientes y cero fallos. Estas herramientas pueden ser utilizadas tanto en entornos de sitios web múltiples, como los que cuentan con uno sólo.

Esquema de funcionamiento

Como hemos mencionado, un balanceador de carga es una herramienta, la cual direcciona a un cliente al servidor web que se encuentre con mayor disponibilidad entre los que cuentan con el mismo contenido. Este proceso es completamente transparente para quien accede a determinado sitio, por lo que a simple vista no podemos detectar esto. Podemos valernos de este esquema para entender mejor cómo funciona:

  • Se cuenta con dos servidores web que se encargan de alimentar a un sólo sitio web. Las direcciones de IP son:
    • 192.168.0.4 para el servidor web1.ejemplo.com
    • 192.168.0.5 para el servidor web2.ejemplo.com
  • Se encuentra implementado un balanceador de carga que tiene como nombre de host virtual www.ejemplo.com y su IP virtual 192.168.0.10. Ese host virtual, con nombre e IPs virtuales, es lo que servirá al servidor DNS para resolver el acceso al sitio web «ejemplo»
  • Una persona quiere acceder a www.ejemplo.com, entonces lo que sucede es que la misma realmente está realizando una solicitud para acceder al balanceador de carga de los servidores que alojan originalmente al sitio web.
  • Ese balanceador de carga ahora verifica cuál es el servidor web que se encuentra disponible para la solicitud del usuario. Una vez hecho eso, el servidor elegido recibe la solicitud.
  • Una vez que haya logrado procesarlo, el propio servidor responde la solicitud proporcionando el acceso al sitio web www.ejemplo.com. Esto podría cambiar de acuerdo a cómo se ha implementado.

Tipos de balanceadores de carga

Fundamentalmente se clasifican en tres tipos:

  • De tipo hardware: Consiste en un servidor dedicado con un sistema operativo en concreto, y un software para hacer el proceso de balanceador de carga. Este servidor integra los servidores web mediante las soluciones Plug and Play, lo que significa que tan pronto se conectan, funcionan con poco o nada de ajustes previos.
  • De tipo switch: Un balanceador de carga de este tipo necesita de un switch Layer 2 o Layer 3 para la integración del proceso de balanceo. No se necesita de ningún dispositivo intermediario entre el switch y el servidor web.
  • Basado en software: para este caso no es necesario modificar ninguna característica de conectividad de red. Puedes instalar el software para el propósito en los propios servidores web. Sin embargo, puedes optar por un servidor dedicado para cumplir el rol de balanceador de carga.

En cualquiera de los casos, se cumplen con la finalidad fundamental: el monitoreo de la capacidad de los servidores web, la selección del servidor adecuado para las solicitudes de cada cliente y la redirección de tráfico entre el cliente y el servidor.

Cómo se logra redireccionar el tráfico

Como ya sabemos uno de los fines principales de un balanceador de carga es la redirección del tráfico del cliente hacia el servidor adecuado. A continuación, compartiremos de qué manera lo hacen:

MAT

Estas siglas corresponden Media Access Control Address Translation. Este método requiere que cada servidor web utilice la dirección IP del balanceador de carga como una dirección de interfaz de tipo loopback, además de su propia IP. Cuando el balanceador de carga recibe la solicitud del cliente, comienza a seleccionar al servidor web apropiado. Después, cambia la dirección MAC de destino en el paquete de datos que compone la solicitud del cliente por la del servidor web elegido. Después, esa solicitud viaja al servidor, el cual contiene como dato la dirección de IP del cliente. De esta manera, garantiza una respuesta directa al mismo.

Un punto a considerar es que siempre que el servidor web «elegido» responde a la solicitud del cliente, enmascara su IP original con la que corresponde a su balanceador de carga. Como si fuera que el cliente realiza una solicitud a éste originalmente.

NAT

El método consiste en el cambio de la dirección IP de destino de la solicitud del cliente. Originalmente, este último se dirige a la IP del balanceador de carga. Sin embargo, el popular proceso de «nateo» cambia dicha IP y asigna la que corresponde al servidor «elegido». Este proceso lo realiza el propio balanceador de carga mediante su dirección de IP asignada. Además, en medio de este proceso, la dirección de IP de origen es la del balanceador de carga en vez de la dirección IP del cliente. Una vez que el balanceador de carga redirecciona la respuesta al cliente, el mismo cambia la dirección IP de destino por la que corresponde al cliente. En consecuencia, la dirección IP que figura como fuente es la del balanceador de carga.

Lo que se logra es esconder la IP original del servidor web, que la misma no sea visible para los clientes. Por lo que los servidores web se pueden valer de cualquier IP, incluso si esta es privada. Estos servidores no necesitan conectarse directamente al balanceador de carga en el sentido de pertenecer al mismo segmento de red local. Siempre que los servidores web y los balanceador de carga puedan comunicarse mediante rutas estáticas o protocolos de ruteo de red, no será necesario.

Puerta de enlace TCP

En este método, los balanceador de carga tienen que redireccionar el tráfico en la capa TCP y más arriba. Tanto este como el cliente que realiza la solicitud de conexión, establecen una conexión TCP. Por lo que el balanceador de carga recibe los datos de la solicitud ya antes de realizar la búsqueda del servidor más apropiado. Después, el balanceador de carga establece una conexión TCP con el servidor ya designado para transmitir la solicitud del cliente. Dicho balanceador de carga también pasa la respuesta del servidor al cliente mediante la conexión TCP. Así, vemos que el protocolo TCP actúa como un intermedio entre los potenciales servidores de destino, el balanceador de carga y el cliente.

Como vemos, la función que cumple un balanceador de carga se ha vuelto cada vez más esencial. Principalmente, porque los sitios web están contando con cada vez más solicitudes de clientes, es decir, más usuarios que quieren acceder a las distintas páginas. No sólo el e-commerce es uno de los sectores que debe adoptar este tipo de herramientas sino también, cualquier otro que cuente con un alto tráfico de usuarios día a día.