负载均衡,即是代理服务器将接收的请求均衡的分发到各服务器中。
Nginx 默认提供了 3 种负载均衡策略:
1、轮询(默认)round_robin
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2、IP 哈希 ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 共享的问题。
当然,实际场景下,一般不考虑使用 ip_hash 解决 session 共享。
3、最少连接 least_conn
下一个请求将被分派到活动连接数量最少的服务器
通过 Nginx 插件,我们还可以引入 fair、url_hash 等负载均衡策略。
另外,我们还可以配置每一个后端节点在负载均衡时的其它配置:
weight=1; # (weight 默认为1.weight越大,负载的权重就越大)
down; # (down 表示单前的server暂时不参与负载)
backup; # (其它所有的非backup机器down或者忙的时候,请求backup机器)
max_fails=1; # 允许请求失败的次数默认为 1 。当超过最大次数时,返回 proxy_next_upstream 模块定义的错误
fail_timeout=30; # max_fails 次失败后,暂停的时间