Chinaunix
标题:
haproxy反向代理和负载均衡
[打印本页]
作者:
minuteman
时间:
2008-12-24 16:07
标题:
haproxy反向代理和负载均衡
今天有空尝试了一下,haproxy反向代理,根据HTTP请求的主机头及请求URL进行后端服务器的选择,实现类似7层交换的功能。
定义好frontend和backend,用ACL+use_backend进行匹配,配置文件的条理还是很清晰的。负载均衡可以有多种方式:
1、简单的轮询,balance roundrobin;
2、根据请求的源IP,balance source;
3、根据请求的uri,balance uri;
4、根据请求RUL中的参数,balance url_param。
在上述方式的同时,还可以根据cookie来保持同一会话落在特定的后端服务器上。
配置例子如下:
global
maxconn 5120
chroot /usr/local/haproxy
uid 502
gid 502
daemon
frontend webserver
bind :80
mode http
log global
option httplog
option dontlognull
option allbackups
monitor-uri /monitoruri
maxconn 8000
clitimeout 30000
acl mysite hdr_dom(host) -i
www.2tutu.com
acl status hdr_dom(host) -i stat.2tutu.com
acl statcs url_reg \.(jpg|html|htm|png|gif|css|shtml)$
use_backend caches if mysite statcs
#以.jpg等结尾的URL为静态内容,将请求落到运行在8081端口上的varnish
use_backend servers1 if mysite !statcs
#其他相同主机头的非静态内容,将请求落到运行在8080端口上的web服务上
use_backend stats if status
#状态查看页面的后端
default_backend servers0
backend servers0
mode http
balance roundrobin
contimeout 30000
srvtimeout 30000
redispatch
retries 2
option redispatch
cookie DYNSRV insert indirect nocache
fullconn 4000
server wwwserver1 192.168.1.10:80 minconn 50 maxconn 500 cookie s1 check inter 1000
#可以继续增加其他服务器作为负载均衡池里的节点
backend servers1
mode http
balance roundrobin
contimeout 5000
srvtimeout 5000
redispatch
cookie DYNSRV insert indirect nocache
server server1 127.0.0.1:8080 check cookie first inter 1000
#可以继续增加其他服务器作为负载均衡池里的节点
#server server1 192.168.1.11:8080 check cookie second inter 1000
#轮询的同时,根据插入的cookie DYNSRV 的值来做会话保持。
backend caches
mode http
balance roundrobin
contimeout 5000
srvtimeout 5000
redispatch
server server1 127.0.0.1:8081 check inter 1000
#可以继续增加其他服务器作为负载均衡池里的节点
#server server1 127.0.0.1:8082 check inter 1000
backend stats
log global
mode http
stats uri /
balance roundrobin
可以通过stat.2tutu.com访问到状态页面
作者:
myfreeke
时间:
2008-12-25 10:15
支持老大
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2