Saltar al pie de página
USANDO IRONSECUREDOC

Haproxy Docker Compose (Cómo funciona para desarrolladores)

Un balanceador de carga es parte de la infraestrucura de TI moderna crucial diseñada para distribuir eficientemente el tráfico de red a través de múltiples servidores o recursos. Esto mejora la escalabilidad y el rendimiento del sistema al evitar que cualquier servidor individual se sobrecargue. El balanceador de carga, que se sitúa entre los clientes y los servidores en el back end, minimiza el tiempo de respuesta mientras utiliza los recursos disponibles.

Los balanceadores de carga llevan a cabo estas tareas básicas, que incluyen tolerancia a fallos, distribución de tráfico y persistencia de sesión. Un balanceador de carga puede ser un programa de software principal, un producto físico o un servicio basado en la nube proporcionado por AWS o Azure. Algunos de los algoritmos más utilizados para la asignación de tráfico son Round Robin, Conexiones Más Bajas e IP Hash.

¿Qué es HAProxy Docker?

HAProxy Docker se refiere a colocar el balanceador de carga HAProxy en un contenedor de Docker. El poder de las capacidades de gestión de tráfico de HAProxy ahora se puede combinar con la flexibilidad y portabilidad de Docker. HAProxy es un balanceador de carga popular, ampliamente utilizado y de código abierto para aplicaciones web y entornos de microservicios que ofrece alta disponibilidad y proxy inverso. Las ventajas de ejecutar HAProxy en un host de contenedor Docker incluyen fácil implementación, aislamiento, escalabilidad e independencia de la plataforma. HAProxy Docker puede distribuir el tráfico a través de múltiples servicios de back end de manera eficiente, monitorear el estado de los contenedores y ajustar dinámicamente el enrutamiento en función de la disponibilidad de los contenedores.

Admite características como terminación SSL/TLS, persistencia de sesión y múltiples algoritmos de balanceo de carga, incluidos Round Robin y Conexiones Más Bajas. Esto hace que HAProxy Docker sea una excelente manera de gestionar el tráfico contenedorizado, ya que puede incluso integrarse bien con herramientas de orquestación como Kubernetes o Docker Swarm para proporcionar escalado dinámico y descubrimiento automatizado de servicios. Esto garantiza que las aplicaciones modernas tengan una gestión de tráfico robusta, de alto rendimiento y segura sin problemas de archivos.

Características de HAProxy Docker

Equilibrio de carga

HAProxy se destaca en distribuir la carga del tráfico de red sobre muchos servidores de back end. Sus muchos algoritmos de balanceo de carga incluyen Round Robin, Conexiones Más Bajas e IP Hash, para que los clientes puedan adaptar el flujo de tráfico de acuerdo con las necesidades especiales de sus aplicaciones. Esto permite que HAProxy acepte tráfico tanto en arquitecturas soportadas de Capa 4 (TCP) como Capa 7 (HTTP/HTTPS), lo cual lo coloca en un rango de alto rendimiento desde aplicaciones de enrutamiento TCP simples hasta balanceo de carga en la capa de aplicación más compleja.

Alta disponibilidad

La característica central, alta disponibilidad, significa mantener el servicio en funcionamiento y siempre activo. HAProxy envía el tráfico lejos de los servidores que se comprueban poco saludables o fallidos debido a los estados de salud de los servidores de back end. La conmutación por error prevente demasiado tiempo de inactividad en casos donde un servidor no está vivo o falla inesperadamente.

Compatibilidad con SSL/TLS

HAProxy admite completamente SSL/TLS, garantizando comunicación segura desde el cliente a los servidores. Además, HAProxy puede terminar conexiones SSL/TLS para descargar tareas de cifrado y descifrado de los servidores de back end, mejorando el rendimiento de estos últimos. Si se requiere cifrado de extremo a extremo, HAProxy puede reenviar el tráfico cifrado a los servicios detrás de él.

Proxy inverso

