Nginx1.12.1后端节点健康检测+会话保持方案

Nginx社区版,也就是我们能从官网免费下载到源码并且编译的版本,不是一个合格的商业负载均衡器。为什么这么说呢,是因为社区版在反向代理负载均衡这个功能上,很多重要的工作的解决方案是非常幼稚或者说是不成熟的。主要表现在两个方面,后端被负载均衡Web服务器的健康监测和Session回话保持功能。首先说回话保持,nginx官方给出的解决方案是ip_hash,也就是根据访问客户的源IP地址进行分发。表
摘要由CSDN通过智能技术生成

Nginx社区版,也就是我们能从官网免费下载到源码并且编译的版本,不是一个合格的商业负载均衡器。为什么这么说呢,是因为社区版在反向代理负载均衡这个功能上,很多重要的工作的解决方案是非常幼稚或者说是不成熟的。主要表现在两个方面,后端被负载均衡Web服务器的健康监测和Session回话保持功能。

首先说回话保持,nginx官方给出的解决方案是ip_hash,也就是根据访问客户的源IP地址进行分发。表看起来没什么问题,实际应用几乎不可行。比如为学校做一个选课系统,服务器放在服务网段,学生在普通网段,两个网段互通全靠NAT,Nginx收到的IP全都是同一个源IP,那么这个负载均衡没有就没有生效。

其次是后端健康检测,Nginx官方给出的解决方案是

server localhost:9191 max_fails=1 fail_timeout=40s;

意思就是如果9191这个端口某次连接超时或者失败max_fails次,就判定为不可用,然后等待fail_timeout这么长时间之后自动认为其可用,不管到底真的修复了没有。然后再次重试max_fails次。这还不算最坑爹的,更麻烦的是在Nginx上你无法查看各个后端节点的状态,不知道哪台宕机了或者卡了不好用了。如果你后端有一百台被负载均衡的服务器,光检查可用性这一点Nginx社区版就完败。


再就是连接和流量的统计功能,也适用于检查后端健康情况和当前的并发连接数的,这个功能社区版默认还是没有的,需要在编译时添加一个官方支持的模块

--with-http_stub_status_module

然后还需要在配置文件中,http下面的某个server开启这个功能,并指定访问url

location = /ngx_status
{
     stub_status on;
     access_log off;
}

可即使添加了这个模块,你看到的也就是下面这个简陋到爆的状态监控页面


从这个页面中,谁能告诉我哪台后端服务器宕机了,谁又能告诉我哪台后端服务器卡了,又怎么能知道哪台后端服务器的压力最大,哪台压力最轻?这些在Nginx都无从获取。

那么在对比一下同样是免费开源的专门做反向代理负载均衡的HAProxy的后台页面


每个节点的健康状况,运行时间,宕机时间,当前连接数,最大连接数,总连接数,数据进出流量是不是一目了然,马上就可以看到这个服务器的健康状况和处理能力。能看到现在哪台服务器负担最重,可以及时调整策略。提前防范风险。

再看看收费版的NGINX+的监控页面

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值