Nginx 负载均衡配置
nginx的负载均衡是通过反向代理来实现的,在反向代理的基础上进行进一步的配置
http {
upstream demoserver {
#默认为不配置权重为1
server www.demo.com:8080;
server www.demo1.com:8081;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://demoserver;
}
}
}
1.轮询
轮询方式是Nginx负载默认的方式,请求按顺序分配到各个服务器
upstream demoserver {
server www.demo.com:8080;
server www.demo1.com:8081;
}
2.权重
指定每个服务的权重比例,weight和访问比率成正比,适用于服务机器性能不同的情况,如下访问8080服务的比率会是8081服务的二倍。
upstream demoserver {
server www.demo.com:8080 weight=2;
#默认为不配置权重为1
server www.demo1.com:8081;
}
3.iphash
根据访问的ip进行hash来选择转发到哪一个服务器,同一个ip会一直访问同一个服务器,可以用来解决session不一致的问题,可以和weight配合使用。
upstream demoserver {
ip_hash;
server www.demo.com:8080 weight=2;
#默认为不配置权重为1
server www.demo1.com:8081;
}
4.最少连接
将请求分配到连接数最少的服务上,可以和weight配合使用
upstream demoserver {
ip_hash;
server www.demo.com:8080 weight=2;
#默认为不配置权重为1
server www.demo1.com:8081;
}
5.fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream demoserver {
fair;
server www.demo.com:8080;
server www.demo1.com:8081;
}
6.max_fails 与 fail_timeout
max_fails 和 fail_timeout 是配合使用的,max_fails = number 是指:设置允许请求代理服务器最大的失败次数。 fail_timeout 是指:代理服务器在经过 max_fails = number 次失败后,服务器暂停的时间,单位为秒,默认10秒。
max_conns = number; 用来设置最大活动链接数,当设置为 0 时,标识不限制最大活动链接。可以根据具体服务器性能来设定max_conns 的值,它所起到的作用是:防止服务器活动链接过多而导致服务器超出最大承载引起宕机的问题。
down:表示单前的server暂时不参与负载。
backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream demoserver {
server www.demo.com:8080 max_conns = 1024 max_fails=3 fail_timeout=10s;
server www.demo1.com:8081 down;
server www.demo1.com:8081 backup;
}