设为首页 收藏本站
查看: 1033|回复: 0

[经验分享] haproxy调度算法

[复制链接]

尚未签到

发表于 2019-1-1 11:39:07 | 显示全部楼层 |阅读模式
  在使用haproxy时在backend段会用到balance以指明用何种方式实现后端服务器的调度。
  balance:指明调度算法
  动态算法:权重可以动态调整
  静态算法:调整权重不会实时生效,只能重启才能生效
  balance的算法有:roundrobin,static-rr,leastconn,source,uri,uri_param,hdr等
  roundrobin算法:
  轮询,基于权重进行轮询,此算法是动态的,每个后端服务器仅能最多接受4128个连接;
  要求后端不能有状态及会话方面的等,只能是静态的页面
  当后端有会话等动态信息时,结合cookie使用,效果最佳
  static-rr算法:
  静态的roundrobin,不支持动态调整;静态算法,每个后端主机支持的数量无上限;
  leastconn算法:
  根据后端主机的负载数量进行调度,新的连接请求被派发至具有最少连接数目的后端服务器;
  在长连接会话的场景中推荐使用此法,不适用http,动态算法
  source算法:
  将请求的源地址进行hash运算;由后端服务器的权重总数相除后派发至某匹配的服务器,此方法可以让   同一个IP的请求发往同一个服务器;不过,当服务器权重总数发生变化时,如某服务器宕机或添加了   新的服务器,许多客户端的请求可能会被派发至与此前请求不同的服务器;常用于负载均衡无cookie   功能的基于TCP的协议;其默认为静态,不过也可以使用hash-type修改此特性;
  hash-type:
  map-based:取模法(除模取余法);(静态的,默认的)
  consistent:一致性哈希法;(动态的,使后时需要指定:hash-type consistent)
  uri算法:
  对URI的左半部分(“问号”标记之前的部分)或整个URI进行hash运算,并由服务器的总权重相除后派 发至某匹配的服务器;这可以使得对同一个URI的请求总是被派发至某特定的服务器,除非服务器的权重总数发生了变化;此算法常用于代理缓存或反病毒代理以提高缓存的命中率
  例:http://www.baidu.com/abc/query?item=123  #红色标记的部分是uri部分
  hash-type:
    map-based:取模法(除模取余法);(静态的,默认的)
    consistent:一致性哈希法;(动态的,使后时需要指定:hash-type consistent)
  注:用到uri时,当访问过后端某个页面后,后面所有此页面的请求都发至此服务器
  当未访问过后端某个页面时,采用roundrobin算法,随机挑选一个响应,并且随后所有的此页面的请求都发至此主机,这种算法,当后端缓存时非常有效果!!!!
  roundrobin算法结合cookie的用法:
  cookie的作用是基本浏览器实现session sticky;

  cookie的使用方法:cookie  [rewrite|insert|prefix] [indirect] [nocache]
  [rewrite|insert|prefix]:添加cookie的方式
  rewrite:把原有的cookie替换
  insert:在原有的cookie后中插入 #此种方式最为常用
  prefix:在原有的cookie前插入
  cookie常使用的方式:
  cookie SERVERID insert indirect nocache
  注:
  a.SERVERID,是自己随便指定的,在下面的例子中就是SERVERID=websrv1,SERVERID=websrv2;insert:表示插入原有cookie后边
  b.不根据源IP进行绑定,根据不同客户端的进行绑定,这种方式我感觉比source要好,因为source是把同一IP的发往同一后端服务器;根据不同客户端绑定,可以实现同一个公网IP的用户,请求发送到不同的后端
  c.roundrobin算法,结合cookie这种方式可以进行尝试;这种方式弥补了roundrobin不保持会话的缺点
  用法实例:
  balance roundrobin
  cookie SERVERID insert indirect
  server web1 192.168.0.100 check weight 1 cookie websrv1
  server web2 192.168.0.101 check weight 3 cookie websrv2
  注:websrv1:是web1专有的cookie标识符,在客户端浏览器的cookie中可以看到
  websrv2:是web2专有的cookie标识符,在客户端浏览器的cookie中可以看到
  最常用的算法为:
  roundrobin
  source
  uri




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-658227-1-1.html 上篇帖子: HAProxy杂记(1) 下篇帖子: Haproxy URL重写
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表