负载均衡是一种用于优化资源利用率,最大化吞吐量,减少延迟和确保容错配置的常用技术。
实现负载均衡常用的Web服务器软件有Nginx、HAProxy、LVS、Apache,本文主要介绍Nginx的负载均衡策略。
负载均衡方法
nginx支持以下负载平衡机制(或方法):
-
轮询-对应用程序服务器的请求以轮询方式分发,
upstream tomcats { server 192.168.0.100:8080; server 192.168.0.101:8080; server 192.168.0.102:8080; }
-
加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。
upstream mysvr { server 127.0.0.1:7878 weight=1; server 192.168.10.121:3333 weight=2; }
-
最少连接-将下一个请求分配给活动连接数量最少的服务器,
upstream myapp1 { least_conn; server srv1.example.com; server srv2.example.com; server srv3.example.com; }
-
ip-hash-哈希函数用于确定应为下一个请求选择哪个服务器(基于客户端的IP地址)。
upstream myapp1 { ip_hash; server srv1.example.com; server srv2.example.com; server srv3.example.com; }
注意:使用ip_hash时,不能把后台服务器直接移除,只能标记为down.
-
url_hash 按请求url的hash结果来分配请求,使每个url定向到同一个后端服务器,服务器做缓存时比较有效。
upstream tomcats { server 192.168.0.100:8080; server 192.168.0.101:8080; server 192.168.0.102:8080; hash $request_uri; }