Review: Nginx, 主动健康检查还是被动健康检查

原文:Active or Passive Health Checks: Which Is Right for You? - NGINX

Nginx有被动健康检查来保护你的应用用户当服务器不可用时,Nginx Plus提供了主动健康检查,发送特定的探针(probes)在处理请求失败前来监测到不健康的服务。

被动健康检查

默认情况下,当Nginx在建立与服务器之间的连接时出现了一个错误或超时时将会判断为不健康的服务。

主动健康检查

Nginx Plus独有的主动运行状态检查,定时发送一个特殊的请求道应用端,以确保其能够正确响应。

这个功能独立与被动健康检查,是其功能上的补充。

被动健康检查的使用

适合于:

  • 独立于应用程序的基础监测
  • 监控http流量
  • 监控延迟在可容忍范围内的应用程序
  • 监控在高性能方面没有要求的内部应用服务

主动健康检查的使用

对于一些核心应用程序,因为关键业务流程重要性和对客户会有直接影响,主动运行状态检查就显得至关重要了。在主动健康检查功能模块中,包含了许多Nginx开源版没有的特性和功能。

  • 针对应用程序的可用性,使用OOB 传输协议层外带数据来发送健康检查
  • 测试配置的终端并查找特定响应
  • 测试和处理真实应用流量使用不同的端口
  • Keepalive HTTP连接来实现健康检查,减少每一次启动新的检查时需要消耗
  • 有更好的对失败和成功的条件的控制
  • (可选)新添加的服务器在接收实际应用程序流量前会先测试服务器

这里先只介绍被动的http健康检查

upstream cluster{
    server 172.16.0.23:80  max_fails=1 fail_timeout=10s;
    server 172.16.0.24:80  max_fails=1 fail_timeout=10s;
   # fail_timeout为10s,max_fails为1次。
}
server {
    listen 80;
    server_name xxxxxxx.com; 
    location / {
      proxy_pass         http://cluster;
    }
}

  max_fails=1和fail_timeout=10s 表示在单位周期为10s钟内,中达到1次连接失败,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。

nginx 处理节点失效和恢复的触发条件:

 nginx可以通过设置max_fails(最大尝试失败次数)和fail_timeout(失效时间,在到达最大尝试失败次数后,在fail_timeout的时间范围内节点被置为失效,除非所有节点都失效,否则该时间内,节点不进行恢复)对节点失败的尝试次数和失效时间进行设置,

 当超过最大尝试次数或失效时间未超过配置失效时间,则nginx会对节点状会置为失效状态,nginx不对该后端进行连接,直到超过失效时间或者所有节点都失效后,该节点重新置为有效,重新探测;

所有节点失效后nginx将重新恢复所有节点进行探测:

 如果探测所有节点均失效,备机也为失效时,那么nginx会对所有节点恢复为有效,重新尝试探测有效节点,如果探测到有效节点则返回正确节点内容,如果还是全部错误,那么继续探测下去,

 当没有正确信息时,节点失效时默认返回状态为502,但是下次访问节点时会继续探测正确节点,直到找到正确的为止。

你可能感兴趣的:(2023ARTS打卡,nginx,运维)