haproxy常用算法:

一、roundrobin,表示简单的轮询,这个不多说,这个是基本都具备的;

二、static-rr,表示根据权重,建议关注;

三、leastconn,表示最少连接者先处理,建议关注;

四、source,表示根据请求源IP,建议关注;

五、uri,表示根据请求的URI;

六、url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name

七、hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;

八、rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求。

   

      其实这些算法各有各的用法,我们平时应用得比较多的应该是roundrobin、source和lestconn,大家可以重点关注下。

环境说明:

IP 192.168.2.205       haproxy服务器

IP 192.168.2.206       httpd服务器

IP 192.168.2.207       lamp服务器

IP 192.168.2.103       windows客户端

 

一、完成状态页实验

1、
 
配置haproxy.cfg
文件

listen stats

    mode http
    bind *:1080
    stats enable
    stats hide-version
    stats uri /haproxyadmin?stats
    stats realm Haproxy\ Statistics
    stats auth admin:kevin
    stats auth kevin:skymobi
    stats admin if TRUE 

    acl statsrc src 192.168.2.0/24

    http-request allow if statsrc
    http-request deny

 

二、反向代理实验+sesion绑定+负载均衡实验

1、不考虑session会话配置

配置haproxy.cfg:


frontend  main *:80

    default_backend             webserver
backend webserver
    balance     roundrobin
    server  httpd1 192.168.2.206:80 check
    server  httpd2 192.168.2.207:80 check


 

2、通过源ip绑定的方式来解决sesion会话

配置haproxy.cfg


frontend  main *:80

    default_backend             webserver
backend webserver
    balance     source
    server  httpd1 192.168.2.206:80 check
    server  httpd2 192.168.2.207:80 check


 

3、通过roundrobin+cookie的方式来解决sesion会话

配置haproxy.cfg


frontend  main *:80

    default_backend             webserver
backend webserver
    balance     source
       cookie  LAMP insert indirect nocache
       server  httpd1 192.168.2.206:80 cookie httpd1 check
       server  httpd2 192.168.2.207:80 cookie httpd2 check


4、通过rui的方式来将访问同一个url的请求,代理给同一台主机

配置haproxy.cfg:


frontend  main *:80

    default_backend             webserver
backend webserver
    balance     uri
    server  httpd1 192.168.2.206:80 check
    server  httpd2 192.168.2.207:80 check


三、三台主机,完成web请求的动静分离实验

1192.168.2.206安装httpd

2192.168.2.207安装lamp

3lamp配置php访问页面:

<?php

     $conn = mysql_connect('localhost','root','');
     if ($conn)
           echo "192.168.2.207 : success";
     else  
           echo "192.168.2.207 : failed";
     mysql_close();
     phpinfo();
?>


4haproxy配置修改:


frontend main *:80

     acl url_static  path_beg    -i /static /p_w_picpaths /javascript /style  sheets
     acl url_static   path_end    -i .jpg .gif .png .css .js .html
     use_backend static    if url_static
     default_backend     lamp
backend static
     balance   roundrobin
     server    static 192.168.2.206:80 check
backend lamp
     balance   roundrobin
     server    lamp 192.168.2.207:80 check