负载均衡方法
- round-robin
- least-connected
- ip-hash
缺省的负载均衡配置
http {
upstream myapp1 {
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
}
缺省的负载均衡算法是round-robin
最小连接负载均衡算法
upstream myapp1 {
#就是加个least_conn
least_conn;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
会话持久化
upstream myapp1 {
ip_hash;
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
通过客户端的ip地址来作为一个hash key,来决定哪个server来回应客户端的请求。
加权的负载均衡
upstream myapp1 {
server srv1.example.com weight=3;
server srv2.example.com;
server srv3.example.com;
}
就是5次请求,3次给server1,1次给server2和server3.
健康检查
使用的是被动健康检查,如果来自一个server的响应报错,那nginx会认为这个server是不健康的,避免给这个server分发请求。
指令 max_fails设置了在时间fail_timeout期间,连续的不成功的和server的通信次数,max_fails默认设置为1,如果为0,表示不进行健康检查。fail_timeout设置了过多长时间,server将会被确定为失败,也就是说,在fail_timeout时间后,nginx会再去使用客户端的情求来探测server是否健康。