HaProxy

HaProxy基础讲解

作者:Danbo 时间:2015-7-23

Haproxy是一个开源的高性能的反向代理或者说是负载均衡服务软件之一,支持双机备份、虚拟主机、基于TCP和HTTP应用代理、具备图形界面等功能。等自动将后端故障服务器剔除,并在故障恢复后自动加入。
Haproxy特别适合那些访问量大,但又需要会话保持或七层应用的业务。它的运行模式使得他可以很简单安全的整合进各种网站的构建中,同时web服务器不被暴露到网络上。(NAT模式。)
frontend可以允许运维人员根据任意HTTP请求头内容做规则匹配,然后把请求定向到相关的backend(Server pools 等待前端把请求转过来的服务器组)。很容易实现七层的代理功能。
HaProxy支持两种代理模式:4层TCP代理(邮件、Mysql等)和七层(Http代理)。在四层TCP代理模式下,HaProxy仅客户端和服务器之间书安详转发流量,在7层代理模式先,HaProxy会分析应用层协议来做相应的控制。

Haproxy L4负载均衡不需要在RS端执行脚本,与F5等硬件负载均衡设备的使用方法在构架中的位置几乎一样。
其在网站构架图的位置如下图所示:

说明:由于HaProxy采用的是NAT模式,数据包来去都会经过HaProxy,因此在流量特别大的情况下,其性能不如LVS(VS-DR)。在一般的中小型公司,建议使用HaProxy做负载均衡。

HaProxy L7负载均衡应用构架拓扑
HaProxy的最大优点在于其7层的根据URL请求头应用过滤的功能,在生产环境中的高并发环境中HaProxy一般用在LVS软件的下一层,或者像官方推荐的那样可以挂载在硬件负载均衡NS、F5下使用。
其所在网站构架图中的位置如下图:

注意:这里7层的HaProxy仅仅是四层的LVS的一个RS,所以七层的HaProxy可以横向扩展,这样就避免了HaProxy相对于LVS的瓶颈问题。

1.安装HaProxy
tar -zxvf haproxy-1.4.24
cd haproxy-1.4.24
make TARGET=linux2632 PREFIX=/usr/local/haproxy
make install PREFIX=/usr/local/haproxy

2.配置
安装完毕后,进入安装目录的/uestc/tools/haproxy-1.5.14/examples将haproxy.cfg拷贝到/usr/local/haproxy目录下
这个配置文件内容如下:
[root@localhost haproxy]# cat -n haproxy.cfg
     1  # this config needs haproxy-1.1.28 or haproxy-1.2.1
     2
     3  global      #全局配置
     4          log 127.0.0.1   local0     #日志输出配置,所有日志都记录在本机,通过local0输出
     5          log 127.0.0.1   local1 notice      #记录notice信息
     6          #log loghost    local0 info   #记录info信息,当本机访问量很到的时候本机别开info,占用大量空间
     7          maxconn 4096      #最大连接数
     8          chroot /usr/share/haproxy
     9          uid 99      #所述运行的用户uid
    10          gid 99      #所述运行的用户组
    11          daemon     #以后台形式运行haproxy
    12          #debug     #调试模式,输出启动信息到标准输出
    13          #quiet      #安静模式,启动时无输出
    14          nbproc 2     #通过nbproc多设置几个haproxy并发进程,这样每个进程的task_queue相对就会减少很多,性能自然就能提高不少。
    15  defaults
    16          log     global
    17          mode    http          #所处理的类型,默认采用http模式,七层;可以配置成TCP模式,四层。
    18          option  httplog       #日志类型,采用httpdlog
    19          option  dontlognull
    20          retries 3       #3此链接失败就认为服务器不可用,主要通过后面的check检查。
    21          redispatch        #当serverid对应的服务器挂掉后,强制定向到其他健康服务器。
    22          maxconn 2000
    23          contimeout      5000       #连接超时时间
    24          clitimeout      50000       #客户端连接超时时间
    25          srvtimeout      50000      #服务器端连接超时时间
    26
    27  listen  appli1-rewrite 0.0.0.0:10001   40分钟。。ZL5-004-L4-7层负载均衡应用-haproxy应用实战讲解02
    28          cookie  SERVERID rewrite
    29          balance roundrobin    #算法轮训调度
    30          server  app1_1 192.168.34.23:8080 cookie app1inst1 check inter 2000 rise 2 fall 5
    31          server  app1_2 192.168.34.32:8080 cookie app1inst2 check inter 2000 rise 2 fall 5
    32          server  app1_3 192.168.34.27:8080 cookie app1inst3 check inter 2000 rise 2 fall 5
    33          server  app1_4 192.168.34.42:8080 cookie app1inst4 check inter 2000 rise 2 fall 5
    34
    35  listen  appli2-insert 0.0.0.0:10002
    36          option  httpchk
    37          balance roundrobin
    38          cookie  SERVERID insert indirect nocache
    39          server  inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
    40          server  inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
    41          capture cookie vgnvisitor= len 32
    42
    43          option  httpclose               # disable keep-alive
    44          rspidel ^Set-cookie:\ IP=       # do not let this cookie tell our internal IP address
    45
    46  listen  appli3-relais 0.0.0.0:10003
    47          dispatch 192.168.135.17:80
    48
    49  listen  appli4-backup 0.0.0.0:10004
    50          option  httpchk /index.html     #健康检查
    51          option  persist
    52          balance roundrobin
    53          server  inst1 192.168.114.56:80 check inter 2000 fall 3
    54          server  inst2 192.168.114.56:81 check inter 2000 fall 3 backup
    55
    56  listen  ssl-relay 0.0.0.0:8443
    57          option  ssl-hello-chk
    58          balance source
    59          server  inst1 192.168.110.56:443 check inter 2000 fall 3
    60          server  inst2 192.168.110.57:443 check inter 2000 fall 3
    61          server  back1 192.168.120.58:443 backup
    62
    63  listen  appli5-backup 0.0.0.0:10005
    64          option  httpchk *
    65          balance roundrobin
    66          cookie  SERVERID insert indirect nocache
    67          server  inst1 192.168.114.56:80 cookie server01 check inter 2000 fall 3
    68          server  inst2 192.168.114.56:81 cookie server02 check inter 2000 fall 3
    69          server  inst3 192.168.114.57:80 backup check inter 2000 fall 3
    70          capture cookie ASPSESSION len 32
    71          srvtimeout      20000
    72
    73          option  httpclose               # disable keep-alive
    74          option  checkcache              # block response if set-cookie & cacheable
    75
    76          rspidel ^Set-cookie:\ IP=       # do not let this cookie tell our internal IP address
    77
    78          errorloc        502     http://192.168.114.58/error502.html
    79          errorfile       503     /etc/haproxy/errors/503.http
    80

posted @ 2015-07-23 15:09  Danbocn  阅读(770)  评论(0编辑  收藏  举报