haproxy是一种免费、可靠的解决方案 。用于提供高可用、负载均衡和代理服务,尤其适用于高负载且需要持久连接或7层处理机制的web站点

下面从其基本配置,开启日志功能,统计页面输出相关配置,基于ACL实现动静分离 来演示其功能


haproxy基本配置

haproxy

172.16.15.17
vip (eth1) 192.168.20.1
node1 192.168.20.11
node2 192.168.20.12

haproxy 配两个块网卡

后端两台服务器添加网关 指向192.168.20.1 添加主页

编辑配置文件

frontend websrv *:80        default_backend webserversbackend webservers        balance roundrobin        server node1 192.168.20.11:80 check        server node2 192.168.20.12:80 check

启动haproxy 访问172.16.15.17 轮巡访问到node1和node2的主页


开启日志

配置文件中全局端

log         127.0.0.1 local2

service rsyslog restart  重启日志服务
service haproxy restart

如果在frontend 下添加下面内容

 log     127.0.0.1 local3

再进行上面操作 则可为单独个frontend 代理记录日志


统计页面输出相关设置

1、stats enable

不能用在frontend

在backend webservers 下面添加 stats enable

登录 172.16.15.17/haproxy?stats

2、stats auth  进行认证

在stats enable下添加 stats auth tom:tom (假如用户名是tom 密码也是tom)

3、stats uri  

如果进一步进行安全设置 更换访问路径 可以用stats uri

在stats enable 下面添加 stats uri /jerry?stats 那么再访问172.16.15.17/haproxy?stats将是404 Not Found

4、更改自定义端口

listen  statistics

       bind *:4454

       stats enable

5、stats version 隐藏版本

listen  statistics        bind *:4454        stats enable        stats uri /jerry?stats        stats hide-version

6、stats admin  启用管理接口


基于ACL实现动静分离

访问静态页面和动态页面分别定向到特定的服务器

先在node1 和node2上都提供静态和动态页面访问文件

node1

node2

编辑配置文件

frontend  websrv        bind *:80    acl url_static       path_beg       -i /static /p_w_picpaths /javascript /stylesheets    acl url_static       path_end       -i .jpg .gif .png .css .js .html    acl host_static      hdr_beg(host) -i img. video. down. ftp. imgs. p_w_picpath. videos.    acl url_php         path_end        -i .php    use_backend static          if url_static or host_static   use_backend dynamic          if url_php    default_backend             dynamicackend static    balance     roundrobin    server      node2 192.168.20.12:80  checkackend dynamic    balance     roundrobin    server      node1 192.168.20.11:80  check

根据文件配置 虽然两个后端服务器都提供了动态和静态文件 但是访问静态时由node2来提供 访问动态页面时由node1提供