HAProxy 3.0 chega com melhorias de desempenho, certificados e muito mais

HAPROxy

HAProxy o popular balanceador de carga de software de código aberto, anunciou recentemente o lançamento de a nova versão de "HAProxy3.0", que vem com uma série de atualizações que prometem melhorar a simplicidade, desempenho, confiabilidade e segurança.

Para quem não conhece o HAProxy, saiba que este é um balanceador de carga que permite distribuir tráfego HTTP e solicitações TCP entre um grupo de servidores. O HAProxy leva em consideração vários fatores, como disponibilidade do servidor, avaliação do nível de carga e implementação de contramedidas DDoS.

Principais novidades do HAProxy 3.0

Esta nova versão apresentada do HAProxy 3.0, está posicionado como uma versão de suporte de longo prazo (LTS) e terá suporte até 2029 e tem uma nova seção crt-store que fornece uma maneira flexível de armazenar e usar certificados SSL, separando o armazenamento do uso em um frontend. Isso permite especificar individualmente os locais de cada componente de certificado, como arquivos de certificado, arquivos de chave e arquivos de resposta OCSP.

Outra das mudanças que se destaca é a Capacidades expandidas para balanceamento de mensagens Syslog. É mencionado que houve progresso para que agora você possa definir pesos nas linhas do servidor em seu modo logbackends. Enquanto isso, o algoritmo fixo, que era limitado ao registro de back-ends, agora também se aplica aos back-ends http do modo tcp.mode.

Além disso, no HAProxy agora é possível definir restrições para determinadas solicitações permitido pelo protocolo HTTP/2 que pode causar problemas, permitindo identificar aplicativos defeituosos ou clientes com comportamento inadequado

No HAProxy 3.0, é apresentada uma nova directiva "guid", esta diretiva pode ser usada nas seções "frontend", "backend" e "ouvir" vincular um identificador exclusivo a essas seções, permitindo que as estatísticas associadas sejam salvas mesmo após a reinicialização. Além disso, o comando "dump Statistics File" foi adicionado para salvar estatísticas em um arquivo e a diretiva "statistics file" foi adicionada para ler estatísticas de um arquivo após a reinicialização.

Também, A quantidade de dados que podem ser obtidos foi ampliada, permitindo solicitar informações sobre o número de sessões HTTP abertas, o tamanho da fila de solicitações e o número permitido de sessões simultâneas.

Por outro lado, el desempenho de áreas de armazenamento de memória criadas com stick-table aumentou significativamente com a implementação de um mecanismo de bloqueio mais eficiente, que melhora significativamente o desempenho em sistemas multithread. Por exemplo, em um sistema com 80 threads, o desempenho aumentou 6 vezes.

Em configurações multissite onde o certificado TLS é selecionado com base no ID do host fornecido pela extensão TLS SNI, o argumento "default-crt" foi adicionado para selecionar um certificado padrão se os certificados existentes não corresponderem ao site.

Se adicionadas as ações “set-fc-tos” e “set-bc-tos” para substituir o campo DS (Serviços Diferenciados) em pacotes IP no backend ou frontend, e as ações “set-fc-mark” e “set-bc-mark” para marcar pacotes IP para posterior ligação a uma tabela de roteamento específica.

Agora é proibido enviar vários comandos para a API Runtime em uma solicitação separada por um caractere de nova linha; é proibido definir a palavra-chave “enabled” para servidores dinâmicos; e a verificação de URIs não padronizados foi reforçada.

Do outras mudanças que se destacam desta nova versão:

  • O prefixo "@virt" pode ser usado para criar mapas virtuais e arquivos ACL que não são salvos em disco, com conteúdo gerenciado por meio da API Runtime.
  • Está disponível o prefixo “@opt” que utiliza arquivos virtuais apenas se não houver arquivos reais no disco.
  •  A análise agora é mais rigorosa durante o processamento HTTP/1 para validação de destino de solicitação.
  • Foram introduzidas diretivas globais (códigos de erro http e códigos de falha http) que permitem definir os códigos de status HTTP a serem rastreados.
  • O método uuid Fetch agora recebe um argumento opcional que define a versão do UUID como 4 ou 7
  • O desempenho de scripts Lua de thread único carregados usando a diretiva "lua-load" foi significativamente melhorado.
  • A formatação de linhas de log em JSON e CBOR agora é suportada.
  • Agora é possível criar identificadores no formato UUIDv7.

finalmente se você está interessado em saber mais sobre isso, você pode verificar os detalhes no link a seguir