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

[经验分享] [转载] HAproxy健康检测机制

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-9-5 07:23:32 | 显示全部楼层 |阅读模式
  http://blog.chinaunix.net/uid-10249062-id-163273.html
  
  备注:HAProxy版本为1.4.6
1 概述
  HAProxy作为Loadbalance,支持对backend的健康检查,以保证在后端backend不能服务时,把从frotend进来的request分配至可以其它可服务的backend,从而保证整体服务的可用性。
2 相关配置

  •   option httpchk <method> <uri> <version>
  启用七层健康检测

  •   http-check disable-on-404
  如果backend返回404,则除了长连接之外的后续请求将不被分配至该backend

  •   http-check send-state
  增加一个header,同步HAProxy中看到的backend状态。该header为server可见。 X-Haproxy-Server-State: UP 2/3; name=bck/srv2; node=lb1; weight=1/2; scur=13/22; qcur=0

  •   server option
  check:启用健康检测
  inter:健康检测间隔
  rise:检测服务可用的连续次数
  fall:检测服务不可用的连续次数
  error-limit:往server写数据连续失败的次数上限,执行on-error的设定
  observe <mode>:把正常服务过程作为健康检测请求,即实时检测
  on-error <mode>:满足error-limit后执行的操作(fastinter、fail-check、sudden-death、mark-down) 。其中fastinter表示立即按照fastinter的检测延时进行。fail-check表示改次error作为一次检测;sudden-death表示模仿一次fatal,如果紧接着一次fail则置server为down;mark-down表示直接把server置为down状态。

  •   其它
  retries:连接失败重试的次数,如果重试该次数后还不能正常服务,则断开连接。
3 检测机制
3.1 相关数据结构
  struct server {
  ......
  int health; /* 0->rise-1 = bad; rise->rise+fall-1 = good */
  int consecutive_errors; /* current number of consecutive errors */
  int rise, fall; /* time in iterations */
  int consecutive_errors_limit; /* number of consecutive errors that triggers an event */
  short observe, onerror; /* observing mode: one of HANA_OBS_*; what to do on error: on of ANA_ONERR_* */
  int inter, fastinter, downinter; /* checks: time in milliseconds */
  ......
  }
3.2 check流程
DSC0000.png

3.3 server状态切换条件

  •   UP-->DOWN
      初始为s->health=s->rise;
      if (s->health < s->rise + s->fall – 1) then s->health = s->rise + s->fall – 1;
      check失败:s->health--
      if (s->health <= s->rise) then set_server_down(), s->health = 0;
  •   DOWN-->UP
  初始为s->health=0;
  check成功:s->health++
  if (s->health == s->rise) then set_server_up(), s->health = s->rise + s->fall – 1;
3.4 observe机制
  observe机制是分析请求服务过程中发生错误的时候调用heath_adjust函数来实时更新check机制中的相关计数。其跟check机制的区别在于,check机制只通过定时检测。observe机制基于check机制。在不同的on-error(mode)情况下对s->health的影响如下:
  备注:执行on-error(mode)的前提是
  s->consecutive_errors < s->consecutive_errors_limit(连接失败的次数超过了上限)

  •   fastinter
  不修改s->health值,但是会调整check出发的时间,时间为间隔fastinter后的数字。

  •   fail-check
  把本次连接的失败作为1次check,s->health--

  •   sudden-death
  把本次连接作为1次致命的失败,s->health = s->rise + 1,如下次还失败则置为DOWN

  •   mark-down
  本次连接失败后,直接把后端server置为DOWN

运维网声明 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-109518-1-1.html 上篇帖子: 使用HAProxy、PHP、Redis和MySQL支撑每周10亿请求 下篇帖子: 坚持不懈之linux haproxy的配置文件关键字查询手册
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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