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请求的动静分离实验
1、192.168.2.206安装httpd
2、192.168.2.207安装lamp
3、lamp配置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();
?>
4、haproxy配置修改:
frontend main *:80
acl url_static path_beg -i /static /images /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