nginx主备配置相关
配置示例
upstream tomcatserver{ server ip:8780 max_fails=2 fail_timeout=30s; server ip:8068 max_fails=2 fail_timeout=30s backup; } location /usercenter { proxy_connect_timeout 1; proxy_read_timeout 1; proxy_send_timeout 1; proxy_next_upstream error timeout http_502 http_503 http_504; proxy_pass http://tomcatserver/usercenter; }
ip:8780主机
ip:8068备机
参数解释
backup 参数是指当所有非备机都宕机或者不可用的情况下,就只能使用带backup标准的备机。
max_fails参数的理解:max_fails默认为1,fail_timeout默认为10秒,也就是说,默认情况下后端服务器在10秒钟之内可以容许有一次的失败,如果超过1次则视为该服务器有问题,将该服务器标记为不可用。等待10秒后再将请求发给该服务器,以此类推进行后端服务器的健康检查。
proxy_connect_timeout 参数是连接的超时时间。 设置成1,表示是1秒后超时会连接到另外一台服务器。
proxy_read_timeout 参数是接收数据超时时间, 设置成1, 如果连续的1s内没有收到1个字节, 连接关闭,默认60s。
proxy_send_timeout 参数是发送数据到服务器的超时时间, 设置成1, 如果连续的1s内没有发送1个字节, 连接关闭,默认60s。
proxy_next_upstream 确定在何种情况下请求将转发到下一个服务器,timeout和connect refuse是永远被记录错误状态,而502、500、503、504只有在配置proxy_next_upstream参数之后nginx才会记录这4种HTTP错误到fails中。
语法:proxy_next_upstream [error|timeout|invalid_header|http_500|http_502|http_503|
http_504|http_404|off]
backup详细介绍:
nginx可通过upstream实现负载均衡,而在upstream中有一个backup参数,该参数的设定会指定一台服务器成为从机,只有当所有的主机挂掉之后才会开始接受请求,在主机启动之后则又回到初始的状态.
配置如下:
upstream tomcatserver {
server 180.76.118.162:8088 backup;
server 180.76.118.162:8089;
server 180.76.118.162:8090;
}
我们指定了端口为8088的服务器为备机,而其他两台服务器为主机
在平时不使用,nginx不会给它转发任何请求。只有当其他节点全部无法连接的时候,nginx才会启用这个节点。
一旦有可用的节点恢复服务,该节点则不再使用,又进入后备状态。
在做上线更新的时候,关闭一台服务器的tomcat后,nginx自动把流量切换到另外一台服务的后备机子上,从而实现无痛更新,保持服务的持续性,提高服务的可靠性。