upstream提供负载均衡功能,支持6种负载分配方式,默认是轮询分配方式
负载均衡作用
- 转发功能
- 故障转移
- 恢复添加
工作流程
- 分析客户端请求,构建调用服务器
- 调用ngx_http_upstream_init开始调用服务器建立TCP连接
- 发送客户端中的请求报文
- 接收调用服务器的响应头进行解析并往服务器转发
- 接收调用服务器的响应体,并进行转发
Nginx负载均衡策略 如下
Nginx轮询 默认、
通过Nginx反向代理轮询server中的服务器
upstream backServer{
server 127.0.0.1:8083;
server 127.0.0.1:8085;
# 补充: backup备用服务器 只有当主服务器(8082、8085端口)都不能访问时才会访问此(83端口)备用服务器 当主服务器恢复正常后 则访问主服务器
#server 127.0.0.1:83 backup;
}
Nginx权重weight(访问概率和weight值成正比关系)
通过Nginx反向代理权重访问server中的服务器
upstream backServer{
server 127.0.0.1:8083 weight=1;
server 127.0.0.1:8085 weight=4;
# 补充: backup备用服务器 只有当主服务器(8082、8085端口)都不能访问时才会访问此(83端口)备用服务器 当主服务器恢复正常后 则访问主服务器
#server 127.0.0.1:83 backup;
}
Nginx IP hash值策略
通过Nginx反向代理IP hash值访问server中的服务器,同一个客户端请求都会分发到统一服务器处理,解决session问题。
upstream backServer{
ip_hash
server 127.0.0.1:8083;
server 127.0.0.1:8085;
# 补充: backup备用服务器 只有当主服务器(8082、8085端口)都不能访问时才会访问此(83端口)备用服务器 当主服务器恢复正常后 则访问主服务器
#server 127.0.0.1:83 backup;
}
Nginx fair策略
fair按后端服务器响应时间分配请求,响应时间短的优先分配
upstream backServer{
server 127.0.0.1:8083;
server 127.0.0.1:8085;
# 补充: backup备用服务器 只有当主服务器(8082、8085端口)都不能访问时才会访问此(83端口)备用服务器 当主服务器恢复正常后 则访问主服务器
#server 127.0.0.1:83 backup;
fair;
}
Nginx url_hash策略
url_hash与ip_hash类似,根据访问URL的hash结果来分配请求,使得每个URL定向到同一个后端服务器,后端服务器为缓存时的使用场景。
upstream backServer{
server 127.0.0.1:8083;
server 127.0.0.1:8085;
# 补充: backup备用服务器 只有当主服务器(8082、8085端口)都不能访问时才会访问此(83端口)备用服务器 当主服务器恢复正常后 则访问主服务器
#server 127.0.0.1:83 backup;
hash $request_uri;
hash_method crc32;
}
Nginx least_conn策略
least_conn把请求转发给连接数较少的后端服务器
upstream backServer{
server 127.0.0.1:8083;
server 127.0.0.1:8085;
# 补充: backup备用服务器 只有当主服务器(8082、8085端口)都不能访问时才会访问此(83端口)备用服务器 当主服务器恢复正常后 则访问主服务器
#server 127.0.0.1:83 backup;
least_conn;
}