nginx 做负载均衡:
upstream {
server localhost:8080 max_fail=1 fail_timeout=60s;
server xx.xx.xx.xx:8080 max_fail=1 fail_timeout=60s backup;
}
主服务:本机8080作为主服务,
参数max_fail=1 表示最大失败次数为1次,
fail_timeout=60s (默认值10s)表示失败超时为60s,即在60s内只要发生一次失败。就不会再次重试连接该服务,而是等待60s之后再连接。通过配置此参数可以最大程度的确保:
当我们在重新启动主服务时,会发生主服务的8080端口已经启动监听,但是主服务的tomcat并没有完全启动,这个时候该参数是默认值的化将会导致每过10s就重试一次主服务请求,导致每次发布主服务,用户都无法请求到所有的api,因为此时流量已经被nginx切换至主服务了,但是却不能响应请求。只有等待主服务的tomcat完全启动成功才会响应成功。
故将该值设置大一些。就会在首次失败以后nginx将流量再次切换至备用服务器,然后等待60s后再次切换回主服务,这时,主服务应该已经启动成功。实现无缝切换发布。
查阅文档发现。社区版的nginx不支持slow_start参数,该参数只有在收费版的nginx中才可以使用,利用该参数可以更好的解决主服启动过程中无法响应请求的问题。
网友评论