HTTP/TCP平衡器HAProxy 2.0发布

发表 负载均衡器发布 高可用性代理 2.0,它允许您在一组服务器之间分配 HTTP 流量和任意 TCP 请求,考虑到许多因素(例如,它检查服务器的可用性、评估负载水平、具有 DDoS 对策)并执行初级数据过滤(例如,您可以解析 HTTP 标头、过滤传输不正确的查询参数、阻止 SQL 和 XSS 替换、连接内容处理代理)。 HAProxy还可以 应用 协调基于微服务架构的系统中组件的交互。 项目代码是用C语言编写的 提供 根据 GPLv2 许可。 该项目已在许多大型网站上使用,包括 Airbnb、阿里巴巴、GitHub、Imgur、Instagram、Reddit、StackOverflow、Tumblr、Twitter 和 Vimeo。

主要发布功能:

  • 推出新 API 流量套餐,它允许您通过 REST Web API 动态管理 HAProxy 设置。 包括,您可以动态添加和删除后端和服务器、创建 ACL、更改请求路由、更改与 IP 的处理程序绑定;
  • 添加了 nbthread 指令,它允许您配置 HAProxy 中使用的线程数以优化多核 CPU 的性能。 默认情况下,工作线程数根据当前环境中可用的 CPU 核心数进行选择,在云环境中默认为 XNUMX 个线程。 为了设置硬限制,添加了汇编选项 MAX_THREADS 和 MAX_PROCS,限制线程和进程数量的上限;
  • 用于将处理程序绑定到网络地址的绑定指令的使用已得到简化。 设置时,不再需要定义进程参数 - 默认情况下,连接将根据活动连接的数量在线程之间分配。
  • 在隔离容器中运行时设置日志已得到简化 - 日志现在可以发送到 stdout 和 stderr,以及任何现有的文件描述符(例如,“log fd@1 local0”);
  • 默认启用对 HTX(本机 HTTP 表示)的支持,允许在使用端到端 HTTP/2、第 7 层重试和 gRPC 等高级功能时进行平衡。 HTX 不会就地替换标头,而是将修改操作减少为删除并在列表末尾添加新标头,这允许您操作 HTTP 协议的任何扩展变体,保留标头的原始语义并允许您在将 HTTP/2 转换为 HTTP/1.1 时实现更高的性能,反之亦然;
  • 添加了对端到端 HTTP/2 模式的官方支持(处理 HTTP/2 中的所有阶段,包括对后端的调用,而不仅仅是代理和客户端之间的交互);
  • 已实现对 gRPC 协议双向代理的全面支持,能够解析 gRPC 流、突出显示单个消息、在日志中反映 gRPC 流量以及使用 ACL 过滤消息。 gRPC 允许您使用各种编程语言组织微服务的工作,这些语言使用通用 API 相互交互。 gRPC 中的网络通信是在 HTTP/2 协议之上实现的,并且基于使用 Protocol Buffer 进行数据序列化。
  • 添加了对“第 7 层重试”模式的支持,该模式允许您在出现与建立网络连接问题无关的软件故障时发送重复的 HTTP 请求(例如,如果没有响应或对空响应) POST 请求)。 要禁用该模式,“http-request”选项中添加了“disable-l7-retry”标志,并且添加了“retry-on”选项以在默认、监听和后端部分进行微调。 以下标志可用于重发:all-retryable-errors、none、conn-failure、empty-response、junk-response、response-timeout、0rtt-rejected,以及绑定到返回状态代码(404 等) ;
  • 已经实现了一个新的进程管理器,它允许您使用 HAProxy 的处理程序配置调用外部可执行文件。
    例如,Data Plan API(/usr/sbin/dataplaneapi),以及各种Offload流处理引擎,都是以这样的外部处理程序的形式实现的;

  • 添加了对 .NET Core、Go、Lua 和 Python 的绑定,用于开发 SPOE(流处理卸载引擎)和 SPOP(流处理卸载协议)扩展。 此前,扩展开发仅支持 C 语言;
  • 添加了外部 spoa-mirror 处理程序 (/usr/sbin/spoa-mirror),用于将请求镜像到单独的服务器(例如,复制部分生产流量以在实际负载下测试实验环境);
  • 由...所提交 HAProxy Kubernetes 入口控制器 确保与 Kubernetes 平台集成;
  • 添加了对将统计数据导出到监控系统的内置支持 普罗米修斯;
  • 用于与运行 HAProxy 的其他节点交换信息的对等协议已得到扩展。 包括增加了对Heartbeat和加密数据传输的支持;
  • “log”指令中添加了“sample”参数,允许您仅将部分请求转储到日志中,例如十分之一,以形成分析样本;
  • 添加了自动分析模式(profiling.tasks指令,可以取值auto、on和off)。 如果平均延迟超过 1000 毫秒,则会启用自动分析。 要查看分析数据,“show profiling”命令已添加到运行时 API 中,或者可以将统计信息重置到日志中;
  • 新增支持使用SOCKS4协议访问后端服务器;
  • 添加了对快速打开 TCP 连接的机制的端到端支持(TFO - TCP Fast Open,RFC 7413),它允许您通过将第一个请求合并为一个请求和第二个步骤来减少连接建立步骤的数量。经典的三步连接协商过程,使得在建立连接的初始阶段发送数据成为可能;
  • 添加了新动作:
    • “http-request Replace-uri”使用正则表达式替换URL;
    • “tcp-request content do-resolve”和“http-request do-resolve”用于解析主机名;
    • “tcp-request content set-dst”和“tcp-request content set-dst-port”替换目标IP地址和端口。
  • 添加了新的转换模块:
    • aes_gcm_dev 用于使用 AES128-GCM、AES192-GCM 和 AES256-GCM 算法解密流;
    • protobuf 从 Protocol Buffers 消息中提取字段;
    • ungrpc 从 gRPC 消息中提取字段。

    来源: opennet.ru

添加评论