Lanzamiento del balanceador de carga HTTP/TCP HAProxy 3.0

Después de cinco años desde la creación de la rama 2.0, se ha publicado la versión 3.0 del balanceador de carga HAProxy, que permite distribuir el tráfico HTTP y las solicitudes TCP arbitrarias entre un grupo de servidores, teniendo en cuenta múltiples factores (por ejemplo, verifica la disponibilidad de los servidores, evalúa el nivel de carga, cuenta con medidas contra DDoS) y realiza una filtración inicial de datos (por ejemplo, se pueden analizar los encabezados HTTP, filtrar la transmisión de parámetros de solicitud incorrectos, bloquear inyecciones SQL y XSS, conectar agentes de procesamiento de contenido). HAProxy también puede utilizarse para coordinar la interacción de los componentes en sistemas basados en arquitectura de microservicios. El código del proyecto está escrito en C y se distribuye bajo la licencia GPLv2. El proyecto se utiliza en muchos sitios importantes, incluidos Airbnb, Alibaba, GitHub, Imgur, Instagram, Reddit, StackOverflow, Tumblr, Twitter y Vimeo.

La rama HAProxy 3.0 se clasifica como una versión de soporte a largo plazo (LTS) y se mantendrá hasta 2029. Cambios clave:

  • Se ha añadido una nueva sección de configuración "crt-store" para configurar el almacenamiento y uso de certificados TLS. A diferencia de la configuración anterior "crt-list", en crt-store el almacenamiento de los certificados está separado de su uso en el frontend, lo que permite establecer individualmente la ubicación de almacenamiento de cada uno de los componentes del certificado (archivos con certificados, claves y datos OCSP).
  • Se ha añadido la opción de establecer límites para las solicitudes utilizando HTTP/2, que son permitidas por el protocolo, pero pueden causar problemas. Por ejemplo, el envío de un flujo de tramas CONTINUATION puede llevar a un ataque DoS conocido como Continuation flood.
  • Se ha añadido una nueva directiva de configuración "guid" que se puede usar en las secciones "frontend", "backend" y "listen". La directiva vincula a estas secciones un identificador único, lo que permite conservar la estadística relacionada con la sección después de un reinicio (el estado de la página de Stats no se reiniciará). Para guardar las estadísticas en un archivo se ha añadido un nuevo comando "dump stats-file", y para leer desde el archivo después del reinicio se ha añadido una nueva directiva de configuración "stats-file".
  • Se han ampliado las capacidades de balanceo de mensajes Syslog. Se ha añadido la posibilidad de asignar coeficientes de peso a las entradas relacionadas con los servidores en el registro de backend.
  • Se ha añadido soporte para el formateo de líneas de registro en formato JSON y CBOR.
  • Se han ampliado los datos que se pueden obtener utilizando funciones de extracción de información; por ejemplo, se pueden solicitar detalles sobre el número de sesiones HTTP abiertas para el backend y el frontend, el tamaño de la cola de espera para el procesamiento de solicitudes y el número permitido de sesiones simultáneas.
  • Se ha mejorado el rendimiento de los scripts Lua de un solo hilo que se cargan mediante la directiva «lua-load».
  • Se ha incrementado significativamente el rendimiento de las tablas de almacenamiento en memoria creadas mediante la directiva stick-table. Por ejemplo, en un sistema con 80 hilos, el rendimiento ha aumentado seis veces.
  • En configuraciones con varios sitios, donde certificado TLS se selecciona en función del identificador de host transmitido a través de la extensión TLS SNI, se ha añadido el argumento «default-crt», que permite definir un certificado por defecto que se elige si no se puede hacer coincidir un certificado existente con el sitio.
  • Se han añadido las acciones «set-fc-tos» y «set-bc-tos» para insertar en el backend o frontend campos DS (Differentiated Services) en los paquetes IP, que definen la prioridad del tráfico.
  • Se han añadido las acciones «set-fc-mark» y «set-bc-mark», con las que se pueden marcar los paquetes IP en el backend o frontend, por ejemplo, para vincularlos posteriormente a una tabla de enrutamiento específica.
  • Se ha añadido soporte para la creación de identificadores en formato UUIDv7.
  • Se ha implementado la opción de usar el prefijo «@virt» para crear archivos ACL y Map virtuales que no se almacenan en disco. El contenido de los archivos ACL y Map virtuales se añade y elimina a través de la API de Runtime. También está disponible el prefijo «@opt», donde los archivos virtuales se aplican solo en ausencia de un archivo real en disco.
  • Se han realizado cambios que violan la compatibilidad hacia atrás: se prohíbe enviar múltiples comandos a la API de Runtime en una sola solicitud separándolos con un salto de línea; se prohíbe establecer la palabra clave «enabled» para elementos dinámicos servidores; se ha endurecido la verificación de URIs no estándar.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster