B4
url hash,相同的uri总是转到同一台服务器上,这样haproxy后面多台缓存服务器,每台缓存的内容都是不一样的,用来增加缓存命中率。haproxy balance 为 roundrobin,未使用url hash 平均分给 cache1与 cache2 服务器
http://blog.运维网.com/attachment/201206/161120218.png
haproxy balance 为 uri,此url 请求全部转给 cache2 服务器
http://blog.运维网.com/attachment/201206/161343210.png
haproxy 配置
[*]backend cache.test.com
[*] optionforwardfor
[*] balance uri len 15 #url hash
[*] #optionhttpchk HEAD /check.html
[*] server server1 10.0.100.73:80check inter 2000 rise 3 fall 3 weight 3
[*] server server2 10.0.100.75:80check inter 2000 rise 3 fall 3 weight 3
uri 详解
对URI左端(问号之前)进行哈希,用可用服务器的权重总数除以哈希值,根据结果进行分配。只要服务器正常,同一个URI地址总是访问同一台服务器。一般用于代理缓存和反病毒代理,以最大限度的提高缓存的命中率。该算法只能用于HTTP后端。该算法默认是静态的,所以运行时修改服务器的权重是无效的,但是算法会根据"hash-type"的变化做调整。
算法支持两个可选参数"len" 和 "depth", 都是后跟正整数。“len”参数指定算法只处理URI从头开始的字符数,据此计算哈希。因为大多URI以"/"开头,所以"len"最好不要设为1。"depth" 参数指定URI中最大的路径深度,据此计算哈希。请求中的每个斜线为一级。如果同时声明了这两个参数,则截取URI时必须同时满足。
参考
HAProxy 配置手册 4.2 balance 相关
亚运赛事系统架构探索
Haproxy基于uri hash 选择后端cache server
图片服务器的url hash架构
HAProxy的8种算法:
[*]1 roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的;
[*]2 static-rr,表示根据权重,建议关注;
[*]3 leastconn,表示最少连接者先处理,建议关注;
[*]4 source,表示根据请求源IP,建议关注;
[*]5 uri,表示根据请求的URI;
[*]6 url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name
[*]7 hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
[*]8 rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求
结束
更多欢迎到此讨论:
37275208
页:
[1]