采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
想问一下老师,能否实现如下功能 :
nginx 后面有三台负载实例s1,S2,S3(s3相当于在线备用实例),当s1,s2其中有请求超时的(比如504),我想实现:
若请求超时,发送告警(比如执行系统中的一个自定义的shell告警脚本);
将请求超时的实例流量切换到s3上;
你好,抱歉这两天有些忙,回复你问题晚了些,对于你的问题,我分开解答如下:
问题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...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率。
非常感谢!
登录后可查看更多问答,登录/注册
中间件、负载均衡、应用层安全防护、动静分离、Nginx+LUA开发等
3.2k 10
2.2k 12
1.1k 12
1.8k 11