负载均衡策略有以下几种:
请求轮询:round-robin,是默认策略,应用服务器的请求以循环方式分发,可以设置权重weight,默认权重均为1,因此每台后端服务器接受的请求数相同。
最少连接:least-connected,当某些请求占用比较长的时间时,此策略相对更公平。nginx尽量不让繁忙的应用服务器负载过多的请求,而是将新请求分发给那些不繁忙的服务器。
会话保持:ip-hash,客户端的IP地址用作散列键,以确定应该为客户端的请求选择服务器组中的哪一台服务器,此方法确保来自同一客户端的请求将始终指向相同的服务器,除非此服务器不可用。
nginx中的反向代理实现包括服务器健康检查。如果某个特定服务器的响应失败,nginx会将此服务器标记为失败,并将尝试避免在随后的入站请求中选择此服务器。
请求轮询权重配置示例,大概每6个请求将会分配1个到srv1,2个到srv2,3个到srv3:
http {
upstream myapp1 {
server srv1.example.com weight=1;
server srv2.example.com weight=2;
server srv3.example.com weight=3;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}
其他策略配置示例:
http {
upstream myapp1 {
least-connected或者ip-hash
server srv1.example.com;
server srv2.example.com;
server srv3.example.com;
}
server {
listen 80;
location / {
proxy_pass http://myapp1;
}
}