HAProxy 3.0 llega con mejoras de rendimiento, certificados y mas
HAProxy, el popular balanceador de carga de software de código abierto, dio a conocer hace poco el lanzamiento de la nueva versión de «HAProxy 3.0», la cual llega con una serie de actualizaciones que prometen mejorar la simplicidad, rendimiento, fiabilidad y seguridad.
Para quienes desconocen de HAProxy deben saber que este es un balanceador de carga que permite distribuir el tráfico HTTP y las solicitudes TCP entre un grupo de servidores. HAProxy toma en cuenta numerosos factores, como la disponibilidad de servidores, la evaluación del nivel de carga y la implementación de contramedidas DDoS.
Principales novedades de HAProxy 3.0
Esta nueva versión que se presenta de HAProxy 3.0, se posiciona como una versión de soporte a largo plazo (LTS) y estará soportada hasta 2029 y cuenta con un nuevo apartado crt-store que proporciona una forma flexible de almacenar y utilizar certificados SSL, separando el almacenamiento del uso en un frontend. Esto permite especificar individualmente las ubicaciones de cada componente del certificado, como archivos de certificados, archivos de claves y archivos de respuestas OCSP.
Otro de los cambios que se destaca, es la ampliación de las capacidades para equilibrar mensajes Syslog. Se menciona que se ha progresado para que ahora pueda establecer pesos en las líneas del servidor en sus mode logbackends. Mientras tanto, el algoritmo sticky, que se había limitado a registrar backends, ahora se aplica también a los backends mode tcp.mode http
Además, en HAProxy ahora es posible establecer restricciones para ciertas solicitudes permitidas por el protocolo HTTP/2 que pueden causar problemas, lo que permite identificar aplicaciones defectuosas o clientes con comportamientos inapropiados
En HAProxy 3.0, se presenta una nueva directiva «guid», esta directiva puede usarse en las secciones «frontend», «backend» y «listen» para vincular un identificador único a estas secciones, permitiendo guardar las estadísticas asociadas incluso después de reiniciar. Además, se ha añadido el comando «volcar archivo de estadísticas» para guardar estadísticas en un archivo y la directiva «archivo de estadísticas» para leer estadísticas desde un archivo tras reiniciar.
Tambien, se ha ampliado la cantidad de datos que se pueden obtener, permitiendo solicitar información sobre el número de sesiones HTTP abiertas, el tamaño de la cola de solicitudes y el número permitido de sesiones simultáneas.
Por otra parte, el rendimiento de las áreas de almacenamiento en memoria creadas con stick-table ha aumentado significativamente, al implementar un mecanismo de bloqueo más eficiente, lo que mejora notablemente el rendimiento en sistemas con múltiples hilos. Por ejemplo, en un sistema con 80 subprocesos, el rendimiento se ha incrementado 6 veces.
En configuraciones de múltiples sitios donde el certificado TLS se selecciona según la ID de host proporcionada por la extensión TLS SNI, se ha añadido el argumento «default-crt» para seleccionar un certificado predeterminado si los certificados existentes no coinciden con el sitio.
Se han añadido las acciones «set-fc-tos» y «set-bc-tos» para sustituir el campo DS (Servicios diferenciados) en paquetes IP en el backend o frontend, y las acciones «set-fc-mark» y «set-bc-mark» para marcar paquetes IP para su posterior vinculación a una tabla de enrutamiento específica.
Ahora está prohibido enviar varios comandos a la API Runtime en una solicitud separados por un carácter de nueva línea; está prohibido establecer la palabra clave «enabled» para servidores dinámicos; y se ha reforzado la verificación de URI no estándar.
De los demás cambios que se destacan de esta nueva versión:
- Se puede utilizar el prefijo «@virt» para crear archivos de mapas y ACL virtuales que no se guardan en el disco, con contenido gestionado mediante la API Runtime.
- Está disponible el prefijo «@opt» que utiliza archivos virtuales solo si no hay ningún archivo real en el disco.
- El análisis es ahora más estricto durante el procesamiento HTTP/1 para la validación del objetivo de solicitud.
- Se han introducido directivas globales (http-err-codes y http-fail-codes) que permiten establecer los códigos de estado HTTP que se desean rastrear.
- El uuid el método Fetch ahora toma un argumento opcional que establece la versión del UUID en 4 o 7
- Se ha mejorado significativamente el rendimiento de los scripts Lua de un solo subproceso cargados mediante la directiva «lua-load».
- Ahora se soporta el formato de líneas de registro en JSON y CBOR.
- Ahora es posible crear identificadores en formato UUIDv7.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.