Cómo configurar HAProxy para conexiones WebSocket

Como Configurar Haproxy Para Conexiones Websocket



Las aplicaciones WebSocket tienen comunicación bidireccional y en tiempo real entre el cliente y el servidor. Incluso con conexiones WebSocket, aún necesita una forma de distribuir el tráfico para evitar sobrecargar un servidor, lo que provocaría tiempo de inactividad e indisponibilidad.

HAProxy es un ejemplo de equilibrador de carga gratuito y confiable que también funciona como proxy inverso. Puede configurar HAProxy para conexiones WebSocket para utilizar mejor las funciones de WebSockets, especialmente en la transferencia de datos en tiempo real, mientras minimiza la carga del servidor usando HAProxy. Esta publicación presenta todos los pasos necesarios para configurar HAProxy para conexiones WebSocket.

Guía paso a paso sobre cómo configurar HAProxy para conexiones WebSocket

Con las conexiones WebSocket, la comunicación entre el servidor y el cliente es duradera. Persiste hasta que el servidor o cliente decide cerrarlo. Como tal, tener una forma de trabajar con un equilibrador de carga garantiza que el tráfico se pueda distribuir a otro servidor si el servidor está sobrecargado. De esa manera, el cliente y el servidor pueden disfrutar de una conexión ininterrumpida y duradera con baja latencia.







1. Instale HAProxy

El primer paso para configurar HAProxy para conexiones WebSocket es asegurarse de tener HAProxy instalado. Si ya lo tienes instalado, omite este paso. De lo contrario, ejecute el siguiente comando para instalarlo:



$ sudo apt-obtener instalación haproxy



2. Edite la configuración de HAProxy

Para configurar HAProxy para conexiones WebSocket, debemos editar la configuración de HAProxy para admitir las conexiones WebSocket. Debemos modificar el apartado “Defaults” y crear los apartados “Frontend” y “Backend”.





Abra la configuración de HAProxy usando un editor de texto de la siguiente manera:

$ sudo nano / etc. / haproxy / haproxy.cfg

En la sección “Valores predeterminados”, modifíquelo como se presenta en la siguiente imagen. Primero, especificamos que estamos trabajando con conexiones HTTP y definimos dónde enviar los archivos de registro. A continuación, configuramos los tiempos de espera para diferentes actividades. Por ejemplo, el tiempo de espera de conexión es el tiempo máximo que debe tardar un intento de conexión al servidor. Si se alcanza el tiempo máximo, se concluye que la conexión ha fallado y se puede volver a intentar.



Para este caso, configuramos el tiempo de espera de conexión en 5000 milisegundos. Puede ajustar el tiempo de espera como mejor le parezca para su caso. Ajústelos según su aplicación y recuerde la duración de las sesiones de WebSocket y su duración esperada.

A continuación, debemos crear la sección “Frontend” donde vinculamos qué puertos usar para las conexiones WebSocket y a qué servidor backend hacer referencia. Para este caso, especificamos el puerto 80 y le damos la URL para acceder a la página 'Estadísticas' para monitorear nuestro HAProxy. Por último, definimos a qué sección de backend hacer referencia en el equilibrio de carga.

En la sección “Backend” distribuimos la carga mediante round robin. La 'opción reenviar para' especifica a HAProxy que incluya un encabezado 'X-Forward-For' que contiene la dirección IP del cliente al enviar la solicitud de conexión. De esa manera, el servidor backend obtendrá la IP del cliente correcta.

La “opción http-server-close” restringe los recursos al eliminar cualquier conexión inactiva que ocupe los recursos del servidor. Aunque las conexiones WebSocket son de larga duración, debemos comprobar si hay conexiones inactivas de larga duración y cerrarlas para evitar el desperdicio innecesario de recursos.

Por último, agregue los servidores backend que utilizará para distribuir el tráfico. Asegúrese de proporcionar la dirección IP correcta para los servidores y reemplace las de la siguiente imagen:

Su HAProxy ahora está configurado para conexiones WebSocket. Guarde los cambios y cierre el archivo.

3. Prueba de validez

Antes de reiniciar HAProxy, podemos ejecutar un comando rápido para verificar si el archivo es válido y no tiene errores. Para eso, ejecute el siguiente comando:

$ sudo haproxy -C -F / etc. / haproxy / haproxy.cfg

4. Reinicie y pruebe la conexión WebSocket

Una vez que el archivo sea válido, reinicie el servicio HAProxy.

Eso es todo. Configuró HAProxy para conexiones WebSocket. Puede probar la conexión para asegurarse de que todo el tráfico de WebSocket se reenvíe correctamente.

Conclusión

Configurar HAProxy para conexiones WebSocket es una solución buscada, especialmente por los administradores web. Esta publicación elaboró ​​el proceso en detalle, brindando los pasos y un ejemplo para asegurarse de que pueda seguirlo cómodamente y lograr implementar el mismo en su caso. Siga cada paso y asegúrese de comprender el concepto y el proceso para implementarlo.