Ir para o conteúdo do rodapé
USANDO O IRONSECUREDOC

Haproxy Docker Compose (Como funciona para desenvolvedores)

Um [balanceador de carga](https://en.wikipedia.org/wiki/Load_balancing_(computing) é parte crucial da infraestrutura moderna de TI, projetado para distribuir o tráfego de rede eficientemente entre vários servidores ou recursos. Isso melhora a escalabilidade e o desempenho do sistema ao impedir que qualquer servidor individual fique sobrecarregado. O balanceador de carga, que fica entre os clientes e os servidores no back-end, minimiza o tempo de resposta enquanto utiliza os recursos disponíveis.

Balanceadores de carga realizam essas tarefas básicas, que incluem tolerância a falhas, distribuição de tráfego e persistência de sessão. Um balanceador de carga pode ser um programa de software principal, produto físico ou serviço baseado em nuvem fornecido pela AWS ou Azure. Alguns dos algoritmos mais comumente usados para alocação de tráfego são Round Robin, Least Connections e IP Hash.

O que é HAProxy Docker?

HAProxy Docker refere-se ao posicionamento do balanceador de carga HAProxy em um contêiner Docker. O poder das capacidades de gerenciamento de tráfego do HAProxy agora pode ser combinado com a flexibilidade e portabilidade do Docker. HAProxy é um balanceador de carga open-source popular e amplamente usado para aplicações web e ambientes de microsserviços, oferecendo alta disponibilidade e proxy reverso. As vantagens de executar o HAProxy em um host de contêiner Docker incluem implantação fácil, isolamento, escalabilidade e independência de plataforma. HAProxy Docker pode distribuir tráfego entre múltiplos serviços de back-end de forma eficiente, monitorar a saúde dos contêineres e ajustar dinamicamente o roteamento com base na disponibilidade dos contêineres.

Ele suporta recursos como terminação SSL/TLS, persistência de sessão e múltiplos algoritmos de balanceamento de carga, incluindo Round Robin e Least Connections. Isso torna o HAProxy Docker uma excelente maneira de gerenciar o tráfego containerizado, pois pode até integrar-se bem com ferramentas de orquestração, como Kubernetes ou Docker Swarm, para fornecer escalonamento dinâmico e descoberta de serviços automatizada. Isso garante que as aplicações modernas tenham um gerenciamento de tráfego robusto, de alto desempenho e seguro sem problemas de arquivo.

Recursos do HAProxy Docker

Balanceamento de Carga

O HAProxy se destaca em espalhar a carga do tráfego de rede sobre muitos servidores de back-end. Seus muitos algoritmos de balanceamento de carga incluem Round Robin, Least Connections e IP Hash, permitindo que os clientes adaptem o fluxo de tráfego de acordo com as necessidades especiais de suas aplicações. Isso permite que o HAProxy aceite tráfego em ambas as arquiteturas compatíveis com Camada 4 (TCP) e Camada 7 (HTTP/HTTPS), o que o coloca em um alcance de alto desempenho, desde aplicações de roteamento TCP simples até balanceamento de carga em nível de camada de aplicação complexas.

Alta Disponibilidade

O recurso central, alta disponibilidade, significa manter o serviço sempre disponível e em funcionamento. O HAProxy desvia o tráfego de servidores comprovadamente insalubres ou falhos devido ao status de saúde dos servidores de back-end. O failover impede muito tempo de inatividade nos casos em que um servidor não está vivo ou falha inesperadamente.

Suporte SSL/TLS

O HAProxy oferece suporte total a SSL/TLS, garantindo comunicação segura do cliente para os servidores. Além disso, o HAProxy pode terminar conexões SSL/TLS para descarregar as tarefas de criptografia e descriptografia dos servidores de back-end, melhorando o desempenho destes. Se a criptografia de ponta a ponta for necessária, o HAProxy pode encaminhar o tráfego criptografado para os serviços por trás dele.

Proxy Reverso

O HAProxy é um dos melhores proxies reversos para enviar todo o tráfego das solicitações do cliente para os serviços relacionados no lado do backend. Ele suporta recursos como alteração de cabeçalhos, redirecionamentos de URLs, ou até mesmo algum roteamento especializado com base em condições específicas do usuário que podem ser configuradas contra regras específicas. Assim, o HAProxy também pode ser considerado um dos candidatos viáveis para arquitetura de múltiplos serviços, juntamente com microsserviços.

Aprimoramento de Segurança

O HAProxy está cheio de recursos de segurança como limitação de taxa, proteção contra DDoS e ACLs. Todos esses são usados para filtrar o tráfego de entrada, o que significa que solicitações maliciosas que de outra forma poderiam alcançar seus servidores de back-end serão bloqueadas, mantendo suas aplicações estáveis.

Escalabilidade

O HAProxy é altamente escalável. Ele pode facilmente suportar milhões de conexões simultâneas sem que a latência esteja associada ao uso e escalar sem ter problemas de latência. Este ambiente suporta ambientes de orquestração de contêineres como Kubernetes e Docker Swarm, com suas cargas de trabalho em contêineres fornecendo as vantagens de escalabilidade dinâmica e descoberta de serviços.

Registro e Monitoramento

HAProxy possui registro detalhado que pode ajudar a entender os fluxos, solucionar problemas e analisar o desempenho. Ele se integra perfeitamente com a ferramenta de monitoramento do Prometheus, Grafana e Datadog, entre outros, representando dados em tempo real sobre a saúde dos servidores, fluxo de tráfego de rede e utilização de recursos.

HAProxy suporta fácil flexibilidade na configuração

HAProxy oferece uma capacidade de configuração muito flexível e poderosa. Utilizando-o, os usuários podem definir regras de roteamento sofisticadas, como rotear condicionalmente com base em cabeçalhos ou cookies. Reescrita de URLs, bem como persistência de sessão são suportadas, até mesmo multi-inquilino, onde uma instância do HAProxy pode atender a vários domínios ou aplicações.

Instalando HAProxy com Docker

Instalar e executar HAProxy usando Docker é um processo relativamente simples. Abaixo estão os passos tomados um a um.

Instalação do Docker

Certifique-se de que o Docker está instalado no seu sistema. Para verificar a instalação, você pode executar o comando abaixo:

docker --version
docker --version
SHELL

Se o Docker não estiver instalado no sistema, visite o link do Docker aqui para baixá-lo e instalá-lo do site oficial.

Puxe a imagem Docker do HAProxy

Puxe a imagem oficial do HAProxy do Docker Hub. O comando abaixo fará o download da versão estável mais recente:

docker pull haproxy:latest
docker pull haproxy:latest
SHELL

Crie um arquivo de configuração do HAProxy

HAProxy precisa de um arquivo de configuração que defina seu comportamento. Crie um arquivo chamado haproxy.cfg com o seguinte conteúdo:

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

Essa configuração do HAProxy define:

  • Frontend: Escuta na porta 80 e roteia o tráfego para o backend.
  • Backend: Aponta para app1 hospedado em host.docker.internal:32769.

Execute o Container Docker do HAProxy

Execute o container Docker do HAProxy, montando o arquivo de configuração e expondo as portas necessárias:

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: Executa o contêiner em modo isolado.
  • --name haproxy-container: Nomeia o contêiner.
  • -p 80:80: Mapeia a porta 80 no host para a porta 80 no contêiner.
  • -v $(pwd)/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro: Monta o arquivo de configuração local no contêiner.

Acesse o HAProxy

Abra um navegador web e navegue até http://localhost:80 ou o endereço IP do seu servidor para testar o roteamento de tráfego.

O que é IronSecureDoc?

IronSecureDoc é uma ferramenta para gestão e segurança de documentos que depende de criptografia forte, manipulação avançada de PDF e assinatura digital. Ele provê confidencialidade e integridade de documentos para empresas e desenvolvedores com fácil acesso, tornando o processamento de documentos PDF mais fácil sem dependências diretas ou indiretas.

Além disso, IronPDF é uma API de PDF que facilita a criação de um PDF a partir de qualquer entrada de dados e a adição ou edição de conteúdo usando parâmetros como texto, imagens e metadados. Isso inclui funcionalidades como mesclar vários PDFs, dividir documentos e adicionar comentários, destaques ou marcas d'água para anotações.

Ele oferece proteção por senha, criptografia AES e controles de acesso baseados em certificado para proteger todas as suas informações e dados sensíveis. Além disso, permite assinatura digital para autenticar seus documentos e garantir não repúdio — uma funcionalidade muito importante nos setores financeiro, médico e jurídico. Sua funcionalidade de trilha de auditoria permite monitoramento de todas as atividades executadas nos documentos para conformidade e responsabilidade.

Instalar e Executar o IronSecureDoc

Puxe a imagem Docker do IronSecureDoc usando o seguinte comando no Prompt de Comando ou em uma janela de terminal aberta:

docker pull ironsoftwareofficial/ironsecuredoc
docker pull ironsoftwareofficial/ironsecuredoc
SHELL

Execute o container do 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 uma instância de container do IronSecureDoc. Você pode agora acessar IronSecureDoc na porta http://localhost:8080/swagger/index.html.

Integre o IronSecureDoc com o HAProxy

Prepare um arquivo haproxy.cfg para definir suas configurações de frontend e backend. Abaixo está um exemplo simples de configuração:

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 configuração do HAProxy lida com o tráfego HTTP para vários serviços do IronSecureDoc. Define saída de log bruto global e define o modo HTTP padrão com log detalhado. O frontend escuta na porta 4500 e roteia solicitações com base no caminho. O acl body_has_data verifica a presença de dados e converte requisições GET para POST, se necessário. O backend usa o algoritmo Round Robin para balanceamento de carga, garantindo que as requisições sejam encaminhadas adequadamente com verificações de integridade para assegurar a disponibilidade do servidor.

Para enviar uma requisição simples de criptografia 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 requisição para a API do IronSecureDoc aplica criptografia de senha de usuário a um documento PDF, e o arquivo de saída é enviado e baixado com segurança.

Conclusão

A integração do HAProxy com o software IronSecureDoc garante uma solução confiável e escalável para gerenciar serviços de segurança de documentos com otimização de roteamento de tráfego e balanceamento de carga. O HAProxy distribui o tráfego de forma eficiente entre várias instâncias do IronSecureDoc, garantindo alta disponibilidade por meio de verificações de integridade e regras de roteamento personalizadas.

Esta configuração permite um tratamento flexível de fluxos de trabalho complexos, como criptografia e monitoramento de integridade. HAProxy e IronSecureDoc se complementam em um ambiente containerizado, melhorando a resiliência e o desempenho da implantação.

Usando a API REST do IronSecureDoc, os desenvolvedores podem integrar perfeitamente o manuseio seguro de documentos e a gestão eficaz de PDFs em suas aplicações web, móveis e corporativas. Para mais informações sobre licenciamento do IronSecureDoc, visite a página de licenciamento. Para explorar mais sobre os produtos da Iron Software, visite a página da suíte de bibliotecas.

Perguntas frequentes

Como posso implantar o HAProxy usando o Docker Compose?

Para implantar o HAProxy usando o Docker Compose, você precisa criar um arquivo docker-compose.yml que especifique o serviço HAProxy com a configuração necessária. Essa configuração permite gerenciar o HAProxy juntamente com outros serviços, garantindo um gerenciamento de tráfego contínuo e alta disponibilidade.

Quais são as vantagens de usar o HAProxy com Docker para microsserviços?

Ao usar o HAProxy com Docker para microsserviços, você se beneficia de escalonamento dinâmico, descoberta automática de serviços e distribuição eficiente de tráfego. O suporte do HAProxy para terminação SSL/TLS e vários algoritmos de balanceamento de carga aprimora a segurança e o desempenho em uma arquitetura de microsserviços.

Como configurar o HAProxy para terminação SSL/TLS no Docker?

O HAProxy pode ser configurado para terminação SSL/TLS através da configuração adequada frontend e backend no arquivo de configuração do HAProxy. Isso descarrega as tarefas de criptografia dos seus servidores backend, otimizando o desempenho e a segurança.

Qual o papel do HAProxy no aprimoramento da segurança em um ambiente conteinerizado?

O HAProxy aprimora a segurança em um ambiente conteinerizado por meio de recursos como proteção contra DDoS, limitação de taxa e listas de controle de acesso (ACLs). Essas medidas de segurança impedem que tráfego malicioso alcance seus serviços de backend, garantindo uma implantação segura do aplicativo.

Como os desenvolvedores podem integrar recursos de segurança de documentos em seus aplicativos usando o IronSecureDoc?

Os desenvolvedores podem integrar recursos de segurança de documentos usando o IronSecureDoc, aproveitando sua API REST. Isso permite a implementação perfeita de criptografia de documentos, manipulação de PDFs e assinatura digital em aplicativos, aprimorando o gerenciamento e a segurança de documentos.

Como o HAProxy facilita a integração com ferramentas de orquestração como o Kubernetes?

O HAProxy facilita a integração com ferramentas de orquestração como o Kubernetes, oferecendo suporte a escalonamento dinâmico e descoberta automática de serviços. Isso garante um gerenciamento de tráfego eficiente e alta disponibilidade em uma implantação conteinerizada, otimizando a utilização de recursos e a resiliência do sistema.

Quais são as principais características do HAProxy que suportam alta disponibilidade?

O HAProxy oferece alta disponibilidade por meio de recursos como verificações de integridade, mecanismos de failover e persistência de sessão. Essas funcionalidades garantem que o tráfego seja redirecionado para longe de servidores com falha, minimizando o tempo de inatividade e mantendo a operação contínua do serviço.

Qual é o processo para integrar o HAProxy com o IronSecureDoc para gerenciamento de documentos?

A integração do HAProxy com o IronSecureDoc para gerenciamento de documentos envolve a configuração do HAProxy para rotear o tráfego de forma eficiente para os serviços do IronSecureDoc. Essa configuração aprimora a segurança dos documentos, aproveitando o roteamento de tráfego otimizado e o balanceamento de carga em um ambiente conteinerizado.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me