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 webserverbackend 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 webserverbackend 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 webserverbackend 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 webserverbackend 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 /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 lampbackend static balance roundrobin server static 192.168.2.206:80 checkbackend lamp balance roundrobin server lamp 192.168.2.207:80 check