轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。
当服务器性能不均的情况下,会出现性能差的机器阻塞,而性能好的机器会很空闲这样的情况。
upstream cluster { server 10.1.1.1 ; server 10.1.1.2 ; }
在轮询方式的基础上加上权重来指定轮询几率,weight和访问比率成正比,weight高的将处理更多的请求,用于后端服务器性能不均的情况。
upstream cluster { server 10.1.1.1 weight=30; - 性能好的服务器配置高的权重 server 10.1.1.2 weight=10; }
根据请求者ip的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上,但是如果客户端都走相同代理的情况下, 会导致某一台服务器连接过多。
upstream cluster { ip_hash; server 10.1.1.1; server 10.1.1.2; server 10.1.1.3; }
注:ip_hash算法目前是根据IP段前三段进行计算的,前三段都是一样的,将会定向到同一服务器,上面配置的ip只是举例
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个 资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的 浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住 了资源,再此收到请求,就可以从缓存中读取。
upstream cluster { hash $request_uri; server 10.1.1.1; server 10.1.1.2; server 10.1.1.3; }