HAProxy介绍

发布日期:2018-02-24    浏览次数:444

HAProxy介绍

HAProxy

    HAProxy: 是法国人Willy Tarreau 开发的一个开源软件,是一 款应对客户端10000 以上的同时连接的高性能的TCP和HTTP 负载均衡器。 
    其功能是用来提供基于cookie的持久性,基于内容的交换,过载保护的高级流量管制,自动故障切换,以正则表达式为基础的标题控制运行时间,基于Web 的报表,高级日志记录以帮助排除故障的应用或网络及其他功能。
     LB Cluster:
        四层:lvs, nginx(stream) ,haproxy(mode tcp)
        七层:http: nginx(http), haproxy(mode http), httpd...
     HAProxy :http://www.haproxy.org
     文档:https://cbonte.github.io/haproxy-dconv/
    软件负载均衡一般通过两种方式来实现:
        基于操作系统的软负载实现和基于第三方应用的软负载实现。
        LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。
    HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件。
    HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。

HAProxy支持两种主要的代理模式

    TCP  即4层 (大多用于邮件服务器、内部协议通信服务器等),在4层模式下,HAProxy仅在客户端和服务器之间转发双向流量。
        它主要是通过分析IP层及TCP/UDP层的流量实现的基于IP加端口的负载均衡。
        仅建立一次TCP连接。
    HTTP 即7层模式,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或删除请求 (request)或者回应(response)里指定内容来控制协议,
      七层负载均衡器可以根据报文内容,再配合负载均衡算法来选择后端服务器,因此也称为“内容交换器”。
        负载均衡器与客户端及后端的服务器会分别建立一次TCP连接
    七层负载均衡对负载均衡设备的要求更高,而七层负载均 衡的处理能力也必然低于四层模式的负载均衡。

HAProxy负载均衡策略非常多

    HAProxy的负载均衡算法现在具体有如下8种:
    roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
    static-rr,表示根据权重,建议关注;
    leastconn,表示最少连接者先处理,建议关注;
    source,表示根据请求源IP,这个跟Nginx的IP_hash机制类似,我们用其作为解决session问题的一种方法,建议关注;
    ri,表示根据请求的URI;
    rl_param,表示根据请求的URl参数’balance url_param’ requires an URL parameter name;
    hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
    rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

HAProxy优缺点

    HAProxy的优点
      1、HAProxy是支持虚拟主机的,通过frontend指令来实现
      2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作
      3、支持url检测后端的服务器出问题的检测会有很好的帮助。
      4、它跟LVS一样,本身仅仅就只是一款负载均衡软件,单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
      5、HAProxy支持TCP协议的负载均衡转发,可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS
      6、能对请求的url和header中的信息做匹配,有比LVS有更好的7层实现
           7、自带强大的监控服务器状态的页面。
    HAProyx的缺点
        1、重载配置的功能需要重启进程,虽然也是 soft restart,但没有 Nginx 的 reaload 更为平滑和友好。
        2、多进程模式支持不够好。
        3、不支持 HTTP cache 功能,现在不少开源的 lb 项目,都或多或少具备 HTTP cache 功能。

HAProxy功能

    HAProxy 是TCP / HTTP 反向代理服务器,尤其适合于高可用性环境。
        可以针对HTTP 请求添加cookie,进行路由后端服务器
        可平衡负载至后端服务器,并支持持久连接
        支持基于cookie 进行调度
        支持所有主服务器故障切换至备用服务器
        支持专用端口实现监控服务
        支持不影响现有连接情况下停止接受新连接请求
        可以在双向添加,修改或删除HTTP 报文首部
        支持基于pattern 实现连接请求的访问控制
        通过特定的URI 为授权用户提供详细的状态信息
        支持http 反向代理
        支持动态程序的反向代理
        支持基于数据库的反向代理
        
    

HAProxy 组成

    程序环境:
        yum install  haproxy
        rpm -ql haproxy
            /etc/haproxy
            /etc/haproxy/haproxy.cfg
            /etc/logrotate.d/haproxy
            /etc/rc.d/init.d/haproxy
            /etc/sysconfig/haproxy
            /usr/bin/halog
            /usr/bin/iprange
            /usr/sbin/haproxy
            /usr/share/doc/haproxy-1.5.18
            /usr/share/haproxy
            /var/lib/haproxy
        主程序:/usr/sbin/haproxy
        配置文件:/etc/haproxy/haproxy.cfg
        Unit file :/usr/lib/systemd/system/haproxy.service
    配置段:
        global :全局配置段
            进程及安全配置相关的参数
            性能调整相关参数
            Debug 参数
        proxies :代理配置段
            defaults :为frontend, backend, listen 提供默认配置
            fronted :前端,相当于nginx, server {}
            backend :后端,相当于nginx, upstream {}
            listen :同时拥有前端和后端,
    
    简单的配置示例:
        frontend web
            bind *:80
            default_backend websrvs
        backend websrvs
            balance roundrobin
            server srv1 172.16.0.6:80 check
            server srv2 172.16.0.7:80 check

本文网址:https://www.wyxxw.cn/blog-detail-22-25-505.html

返回列表

非特殊说明,本文版权归原作者所有,转载请注明出处

提示:本站所有资源仅供学习与参考,请勿用于商业用途。图片来自互联网~如侵犯您的权益,请联系QQ:1067507709.

提示:转载请注明来自:https://www.cnblogs.com/shenxm/p/8463555.html 。 转载人:momo