Nginx健康检查(health_check)实践

Nginx作为一个负责均衡和方向代理的服务器,已经被广大的互联网从业者们所使用。如图所示:

nginx作为接入层

使用nginx的好处是它自带有健康检查模块:ngx_http_upstream_module,可以做到基本的健康检查,配置如下:

upstream backend{
    server 127.0.0.1:8020  max_fails=1 fail_timeout=40s;
    server 127.0.0.1:8021  max_fails=1 fail_timeout=40s;
}

server {
    listen 80;
    server_name wz.jxiaolan.com; 
    location / {
      proxy_pass         http://backend;
    }
}

其中max_fails=1的意思是设定Nginx与服务器通信的尝试失败的次数。在fail_timeout参数定义的时间段内,如果失败的次数达到此值,Nginx就认为服务器不可用。在下一个fail_timeout时间段,服务器不会再被尝试。 失败的尝试次数默认是1。设为0就会停止统计尝试次数,认为服务器是一直可用的。

fail_timeout=40s是设定服务器被认为不可用的时间段以及统计失败尝试次数的时间段。在这段时间中,服务器失败次数达到指定的尝试次数,服务器就被认为不可用。默认情况下,该超时时间是10秒。

所以说nginx的ngx_http_upstream_module实现了一个基础的健康检查功能。这样有一个缺点是,nginx是被动地进行健康检查,也就是当有请求过来时,且请求打到A服务上时才能得知A服务的状态,如果A服务异常还要转发一次,效率受到影响。所以我们要进行主动地健康检查,nignx定时主动地去ping后端的服务列表,当发现某服务出现异常时,把该服务从健康列表中移除,当发现某服务恢复时,又能够将该服务加回健康列表中。淘宝有一个开源的实现(https://github.com/yaoweibin/nginx_upstream_check_module)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 上一篇《WEB请求处理一:浏览器请求发起处理》,我们讲述了浏览器端请求发起过程,通过DNS域名解析服务器IP,并建...
    七寸知架构阅读 81,790评论 21 356
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,665评论 19 139
  • 第一章 Nginx简介 Nginx是什么 没有听过Nginx?那么一定听过它的“同行”Apache吧!Ngi...
    JokerW阅读 33,030评论 24 1,002
  • 1.简介:  Nginx:engine X ,2002年,开源,商业版 http协议:web服务器(类似于ht...
    尛尛大尹阅读 2,018评论 0 3
  • 前一阵子刚刚过完25岁生日,当时在朋友圈发了这样一句感慨:25,摽梅之年。人家说不相信爱情、敢闯敢做的年纪。 在微...
    何尝_Enya阅读 459评论 0 1

友情链接更多精彩内容