nginx能否实现故障自动切换并告警的功能
来源:3-42 Nginx作为负载均衡服务_负载均衡策略ip_hash方式
目科将
2018-07-22
想问一下老师,能否实现如下功能 :
nginx 后面有三台负载实例s1,S2,S3(s3相当于在线备用实例),当s1,s2其中有请求超时的(比如504),我想实现:
若请求超时,发送告警(比如执行系统中的一个自定义的shell告警脚本);
将请求超时的实例流量切换到s3上;
写回答
1回答
-
你好,抱歉这两天有些忙,回复你问题晚了些,对于你的问题,我分开解答如下:
问题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...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率。012018-07-24
相似问题