HAProxy 2.9 – O que há de novo?

Anunciamos o lançamento da versão 2.9 do HAProxy, que traz aprimoramentos significativos em termos de desempenho, flexibilidade e observação.

Esta versão representa um avanço considerável, apresentando eficiência melhorada em áreas como HTTP/2, threads, pools partilhados, registos, verificações de saúde, mapas, caching, tabelas de sessão e QUIC.

Proporcionamos maior adaptabilidade com o balanceamento de carga syslog, opções adicionais para QUIC, expansão das bibliotecas SSL/TLS, melhorias nas capacidades Linux e uma nova interação experimental entre balanceadores de carga de data center e de borda denominada “HTTP Reverso”.

Tem a possibilidade de personalizar o HAProxy conforme as suas necessidades, com a introdução de um novo tipo de hash chamado “none” para o balanceamento de carga personalizado baseado em hash. Além disso, foram incorporadas novas funções para lidar com campos TLV do Protocolo Proxy, proporcionando mais opções de caching, recursos Lua expandidos e novos conversores.

Extraindo Dados de Pacotes HAProxy – HomeServer.pt – Informática e Tecnologia
homeserver.pt

Para uma compreensão mais aprofundada das operações do HAProxy, introduzimos métodos de obtenção adicionais, mais opções para logs Lua, dicas de depuração e alertas para vinculações de CPU inconsistentes, visando facilitar as decisões.

Como obter o HAProxy 2.9

Pode instalar a versão 2.9 do HAProxy utilizando uma das seguintes abordagens:

  1. Executar como um contentor Docker. Consulte as instruções de instalação do Docker.
  2. Compilar a partir do código-fonte. Consulte as instruções de compilação.

Melhorias de Desempenho no HAProxy 2.9

O HAProxy 2.9 reforça sua posição como o balanceador de carga de software mais rápido do mundo, atingindo 2 milhões de RPS em uma única instância AWS Graviton2.

HTTP

  • Implementação mais eficiente do HTTP/2, consumindo menos memória e sendo até 40-60% mais eficaz em CPU para transferências grandes.
  • Nova abordagem de alocação de buffer, resultando em zero-cópias e melhor desempenho.

Threads

  • Aprimoramentos no código de bloqueio geram ganho de 2-4% em sistemas x86 e de 14-33% em sistemas Arm.

Pools

  • Redução de contenção em pools compartilhados melhora significativamente a performance para HTTP/2 e HTTP/3.

Logs

  • Melhorias na seção de encaminhamento de logs, resultando em uma produção de logs ~4x mais rápida.

Verificações de Saúde

  • Otimizações nas verificações de saúde, com maior proatividade na distribuição de carga de trabalho entre threads menos ocupadas.
  • Introdução de diretivas globais para ajustar a carga de trabalho das verificações de saúde.

Mapas

  • Aperfeiçoamento nas diretivas relacionadas a mapas, proporcionando um aumento de desempenho notável.
  • Implementação de uma árvore para referências, otimizando operações de atualização.

Caching

  • Mecanismo de armazenamento em cache aprimorado, reduzindo a contenção de bloqueio em sistemas de grande escala.

QUIC

  • O QUIC consome menos memória, permitindo a liberação mais rápida de recursos ao encerrar conexões.

Tabelas de Sessão (Stick Tables)

  • Refinamento nas operações de tabelas de sessão, desembaraçando buscas de atualizações e melhorando o compartilhamento de linhas de cache.

Maior Flexibilidade no HAProxy 2.9

O HAProxy 2.9 destaca-se por sua notável flexibilidade, comprovada por diversas aplicações relatadas na comunidade e avaliações de utilizadores na plataforma G2. Esta versão oferece um poderoso conjunto de funcionalidades, tornando-se uma ferramenta versátil para abordar uma ampla gama de desafios.

Balanceamento de Carga para Syslog

Anteriormente, o balanceamento de carga para syslog era realizado através de amostragem com encaminhamento de logs, resultando em desafios de eficácia e confiabilidade. O HAProxy 2.9 introduz uma abordagem mais robusta, permitindo verdadeiro balanceamento de carga para o tráfego syslog por meio de backends de log. Esses backends suportam mecanismos de verificação de integridade, garantindo uma distribuição confiável de logs entre servidores. Exemplificando com uma configuração para balancear logs próprios e encaminhar syslog para servidores remotos:

Bash
global
  log backend@meulog-rrb identidade0

backend meulog-rrb
  mode log
  balance roundrobin

  server s1 [email protected]:514
  server s2 [email protected]:514

