url hash,相同的uri总是转到同一台服务器上,这样haproxy后面多台缓存服务器,每台缓存的内容都是不一样的,用来增加缓存命中率

 

haproxy balance 为 roundrobin,未使用url hash 平均分给 cache1与 cache2 服务器

B4-haproxy_url-hash_第1张图片

haproxy balance 为 uri,此url 请求全部转给 cache2 服务器

B4-haproxy_url-hash_第2张图片

haproxy 配置

   
   
   
   
  1. backend cache.test.com 
  2.         option  forwardfor 
  3.         balance uri len 15 #url hash 
  4.         #option  httpchk HEAD /check.html 
  5.         server server1 10.0.100.73:80  check inter 2000 rise 3 fall 3 weight 3 
  6.         server server2 10.0.100.75:80  check 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. 1 roundrobin,表示简单的轮询,这个不多说,这个是负载均衡基本都具备的; 
  2. 2 static-rr,表示根据权重,建议关注; 
  3. 3 leastconn,表示最少连接者先处理,建议关注; 
  4. 4 source,表示根据请求源IP,建议关注; 
  5. 5 uri,表示根据请求的URI; 
  6. 6 url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name 
  7. 7 hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求; 
  8. 8 rdp-cookie(name),表示根据据cookie(name)来锁定并哈希每一次TCP请求 


结束

更多欢迎到此讨论:

37275208