Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Aequilibrador de cargaes parte de la infraestructura IT moderna crucial diseñada para distribuir el tráfico de la red de manera eficiente entre múltiples servidores o recursos. Esto mejora la escalabilidad y el rendimiento del sistema al evitar que cualquier servidor individual se sobrecargue. El equilibrador de carga, que se encuentra entre los clientes y los servidores en el back end, minimiza el tiempo de respuesta mientras utiliza los recursos disponibles.
Los balanceadores de carga realizan estas tareas básicas, que incluyen la tolerancia a fallos, la distribución de tráfico y la persistencia de sesiones. 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 comúnmente utilizados para la distribución de tráfico son Round Robin, Least Connections y IP Hash.
HAProxy Dockerse refiere a colocar el balanceador de carga HAProxy en un contenedor Docker. La potencia 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 equilibrador de carga de código abierto, popular y ampliamente utilizado, 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 implementación fácil, aislamiento, escalabilidad e independencia de la plataforma. HAProxy Docker puede distribuir el tráfico de manera eficiente entre múltiples servicios backend, monitorear el estado de salud de los contenedores y ajustar el enrutamiento dinámicamente según la disponibilidad de los contenedores.
Imagen rota Añadir desde Pixabay, seleccionar de tus archivos o arrastrar y soltar una imagen aquí.
Admite funciones como la terminación de SSL/TLS, la persistencia de sesión y múltiples algoritmos de balanceo de carga, incluyendo Round Robin y Least Connections. Esto convierte a HAProxy Docker en una excelente opción para gestionar el tráfico en contenedores, ya que incluso puede integrarse bien con herramientas de orquestación como Kubernetes o Docker Swarm para proporcionar escalado dinámico y descubrimiento automático 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.
HAProxy sobresale en distribuir la carga del tráfico de red sobre muchos servidores de backend. Sus numerosos algoritmos de balanceo de carga incluyen Round Robin, Menor número de conexiones e IP Hash, para que los clientes puedan adaptar el flujo de tráfico según las necesidades especiales de sus aplicaciones. Esto permite que HAProxy acepte tráfico en la Capa 4(TCP)y capa 7(HTTP/HTTPS)arquitecturas compatibles, lo que lo sitúa en un rango de alto rendimiento, desde aplicaciones simples de enrutamiento TCP hasta complejos balanceos de carga en la capa de aplicación.
La característica central, alta disponibilidad, significa mantener el servicio activo y siempre en funcionamiento. HAProxy desvía el tráfico de los servidores que se consideran no saludables o fallidos debido a los estados de salud de los servidores de backend. El conmutador por error impide demasiado tiempo de inactividad en casos donde un servidor no está operativo o falla inesperadamente.
HAProxy admite completamente SSL/TLS, asegurando comunicación segura desde el cliente hasta los servidores. Además, HAProxy puede terminar las conexiones SSL/TLS para descargar las tareas de cifrado y descifrado de los servidores de backend, mejorando el rendimiento de estos últimos. Si se requiere cifrado de extremo a extremo, HAProxy puede redirigir el tráfico cifrado a los servicios detrás de él.
HAProxy es uno de los mejores proxies inversos para enviar todo el tráfico de solicitudes de los clientes a los servicios relacionados en el lado del backend. Admite funciones como la alteración de encabezados, redirecciones desde URL, o incluso un enrutamiento especializado basado en condiciones específicas de usuario que se pueden definir según reglas específicas. Así, HAProxy también puede considerarse uno de los candidatos viables para la arquitectura de múltiples servicios, junto con los microservicios.
HAProxy está lleno de características de seguridad como la limitación de velocidad, protección contra DDoS y ACLs. Todos estos se utilizan 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 mantendrán estables sus aplicaciones.
HAProxy es altamente escalable. Puede fácilmente soportar millones de conexiones concurrentes sin que se asocie latencia con el 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 en contenedores que ofrecen las ventajas de escalado dinámico y descubrimiento de servicios.
HAProxy posee un registro detallado que puede ayudar a comprender los flujos, solucionar problemas y analizar el rendimiento. Interactúa sin problemas con las herramientas de monitoreo de Prometheus, Grafana y Datadog, entre otras, representando datos en tiempo real sobre la salud de los servidores, el flujo de tráfico en la red y el uso de recursos.
HAProxy ofrece una capacidad de configuración muy flexible y poderosa. Al utilizarlo, los usuarios pueden definir reglas de enrutamiento bastante sofisticadas, como el enrutamiento condicional basado en encabezados o cookies. La reescritura de URL, así como la persistencia de sesión, son compatibles, incluso la multi-tenencia, por lo que una instancia de HAProxy puede servir a múltiples dominios o aplicaciones.
Instalar y ejecutar HAProxy usando Docker es un proceso bastante sencillo. A continuación se presentan los pasos tomados uno a la vez.
Asegúrate de que Docker esté instalado en tu sistema. Para verificar la instalación, puedes ejecutar el siguiente comando:
docker --version
docker --version
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker --version
Si Docker no está instalado en el sistema, visite el Enlace de Dockeraquí para descargar e instalarlo desde el sitio web oficial.
Extrae la imagen oficial de HAProxy desde Docker Hub. La última versión de HAProxy descargará la versión estable más reciente:
docker pull haproxy:latest
docker pull haproxy:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull haproxy:latest
HAProxy necesita un archivo de configuración que defina su comportamiento. Después de descargar los enlaces respectivos de Dockerfile para Docker y HAProxy, cree un archivo llamado haproxy.cfg con el siguiente contenido de ejemplo:
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
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
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'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: Escuchar en el puerto 4500 y enrutar el tráfico al backend
Backend: Distribuye el tráfico entre dos servidores, a saber, app1
Ejecute el contenedor de Docker de HAProxy, montando el archivo de configuración y exponiendo los puertos necesarios:
docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker run -d --network haproxy --name haproxy-container -p 4500:4500 -v D:\Docker\haproxy-config\haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro haproxy:latest
-d: El modo de desacoplamiento está ejecutándose para el contenedor.
-mapeo de puerto 4500:4500: Mapea el puerto 4500 en el host al puerto 4500 en el contenedor.
Abre un navegador web y navega a http://localhost:4500 o a la dirección IP de tu servidor para probar el enrutamiento del tráfico.
Para verificar las estadísticas de HAProxy, ejecute el siguiente comando:
IronSecureDoces una utilidad para la gestión y seguridad de documentos que se basa en un cifrado fuerte, manipulación avanzada de PDF y firma digital. Ofrece confidencialidad e integridad de documentos a empresas y desarrolladores con un acceso sin problemas y, por lo tanto, facilita el procesamiento de documentos PDF sin dependencias directas o indirectas. Esto también puede referirse como Aggressive PDF API en casos donde sus características permiten a los desarrolladores crear, cargar, manipular y asegurar archivos y documentos PDF de forma programática.
Además, IronPDF es una API de PDF que facilita la creación de un PDF a partir de cualquier entrada de datos y la adición o edición de contenido utilizando parámetros como texto, imágenes y metadatos. Esto incluye características como la fusión de varios PDFs para crear archivos compuestos, la división de documentos e incluso comentarios, resaltados o marcas de agua para anotaciones.
Ofrece protección con contraseña, cifrado AES y controles de acceso basados en certificados que bloquean toda tu información y datos sensibles. Aparte de esto, permite la firma digital para autenticar sus documentos y la no repudio, una característica muy importante en las industrias financieras, médicas y legales. Su funcionalidad de seguimiento de auditoría permite monitorear todas las actividades ejecutadas en los documentos para mayor cumplimiento y responsabilidad.
Extrae la imagen de Docker de IronSecureDoc utilizando el comando en el símbolo del sistema o en una ventana de terminal abierta según el siguiente repositorio.
docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull ironsoftwareofficial/ironsecuredoc
ironSecureDoc, un contenedor operativo. IronSecureDoc, un contenedor operativo.
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
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker container run --rm -p 8080:8080 -e IronSecureDoc_LicenseKey=<IRONSECUREDOC_LICENSE_KEY> -e ENVIRONMENT=Development -e HTTP_PORTS=8080 ironsoftwareofficial/ironsecuredoc:latest
El comando Docker run anterior iniciará una instancia de contenedor de IronSecureDoc. Ahora accede a IronSecureDoc en el puerto http://localhost:8080/swagger/index.html como la página de abajo.
Prepare un archivo haproxy.cfg para definir tus configuraciones de frontend y backend. A continuación, se muestra un ejemplo de configuración simple:
explain below haproxy.cfg file
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/ }
#default_backend ironsecuredoc
backend ironsecuredoc
balance roundrobin
http-request set-path /swagger/index.html
server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_encrypt
balance roundrobin
http-request set-path /v1/document-services/pdfs/encrypt
server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_ping
balance roundrobin
http-request set-path /v1/document-services/ping
server ironsecuredoc_server3 host.docker.internal:8080 check
explain below haproxy.cfg file
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/ }
#default_backend ironsecuredoc
backend ironsecuredoc
balance roundrobin
http-request set-path /swagger/index.html
server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_encrypt
balance roundrobin
http-request set-path /v1/document-services/pdfs/encrypt
server ironsecuredoc_server3 host.docker.internal:8080 check
backend ironsecuredoc_ping
balance roundrobin
http-request set-path /v1/document-services/ping
server ironsecuredoc_server3 host.docker.internal:8080 check
explain below haproxy.cfg file global log stdout format raw local0 defaults log global mode http [option] httplog timeout connect 5000Ds timeout client 50000Ds timeout server 50000Ds frontend http_front bind *:4500 acl Function req_hdr_val(Content- ByVal Length As ) As body_has_data Implements req.hdr_val
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' path /ironsecuredoc }
' {
' path_beg /ironsecuredoc/
' }
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
' use_backend ironsecuredoc_ping if
' {
' path /ping }
' {
' path_beg /ping/
' }
' use_backend ironsecuredoc_encrypt if
' {
' path /encrypt }
' {
' #default_backend ironsecuredoc
' path_beg /encrypt/
' }
''INSTANT VB TODO TASK: The following line uses invalid syntax:
'' backend ironsecuredoc balance roundrobin http-request @set-path /swagger/index.html server ironsecuredoc_server3 host.docker.internal:8080 check backend ironsecuredoc_encrypt balance roundrobin http-request @set-path /v1/document-services/pdfs/encrypt server ironsecuredoc_server3 host.docker.internal:8080 check backend ironsecuredoc_ping balance roundrobin http-request @set-path /v1/document-services/ping server ironsecuredoc_server3 host.docker.internal:8080 check
Este archivo de configuración de HAProxy crea un sistema capaz de gestionar el tráfico HTTP para los múltiples servicios de IronSecureDoc. Luego configura globalmente la salida de registros en bruto a stdout, y la sección predeterminada habilita HTTP como modo y HTTP detallado, junto con la configuración de tiempo de espera de conexión para los clientes y el servidor. El front-end es http_front definido en el puerto 4500, incluyendo reglas para gestionar el enrutamiento basado en la ruta de la solicitud HTTP. Por ejemplo, las solicitudes a /ironsecuredoc se enrutan al backend de ironsecuredoc. Las solicitudes a /ping y /encrypt se enrutan a sus respectivos backends. La regla ACL identifica las solicitudes que tienen un cuerpo a través del encabezado Content-Length. Si existe un cuerpo, convierte las solicitudes GET a POST.
El algoritmo Round Robin se utiliza para distribuir el tráfico entre los servidores backend. Cada backend reescribe la ruta de la solicitud antes de enviarla al servidor que le corresponde. Por ejemplo, el backend de ironsecuredoc reescribe rutas a /swagger/index.html. Los backends ironsecuredoc_encrypt e ironsecuredoc_ping reescriben rutas a /v1/document-services/pdfs/encrypt y /v1/document-services/ping, respectivamente. Todos apuntan a un único servidor que se ejecuta en host.docker.internal:8080. Se añaden comprobaciones de salud para asegurar que el servidor esté disponible. Así, la configuración garantiza una gestión fluida del tráfico para diversos servicios mientras ofrece flexibilidad al manipular solicitudes.
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'
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'curl -X 'POST' \ 'http: -H 'accept: */ *' \ -H 'Content-Type: multipart/form-data' \ -F 'pdf_file=@test.pdf;type=application/pdf'
Pero si estamos publicando en el IronSecureDoc API, también podemos desear solicitar la contraseña para cifrar la solicitud con la contraseña de un usuario para un documento. El archivo de salida del documento se enviará y descargará automáticamente, y se guardará de manera segura.
También integrará HAProxy con el software IronSecureDoc, para garantizar una solución confiable y escalable en la gestión de los servicios para la seguridad de documentos con enrutamiento de tráfico optimizado y balanceo de carga. La alta disponibilidad se garantiza gracias a la distribución eficiente del tráfico entre múltiples instancias de IronSecureDoc mediante la implementación de verificaciones de salud para manejar conmutaciones por error, junto con la provisión de reglas de enrutamiento personalizadas hacia diversos puntos de enlace de servicios.
Esta configuración admite manejar flujos de trabajo complejos como el cifrado y la supervisión del estado de manera flexible, al tiempo que es escalable en el futuro. Ya sea en un entorno containerizado o tradicional, el diseño ligero pero de alto rendimiento de HAProxy es tal que complementa la función de seguridad de IronSecureDoc con una gestión confiable y eficiente para documentos seguros. Las características de HAProxy ayudan a las organizaciones a mejorar la implementación de IronSecureDoc, asegurando el rendimiento y la resiliencia de las aplicaciones.
Usando la API REST de IronSecureDoc, la impresión segura y el manejo efectivo del formato PDF se integran fácilmente con aplicaciones desarrolladas por desarrolladores de sistemas web, móviles y corporativos. Para leer más sobre la licencia de IronSecureDoc, visite el página de licencias. Para obtener información sobre los productos de Iron Software, siga la página de la suite de bibliotecas.
10 productos API de .NET para sus documentos de oficina