nginx能否实现故障自动切换并告警的功能

来源:3-42 Nginx作为负载均衡服务_负载均衡策略ip_hash方式

目科将

2018-07-22

想问一下老师,能否实现如下功能 :

    nginx 后面有三台负载实例s1,S2,S3(s3相当于在线备用实例),当s1,s2其中有请求超时的(比如504),我想实现:

  1. 若请求超时,发送告警(比如执行系统中的一个自定义的shell告警脚本);

  2. 将请求超时的实例流量切换到s3上;


写回答

1回答

Jeson

2018-07-24

你好,抱歉这两天有些忙,回复你问题晚了些,对于你的问题,我分开解答如下:

问题1、若请求超时,发送告警(比如执行系统中的一个自定义的shell告警脚本);

这个功能很好作,你如果用shell脚本来实现的话也可以不过我觉得不够系统化,而且如果你的nginx实例越多扩展性维护性也是很一般的,shell这种方式适合单一小的场景中。

如果是为企业作的化,我更建议你研究下开源的监控系统来作,这里我推荐你用下zabbix,具体如何使用你可以先百度,然后找找资料学习下。

问题2、将请求超时的实例流量切换到s3上

如果后台服务的连接超时,Nginx是本身是有机制的,如果出现一个节点down掉的时候,Nginx会更据你具体负载均衡的设置,将请求转移到其他的节点上(这一点在课程中应该是讲价了)。

但是,如果后台服务连接没有down掉,但是返回错误异常码了如:504、502、500,这个时候你需要加一个负载均衡的设置,如下:

proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404;
意思是,当其中一台返回错误码404,500...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率。

0
1
目科将
非常感谢!
2018-07-24
共1条回复

Nginx入门到实践-Nginx中间件应用+搭建Webserver架构

中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等

4183 学习 · 908 问题

查看课程