nginx 负载均衡策略
1. 轮询
轮询方式是nginx负载均衡的默认策略,根据每个server的权重值来轮流发送请求,例如:
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
这种情况是每个server都使用相同的权重,默认值为1
可以手动设定权重,例如
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
}
2. 最少连接数
把请求发送给激活连接数最少的那台服务器
设置方式
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
3. 最少延时
把请求发送给连接延时最小的那台服务器
延时的计算方式有两种:
(1)header - 从server接收到第一个byte的时间
(2)last_byte - 从server接收到全部响应的时间
设置方式
upstream backend {
least_time header;
server backend1.example.com;
server backend2.example.com;
}
4. ip hash
根据用户IP计算出一个hash值,并记录下来,以后相同hash值的请求都发送到同一个server,同一个用户的请求始终使用同一台服务器,不用担心跨服务器时的session问题
设置方式
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
5. 通用hash
对用户指定的key进行hash计算,可以指定文本、变量或者组合
设置方式
upstream backend {
hash $request_uri consistent;
server backend1.example.com;
server backend2.example.com;
}
轮询方式是nginx负载均衡的默认策略,根据每个server的权重值来轮流发送请求,例如:
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
这种情况是每个server都使用相同的权重,默认值为1
可以手动设定权重,例如
upstream backend {
server backend1.example.com weight=5;
server backend2.example.com;
}
2. 最少连接数
把请求发送给激活连接数最少的那台服务器
设置方式
upstream backend {
least_conn;
server backend1.example.com;
server backend2.example.com;
}
3. 最少延时
把请求发送给连接延时最小的那台服务器
延时的计算方式有两种:
(1)header - 从server接收到第一个byte的时间
(2)last_byte - 从server接收到全部响应的时间
设置方式
upstream backend {
least_time header;
server backend1.example.com;
server backend2.example.com;
}
4. ip hash
根据用户IP计算出一个hash值,并记录下来,以后相同hash值的请求都发送到同一个server,同一个用户的请求始终使用同一台服务器,不用担心跨服务器时的session问题
设置方式
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
5. 通用hash
对用户指定的key进行hash计算,可以指定文本、变量或者组合
设置方式
upstream backend {
hash $request_uri consistent;
server backend1.example.com;
server backend2.example.com;
}