HAProxy es uno de los mejores proxys inversos para enviar todo el tráfico de solicitudes del cliente a los servicios relacionados en el lado del back end. Admite características como alterar encabezados, redireccionamientos de URLs o incluso algún enrutamiento especializado basado en condiciones específicas del usuario que pueden configurarse contra reglas específicas. Por lo tanto, HAProxy también se puede considerar uno de los candidatos viables para una arquitectura de múltiples servicios, junto con los microservicios.

Mejora de la seguridad

HAProxy está llena de funciones de seguridad como limitación de tasa, protección DDoS y ACLs. Todo esto se utiliza para filtrar el tráfico entrante, lo que significa que las solicitudes maliciosas que de otro modo podrían llegar a sus servidores de back end serán bloqueadas, manteniendo estables sus aplicaciones.

Escalabilidad

HAProxy es altamente escalable. Puede fácilmente soportar millones de conexiones concurrentes sin que la latencia esté asociada a su uso y escalar sin tener problemas de latencia. Este entorno admite entornos de orquestación de contenedores como Kubernetes y Docker Swarm, con sus cargas de trabajo contenedorizadas proporcionan las ventajas de escalado dinámico y descubrimiento de servicios.

Registro y monitoreo

HAProxy posee registro detallado que ayuda a comprender los flujos, solucionar problemas y analizar el rendimiento. Se interopera perfectamente con la herramienta de monitoreo de Prometheus, Grafana y Datadog, entre otros, representando datos en tiempo real sobre la salud de los servidores, el flujo de tráfico de red y la utilización de recursos.

HAProxy admite una fácil flexibilidad en la configuración

HAProxy ofrece una capacidad de configuración muy flexible y potente. Utilizándola, los usuarios pueden definir reglas de enrutamiento bastante sofisticadas, como el enrutamiento condicional en encabezados o cookies. Se admite la reescritura de URL así como la persistencia de sesión, incluso la multi-tenencia, por la cual una instancia de HAProxy puede dar servicio a múltiples dominios o aplicaciones.

Instalación de HAProxy con Docker

Instalar y ejecutar HAProxy usando Docker es un proceso bastante simple. A continuación se presentan los pasos tomados uno a uno.

Instalación de Docker

Asegúrese de que Docker esté instalado en su sistema. Para verificar la instalación, puede ejecutar el siguiente comando:

docker --version
docker --version
SHELL

Si Docker no está instalado en el sistema, visite el enlace de Docker aquí para descargarlo e instalarlo desde el sitio web oficial.

Extraer la imagen Docker de HAProxy

Descargue la imagen oficial de HAProxy desde Docker Hub. El siguiente comando descargará la versión más reciente estable:

docker pull haproxy:latest
docker pull haproxy:latest
SHELL

Crear un archivo de configuración de HAProxy

HAProxy necesita un archivo de configuración que defina su comportamiento. Crea un archivo llamado haproxy.cfg con el siguiente contenido:

global
    log stdout format raw local0
defaults
    log     global
    mode    http
    timeout connect 5s
    timeout client  50s
    timeout server  50s
frontend http_front
    bind *:80
    default_backend http_back
backend http_back
    server app1 host.docker.internal:32769 check

Esta configuración de HAProxy define:

  • Frontend: Escucha en el puerto 80 y enruta el tráfico al back end.
  • Backend: Apunta a app1 alojado en host.docker.internal:32769.

Ejecutar HAProxy Docker Container

Ejecute el contenedor Docker de HAProxy, montando el archivo de configuración y exponiendo los puertos necesarios:

docker run -d --network haproxy --name haproxy-container -p 80:80 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
docker run -d --network haproxy --name haproxy-container -p 80:80 -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
SHELL
  • -d: Ejecuta el contenedor en modo desconectado.
  • --name haproxy-container: Nombra el contenedor.
  • -p 80:80: Asigna el puerto 80 del host al puerto 80 en el contenedor.
  • -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro: Monta el archivo de configuración local en el contenedor.

Acceder a HAProxy

Abra un navegador web y navegue a http://localhost:80 o la dirección IP de su servidor para probar el enrutamiento de tráfico.

