# 八.负载均衡
- 使用集群是网站解决高并发、海量数据问题的常用手段
- 当一台服务器的处理能力、存储空间不足时,不要企图去换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求
- 这种情况下,更恰当的做法是增加一台服务器分担原有服务器的访问及存储压力,通过负载均衡调度服务器,将来自浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网络的瓶颈
# 1.upstream
类型 | 种类 |
---|---|
语法 | upstream name {} |
默认 | - |
上下文 | http |
upstream abc {
ip_hash;
server localhost:3000;
server localhost:4000;
server localhost:5000;
}
server {
location / {
proxy_pass http://abc;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 2.后端服务器调试状态
状态 | 描述 |
---|---|
down | 不参与负载均衡 |
backup | 备份的服务器 |
max_fails | 允许请求失败的次数 |
fail_timeout | 经过 max_fails 失败后,服务暂停的时间 |
max_conns | 限制最大的接收的连接数 |
# 3.分配方式
类型 | 种类 |
---|---|
轮询(默认) | 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。 |
weight(加权轮询) | 指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。 |
ip_hash | 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。 |
url_hash(第三方) | 按访问的 URL 地址来分配 请求,每个 URL 都定向到同一个后端 服务器上(缓存) |
fair(第三方) | 按后端服务器的响应时间来分配请求,响应时间短的优先分配。 |
least_conn | 最小连接数,哪个连接少就分给谁 |
自定义 hash | hash 自定义 key |