Nginx的upstream模块支持多种负载均衡策略,以下是对这5种权重分配方式的详细介绍:
1、轮询(默认)
定义:每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器宕机,能自动剔除。
示例:
upstream backend { server 192.168.0.14; server 192.168.0.15; }
2、weight
定义:指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
示例:
upstream backend { server 192.168.0.14 weight=1; server 192.168.0.15 weight=2; server 192.168.0.16 weight=3; }
3、ip_hash
定义:每个请求按访问IP的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
示例:
upstream backend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; }
4、fair(第三方)
定义:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
示例:
upstream backend { server server1.linuxany.com; server server2.linuxany.com; fair; }
5、url_hash(第三方)
定义:按访问URL的hash结果来分配请求,使每个URL定向到同一个后端服务器,后端服务器为缓存时比较有效。
示例:
upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }
这些权重分配方式各有优缺点,适用于不同的场景,在实际应用中,可以根据业务需求选择合适的负载均衡策略,并通过各种参数调整后端服务器的行为,以确保服务的稳定性和高效性。