¿Qué es IronSecureDoc?

IronSecureDoc es una utilidad para la gestión y seguridad de documentos que se basa en un fuerte cifrado, manipulación avanzada de PDF y firma digital. Proporciona confidencialidad e integridad de documentos a empresas y desarrolladores con un acceso fluido, haciendo más fácil el procesamiento de documentos PDF sin dependencias directas o indirectas.

Además, IronPDF es una API de PDF que facilita la creación de un PDF a partir de cualquier entrada de datos y adicionar o editar contenido utilizando parámetros como texto, imágenes y metadatos. Esto incluye funciones tales como la fusión de varios PDFs, la división de documentos y la adición de comentarios, resaltes o marcas de agua para anotaciones.

Proporciona protección por contraseña, cifrado AES y controles de acceso basados en certificados para bloquear toda su información y datos sensibles. Además, permite la firma digital para autenticar sus documentos y garantizar la no repudioa, una característica muy importante en las industrias financiera, médica y legal. Su funcionalidad de seguimiento de auditoría permite monitorear todas las actividades ejecutadas en los documentos para cumplimiento y responsabilidad.

Instalar y ejecutar IronSecureDoc

Descargue la imagen Docker de IronSecureDoc utilizando el siguiente comando en el Símbolo del sistema o una ventana de terminal abierta:

docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
SHELL

Ejecute el contenedor de IronSecureDoc:

docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
SHELL

Este comando inicia una instancia de contenedor de IronSecureDoc. Ahora puede acceder a IronSecureDoc en el puerto http://localhost:8080/swagger/index.html.

Integrar IronSecureDoc con HAProxy

Prepare un archivo haproxy.cfg para definir sus configuraciones de frontend y backend. A continuación hay un ejemplo simple de configuración:

global
    log stdout format raw local0
defaults
    log     global
    mode    http
    option  httplog
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
frontend http_front
    bind *:4500
    acl body_has_data req.hdr_val(Content-Length) gt 0
    http-request set-method POST if METH_GET body_has_data
    use_backend ironsecuredoc if { path /ironsecuredoc } || { path_beg /ironsecuredoc/ }
    use_backend ironsecuredoc_ping if { path /ping } || { path_beg /ping/ }
    use_backend ironsecuredoc_encrypt if { path /encrypt } || { path_beg /encrypt/ }
backend ironsecuredoc
    balance roundrobin
    http-request set-path /swagger/index.html
    server ironsecuredoc_server host.docker.internal:8080 check
backend ironsecuredoc_encrypt
    balance roundrobin
    http-request set-path /v1/document-services/pdfs/encrypt
    server ironsecuredoc_server host.docker.internal:8080 check
backend ironsecuredoc_ping
    balance roundrobin
    http-request set-path /v1/document-services/ping
    server ironsecuredoc_server host.docker.internal:8080 check

Esta configuración de HAProxy maneja el tráfico HTTP para múltiples servicios IronSecureDoc. Define la salida de registro en bruto global y establece el modo HTTP predeterminado con registro detallado. El frontend escucha en el puerto 4500 y enruta las solicitudes en función de la ruta. El acl body_has_data verifica la presencia de datos y convierte solicitudes GET en POST si es necesario. El backend utiliza el algoritmo Round Robin para el balanceo de carga, asegurando que las solicitudes se reenvíen adecuadamente con controles de salud para asegurar la disponibilidad del servidor.

Para enviar una simple solicitud de cifrado usando cURL:

curl -X 'POST' \
  'http://localhost:4500/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
curl -X 'POST' \
  'http://localhost:4500/encrypt?user_password=demo' \
  -H 'accept: */*' \
  -H 'Content-Type: multipart/form-data' \
  -F 'pdf_file=@test.pdf;type=application/pdf'
SHELL

Esta solicitud a la API de IronSecureDoc aplica cifrado de contraseña de usuario a un documento PDF, y el archivo de salida se envía y descarga de manera segura.

Conclusión