Essa abordagem, combinada com a infraestrutura de logging nativa para encaminhamento de logs (log-forward), proporciona uma solução refinada e eficaz.

Assegure-se de configurar os servidores remotos de syslog para aceitar logs com o código de identidade identidade0. O HAProxy 2.9 destaca-se como uma solução flexível e poderosa, adaptando-se às diversas necessidades da comunidade de utilizadores.

HAProxy 2.9 – Novas Funcionalidades e Aprimoramentos

O HAProxy 2.9 introduz diversas melhorias significativas, oferecendo maior flexibilidade e desempenho. Destacamos algumas das principais atualizações:

  1. Balanceamento de Carga para Logs:
  • Agora é possível especificar o algoritmo de balanceamento para logs com a diretiva balance.
  • Os backends de log suportam características comuns de backend e servidor, incluindo verificações de saúde.
  1. Aprimoramentos no QUIC:
  • Introdução da opção limited-quic para uma implementação QUIC limitada ao usar a biblioteca OpenSSL.
  • Novas configurações de ajuste de desempenho afetam o QUIC no modo de escuta.
  1. Ajustes de Desempenho Gerais:
  • Quatro novas configurações de ajuste de desempenho influenciam o QUIC no modo de escuta, modificando o tamanho do buffer de recebimento.
  1. Conexões Máximas Concorrentes:
  • A diretiva global maxsslconn agora se aplica também a conexões QUIC.
  • A contagem de conexões QUIC agora é considerada desde a alocação, não apenas após a conclusão do handshake.
  1. Compatibilidade com Bibliotecas TLS:
  • Adição da biblioteca AWS-LC TLS à lista de opções, proporcionando boa compatibilidade.
  • O suporte ao OpenSSL 3.x é introduzido, enquanto a versão 1.1.1 é descontinuada.
  1. Curvas e Algoritmos de Assinatura para TLS:
  • Possibilidade de definir algoritmos de assinatura e curvas elípticas permitidas em servidores, backends e globalmente.
  1. Capacidades Linux:
  • A nova diretiva global setcap preserva as capacidades do Linux após o início do processo HAProxy.
  • Oferece a capacidade de conceder permissões específicas, como cap_net_bind_service para binding em portas privilegiadas.
  1. Reverse HTTP (Experimental):
  • Uma funcionalidade experimental chamada Reverse HTTP permite a comunicação bidirecional entre um balanceador de carga no datacenter e outro na borda.
  • Requer HTTP/2 sobre TLS e autenticação de certificado do cliente.

Essas melhorias visam aprimorar a flexibilidade, desempenho e segurança do HAProxy, proporcionando aos utilizadores uma experiência mais eficiente e adaptável. Para obter detalhes completos e atualizações contínuas, consulte o repositório oficial no GitHub.

Maior Personalização no HAProxy 2.9

O HAProxy oferece a capacidade de personalizar sua operação para se comportar exatamente como você precisa. Essa abordagem, que começa com o código aberto, se estende a todos os aspectos da configuração, desde o formato do tráfego até o framework de eventos Lua. Na versão 2.9 do HAProxy, foram introduzidas ainda mais opções, proporcionando oportunidades adicionais para obter a experiência única de balanceamento de carga que você procura.

Hash-type none:

  • O HAProxy 2.9 adiciona uma nova função de hash chamada “none” à diretiva “hash-type”.
  • Agora, é possível manualmente gerar o hash da chave usando um conversor e fazer com que o HAProxy utilize o resultado diretamente.

Proxy Protocol TLV Fields:

  • O protocolo Proxy permite preservar o endereço IP do cliente ao relatar o tráfego por meio de um balanceador de carga HAProxy.
  • É possível configurar novos campos TLV usando o argumento “set-proxy-v2-tlv-fmt” em uma linha de servidor.
  • Introdução do método de busca “fc_pp_tlv” para extrair TLVs do cabeçalho do protocolo.
  • Utilize “set-proxy-v2-tlv-fmt” para encaminhar TLVs recebidos com “fc_pp_tlv”.

Suporte de Caching ao Cabeçalho de Origem em Vary:

  • Atualização do cache de pequenos objetos do HAProxy para suportar o cabeçalho de Origem no Vary.
  • Agora, é possível armazenar em cache respostas CORS, proporcionando maior flexibilidade.

Recursos Lua:

  • Introdução da função “core.get_var(var_name)” para variáveis de escopo “proc”.
  • A classe “httpclient” agora suporta um campo “retries” para definir o número de tentativas de uma solicitação falha.
  • A classe “httpclient” suporta um campo “timeout.connect” para definir o tempo máximo de espera para estabelecer uma conexão.

