在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
A负载均衡器是现代 IT 基础设施的重要组成部分,旨在有效地在多个服务器或资源之间分配网络流量。 这通过防止任何单一服务器过载来提高系统的可扩展性和性能。 负载均衡器位于客户端和后端服务器之间,在使用可用资源的同时将响应时间最小化。
负载均衡器执行这些基本任务,包括容错、流量分配和会话持久性。 负载均衡器可以是主要的软件程序、物理产品,或由AWS或Azure提供的云服务。 用于流量分配的一些最常用算法是轮询、最少连接和IP哈希。
HAProxy Docker是指将HAProxy负载均衡器放置在Docker容器中。 HAProxy的流量管理功能现在可以与Docker的灵活性和可移植性相结合。 HAProxy 是一种流行、广泛使用的开源负载均衡器,适用于提供高可用性和反向代理的网络应用和微服务环境。 在Docker容器主机中运行HAProxy的优点包括易于部署、隔离性、可扩展性和平台独立性。 HAProxy Docker 可以高效地在多个后端服务之间分配流量,监控容器的健康状况,并根据容器的可用性动态调整路由。
破损图片 添加自 Pixabay,请从您的文件中选择或将图片拖放到此处。
它支持功能如SSL/TLS终止、会话持久性以及多种负载均衡算法,包括轮询和最少连接数。 这使得HAProxy Docker成为管理容器化流量的绝佳方式,因为它甚至可以很好地与Kubernetes或Docker Swarm等编排工具集成,以提供动态扩展和自动化服务发现。 这确保了现代应用程序具有强大、高性能和安全的流量管理,而不会出现任何文件问题。
HAProxy在将网络流量负载分配到多个后端服务器方面表现出色。 它的多种负载均衡算法包括轮询、最少连接和 IP 哈希,以便客户可以根据其应用程序的特殊需求调整流量。 这使得HAProxy可以在第4层上接受流量。(TCP)和第7层(HTTP/HTTPS)支持的架构,使其从简单的TCP路由应用程序到复杂的应用层负载均衡器的高性能范围内。
核心功能,高可用性,意味着保持服务始终在线和运行。 HAProxy 会根据后端服务器的健康状态,将流量从被证明不健康或失效的服务器转移出去。 故障切换可在服务器不可用或意外故障时,防止过多的停机时间。
HAProxy 完全支持 SSL/TLS,确保客户端到服务器的安全通信。 此外,HAProxy 可以终止 SSL/TLS 连接,将加密和解密任务卸载给后端服务器,从而提高前者的性能。 如果需要端到端加密,HAProxy可以将加密流量转发到其背后的服务。
HAProxy 是最好的反向代理之一,可以将所有客户端请求流量发送到后端的相关服务。它支持功能,如修改头信息、从 URL 重定向,甚至可以根据特定的用户条件和特定规则进行一些专门的路由。 因此,HAProxy 也可以被视为与微服务一起的多服务架构的可行候选之一。
HAProxy 具备丰富的安全功能,例如速率限制、DDoS 保护和 ACL。 所有这些都用于过滤传入流量,这意味着可能会到达后端服务器的恶意请求将被阻止,保持您的应用程序稳定。
HAProxy高度可扩展。 它能够轻松支持数百万个并发连接,而不会出现与使用相关的延迟问题,并且可以在扩展时不卡顿。 此环境支持容器编排环境,例如Kubernetes和Docker Swarm,其容器化工作负载提供动态扩展和服务发现的优势。
HAProxy具有细粒度的日志记录功能,可以帮助理解流量、排查问题和分析性能。 它能够与 Prometheus 的监控工具、Grafana 和 Datadog 等无缝互操作,实时展示服务器健康状态、网络流量和资源利用率的数据。
HAProxy 提供非常灵活和强大的配置能力。 使用它,用户可以定义相当复杂的路由规则,例如根据标头或 cookie 有条件地进行路由。 支持URL重写和会话持久性,甚至多租户,使得HAProxy的一个实例可以服务多个域或应用程序。
使用 Docker 安装和运行 HAProxy 是一个相当简单的过程。 以下是逐步执行的步骤。
确保您的系统上已安装 Docker。 要验证安装,可以运行以下命令:
docker --version
docker --version
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker --version
如果系统上未安装 Docker,请访问Docker 链接在此处从官方网站下载并安装。
从 Docker Hub 拉取官方 HAProxy 镜像。 最新的HAProxy版本将下载最新的稳定版本:
docker pull haproxy:latest
docker pull haproxy:latest
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull haproxy:latest
HAProxy需要一个定义其行为的配置文件。 下载 Docker 和 HAProxy 的相应 Dockerfile 链接后,创建一个名为 haproxy.cfg 的文件,内容如下示例:
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
此 HAProxy 配置定义:
前端:监听端口4500并将流量路由到后端
后端:在两个服务器之间分配流量,即app1。
运行 HAProxy Docker 容器,挂载配置文件并开放必要的端口:
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: 分离模式用于运行容器。
将主机上的端口4500映射到容器中的端口4500。
打开网页浏览器,导航到 http://localhost:4500 或您的服务器 IP 地址以测试流量路由。
要检查HAProxy的统计信息,请运行以下命令:
IronSecureDoc是一个用于文档管理和安全的工具,依靠强大的加密、先进的PDF操作和数字签名。 它为公司和开发人员提供文档的机密性和完整性,使得访问顺畅,从而无需直接或间接依赖即可更轻松地处理PDF文档。 在其功能使开发人员能够以编程方式创建、上传、操作和保护 PDF 文件和文档的情况下,这也可以称为 Aggressive PDF API。
此外,IronPDF 是一个 PDF API,可轻松从任何数据输入创建 PDF,并使用文本、图像和元数据等参数添加或编辑内容。 这包括合并多个PDF以生成合成文件、拆分文档,甚至添加注释、突出显示或水印等功能。
它提供密码保护、AES加密和基于证书的访问控制,可以锁定所有敏感信息和数据。 除此之外,它还支持数字签名以验证您的文档,并提供不可否认性——这是金融、医疗和法律行业中非常重要的特性。 其审计跟踪功能允许监控文档上执行的所有活动,以提高合规性和问责性。
使用以下存储库中的命令在命令提示符或打开的终端窗口中拉取 IronSecureDoc 的 Docker 映像。
docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'docker pull ironsoftwareofficial/ironsecuredoc
IronSecureDoc,一个操作容器。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
'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
上面的 Docker run 命令将启动 IronSecureDoc 的容器实例。 现在,您可以通过端口 http://localhost:8080/swagger/index.html 访问 IronSecureDoc,就像下面的页面一样。
准备一个haproxy.cfg文件来定义您的前端和后端配置。 下面是一个简单的示例配置:
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
HAProxy 的这个配置文件创建了一个能够处理多个 IronSecureDoc 服务 HTTP 流量的系统。 然后全局配置为将原始日志输出到标准输出,并且默认部分启用 HTTP 作为模式和详细的 HTTP,同时为客户端和服务器设置连接超时。 前端是定义在端口4500上的http_front,包括基于HTTP请求路径的路由管理规则。例如,请求/ironsecuredoc会被路由到ironsecuredoc后端。 对 /ping 和 /encrypt 的请求会被路由到各自的后端。 ACL 规则通过 Content-Length 头部识别具有请求体的请求。 如果存在主体,则将 GET 请求转换为 POST。
轮询算法用于在后端之间分配流量。 每个后端在将请求路径转发到对应的服务器之前,会对其进行重写。 例如,ironsecuredoc 后端将路径重写为 /swagger/index.html。 ironsecuredoc_encrypt 和 ironsecuredoc_ping 后端分别将路径重写为 /v1/document-services/pdfs/encrypt 和 /v1/document-services/ping。 它们全部指向运行在 host.docker.internal:8080 的单个服务器。添加了健康检查以确保服务器可用。 因此,该配置确保了不同服务的流量管理顺畅,同时在请求操作上具有灵活性。
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'
但是,如果我们发布到IronSecureDoc API,我们还可能希望请求用户密码以用用户的密码对文档请求进行加密。 文档输出文件将被自动发送和下载,并会被安全保存。
它还将集成HAProxy与包含的IronSecureDoc软件,以确保在管理文档安全服务中提供可靠且可扩展的解决方案,实现流量优化路由和负载均衡。 由于通过实施用于处理故障转移的健康检查,结合针对不同服务端点提供自定义路由规则的方式,IronSecureDoc的多个实例之间的流量高效分配,从而确保了高可用性。
此配置支持灵活处理诸如加密和健康监测等复杂的工作流程,同时在未来具有可扩展性。 无论是在容器化环境还是传统环境中,HAProxy 的轻量级但高性能设计可有效补充 IronSecureDoc 的安全特性,为安全文档提供可靠且高效的管理。 因此,来自HAProxy的功能可以帮助组织在部署IronSecureDoc时提高应用程序的性能和弹性。
使用IronSecureDoc REST API,安全打印和高效的PDF格式处理现在可以轻松整合到由Web、移动和企业系统开发人员开发的应用程序中。 如需了解有关IronSecureDoc许可证的更多信息,请访问许可页面. 关于Iron Software产品的信息,请访问库套件页面.
10 个 .NET API 产品 用于您的办公文件