La integración de HAProxy con el software IronSecureDoc asegura una solución confiable y escalable para gestionar servicios de seguridad documental con enrutamiento optimizado de tráfico y balanceo de carga. HAProxy distribuye eficientemente el tráfico a través de múltiples instancias de IronSecureDoc, garantizando alta disponibilidad a través de cheques de salud y reglas de enrutamiento personalizadas.

Esta configuración permite el manejo flexible de flujos de trabajo complejos como el cifrado y el monitoreo de la salud. HAProxy e IronSecureDoc se complementan en un entorno contenedorizado, mejorando la resistencia y el rendimiento del despliegue.

Usando la API REST de IronSecureDoc, los desarrolladores pueden integrar fácilmente el manejo seguro de documentos y la gestión efectiva de PDFs en sus aplicaciones web, móviles y corporativas. Para obtener más información sobre las licencias de IronSecureDoc, visite la página de licencias. Para explorar más sobre los productos de Iron Software, visite la página de la suite de bibliotecas.

Preguntas Frecuentes

¿Cómo puedo desplegar HAProxy usando Docker Compose?

Para desplegar HAProxy usando Docker Compose, necesitas crear un archivo docker-compose.yml que especifique el servicio de HAProxy con la configuración necesaria. Esta configuración te permitirá gestionar HAProxy junto a otros servicios, asegurando una gestión del tráfico sin interrupciones y alta disponibilidad.

¿Cuáles son las ventajas de usar HAProxy con Docker para microservicios?

Al usar HAProxy con Docker para microservicios, te beneficias de la escalabilidad dinámica, el descubrimiento automatizado de servicios y la distribución eficiente del tráfico. El soporte de HAProxy para la terminación SSL/TLS y varios algoritmos de balanceo de carga mejora la seguridad y el rendimiento en una arquitectura de microservicios.

¿Cómo puede configurarse HAProxy para la terminación SSL/TLS en Docker?

HAProxy puede configurarse para la terminación SSL/TLS configurando las configuraciones frontend y backend apropiadas en el archivo de configuración de HAProxy. Esto descarga las tareas de cifrado desde tus servidores backend, optimizando el rendimiento y la seguridad.

¿Qué papel juega HAProxy en la mejora de la seguridad en un entorno de contenedores?

HAProxy mejora la seguridad en un entorno de contenedores a través de características como protección DDoS, limitación de tasa y listas de control de acceso (ACLs). Estas medidas de seguridad evitan que el tráfico malicioso llegue a tus servicios backend, asegurando un despliegue seguro de la aplicación.

¿Cómo pueden los desarrolladores integrar características de seguridad documental en sus aplicaciones usando IronSecureDoc?

Los desarrolladores pueden integrar características de seguridad documental usando IronSecureDoc aprovechando su API REST. Esto permite una implementación sin problemas de cifrado de documentos, manipulación de PDF y firma digital dentro de las aplicaciones, mejorando la gestión y seguridad de documentos.

¿Cómo facilita HAProxy la integración con herramientas de orquestación como Kubernetes?

HAProxy facilita la integración con herramientas de orquestación como Kubernetes al soportar la escalabilidad dinámica y el descubrimiento automatizado de servicios. Esto asegura una gestión eficiente del tráfico y alta disponibilidad en un despliegue de contenedores, optimizando la utilización de recursos y la resiliencia del sistema.

¿Cuáles son las características clave de HAProxy que soportan alta disponibilidad?

HAProxy soporta alta disponibilidad a través de características como chequeos de salud, mecanismos de conmutación por error y persistencia de sesión. Estas capacidades aseguran que el tráfico se redirija lejos de los servidores fallidos, minimizando el tiempo de inactividad y manteniendo la operación continua del servicio.

¿Cuál es el proceso para integrar HAProxy con IronSecureDoc para la gestión de documentos?

Integrar HAProxy con IronSecureDoc para la gestión de documentos implica configurar HAProxy para enrutar eficientemente el tráfico a los servicios de IronSecureDoc. Esta configuración mejora la seguridad documental al aprovechar la optimización de la ruta del tráfico y el balanceo de carga en un entorno de contenedores.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más