linux HAproxy

发布时间 2023-07-07 17:29:44作者: 纸签

 HAproxy服务可以完成负载均衡,和反向代理,不仅可以完成几十万的高并发请求,而且可以完成保护真实服务器。

 

目录

一、HAProxy 概念

二、HAProxy 主要特性

三、HAProxy 负载均衡策略

四、LVS、nginx和HAProxy区别

五、部署HAproxy

六、日志分析

七、总结

 

 

 

 

 

 

 

 

一、HAProxy 概念

  1.HAproxy概念

    (1)HAproxy是一种高性能、开源的负载均衡器和代理服务器,通常用于将客户端请求分发到多个后端服务器上。HAproxy主要用于提高应用程序的可用性、灵活性和性能,以及保护后端服务器免受攻击。

    (2)HAproxy通常被用作Web应用程序的负载均衡器,可以通过多种算法(例如轮询、IP散列或最少连接数)将请求分发到多个服务器上。HAproxy还可以进行会话保持,确保客户端的请求始终被发送到同一台服务器。此外,HAproxy还提供了一些高级功能,如SSL终止、HTTP2支持、健康检查和动态配置等。

    (3)HAproxy的性能非常卓越,能够处理大量的并发连接和高流量,同时保持响应速度快和低延迟。它还支持多种操作系统和平台,并且可以与各种第三方工具和技术集成,例如Docker、Kubernetes、Prometheus、Grafana等。

二、HAProxy 主要特性

    1.可靠性和稳定性非常好,可以与硬件级的F5负载均衡设备相媲美;
    2.最高可以同时维护40000-50000个并发连接,单位时间内处理的最大请求数为20000个,最大处理能力可达10Git/s;
    3.支持多达8种负载均衡算法,同时也支持会话保持;
    4.支持虚机主机功能,从而实现web负载均衡更加灵活;
    5.支持连接拒绝、全透明代理等独特的功能;
    6.拥有强大的ACL支持,用于访问控制;
    7.其独特的弹性二叉树数据结构,使数据结构的复杂性上升到了0(1),即数据的查寻速度不会随着数据条目的增加而速度有所下降;
    8.支持客户端的keepalive功能,减少客户端与haproxy的多次三次握手导致资源浪费,让多个请求在一个tcp连接中完成;
    9.支持TCP加速,零复制功能,类似于mmap机制;
    10.支持响应池(response buffering);
    11.支持RDP协议;
    12.基于源的粘性,类似nginx的ip_hash功能,把来自同一客户端的请求在一定时间内始终调度到上游的同一服务器;
    13.更好统计数据接口,其web接口显示后端集群中各个服务器的接收、发送、拒绝、错误等数据的统计信息;
    13.详细的健康状态检测,web接口中有关于对上游服务器的健康检测状态,并提供了一定的管理功能;
    14.基于流量的健康评估机制;
    15.基于http认证;
    16.基于命令行的管理接口;
    17.日志分析器,可对日志进行分析。

  

三、HAProxy 负载均衡策略

       (1)roundrobin,表示简单的轮询

       (2)static-rr,表示根据权重
    (3)leastconn,表示最少连接者先处理
    (4)source,表示根据请求源IP
    (5)uri,表示根据请求的URI,做cdn需使用;
    (6)url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name
    (7)hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
    (8)rdp-cookie(name),表示根据cookie(name)来锁定并哈希每一次TCP请求。

 

四、LVS、nginx和HAProxy区别

   1.LVS(Linux Virtual Server)是一种基于Linux内核实现的负载均衡器,可以将请求分发到多个后端服务器上。LVS支持多种负载均衡算法,如轮询、IP散列、最少连接数等。LVS的优点是高性能、稳定性好,但需要对内核进行定制和配置。

      2.nginx是一种高性能的Web服务器和LVS适用于大规模分布式系统的负载均衡,nginx适用于静态资源缓存和反向代理等场景,HAProxy适用于Web应用程序的负载均衡和代理等场景。在实际应用中,可以根据具体的需求和场景选择适合的负载均衡器。反向代理服务器,也可以用作负载均衡器。nginx支持多种负载均衡算法,如轮询、IP散列、最少连接数等。nginx的优点是性能好、可靠性高、功能齐全,常用于静态资源缓存和反向代理等场景

     3.HAProxy是一种高性能、开源的负载均衡器和代理服务器,通常用于将客户端请求分发到多个后端服务器上。HAProxy支持多种负载均衡算法,如轮询、IP散列、最少连接数等。HAProxy的优点是性能好、功能强大、配置灵活,可以用于各种负载均衡场景。

 

    nginx
    ① 支持正则
    ② 只支持基于端口的健康检查
    ③ 不支持session直接保持、但能通过ip_hash来解决
    ④ 对网络稳定性要求不高
    ⑤ 反向代理能力强

    LVS
    ① 只能基于四层端口转发
    ② 尽在四层做分发作用 抗负载能力强
    ③ 应用范围广

    haproxy
    ① 支持8中负载均衡策略
    ② 仅作负载均衡软件使用,在高并发情况下性能优于nginx
    ③ 支持URL检测 支持session保持

  总结:LVS适用于大规模分布式系统的负载均衡,nginx适用于静态资源缓存和反向代理等场景,HAProxy适用于Web应用程序的负载均衡和代理等场景。在实际应用中,可以根据具体的需求和场景选择适合的负载均衡器。

 

五、部署HAproxy

  部署图如下:  

   1.关闭防火墙,将安装Haproxy所需软件包传到/opt目录下

    

   2.编译安装 Haproxy

    先安装Haproxy依赖包,工具软件

     解压包到指定文件夹/opt

       进入软件包,编译文件,安装模块

     安装

   3.Haproxy服务器配置

      将配置文件复制到指定文件

   配置文件

 

 

     4.添加haproxy 系统服务

  

     节点服务器部署

   

     --192.168.140.222---

 

     --192.168.140.223---

 

 

 

 

 

 

六、日志分析

  1.日志分析

    为了更好地管理HAProxy的日志,在生产环境中一般会单独定义日志文件,将HAProxy的info和notice级别的日志分别记录到不同的日志文件中。这样可以方便管理员进行日志管理和分析,提高系统的可靠性和稳定性。

默认情况下,HAProxy的日志会输出到系统的syslog中,查看起来不是非常方便。因此,需要通过在HAProxy配置文件中定义日志配置来将日志记录到指定的日志文件中。具体来说,可以使用HAProxy的log指令来定义日志格式和文件路径,以将日志输出到指定的文件中。

 

   2.配置日志

 

   配置日志文件位置

 

   必须要访问才可以生产日志文件。

七、总结

     HAproxy服务,可以完成负载均衡的,和nginx功能一样。但是再服务器中配置HAProxy服务时,不可配置nginx,会发生冲突,要将nginx端口删掉。HAProxy可以完成几十万的高并发,支持正则表达式,和网页服务统计,还可以做保护真实服务器的安全。