概述:
负载均衡(load balance)就是将负载分摊到多个操作单元上执行,从而提高服务的可用性和响应速度,带给用户更好的体验。
Nginx负载均衡的配置:
通过 Nginx 中的 upstream 指令可以实现负载均衡,在该指令中能够配置负载服务器组 。目前负载均衡有 4 种典型的配置方式,分别为轮询方式、权重方式、 ip_hash 方式,以及利用第三方模块的方式。
轮询方式:
负载均衡默认设置方式,每个请求按照时间顺序逐一分配到不同的后端服务器进行处理,如果有服务器容机,会自动剔除。
location / {
proxy_pass http://web_server ;
}
upstream web_server {
server 192.168.78.128;
server 192.168.78.200;
)
权重方式:
利用 weight指定轮询的权重比率,与访问率成正比,用于后端服务器性能不均的情况。
Nginx 将按照平滑加权轮询算法进行具体分配 。 其中以权值总和为一个循环,按照算法分散执行。
location / {
proxy_pass http://web_server ;
}
upstream web_server {
server 192.168.78.128 weight=2 max_fails=2 fail_timeout=10;
server 192.168.78.200 weight=3;
server 192.168.78.200 backup;
}
ip_hash方式:
每个请求按访问 IP 的 hash 结果分配,这样可以使每个访客固定访问一个后端服务器,可以解决 Session 共享的问题。
location / {
proxy_pass http://web_server ;
}
upstream web_server {
ip_hash;
server 192.168.78.200;
server 192.168.78.200 down;
}
第 三方模块:
upstream模块常用参数说明:
server 192.168.0.100:80 负载均衡后端RealServer的IP或者域名,端口不写的话默认为80。高并发场景用域名,再通过DNS进行负载均衡
weight=5 权重,默认为1,权重越大接收的请求越多
max_fails=2 最大尝试的失败次数,默认为1,0表示禁止失败尝试。当超过最大次数时,返回 proxy_ next_ upstream 指令定义的错误。
fail_timeout=10 失败超时时间,默认是10秒,通常3s左右比较合适
backup 热备配置,只有当其他所有的非 backup 机器出现故障或者忙碌的情况下,才会请求 backup 服务器,因此这台服务器的压力最小 。
down 标志服务器不可用,这个参数通常配合IP_HASH使用