Referências de Fragmento:

  • O HAProxy 2.9 permite a aceitação de referências de fragmento em URIs, relaxando a análise de cabeçalhos quando as opções “accept-invalid-http-request” e “accept-invalid-http-response” estão ativadas.

Conversores:
Conversores de Formato de Data:

  • Quatro novos conversores facilitam o uso de qualquer formato de data em logs, incluindo milissegundos e microssegundos.

Conversor de Bytes:

  • O conversor “bytes” agora pode utilizar seu deslocamento e comprimento a partir de variáveis, permitindo a extração de conteúdos de protocolos mais complexos.

Conversor de Consulta JSON:

  • Suporte para recuperar JSON do corpo da solicitação por meio do conversor “json_query”.
  • O conversor suporta a sintaxe JSON Path e oferece suporte aos tipos string, boolean, number e array.

Essas personalizações visam oferecer mais flexibilidade e controle sobre o comportamento do HAProxy, atendendo às necessidades específicas de cada usuário. Consulte a documentação oficial para obter informações detalhadas e atualizações contínuas.

Mais Visibilidade no HAProxy 2.9

O HAProxy é reconhecido por sua transparência, robustez em registros e recursos estatísticos. Na versão 2.9 do HAProxy, foram introduzidos métodos adicionais para obter as informações necessárias, além da capacidade de registrar logs a partir de scripts Lua. Isso inclui sugestões úteis e análises para auxiliar na depuração, melhorando a usabilidade e facilitando o planejamento.

Métodos de Busca para Informações de Log:

  • Novos métodos de busca facilitam o acesso a informações anteriormente disponíveis apenas nos logs de acesso ou que eram complexas de manipular com variáveis de formato de log.
  • pid: ID do processo do processo atual, geralmente o processo de trabalho.
  • act_conn: Número total de conexões ativas e simultâneas no processo.
  • bytes_in: Número de bytes enviados pelo cliente para o balanceador de carga.
  • bytes_out: Número de bytes transmitidos do balanceador de carga para o cliente.
  • accept_date: Data exata em que a conexão foi recebida pelo HAProxy.
  • request_date: Valor da data exata em que o HAProxy recebeu o primeiro byte da solicitação HTTP.
  • Diversos timers para medir diferentes estágios de processamento.

Buscas ACL:

  • Nova busca permite obter informações sobre as ACLs definidas.
  • O exemplo mostra a sintaxe: acl(!is_malware,goodguys,auth_ok)

Buscas na Camada 7:

  • Duas novas buscas na Camada 7 fornecem mais informações sobre os conteúdos HTTP.
  • req.cook_names: Retorna os nomes de todos os cookies nas solicitações.
  • res.cook_names: Retorna os nomes de todos os cookies nas respostas.

Buscas na Camada 4:

  • Três novas buscas na Camada 4 fornecem mais informações sobre as conexões.
  • ssl_bc_curve: Recupera o nome da curva usada no acordo de chave para conexões SSL/TLS de saída.
  • ssl_fc_curve: Faz o mesmo para a conexão de entrada.
  • cur_client_timeout: Recupera o valor em milissegundos do timeout do cliente configurado.

Registro Lua:

  • Duas novas diretivas globais oferecem controle preciso sobre o registro a partir de scripts Lua.
  • tune.lua.log.loggers: Habilita ou desabilita o envio de mensagens de log do script Lua para os loggers configurados.
  • tune.lua.log.stderr: Envia mensagens de log para stderr. Quando definido como “auto”, ocorre quando tune.lua.log.loggers está desativado ou quando não há um logger no nível do proxy atribuído.

Dicas de Depuração:

  • Os mecanismos de depuração foram aprimorados para reduzir o número de interações entre usuários e desenvolvedores durante as sessões de solução de problemas.
  • Os despejos de pânico agora podem mostrar dicas e possíveis causas para situações específicas, facilitando a identificação de problemas.

Avisos de Associação de CPU:

  • Dois casos de associações inconsistentes de CPU podem resultar em contenção e degradação de desempenho, gerando avisos.

Conclusão:
O HAProxy 2.9 está mais rápido, flexível e observável do que nunca. Isso foi possível graças a uma extensa lista de colaboradores, que contribuíram de maneira inestimável. Em nome de toda a comunidade HAProxy, agradecemos a todos que contribuíram para o HAProxy 2.9.

Artigos Relacionados